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