PeriDyno 0.8.2
Object.cpp
Go to the documentation of this file.
1#include <map>
2#include "Object.h"
3
4namespace dyno
5{
6static std::map< std::string, ClassInfo*> *classInfoMap = NULL;
7
9
10#define BASE_ID 0
11
12std::atomic_uint32_t Object::cId {BASE_ID + 1};
13
15{
17}
18
20{
21 if (!classInfoMap) {
22 classInfoMap = new std::map< std::string, ClassInfo*>();
23 }
24 if (ci) {
25 if (classInfoMap->find(ci->m_className) == classInfoMap->end()) {
26 classInfoMap->insert(std::map< std::string, ClassInfo*>::value_type(ci->m_className, ci));
27 // fprintf(stderr,"%s\n", ci->m_className.c_str());
28 }
29 }
30 return true;
31}
32Object* Object::createObject(std::string name)
33{
34 std::map< std::string, ClassInfo*>::const_iterator iter = classInfoMap->find(name);
35 if (classInfoMap->end() != iter) {
36 return iter->second->createObject();
37 }
38 return NULL;
39}
40
41std::map< std::string, ClassInfo*>* Object::getClassMap()
42{
43 return classInfoMap;
44}
45
47{
48 return BASE_ID;
49}
50
52{
53 return cId++;
54}
55
57{
58 return Object::registerClass(ci);
59}
60}
#define BASE_ID
Definition: Object.cpp:10
std::string m_className
Definition: Object.h:61
static std::map< std::string, ClassInfo * > * getClassMap()
Definition: Object.cpp:41
static ObjectId baseId()
Base Id.
Definition: Object.cpp:46
static Object * createObject(std::string name)
Definition: Object.cpp:32
static bool registerClass(ClassInfo *ci)
Definition: Object.cpp:19
static uint32_t generateObjectId()
Definition: Object.cpp:51
static std::atomic_uint32_t cId
Definition: Object.h:134
This is an implementation of AdditiveCCD based on peridyno.
Definition: Array.h:24
IMPLEMENT_CLASS(PrintInt)
bool Register(ClassInfo *ci)
Definition: Object.cpp:56
uint32_t ObjectId
Definition: Object.h:110
static std::map< std::string, ClassInfo * > * classInfoMap
Definition: Object.cpp:6