Evo C++ Library v0.5.1
Classes | Namespaces | Macros | Typedefs | Functions
meta.h File Reference

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...
 

Detailed Description

Evo Metaprogramming.

Macro Definition Documentation

◆ INCL_evo_meta_h

#define INCL_evo_meta_h