00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _SOSUBIMAGERASTERRW_
00026 #define _SOSUBIMAGERASTERRW_
00027
00028 #include <Inventor/SoType.h>
00029
00031
00032
00033
00034 #define SO_IMAGE_RASTER_RW_SOURCE(parent, className, classPrintName) \
00035 \
00036 SoType className::m_classTypeId; \
00037 \
00038 SoType \
00039 className::getClassTypeId() \
00040 { \
00041 return m_classTypeId; \
00042 } \
00043 \
00044 SoType \
00045 className::getTypeId() const \
00046 { \
00047 return m_classTypeId; \
00048 } \
00049 \
00050 void \
00051 className::initClass() \
00052 { \
00053 if ( m_classTypeId.isBad() ) { \
00054 if (parent::getClassTypeId().isBad() ) \
00055 parent::initClass(); \
00056 m_classTypeId = SoType::createType(parent::getClassTypeId(), classPrintName, &className::createInstance); \
00057 } \
00058 } \
00059 \
00060 void \
00061 className::exitClass() \
00062 { \
00063 if ( m_classTypeId != SoType::badType() ) { \
00064 SoType::removeType(m_classTypeId.getName()); \
00065 m_classTypeId = SoType::badType(); \
00066 } \
00067 } \
00068 void* \
00069 className::createInstance(SoType *) \
00070 { \
00071 return (void *)(new className); \
00072 }
00073
00074
00075 #define SO_IMAGE_RASTER_RW_ABSTRACT_SOURCE(className, classPrintName) \
00076 \
00077 SoType className::m_classTypeId; \
00078 \
00079 SoType \
00080 className::getClassTypeId() \
00081 { \
00082 return m_classTypeId; \
00083 } \
00084 \
00085 void \
00086 className::initClass() \
00087 { \
00088 if ( m_classTypeId.isBad() ) { \
00089 m_classTypeId = SoType::createType(SoType::badType(), classPrintName); \
00090 } \
00091 } \
00092 \
00093 void \
00094 className::exitClass() \
00095 { \
00096 if ( m_classTypeId != SoType::badType() ) { \
00097 SoType::removeType(m_classTypeId.getName()); \
00098 m_classTypeId = SoType::badType(); \
00099 } \
00100 }
00101
00102
00103
00104 #define SO_IMAGE_RASTER_RW_HEADER() \
00105 public: \
00106 \
00107 virtual SoType getTypeId() const; \
00108 \
00109 static SoType getClassTypeId(); \
00110 private: \
00111 static void initClass(); \
00112 static void exitClass(); \
00113 static void *createInstance(SoType* dynamicType = 0); \
00114 \
00115 private: \
00116 static SoType m_classTypeId;
00117
00118 #define SO_IMAGE_RASTER_RW_ABSTRACT_HEADER() \
00119 public: \
00120 \
00121 virtual SoType getTypeId() const = 0; \
00122 \
00123 static SoType getClassTypeId(); \
00124 private: \
00125 static void initClass(); \
00126 static void exitClass(); \
00127 \
00128 private: \
00129 static SoType m_classTypeId;
00130
00131 #endif
00132
00133