Dynalib Utils
DynaRTTI.h
Go to the documentation of this file.
1 
30 #define RTTI_BASE_CLASS_TREE(...) \
31  enum RTTI{ __VA_ARGS__ }; \
32  static RTTI _rttiTree;
33 
34 #define RTTI_BASE_CLASS_PRIVATE \
35  const RTTI _classType;
36 
37 #define RTTI_BASE_CLASS_PROTECTED_CONSTRUCTOR(BASE_CLASS) \
38  BASE_CLASS(RTTI classType) : _classType(classType) { \
39  }
40 
41 
42 #define RTTI_BASE_CLASS_PUBLIC \
43  const RTTI getClassType() const { return _classType; }
44 
45 
46 #define RTTI_PROTECTED_CONSTRUCTOR(PARENT_CLASS, THIS_CLASS) \
47  THIS_CLASS(RTTI classType) : PARENT_CLASS(classType) { \
48  }
49 
50 #define RTTI_PUBLIC_DEFAULT_CONSTRUCTOR(THIS_CLASS, RTTI_TYPE) \
51  THIS_CLASS() : THIS_CLASS(_FT_##RTTI_TYPE) { \
52  }
53 
62 #define RTTI_PUBLIC_METHODS(BASE_CLASS, RTTI_TYPE) \
63  static bool isTypeOf(const BASE_CLASS *clazz) { \
64  const RTTI rttiType = clazz->getClassType(); \
65  return (rttiType >= _FT_##RTTI_TYPE && rttiType <= _LT_##RTTI_TYPE); \
66  }