MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Sort.hpp File Reference

Discrete sequence sorting primitives for MayaFlux::Kinesis. More...

+ Include dependency graph for Sort.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  MayaFlux
 Main namespace for the Maya Flux audio engine.
 
namespace  MayaFlux::Kinesis
 
namespace  MayaFlux::Kinesis::Discrete
 

Enumerations

enum class  MayaFlux::Kinesis::Discrete::SortingDirection : uint8_t { MayaFlux::Kinesis::Discrete::ASCENDING , MayaFlux::Kinesis::Discrete::DESCENDING , MayaFlux::Kinesis::Discrete::CUSTOM , MayaFlux::Kinesis::Discrete::BIDIRECTIONAL }
 Ascending or descending sort order. More...
 
enum class  MayaFlux::Kinesis::Discrete::SortingAlgorithm : uint8_t {
  MayaFlux::Kinesis::Discrete::STANDARD , MayaFlux::Kinesis::Discrete::STABLE , MayaFlux::Kinesis::Discrete::PARTIAL , MayaFlux::Kinesis::Discrete::NTH_ELEMENT ,
  MayaFlux::Kinesis::Discrete::HEAP , MayaFlux::Kinesis::Discrete::PARALLEL , MayaFlux::Kinesis::Discrete::RADIX , MayaFlux::Kinesis::Discrete::COUNTING ,
  MayaFlux::Kinesis::Discrete::BUCKET , MayaFlux::Kinesis::Discrete::MERGE_EXTERNAL , MayaFlux::Kinesis::Discrete::QUICK_OPTIMIZED , MayaFlux::Kinesis::Discrete::LAZY_STREAMING ,
  MayaFlux::Kinesis::Discrete::PREDICTIVE_ML , MayaFlux::Kinesis::Discrete::EIGEN_OPTIMIZED , MayaFlux::Kinesis::Discrete::GPU_ACCELERATED
}
 Available sorting algorithm backends. More...
 

Functions

auto MayaFlux::Kinesis::Discrete::double_comparator (SortingDirection direction) noexcept
 Direction-based comparator for doubles.
 
template<typename T >
requires requires(T v) { { std::abs(v) } -> std::convertible_to<double>; }
auto MayaFlux::Kinesis::Discrete::magnitude_comparator (SortingDirection direction) noexcept
 Magnitude-based comparator for complex-like types.
 
template<typename Container , typename Comparator >
std::vector< size_t > MayaFlux::Kinesis::Discrete::sort_indices (const Container &container, Comparator comp)
 Generic sort-index generator for any random-access container.
 
template<std::random_access_iterator Iterator, typename Comparator >
void MayaFlux::Kinesis::Discrete::execute (Iterator begin, Iterator end, Comparator comp, SortingAlgorithm algorithm)
 Execute a sorting algorithm on an iterator range.
 
void MayaFlux::Kinesis::Discrete::sort_span (std::span< double > data, SortingDirection direction, SortingAlgorithm algorithm=SortingAlgorithm::STANDARD)
 Sort a single span in-place.
 
std::span< double > MayaFlux::Kinesis::Discrete::sort_span_into (std::span< const double > data, std::vector< double > &output_storage, SortingDirection direction, SortingAlgorithm algorithm=SortingAlgorithm::STANDARD)
 Sort a span into a caller-owned output buffer.
 
void MayaFlux::Kinesis::Discrete::sort_channels (std::vector< std::span< double > > &channels, SortingDirection direction, SortingAlgorithm algorithm=SortingAlgorithm::STANDARD)
 Sort all channels in-place.
 
std::vector< std::span< double > > MayaFlux::Kinesis::Discrete::sort_channels_into (const std::vector< std::span< const double > > &channels, std::vector< std::vector< double > > &output_storage, SortingDirection direction, SortingAlgorithm algorithm=SortingAlgorithm::STANDARD)
 Sort all channels into caller-owned output buffers.
 
std::vector< size_t > MayaFlux::Kinesis::Discrete::span_sort_indices (std::span< double > data, SortingDirection direction)
 Indices that would sort a span in the given direction.
 
std::vector< std::vector< size_t > > MayaFlux::Kinesis::Discrete::channels_sort_indices (const std::vector< std::span< double > > &channels, SortingDirection direction)
 Per-channel sort indices.
 

Detailed Description

Discrete sequence sorting primitives for MayaFlux::Kinesis.

Span-level sorting functions and algorithm dispatch for contiguous double-precision sequences. No MayaFlux type dependencies.

SortingDirection and SortingAlgorithm are defined here and are the canonical definitions; MayaFlux::Yantra re-exports them.

Unimplemented algorithm variants (RADIX, COUNTING, BUCKET, MERGE_EXTERNAL, QUICK_OPTIMIZED, LAZY_STREAMING, PREDICTIVE_ML, GPU_ACCELERATED) fall back to STANDARD and are marked as such.

Definition in file Sort.hpp.