X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/40c50e73054c04f97b5e5a618f1676eb5c3c9658..5d37103da397672aff379d7dc01186068bfc1498:/src/cxx/Object.hpp diff --git a/src/cxx/Object.hpp b/src/cxx/Object.hpp deleted file mode 100644 index fc89d91fa1..0000000000 --- a/src/cxx/Object.hpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Object.hpp - * - * This file contains the declaration of the wrapper class of the native MSG task type. - * - * Copyright 2006,2007 Martin Quinson, Malek Cherier - * All right reserved. - * - * This program is free software; you can redistribute - * it and/or modify it under the terms of the license - *(GNU LGPL) which comes with this package. - * - */ -#ifndef MSG_OBJECT_H -#define MSG_OBJECT_H - -// Compilation C++ recquise -#ifndef __cplusplus - #error Object.hpp requires C++ compilation (use a .cxx suffix) -#endif - -#include - -#include - -namespace SimGrid -{ - namespace Msg - { - ////////////////////////////////////////////////////////////////////////////// - // Macros - - // Returns the runtime class of the class_name object. - #define MSG_GET_CLASS(class_name) \ - ((Class*)(&class_name::class##class_name)) - - // Declare the class class_name as dynamic - #define MSG_DECLARE_DYNAMIC(class_name) \ - public: \ - static Class class##class_name; \ - virtual Class* getClass() const; \ - static Object* createObject() \ - - // The runtime class implementation. - #define MSG_IMPLEMENT_CLASS(class_name, base_class_name, pfn,class_init) \ - Class class_name::class##class_name = { \ - #class_name, sizeof(class class_name),pfn, \ - MSG_GET_CLASS(base_class_name), NULL,class_init}; \ - Class* class_name::getClass() const \ - { return MSG_GET_CLASS(class_name); } \ - - // CreateObject implementation. - #define MSG_IMPLEMENT_DYNAMIC(class_name, base_class_name) \ - Object* class_name::createObject() \ - { return (Object*)(new class_name); } \ - DeclaringClass _declaringClass_##class_name(MSG_GET_CLASS(class_name)); \ - MSG_IMPLEMENT_CLASS(class_name, base_class_name, \ - class_name::createObject, &_declaringClass_##class_name) \ - - ////////////////////////////////////////////////////////////////////////////// - // Classes declared in this file. - - class Object; // The msg object. - - ////////////////////////////////////////////////////////////////////////////// - // Structures declared in this files. - - struct Class; // used during the rtti operations - struct DeclaringClass; // used during the instances registration. - - - class DeclaringClasses; - - ////////////////////////////////////////////////////////////////////////////// - // Global functions - - // Used during the registration. - void DeclareClass(Class* c); - - ////////////////////////////////////////////////////////////////////////////// - // DeclaringClass - - struct SIMGRIDX_EXPORT DeclaringClass - { - // Constructor : add the runtime classe in the list. - DeclaringClass(Class* c); - - // Destructor - virtual ~DeclaringClass(void); - - // Attributes : - // the list of runtime classes. - static DeclaringClasses* declaringClasses; - }; - - #define MSG_DELCARING_CLASSES (*(DeclaringClass::declaringClasses)) - - - struct SIMGRIDX_EXPORT Class - { - - // Attributes - - const char* name; // class name. - size_t typeSize; // type size. - Object* (*createObjectFn)(void); // pointer to the create object function. - Class* baseClass; // the runtime class of the runtime class. - Class* next; // the next runtime class in the list. - const DeclaringClass* declaringClass; // used during the registration of the class. - - // Operations - - // Create the runtime class from its name. - static Class* fromName(const char* name) - throw (ClassNotFoundException); - - // Create an object from the name of the its class. - static Object* createObject(const char* name); - - // Create an instance of the class. - Object* createObject(void); - - // Return true is the class is dervived from the base class baseClass. - bool isDerivedFrom(const Class* baseClass) const; - - }; - - // Create an instance of the class. - inline Object* Class::createObject(void) - { - return (*createObjectFn)(); - } - - - class SIMGRIDX_EXPORT Object - { - public: - - // Default constructor. - Object(){} - - // Destructor. - virtual ~Object(){} - - // Operations. - - // Get the runtime class. - virtual Class* getClass(void) const; - - // Returns true if the class is derived from the class baseClass. Otherwise - // the method returns false. - bool isDerivedFrom(const Class* baseClass) const; - - // Returns true if the object is valid. Otherwise the method returns false. - virtual bool isValid(void) const; - - // Returns true is the object is an instance of the class specified as parameter. - bool isInstanceOf(const char* className); - - // Operators. - - // Attributes. - - // The runtime class. - static const Class classObject; - }; - - // inline member functions of the class Object. - - // Returns the runtime class of the object. - inline Class* Object::getClass(void) const - { - return MSG_GET_CLASS(Object); - } - - // Returns true if the class is derived from the class pBaseClass. Otherwise - // the method returns false. - inline bool Object::isDerivedFrom(const Class* baseClass) const - { - return (getClass()->isDerivedFrom(baseClass)); - } - - // Returns true if the object is valid. Otherwise the method returns false. - inline bool Object::isValid(void) const - { - // returns always true. - return true; - } - - - class DeclaringClasses - { - public: - - // Constructor. - DeclaringClasses(); - - // Destructor. - virtual ~DeclaringClasses(){} - - // Operations. - - // Add the class at the head of the list. - void addHead(Class* c); - - // Get the runtime class of the head of the list. - Class* getHead(void) const ; - - // Remove the class from the list (don't destroy it). - bool remove(Class* c); - - // Remove the head of the list. - Class* removeHead(void); - - // Return true if the list is empty. - - bool isEmpty(void) const; - - // Remove of the elements of the list. - void removeAll(void); - - // Get the number of classes in the list. - unsigned int getCount(void); - - void lock(void){} - - void unlock(void){} - - //Attributes - - // The head of the list. - Class* head; - - private: - - // Attributes - - // The number of elements of the list. - unsigned int count; - }; - - typedef Object* ObjectPtr; - - - // Constructor (Add the class in the list). - inline DeclaringClass::DeclaringClass(Class* c) - { - if(!declaringClasses) - declaringClasses = new DeclaringClasses(); - - DeclareClass(c); - } - - // Destructor. - inline DeclaringClass::~DeclaringClass() - { - /*if(NULL != declaringClasses) - delete declaringClasses; - - declaringClasses=NULL;*/ - - } - - // Returns the number of elements of the list. - inline unsigned int DeclaringClasses::getCount() - { - return count; - } - - // Returns the head of the list. - inline Class* DeclaringClasses::getHead() const - { - return head; - } - - // Returns true if the list is empty. Otherwise this function - // returns false. - inline bool DeclaringClasses::isEmpty() const - { - return(!head); - } - - // Removes all the elements of the list. - inline void DeclaringClasses::removeAll() - { - head = 0; - count=0; - } - - } // namespace Msg -} // namespace SimGrid - - -using namespace SimGrid::Msg; - -#define instanceOf(class_name) reinterpret_cast(Class::createObject(#class_name)) - -#endif // !MSG_OBJECT_H -