cuSBF
Loading...
Searching...
No Matches
cusbf::Alphabet Concept Reference

Concept for alphabet-like types used to encode bytes as symbol indices. More...

Concept definition

template<typename T>
concept cusbf::Alphabet = requires(const char* input) {
{ T::symbolCount } -> std::convertible_to<uint64_t>;
{ T::symbolWidth } -> std::convertible_to<uint64_t>;
{ T::invalidSymbol } -> std::convertible_to<uint8_t>;
{ T::separator } -> std::convertible_to<uint8_t>;
{ T::validBytes } -> std::convertible_to<const char*>;
{ T::encode(input) } -> std::same_as<uint8_t>;
} && requires {
requires T::symbolCount > 0 && T::symbolCount <= 255;
requires T::symbolWidth > 0;
requires detail::validByteCount<T>() > 0;
}
Concept for alphabet-like types used to encode bytes as symbol indices.
Definition Alphabet.cuh:95
consteval bool separatorPositionAlwaysEncodesInvalid(char *input, uint64_t separatorPosition, uint64_t index)
Recursively tests whether placing the separator byte at any position in an input of valid bytes alway...
Definition Alphabet.cuh:37

Detailed Description

Concept for alphabet-like types used to encode bytes as symbol indices.

A type satisfies Alphabet if it provides:

Template Parameters
TAlphabet type to validate.

Definition at line 95 of file Alphabet.cuh.