00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef INC_SML_USERDATA_H
00022 #define INC_SML_USERDATA_H
00023
00024 #ifndef INC_MI32_SIMPLEAR_H
00025 #include <mi32/simplear.h>
00026 #endif
00027
00028 #ifdef RVCSYSDLL
00029 #define RVCSYSLIBEXPORT MI_DLLEXPORT
00030 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSEXPORT
00031 #else
00032 #define RVCSYSLIBEXPORT MI_DLLIMPORT
00033 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSIMPORT
00034 #endif
00035
00036 namespace SML {
00037
00038
00052 class RVCSYSLIBCLASSEXPORT USERDATA {
00053 public:
00054
00055 enum TAG {
00056 TAG_NONE = 0,
00057 TAG_TABLE = 1,
00058 TAG_FIELD = 2,
00059 TAG_REGEXP = 3,
00060 TAG_FirstUserTag = 1000,
00061 TAG_BIGNUMBER = 0x7FFFFFF
00062 };
00063
00064 USERDATA (
00065 TAG tag
00066 ) :
00067 m_tag(tag)
00068 {
00069 }
00070
00071 virtual ~USERDATA (
00072 ) {
00073 }
00074
00079 static TAG AllocTag();
00080
00081 TAG GetTag (
00082 ) const {
00083 return m_tag;
00084 }
00085
00086 private:
00087 #ifndef GENERATING_DOXYGEN_OUTPUT
00088 TAG m_tag;
00089 static TAG s_NextTag;
00090 #endif // GENERATING_DOXYGEN_OUTPUT
00091 };
00092
00093
00094 #ifndef GENERATING_DOXYGEN_OUTPUT
00095 class USERDATACONTAINER {
00096 public:
00097 USERDATACONTAINER() : m_userdata(0) {}
00098 ~USERDATACONTAINER();
00099 void Init() { m_userdata = 0; }
00100 void Destroy();
00101
00108 void Attach (
00109 USERDATA*
00110 );
00111
00116 void Detach (
00117 USERDATA*
00118 );
00119
00120
00124 USERDATA* Get (
00125 USERDATA::TAG
00126 );
00127
00128 private:
00129 SIMPLE_ARRAY<USERDATA*>* m_userdata;
00130 };
00131
00132 #endif // GENERATING_DOXYGEN_OUTPUT
00133 }
00134
00135 typedef SML::USERDATA SMLUSERDATA;
00136 typedef SML::USERDATACONTAINER SMLUSERDATACONTAINER;
00137
00138
00139 #undef RVCSYSLIBEXPORT
00140 #undef RVCSYSLIBCLASSEXPORT
00141
00142 #endif // INC_SML_USERDATA_H
00143
00144