uLib-0.2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Types.h File Reference
#include <iostream>
#include <typeinfo>
#include <boost/preprocessor.hpp>
#include "Core/Macros.h"
#include "Core/Mpl.h"

Go to the source code of this file.

Data Structures

struct  uLib::detail::TypeIntrospection
 
struct  uLib::detail::TypeIntrospection::IsIntrospectable< T >
 
struct  uLib::detail::TypeIntrospection::access< T >
 
struct  uLib::detail::TypeIntrospection::child_first_impl< T >
 
struct  uLib::detail::TypeIntrospection::child_first_impl< T >::lambda_CFList_f< T1, cond >
 
struct  uLib::detail::TypeIntrospection::child_first_impl< T >::lambda_CFList_f< T1, true >
 
struct  uLib::detail::TypeIntrospection::child_first_impl< T >::lambda_CFList< T1 >
 
struct  uLib::detail::TypeIntrospection::child_first< T >
 
struct  uLib::TypeIntrospection
 
struct  uLib::TypeIntrospection::child_first< T >
 
struct  uLib::PrintTypeId
 

Namespaces

 uLib
 
 uLib::detail
 

Macros

#define CONSTEXPR   BOOST_CONSTEXPR
 
#define BIT(n)   (1ULL << (n))
 
#define SETBIT(n, i)   ((n) |= BIT(i))
 
#define CLRBIT(n, i)   ((n) &= ~BIT(i))
 
#define TESTBIT(n, i)   ((Bool_t)(((n) & BIT(i)) != 0))
 
#define uLibTypeMacro(thisClass,...)
 

Typedefs

typedef float uLib::Real_t
 
typedef id_t uLib::Id_t
 
typedef void * uLib::Pointer_t
 
typedef bool uLib::Bool_t
 

Macro Definition Documentation

#define BIT (   n)    (1ULL << (n))
#define CLRBIT (   n,
 
)    ((n) &= ~BIT(i))
#define CONSTEXPR   BOOST_CONSTEXPR
#define SETBIT (   n,
 
)    ((n) |= BIT(i))
#define TESTBIT (   n,
 
)    ((Bool_t)(((n) & BIT(i)) != 0))
#define uLibTypeMacro (   thisClass,
  ... 
)
Value:
\
/* Friendship detail for accessing introspection */ \
template <typename> friend class uLib::detail::TypeIntrospection::access; \
\
/* type info structure*/ public: \
/* in GCC 4.8 must be public or dynamic_cast wont work */ \
struct type_info { \
/*WARNING: -std=c++0x required for this! */ \
constexpr static const char *name = BOOST_PP_STRINGIZE(thisClass); \
typedef BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__) BaseClass; \
typedef thisClass ThisClass; \
typedef uLib::mpl::vector<__VA_ARGS__,thisClass> TypeList; \
typedef uLib::mpl::vector<__VA_ARGS__> BaseList; \
typedef uLib::detail::TypeIntrospection::child_first<ThisClass>::type CFList; \
}; \
\
public: \
typedef type_info::BaseClass BaseClass; \
virtual const char *type_name() const { return type_info::name; } \
/* Object Props fwd declaration*/ \
struct ObjectProps; \
T::type_info type_info
Definition: Types.h:79