27typedef Object* (*ObjectConstructorFn)(void);
65#define DECLARE_CLASS(name) \
67 static const ClassInfo* ms_classinfo; \
69 virtual const ClassInfo* getClassInfo() const; \
70 static Object* createObject();
73#define IMPLEMENT_CLASS_COMMON(name,func) \
74const ClassInfo* name::ms_classinfo = new ClassInfo((#name), (ObjectConstructorFn) func); \
76const ClassInfo* name::getClassInfo() const \
77 {return name::ms_classinfo;}
79#define IMPLEMENT_CLASS(name) \
80IMPLEMENT_CLASS_COMMON(name,name::createObject) \
81Object* name::createObject() \
87#define DECLARE_TCLASS(name, T1) \
89 static const ClassInfo ms_classinfo; \
91 virtual const ClassInfo* getClassInfo() const; \
92 static Object* createObject();
94#define IMPLEMENT_CLASS_COMMON_1(name, T1, func) \
95template<typename T1> \
96const ClassInfo name<T1>::ms_classinfo(std::string(_STR(name)).append("<").append(T1::getName()).append(">"), \
97 (ObjectConstructorFn) func); \
99template<typename T1> \
100const ClassInfo* name<T1>::getClassInfo() const \
101 {return &name<T1>::ms_classinfo;}
103#define IMPLEMENT_TCLASS(name, T1) \
104IMPLEMENT_CLASS_COMMON_1(name, T1, name<T1>::createObject) \
106template<typename T1> \
107Object* name<T1>::createObject() \
108 { return new name<T1>;}
120 static std::map< std::string, ClassInfo*>*
getClassMap();
134 static std::atomic_uint32_t
cId;
137#ifdef PRECISION_FLOAT
138#define DEFINE_CLASS(name) template class name<DataType3f>;
140#define DEFINE_CLASS(name) template class name<DataType3d>;
143#define DEFINE_UNIQUE_CLASS(name, type) template class name<type>;
#define DECLARE_CLASS(name)
ObjectConstructorFn getConstructor() const
ClassInfo(const std::string className, ObjectConstructorFn ctor)
const std::string getClassName() const
ObjectConstructorFn m_objectConstructor
Object * createObject() const
bool operator==(const ClassInfo &ci) const
static std::map< std::string, ClassInfo * > * getClassMap()
static ObjectId baseId()
Base Id.
static Object * createObject(std::string name)
static bool registerClass(ClassInfo *ci)
static uint32_t generateObjectId()
static std::atomic_uint32_t cId
This is an implementation of AdditiveCCD based on peridyno.
bool Register(ClassInfo *ci)
Object *(* ObjectConstructorFn)(void)