Speclib  0.1.2
The library for writing better CUDA libraries
Type-Encoded Datastructures

Datastructures that encode their value in their type. More...

Modules

 Bitset
 Sets of integers represented as extremely long ints, such as __uint<4096>.
 
 Integer Sequences
 sp::integer_sequence, and related free functions.
 
 Integer Set
 A set of integers.
 
 Type Set
 A set of types.
 
 Type-encoded String
 Strings in the type system.
 

Classes

class  sp::BitfieldMap< KeyBits, Members >
 An associative container backed by a sorted list of integers. More...
 
class  sp::DenseIntegerSet< Start, Ints >
 A compile-time set of integers, backed by a bitset. More...
 
class  sp::TypeList< Ts >
 A compile-time list of types, providing all the usual list primitives. More...
 

Typedefs

template<int KeyBits, uint64_t... Members>
using sp::B64Map = BitfieldMap< KeyBits, sp::uint64_sequence< Members... > >
 
template<int Start, uint64_t... Is>
using sp::DenseIntSet = sp::DenseIntegerSet< Start, sp::uint64_sequence< Is... > >
 
template<typename T , int >
using sp::Repeat = T
 
template<typename T , int N>
using sp::FilledTypeList = decltype(filledTypelistHelper< T >(sp::make_int_sequence< N >{}))
 Create a TypeList of length N with all values set to T More...
 

Functions

template<int KeyBits, typename LHSMembers , typename RHSMembers >
constexpr auto sp::operator| (BitfieldMap< KeyBits, LHSMembers > &&, BitfieldMap< KeyBits, RHSMembers > &&)
 
template<typename T , int... Is>
constexpr auto sp::filledTypelistHelper (sp::int_sequence< Is... > &&)
 

Detailed Description

Datastructures that encode their value in their type.

Such things are sometimes useful for very elaborate type calculations.

Typedef Documentation

◆ FilledTypeList

template<typename T , int N>
using sp::FilledTypeList = typedef decltype(filledTypelistHelper<T>(sp::make_int_sequence<N>{}))

Create a TypeList of length N with all values set to T