40 #include <Inventor/SbBasic.h>
41 #include <Inventor/SbString.h>
42 #include <Inventor/SoType.h>
44 #include <Inventor/Qt/SoQtBasic.h>
49 static SoType classTypeId;
52 static void initClass(
void);
53 static SoType getClassTypeId(
void);
55 SbBool isOfType(SoType type)
const;
57 static void init(
void);
64 #if (SOQT_MAJOR_VERSION > 1)
65 #error Resolve missing virtual destructor issue for the new major release!
74 #define SOQT_SUN_CC_4_0_SOTYPE_INIT_BUG 0
76 #if SOQT_SUN_CC_4_0_SOTYPE_INIT_BUG
77 #define SOQT_STATIC_SOTYPE_INIT
79 #define SOQT_STATIC_SOTYPE_INIT = SoType::badType()
90 #define SOQT_OBJECT_ABSTRACT_HEADER(classname, parentname) \
92 static void initClass(void); \
93 static SoType getClassTypeId(void); \
94 virtual SoType getTypeId(void) const ; \
96 typedef parentname inherited; \
97 static SoType classTypeId
99 #define SOQT_OBJECT_HEADER(classname, parentname) \
101 static void initClass(void); \
102 static SoType getClassTypeId(void); \
103 virtual SoType getTypeId(void) const; \
104 static void * createInstance(void); \
106 typedef parentname inherited; \
107 static SoType classTypeId
109 #define SOQT_OBJECT_ABSTRACT_SOURCE(classname) \
110 void classname::initClass(void) { \
111 assert(classname::classTypeId == SoType::badType()); \
112 classname::classTypeId = \
113 SoType::createType(inherited::getClassTypeId(), \
114 SO__QUOTE(classname)); \
116 SoType classname::getClassTypeId(void) { \
117 return classname::classTypeId; \
119 SoType classname::getTypeId(void) const { \
120 return classname::classTypeId; \
122 SoType classname::classTypeId SOQT_STATIC_SOTYPE_INIT
124 #define SOQT_OBJECT_SOURCE(classname) \
125 void classname::initClass(void) { \
126 assert(classname::classTypeId == SoType::badType()); \
127 classname::classTypeId = \
128 SoType::createType(inherited::getClassTypeId(), \
129 SO__QUOTE(classname), \
130 classname::createInstance); \
132 SoType classname::getClassTypeId(void) { \
133 return classname::classTypeId; \
135 SoType classname::getTypeId(void) const { \
136 return classname::classTypeId; \
138 void * classname::createInstance(void) { \
139 assert(classname::classTypeId != SoType::badType()); \
140 return (void *) new classname; \
142 SoType classname::classTypeId SOQT_STATIC_SOTYPE_INIT
The SoQtObject class is the common superclass for all SoQt component classes.
Definition: SoQtObject.h:48
virtual SoType getTypeId(void) const =0