Evo C++ Library v0.5.1
|
Evo Metaprogramming. More...
#include "impl/sys.h"
Go to the source code of this file.
Classes | |
struct | AddConst< T > |
Add const to type. More... | |
struct | TypeId::ByteCopy |
Used to identify ByteCopy types. More... | |
struct | EvoContainer< T > |
Trait to identify Evo container types. More... | |
struct | TypeId::Get< T > |
Use to get type ID info for type T. More... | |
struct | TypeId::GetFill< T > |
Use to get type ID info for type T as for filling arrays/buffers. More... | |
struct | IsArray< T > |
Check if type is an array. More... | |
struct | IsBool< T > |
Check if type is a boolean (true/false) type. More... | |
struct | IsByteCopyType< T > |
Check if type is a ByteCopy type. More... | |
struct | IsConst< T > |
Check if type is const. More... | |
class | IsConvertible< T, U > |
Check if type T is convertible to type U. More... | |
class | IsEvoContainer< T > |
Check if type is an EvoContainer. More... | |
struct | IsFloat< T > |
Check if type is a floating point type. More... | |
struct | IsInt< T > |
Check if type is an integer (whole number) type. More... | |
struct | IsNormalType< T > |
Check if type is a normal type (not POD and not ByteCopy type). More... | |
class | IsNullable< T > |
Check if type is nullable. More... | |
struct | IsPodType< T > |
Check if type is a Plan Old Data type. More... | |
struct | IsPointer< T > |
Check if type is a pointer. More... | |
struct | IsReference< T > |
Check if type is a reference. More... | |
struct | IsSame< T1, T2 > |
Check if types are exactly the same. More... | |
struct | IsSigned< T > |
Check if integer type is unsigned. More... | |
struct | TypeId::Normal |
Used to identify normal types (not POD, and not ByteCopy). More... | |
struct | TypeId::Pod |
Used to identify POD (Plain Old Data) types. More... | |
struct | RemoveConst< T > |
Remove const from type. More... | |
struct | RemoveConstVol< T > |
Remove const & volatile from type. More... | |
struct | RemoveExtents< T > |
Remove extents (pointer and array parts) from type. More... | |
struct | RemoveExtentsConstVol< T > |
Remove extents (pointer and array parts) and then const & volatile from type. More... | |
struct | RemoveVolatile< T > |
Remove volatile from type. More... | |
struct | StaticBool< val > |
Static bool value. More... | |
struct | StaticIf< b, T, F > |
Static conditional type. More... | |
struct | ToSigned< T > |
Translate integer type to signed. More... | |
struct | ToUnsigned< T > |
Translate integer type to unsigned. More... | |
struct | TypeId |
Type ID info (POD, ByteCopy, Normal). More... | |
Namespaces | |
evo | |
Evo C++ Library namespace. | |
Macros | |
#define | EVO_BCTYPE(Type) namespace evo { template<> struct ByteCopyType<Type> : public StaticBoolT { }; } |
Identify the given type as a Byte-Copy type. More... | |
#define | EVO_CONTAINER(Type) EVO_TRAIT_NSET(evo,EvoContainer,Type) |
Identify given type as an EvoContainer. More... | |
#define | EVO_CONTAINER_TYPE typedef void EvoContainerType |
Identify current class/struct as an EvoContainer. More... | |
#define | EVO_CREATE_HAS_METHOD(TypeName, ReturnType, Func, ...) |
Create template to check if type has a member function matching given signature. More... | |
#define | EVO_CREATE_HAS_METHOD_CONST(TypeName, ReturnType, Func, ...) |
Create template to check if type has a const member function matching given signature. More... | |
#define | EVO_CREATE_HAS_VAR(TypeName, VarType, VarName) |
Create template to check if type has a member variable matching given signature. More... | |
#define | EVO_PODTYPE(Type) namespace evo { template<> struct PodType<Type> : public StaticBoolT { }; } |
Identify given type as a Plain Old Data Type. More... | |
#define | EVO_STATIC_JOIN(A, B) IMPL_EVO_STATIC_JOIN1(A,B) |
Join (concatenate) compile-time symbols after resolving macros. More... | |
#define | EVO_TRAIT_CREATE(Name) template<class T> struct Name : StaticBoolF { }; |
Helper for creating a boolean trait type. More... | |
#define | EVO_TRAIT_NSET(Namespace, Name, Type) namespace Namespace { template<> struct Name< Type > : public StaticBoolT { }; } |
Helper for setting a boolean trait for given type. More... | |
#define | EVO_TRAIT_SET(Name, Type) template<> struct Name< Type > : public StaticBoolT { }; |
Helper for setting a boolean trait for given type. More... | |
#define | EVO_TYPE_SELECT(T, Pod, Bc, Normal) typename StaticIf<IsPodType<T>::value,Pod,typename StaticIf<IsByteCopyType<T>::value,Bc,Normal>::Type>::Type |
Select a type depending on whether Type is POD, ByteCopy, or Normal type. More... | |
#define | INCL_evo_meta_h |
#define | STATIC_ASSERT(EXP, TOKEN) static_assert(EXP,#TOKEN) |
Assert compile-time expression is true or trigger compiler error. More... | |
#define | STATIC_ASSERT_FUNC_UNUSED =delete; |
Assert a function is unused at compile-time. More... | |
#define | STATIC_ASSERT_FUNC_UNUSED_RET(RET) =delete; |
Assert a function is unused at compile-time (with return value). More... | |
Typedefs | |
typedef StaticBool< false > | StaticBoolF |
Static bool value (false). More... | |
typedef StaticBool< true > | StaticBoolT |
Static bool value (true). More... | |
Functions | |
template<class T > | |
bool | is_null (const T &val) |
Check whether object or value is null. More... | |
Evo Metaprogramming.
#define INCL_evo_meta_h |