-#include <object.hpp>\r
+#include <Object.hpp>\r
#include <string.h>\r
\r
\r
DeclaringClasses* DeclaringClass::declaringClasses = NULL;\r
\r
\r
-namespace msg\r
+namespace SimGrid\r
{\r
- // Generate static object constructor for class registration\r
- void DeclareClass(Class* c)\r
- {\r
- MSG_DELCARING_CLASSES.lock();\r
- MSG_DELCARING_CLASSES.addHead(c);\r
- MSG_DELCARING_CLASSES.unlock();\r
- }\r
-} \r
+ namespace Msg\r
+ {\r
+\r
+ // Generate static object constructor for class registration\r
+ void DeclareClass(Class* c)\r
+ {\r
+ MSG_DELCARING_CLASSES.lock();\r
+ MSG_DELCARING_CLASSES.addHead(c);\r
+ MSG_DELCARING_CLASSES.unlock();\r
+ }\r
+ } // namespace Msg\r
+} // namespace SimGrid\r
\r
//////////////////////////////////////////////////////////////////////////////\r
// Implémentation des fonctions membre de la classe Class\r
\r
// Dynamic name lookup and creation\r
Class* Class::fromName(const char* name)\r
+throw (ClassNotFoundException)\r
{\r
Class* cur;\r
\r
for(cur = MSG_DELCARING_CLASSES.getHead(); cur; cur = cur->next)\r
{\r
if(!strcmp(name,cur->name))\r
- break;\r
+ return cur;\r
+\r
}\r
\r
MSG_DELCARING_CLASSES.unlock();\r
throw ClassNotFoundException(name);\r
}\r
\r
+\r
Object* Class::createObject(const char* name)\r
{\r
Class* c = fromName(name);\r
- \r
- if(NULL == c)\r
- return NULL;\r
- \r
return c->createObject();\r
}\r
\r
\r
return success;\r
}\r
+\r
+bool Object::isInstanceOf(const char* className)\r
+{\r
+ Class* c = Class::fromName(className);\r
+\r
+ return this->getClass()->isDerivedFrom(c);\r
+}\r
\r
\r