cheshirekow  v0.1.0
kw Namespace Reference

classes and templates used by kwargs library More...

Namespaces

 details
 

Classes

struct  Arg
 parameter storage for type T within a parameter pack More...
 
struct  CanConvertTo
 
struct  ConstRefWrap
 signifies the parameter should be passed by const reference More...
 
struct  ContainsTag
 template meta-function contains a static boolean variable 'result' which is true if Tag is in the list of kwargs and false if not More...
 
struct  ContainsTag< Tag >
 specialization for when Tag is not in the type list More...
 
struct  ContainsTag< Tag, Arg< Tag, T >, Rest...>
 specialization for when the Arg<Tag,T> type is found More...
 
struct  ContainsTag< Tag, First, Rest...>
 specialization for recursion More...
 
struct  GetImpl
 provides static member Get() with implementations depending on whether or not Tag is in Args... More...
 
struct  GetImpl< Tag, false, Default, Args...>
 specialization for when Tag is not in Args..., returns the default value More...
 
struct  GetImpl< Tag, true, Default, Args...>
 specialization for when Tag is in Args... returns the value corresponding to Tag More...
 
class  has_member
 Template metafunction, ::result evaluates to true if Type has a function call operator member. More...
 
struct  is_call_possible
 
struct  Key
 assignment operator sentinal used as a key for key-values pairs in the kwargs parameter pack More...
 
struct  ParamPack
 storage for kwargs parameter pack More...
 
struct  ParamPack< Head, Tail...>
 specialization for recursion, provides storage for the current type in the type list, then recursively derives from the remaining types in the type list More...
 
struct  ParamPack< Tail >
 specialization for base case, provides storage for the last type in the type list More...
 
struct  RefWrap
 signifies that the parameter should be passed by reference More...
 
class  Tag
 constexpr string, used to implement tagging with strings More...
 
struct  TypeOfTagDefault
 template meta function provides a member typedef Result which evaluates to T if Arg<Tag,T> is in Args... or Default if it is not More...
 
struct  TypeOfTagDefault< Tag, Default >
 specialization for when Arg<Tag,T> is not in the type list More...
 
struct  TypeOfTagDefault< Tag, Default, Arg< Tag, T >, Tail...>
 specialization for when Arg<Tag,T> is found More...
 
struct  TypeOfTagDefault< Tag, Default, Head, Tail...>
 specialization for recursion More...
 

Functions

template<typename T >
const ConstRefWrap< T > ConstRef (const T &v)
 forces an argument to be passed by const reference More...
 
constexpr bool ContainsTagFn (uint64_t tag)
 Function version of ContainsTag. More...
 
template<uint64_t Tag, typename T , typename... Rest>
constexpr bool ContainsTagFn (uint64_t tag, Arg< Tag, T > first, Rest...rest)
 
template<uint64_t Tag, typename Default , typename... Args>
TypeOfTagDefault< Tag, Default,
Args...>::Result 
Get (ParamPack< Args...> &pack, Default d)
 given a parameter pack, retrieves and return sthe parameter tagged with tag, or else returns a default value if tag is not in Args... More...
 
template<uint64_t Tag, typename Default , typename... Args>
TypeOfTagDefault< Tag, Default,
Args...>::Result 
Get (ParamPack< Args...> &pack, const Key< Tag > &key, Default d)
 given a parameter pack, retrieves and return sthe parameter tagged with tag, or else returns a default value if tag is not in Args... More...
 
template<uint32_t N>
constexpr uint64_t Hash (const char(&string)[N])
 returns a 64bit hash of string More...
 
uint64_t HashString (const std::string &str, int i, uint64_t hash)
 Return an unsigned 64bit hash of string. More...
 
uint64_t HashString (const std::string &str)
 
template<typename T >
RefWrap< T > Ref (T &v)
 forces an argument to be passed by reference More...
 
template<typename T , typename ReturnType >
ReturnType SafeReturn (T query, ReturnType default_value)
 SFINAE to safely iterate over params in a parampack since we cannot use the ?: operator on any old pairs of types. More...
 

Detailed Description

classes and templates used by kwargs library

Function Documentation

template<typename T >
const ConstRefWrap<T> kw::ConstRef ( const T &  v)

forces an argument to be passed by const reference

Definition at line 46 of file kwargs.h.

constexpr bool kw::ContainsTagFn ( uint64_t  tag)
inline

Function version of ContainsTag.

Definition at line 296 of file kwargs.h.

template<uint64_t Tag, typename T , typename... Rest>
constexpr bool kw::ContainsTagFn ( uint64_t  tag,
Arg< Tag, T >  first,
Rest...  rest 
)
inline

Definition at line 301 of file kwargs.h.

template<uint64_t Tag, typename Default , typename... Args>
TypeOfTagDefault<Tag,Default,Args...>::Result kw::Get ( ParamPack< Args...> &  pack,
Default  d 
)
inline

given a parameter pack, retrieves and return sthe parameter tagged with tag, or else returns a default value if tag is not in Args...

Definition at line 84 of file kwargs.h.

template<uint64_t Tag, typename Default , typename... Args>
TypeOfTagDefault<Tag,Default,Args...>::Result kw::Get ( ParamPack< Args...> &  pack,
const Key< Tag > &  key,
Default  d 
)
inline

given a parameter pack, retrieves and return sthe parameter tagged with tag, or else returns a default value if tag is not in Args...

Definition at line 93 of file kwargs.h.

template<uint32_t N>
constexpr uint64_t kw::Hash ( const char(&)  string[N])
inline

returns a 64bit hash of string

Return an unsigned 64bit hash of string.

Definition at line 193 of file kwargs.h.

uint64_t kw::HashString ( const std::string &  str,
int  i,
uint64_t  hash 
)
inline

Return an unsigned 64bit hash of string.

Definition at line 99 of file kwargs.h.

uint64_t kw::HashString ( const std::string &  str)
inline

Definition at line 105 of file kwargs.h.

template<typename T >
RefWrap<T> kw::Ref ( T &  v)

forces an argument to be passed by reference

Definition at line 42 of file kwargs.h.

template<typename T , typename ReturnType >
ReturnType kw::SafeReturn ( query,
ReturnType  default_value 
)

SFINAE to safely iterate over params in a parampack since we cannot use the ?: operator on any old pairs of types.

Definition at line 212 of file kwargs.h.