|
template<typename Field > |
using | llama::GetFieldTag = mp_first< Field > |
| Get the tag from a Field. More...
|
|
template<typename Field > |
using | llama::GetFieldType = mp_second< Field > |
| Get the type from a Field. More...
|
|
template<typename RecordDim , typename RecordCoord > |
using | llama::GetTags = typename internal::GetTagsImpl< RecordDim, RecordCoord >::type |
|
template<typename RecordDim , typename RecordCoord > |
using | llama::GetTag = typename internal::GetTagImpl< RecordDim, RecordCoord >::type |
| Get the tag of the Field at a RecordCoord inside the record dimension tree. More...
|
|
template<typename RecordDim , typename... TagsOrTagList> |
using | llama::GetCoordFromTags = typename internal::GetCoordFromTagsImpl< RecordDim, RecordCoord<>, TagsOrTagList... >::type |
|
template<typename RecordDim , typename... RecordCoordOrTags> |
using | llama::GetType = typename internal::GetTypeImpl< RecordDim, RecordCoordOrTags... >::type |
|
template<typename RecordDim > |
using | llama::LeafRecordCoords = typename internal::LeafRecordCoordsImpl< RecordDim, RecordCoord<> >::type |
| Returns a flat type list containing all record coordinates to all leaves of the given record dimension. More...
|
|
template<typename RecordDim > |
using | llama::FlatRecordDim = typename internal::FlattenRecordDimImpl< RecordDim >::type |
| Returns a flat type list containing all leaf field types of the given record dimension. More...
|
|
template<typename RecordDim , template< typename, typename > typename FieldTypeFunctor> |
using | llama::TransformLeavesWithCoord = typename internal::TransformLeavesWithCoordImpl< RecordCoord<>, RecordDim, FieldTypeFunctor >::type |
|
template<typename RecordDim , template< typename > typename FieldTypeFunctor> |
using | llama::TransformLeaves = TransformLeavesWithCoord< RecordDim, internal::MakePassSecond< FieldTypeFunctor >::template fn > |
|
template<typename RecordDimA , typename RecordDimB > |
using | llama::MergedRecordDims = typename decltype(internal::mergeRecordDimsImpl(mp_identity< RecordDimA >{}, mp_identity< RecordDimB >{}))::type |
| Creates a merged record dimension, where duplicated, nested fields are unified. More...
|
|
template<typename FromT , typename ToT > |
using | llama::CopyConst = std::conditional_t< std::is_const_v< FromT >, const ToT, ToT > |
| Alias for ToT, adding const if FromT is const qualified. More...
|
|
template<auto V> |
using | llama::Constant = std::integral_constant< decltype(V), V > |
| Used as template argument to specify a constant/compile-time value. More...
|
|
|
template<typename Int > |
| llama::NrAndOffset (Int, Int) -> NrAndOffset< Int > |
|
template<typename TA , typename TB > |
auto | llama::operator== (const NrAndOffset< TA > &a, const NrAndOffset< TB > &b) -> bool |
|
template<typename TA , typename TB > |
auto | llama::operator!= (const NrAndOffset< TA > &a, const NrAndOffset< TB > &b) -> bool |
|
template<typename RecordDim , typename Functor , std::size_t... Coords> |
constexpr void | llama::forEachLeafCoord (Functor &&functor, RecordCoord< Coords... > baseCoord) |
|
template<typename RecordDim , typename Functor , typename... Tags> |
constexpr void | llama::forEachLeafCoord (Functor &&functor, Tags...) |
|
template<typename TypeList > |
constexpr auto | llama::internal::flatAlignOfImpl () |
|
template<typename Integral > |
constexpr auto | llama::divCeil (Integral a, Integral b) -> Integral |
| Returns the ceiling of a / b. More...
|
|
template<typename Integral > |
constexpr auto | llama::roundUpToMultiple (Integral n, Integral mult) -> Integral |
| Returns the integral n rounded up to be a multiple of mult. More...
|
|
template<typename TypeList , bool Align, bool IncludeTailPadding> |
constexpr auto | llama::internal::sizeOfImpl () -> std::size_t |
|
template<typename TypeList , std::size_t I, bool Align> |
constexpr auto | llama::internal::offsetOfImplWorkaround () -> std::size_t |
|
template<typename A , typename B > |
auto | llama::internal::mergeRecordDimsImpl (mp_identity< A > a, mp_identity< B >) |
|
template<typename A , std::size_t NA, typename B , std::size_t NB> |
auto | llama::internal::mergeRecordDimsImpl ([[maybe_unused]] mp_identity< A[NA]> a, [[maybe_unused]] mp_identity< B[NB]> b) |
|
template<typename... FieldsA> |
auto | llama::internal::mergeRecordDimsImpl (mp_identity< Record< FieldsA... >> a, mp_identity< Record<>>) |
|
template<typename... FieldsA, typename FieldB , typename... FieldsB, auto Pos = FindFieldByTag<Record<FieldsA...>, GetFieldTag<FieldB>>::value> |
auto | llama::internal::mergeRecordDimsImpl (mp_identity< Record< FieldsA... >>, mp_identity< Record< FieldB, FieldsB... >>) |
|
auto | llama::prettySize (double size) -> PrettySize |
|
|
template<typename T > |
constexpr bool | llama::isAllowedFieldType = std::is_trivially_destructible_v<T> |
| Tells whether the given type is allowed as a field type in LLAMA. Such types need to be trivially constructible and trivially destructible. More...
|
|
template<typename T > |
constexpr bool | llama::isField = false |
|
template<typename Tag , typename Type > |
constexpr bool | llama::isField< Field< Tag, Type > > = true |
|
template<typename T > |
constexpr auto | llama::isRecord = false |
|
template<typename... Fields> |
constexpr auto | llama::isRecord< Record< Fields... > > = true |
|
template<typename RecordDimA , typename RecordCoordA , typename RecordDimB , typename RecordCoordB > |
constexpr auto | llama::hasSameTags |
|
template<typename RecordDim > |
constexpr std::size_t | llama::flatFieldCount = 1 |
| The total number of fields in the recursively expanded record dimension. More...
|
|
template<typename... Children> |
constexpr std::size_t | llama::flatFieldCount< Record< Children... > > = (flatFieldCount<GetFieldType<Children>> + ... + 0) |
|
template<typename Child , std::size_t N> |
constexpr std::size_t | llama::flatFieldCount< Child[N]> = flatFieldCount<Child> * N |
|
template<std::size_t I, typename RecordDim > |
constexpr std::size_t | llama::internal::flatFieldCountBefore = 0 |
|
template<typename... Children> |
constexpr std::size_t | llama::internal::flatFieldCountBefore< 0, Record< Children... > > = 0 |
|
template<std::size_t I, typename... Children> |
constexpr std::size_t | llama::internal::flatFieldCountBefore< I, Record< Children... > > |
|
template<typename RecordDim , typename RecordCoord > |
constexpr std::size_t | llama::flatRecordCoord = 0 |
|
template<typename T > |
constexpr std::size_t | llama::flatRecordCoord< T, RecordCoord<> > = 0 |
|
template<typename... Children, std::size_t I, std::size_t... Is> |
constexpr std::size_t | llama::flatRecordCoord< Record< Children... >, RecordCoord< I, Is... > > |
|
template<typename Child , std::size_t N, std::size_t I, std::size_t... Is> |
constexpr std::size_t | llama::flatRecordCoord< Child[N], RecordCoord< I, Is... > > = flatFieldCount<Child> * I + flatRecordCoord<Child, RecordCoord<Is...>> |
|
template<typename TypeList > |
constexpr std::size_t | llama::flatAlignOf = internal::flatAlignOfImpl<TypeList>() |
|
template<typename T > |
constexpr std::size_t | llama::alignOf = alignof(T) |
| The alignment of a type T. More...
|
|
template<typename... Fields> |
constexpr std::size_t | llama::alignOf< Record< Fields... > > = flatAlignOf<FlatRecordDim<Record<Fields...>>> |
|
template<typename TypeList , bool Align, bool IncludeTailPadding = true> |
constexpr std::size_t | llama::flatSizeOf = internal::sizeOfImpl<TypeList, Align, IncludeTailPadding>() |
| The size of a type list if its elements would be in a normal struct. More...
|
|
template<typename T , bool Align = false, bool IncludeTailPadding = true> |
constexpr std::size_t | llama::sizeOf = sizeof(T) |
| The size of a type T. More...
|
|
template<typename... Fields, bool Align, bool IncludeTailPadding> |
constexpr std::size_t | llama::sizeOf< Record< Fields... >, Align, IncludeTailPadding > = flatSizeOf<FlatRecordDim<Record<Fields...>>, Align, IncludeTailPadding> |
| The size of a record dimension if its fields would be in a normal struct. More...
|
|
template<typename TypeList , std::size_t I, bool Align> |
constexpr std::size_t | llama::flatOffsetOf = internal::offsetOfImplWorkaround<TypeList, I, Align>() |
| The byte offset of an element in a type list ifs elements would be in a normal struct. More...
|
|
template<typename RecordDim , typename RecordCoord , bool Align = false> |
constexpr std::size_t | llama::offsetOf = flatOffsetOf<FlatRecordDim<RecordDim>, flatRecordCoord<RecordDim, RecordCoord>, Align> |
|
template<typename T > |
constexpr bool | llama::isRecordDim = isRecord<T> || internal::IsBoundedArray<T>::value |
| True if the T is a record dimension. That is, T is either a llama::Record or a bounded array. More...
|
|
template<typename T > |
constexpr bool | llama::isConstant = internal::IsConstant<T>::value |
|