Go to the documentation of this file.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
00026
00027
00028
00029
00030
00031
00032 #ifndef IXObjectImplHelperHPP
00033 #define IXObjectImplHelperHPP
00034
00035
00036
00037
00042
00043 #define MExportXRootObjectFactory(classid)\
00044 MODULE_EXPORT_PRE Retval MODULE_EXPORT MQUALIFIER create##classid(NAMESPACE_Zeus::IXMLNode* pMainNode, NAMESPACE_Zeus::IXMLDocument* pDocu, NAMESPACE_Zeus::IXObject*& rpObj) \
00045 { \
00046 Retval retValue = RET_INTERNAL_ERROR; \
00047 if (pMainNode != NULL && pDocu != NULL) \
00048 { \
00049 rpObj = new classid(*pMainNode, *pDocu); \
00050 retValue = RET_NOERROR; \
00051 } \
00052 return retValue; \
00053 } \
00054
00055
00060
00061 #define MExportXRootObjectFactoryNS(__namespace, classid)\
00062 MODULE_EXPORT_PRE Retval MODULE_EXPORT MQUALIFIER create##classid(NAMESPACE_Zeus::IXMLNode* pMainNode, NAMESPACE_Zeus::IXMLDocument* pDocu, NAMESPACE_Zeus::IXObject*& rpObj) \
00063 { \
00064 Retval retValue = RET_INTERNAL_ERROR; \
00065 if (pMainNode != NULL && pDocu != NULL) \
00066 { \
00067 rpObj = new __namespace::classid(*pMainNode, *pDocu); \
00068 retValue = RET_NOERROR; \
00069 } \
00070 return retValue; \
00071 } \
00072
00073
00074
00079
00080 #define MExportXObjectFactory(classid)\
00081 MODULE_EXPORT_PRE Retval MODULE_EXPORT MQUALIFIER create##classid(NAMESPACE_Zeus::IXMLNode* pMainNode, NAMESPACE_Zeus::IXMLDocument*, NAMESPACE_Zeus::IXObject*& rpObj) \
00082 { \
00083 Retval retValue = RET_INTERNAL_ERROR; \
00084 if (pMainNode != NULL) \
00085 { \
00086 rpObj = new classid(*pMainNode); \
00087 retValue = RET_NOERROR; \
00088 } \
00089 return retValue; \
00090 } \
00091
00092
00097
00098 #define MExportXObjectFactoryNS(__namespace, classid)\
00099 MODULE_EXPORT_PRE Retval MODULE_EXPORT MQUALIFIER create##__namespace(NAMESPACE_Zeus::IXMLNode* pMainNode, NAMESPACE_Zeus::IXMLDocument*, NAMESPACE_Zeus::IXObject*& rpObj) \
00100 { \
00101 Retval retValue = RET_INTERNAL_ERROR; \
00102 \
00103 if (pMainNode != NULL) \
00104 { \
00105 rpObj = new __namespace::classid(*pMainNode); \
00106 retValue = RET_NOERROR; \
00107 } \
00108 \
00109 return retValue; \
00110 } \
00111
00112
00113
00114
00115
00121
00122 #define REG_ROOT_BEGIN(classid) \
00123 protected: \
00124 static Retval MQUALIFIER createXRootObject(IXMLNode* pMainNode, IXMLDocument* pDocu, IXObject*& rpObj) \
00125 { \
00126 Retval retValue = RET_REQUEST_FAILED; \
00127 if (pMainNode != NULL && pDocu != NULL) \
00128 { \
00129 rpObj = new classid(*pMainNode, *pDocu); \
00130 retValue = RET_NOERROR; \
00131 } \
00132 else \
00133 { \
00134 retValue = RET_INTERNAL_ERROR; \
00135 } \
00136 return retValue; \
00137 } \
00138 public: \
00139 static bool autoregRoot(bool reg) \
00140 { \
00141 TString strClassName;\
00142
00143
00150
00151 #define REG_ROOT_ADD(classid, classname) \
00152 strClassName = classname; \
00153 static Uint classid##Handle = 0;\
00154 if (reg)\
00155 {\
00156 classid##Handle = TXObjectFactory::getInstance().registerXClass(strClassName, createXRootObject); \
00157 }\
00158 else\
00159 {\
00160 TXObjectFactory::getInstance().unregisterXClass(classid##Handle, strClassName); \
00161 }
00162
00163
00167
00168 #define REG_ROOT_END \
00169 return true;\
00170 }
00171
00172
00179
00180 #define REG_SUB_BEGIN(classid) \
00181 protected: \
00182 static Retval MQUALIFIER createXObject(IXMLNode* pMainNode, IXMLDocument* , IXObject*& rpObj) \
00183 { \
00184 Retval retVal = RET_REQUEST_FAILED; \
00185 if (pMainNode != NULL) \
00186 { \
00187 rpObj = new classid(*pMainNode); \
00188 retVal = RET_NOERROR; \
00189 } \
00190 else \
00191 { \
00192 retVal = RET_INTERNAL_ERROR; \
00193 } \
00194 return retVal; \
00195 } \
00196 public: \
00197 static bool autoregSub(bool reg) \
00198 { \
00199 TString strClassName;\
00200
00201
00208
00209 #define REG_SUB_ADD(classid, classname) \
00210 strClassName = classname; \
00211 static Uint classid##Handle = 0;\
00212 if (reg)\
00213 {\
00214 classid##Handle = TXObjectFactory::getInstance().registerXClass(strClassName, createXObject); \
00215 }\
00216 else\
00217 {\
00218 TXObjectFactory::getInstance().unregisterXClass(classid##Handle, strClassName); \
00219 }
00220
00221
00225
00226 #define REG_SUB_END \
00227 REG_ROOT_END
00228
00229
00230
00235
00236 #define XOBJECTFACTORY_REGISTER_ROOT(classid) \
00237 classid::autoregRoot(true);
00238
00239
00244
00245 #define XOBJECTFACTORY_UNREGISTER_ROOT(classid) \
00246 classid::autoregRoot(false);
00247
00248
00253
00254 #define XOBJECTFACTORY_REGISTER_SUB(classid) \
00255 classid::autoregSub(true);
00256
00257
00262
00263 #define XOBJECTFACTORY_UNREGISTER_SUB(classid) \
00264 classid::autoregSub(false);
00265
00266
00267
00268 #endif