00001
00069 #ifndef INC_MI32_SERIALIZERITEM_H
00070 #define INC_MI32_SERIALIZERITEM_H
00071
00072 #ifndef INC_MI32_STDDEFNS_H
00073 #include <mi32/stddefns.h>
00074 #endif
00075
00076 #ifndef INC_MI32_SERIALIZERBASE_H
00077 #include <mi32/serializerbase.h>
00078 #endif
00079
00080
00095 class SERIALIZERITEM {
00096 public:
00097
00099 enum TYPE {
00100 TYPE_End = 0,
00101
00102
00103 TYPE_UINT8 = 1,
00104 TYPE_INT8 = 2,
00105 TYPE_UINT16 = 3,
00106 TYPE_INT16 = 4,
00107 TYPE_UINT32 = 5,
00108 TYPE_INT32 = 6,
00109 TYPE_BitUINT32 = 7,
00110 TYPE_UInt = 8,
00111 TYPE_Int = 9,
00112 TYPE_Float = 10,
00113 TYPE_Double = 11,
00114 TYPE_Bool = 12,
00115 TYPE_UINT8_Array = 13,
00116 TYPE_Enum = 14,
00117
00118
00119 TYPE_StringU = 20,
00120 TYPE_MISTRING = 21,
00121 TYPE_MISTRING_ML = 22,
00122 TYPE_StringMLU = 23,
00123 TYPE_MISTRINGLIST = 24,
00124 TYPE_StringA = 25,
00125 TYPE_StringMLRaw = 28,
00126
00127
00128 TYPE_FILEPATH = 31,
00129 TYPE_RVCOBJITEM = 32,
00130 TYPE_RVCOBJITEMLIST = 33,
00131 TYPE_RVCOBJECTNAME = 34,
00132 TYPE_RVCOBJITEMFILE = 35,
00133 TYPE_RVCOBJITEMOBJECT = 36,
00134 TYPE_RVCOBJECTFILE = 37,
00135 TYPE_RVCOBJECTOBJECT = 38,
00136 TYPE_RVCOBJITEMURL = 39,
00137
00138
00139 TYPE_Special = 40,
00140 TYPE_Struct = 42,
00141 TYPE_StructPtr = 43,
00142 TYPE_StructPtrArray = 44,
00143 TYPE_SIMPLE_ARRAY = 45,
00144 TYPE_DOUBLE_ARRAY = 46,
00145
00146
00147 TYPE_COLOR = 50,
00148 TYPE_DRECT2D = 51,
00149 TYPE_DPOINT2D = 52,
00150 TYPE_DPOINT3D = 53,
00151 TYPE_POINTSTYLE = 55,
00152 TYPE_LINESTYLE = 56,
00153 TYPE_POLYSTYLE = 57,
00154 TYPE_TEXTSTYLE = 58,
00155 TYPE_LPOINT2D = 59,
00156 TYPE_LRECT2D = 60,
00157 TYPE_OLDPROJPARMTOCRS = 61,
00158 TYPE_COORDREFSYS = 62,
00159 TYPE_REGION2D = 63,
00160 TYPE_DRECT3D = 64,
00161 TYPE_DOUBLE_RANGE = 65,
00162
00163 TYPE_SERIALIZABLE = 90,
00164 TYPE_SERIALIZABLEPTR = 91,
00165
00166 TYPE_InternalSer = 998,
00167 TYPE_Start = 999
00168 };
00169
00170 enum FLAGS {
00171 FLAG_None = 0x0000,
00172 FLAG_NoWrite0 = 0x0001,
00173 FLAG_NoWrite = 0x0002,
00174 FLAG_NoRead = 0x0004,
00175 FLAG_FileNoExist0 = 0x0008,
00176 FLAG_NoReportMissingFile = 0x0010,
00177 FLAG_Skippable = 0x0020,
00178 FLAG_AddOffsetCB = 0x0040,
00179 FLAG_FindFileImmed = 0x0080,
00180 FLAG_DontAskLinkFile = 0x0100,
00181 FLAG_ArrayNumItems = 0x0200,
00182 FLAG_FixedSizeArray = 0x0400,
00183 };
00184
00185 enum ACTION {
00186 ACTION_None = 0x0000,
00187 ACTION_ReadBegin = 0x0001,
00188 ACTION_ReadEnd = 0x0002,
00189 ACTION_WriteBegin = 0x0004,
00190 ACTION_WriteEnd = 0x0008,
00191 ACTION_Read = 0x0010,
00192 ACTION_Write = 0x0020
00193 };
00194
00195 typedef ERRVALUE (*CBFUNC)(SERIALIZER&, const SERIALIZERITEM*, void *data, ACTION action);
00196
00197 const char *name;
00198 TYPE type;
00199 int offset;
00200 int extra;
00201 const SERIALIZERITEM *substruct;
00202 FLAGS flags;
00203 CBFUNC cbfunc;
00204
00208 static SERIALIZERITEM* MergeArrays (
00209 const SERIALIZERITEM *def1,
00210 const SERIALIZERITEM *def2
00211 );
00212
00216 static SERIALIZERITEM* MergeArrays (
00217 const SERIALIZERITEM *def1,
00218 int offset1,
00219 const SERIALIZERITEM *def2,
00220 int offset2
00221 );
00222
00223 };
00224 #ifndef GENERATING_DOXYGEN_OUTPUT
00225 DEFINE_ENUM_OP_BITWISE(SERIALIZERITEM::FLAGS)
00226 DEFINE_ENUM_OP_BITWISE(SERIALIZERITEM::ACTION)
00227 #endif
00228
00229 #endif // INC_MI32_SERIALIZERITEM_H