00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SOQTOBJECT_H
00025 #define SOQTOBJECT_H
00026
00027 #include <assert.h>
00028
00029 #include <Inventor/SbBasic.h>
00030 #include <Inventor/SbString.h>
00031 #include <Inventor/SoType.h>
00032
00033 #include <Inventor/Qt/SoQtBasic.h>
00034
00035
00036
00037 class SOQT_DLL_API SoQtObject {
00038 static SoType classTypeId;
00039
00040 public:
00041 static void initClass(void);
00042 static SoType getClassTypeId(void);
00043 virtual SoType getTypeId(void) const = 0;
00044 SbBool isOfType(SoType type) const;
00045
00046 static void init(void);
00047
00048 };
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 #define SOQT_OBJECT_ABSTRACT_HEADER(classname, parentname) \
00059 public: \
00060 static void initClass(void); \
00061 static SoType getClassTypeId(void); \
00062 virtual SoType getTypeId(void) const ; \
00063 private: \
00064 typedef parentname inherited; \
00065 static SoType classTypeId
00066
00067 #define SOQT_OBJECT_HEADER(classname, parentname) \
00068 public: \
00069 static void initClass(void); \
00070 static SoType getClassTypeId(void); \
00071 virtual SoType getTypeId(void) const; \
00072 static void * createInstance(void); \
00073 private: \
00074 typedef parentname inherited; \
00075 static SoType classTypeId
00076
00077 #define SOQT_OBJECT_ABSTRACT_SOURCE(classname) \
00078 void classname::initClass(void) { \
00079 assert(classname::classTypeId == SoType::badType()); \
00080 classname::classTypeId = \
00081 SoType::createType(inherited::getClassTypeId(), \
00082 SO__QUOTE(classname)); \
00083 } \
00084 SoType classname::getClassTypeId(void) { \
00085 return classname::classTypeId; \
00086 } \
00087 SoType classname::getTypeId(void) const { \
00088 return classname::classTypeId; \
00089 } \
00090 SoType classname::classTypeId
00091
00092 #define SOQT_OBJECT_SOURCE(classname) \
00093 void classname::initClass(void) { \
00094 assert(classname::classTypeId == SoType::badType()); \
00095 classname::classTypeId = \
00096 SoType::createType(inherited::getClassTypeId(), \
00097 SO__QUOTE(classname), \
00098 classname::createInstance); \
00099 } \
00100 SoType classname::getClassTypeId(void) { \
00101 return classname::classTypeId; \
00102 } \
00103 SoType classname::getTypeId(void) const { \
00104 return classname::classTypeId; \
00105 } \
00106 void * classname::createInstance(void) { \
00107 assert(classname::classTypeId != SoType::badType()); \
00108 return (void *) new classname; \
00109 } \
00110 SoType classname::classTypeId
00111
00112
00113
00114 #endif // ! SOQTOBJECT_H