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 INC_SML_STRING_H
00025 #define INC_SML_STRING_H
00026
00027 #ifndef INC_MI32_MISTRING_H
00028 #include <mi32/mistring.h>
00029 #endif
00030
00031 #ifndef INC_MI32_USERDATA_H
00032 #include <sml/userdata.h>
00033 #endif
00034
00035 #ifdef RVCSYSDLL
00036 #define RVCSYSLIBEXPORT MI_DLLEXPORT
00037 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSEXPORT
00038 #else
00039 #define RVCSYSLIBEXPORT MI_DLLIMPORT
00040 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSIMPORT
00041 #endif
00042
00043 namespace SML {
00044 union ARG;
00045 class FLAG;
00046 class PARM;
00047
00048
00054 class RVCSYSLIBCLASSEXPORT STRING : public MISTRING {
00055
00056 #if defined (RVCSYSDLL)
00057 public:
00058 #else
00059 private:
00060 #endif
00061
00062 #ifndef GENERATING_DOXYGEN_OUTPUT
00064
00066 STRING (
00067 );
00068
00073 STRING (
00074 const char *s
00075 );
00076
00081 STRING (
00082 const void *s,
00083 CHAR_ENCODING encoding
00084 );
00085
00090 STRING (
00091 const MIUNICODE *s
00092 );
00093
00098 STRING (
00099 const UINT8 *s
00100 );
00101
00103 STRING (
00104 const STRING& rhs
00105 );
00106
00107 private:
00108
00111 virtual ~STRING();
00112
00113 #endif // GENERATING_DOXYGEN_OUTPUT
00114 public:
00115
00122 void AttachUserData (
00123 USERDATA* data
00124 );
00125
00130 void DetachUserData (
00131 USERDATA* data
00132 );
00133
00134
00138 USERDATA* GetUserData (
00139 USERDATA::TAG tag
00140 );
00141
00143 void AddRef ();
00144
00146 void Release ();
00147
00156 int FlagTextToValueSingle (
00157 const FLAG *flags,
00158 UINT32 *FlagVal
00159 ) const;
00160
00165 int FlagTextToValueSingle (
00166 const PARM *flags,
00167 UINT32 *FlagVal
00168 ) const;
00169
00179 int FlagTextToValueMultiple (
00180 const FLAG *flags,
00181 UINT32 *FlagVal
00182 ) const;
00183
00188 int FlagTextToValueMultiple (
00189 const PARM *flags,
00190 UINT32 *FlagVal
00191 ) const;
00192
00201 int FlagValueToTextSingle (
00202 const FLAG *flags,
00203 UINT32 *FlagVal
00204 );
00205
00210 int FlagValueToTextSingle (
00211 const PARM *flags,
00212 UINT32 *FlagVal
00213 );
00214
00224 int FlagValueToTextMultiple (
00225 const FLAG *flags,
00226 UINT32 *FlagVal
00227 );
00228
00233 int FlagValueToTextMultiple (
00234 const PARM *flags,
00235 UINT32 *FlagVal
00236 );
00237
00238 #ifndef GENERATING_DOXYGEN_OUTPUT
00239 #ifdef RVCSYSDLL
00240
00241
00242 int FlagTextToValueSingle (
00243 FLAG *flags,
00244 UINT32 *FlagVal
00245 );
00246
00247 int FlagTextToValueSingle (
00248 PARM *flags,
00249 UINT32 *FlagVal
00250 );
00251
00252 int FlagTextToValueMultiple (
00253 FLAG *flags,
00254 UINT32 *FlagVal
00255 );
00256
00257 int FlagTextToValueMultiple (
00258 PARM *flags,
00259 UINT32 *FlagVal
00260 );
00261
00262 int FlagValueToTextSingle (
00263 FLAG *flags,
00264 UINT32 *FlagVal
00265 );
00266
00267 int FlagValueToTextSingle (
00268 PARM *flags,
00269 UINT32 *FlagVal
00270 );
00271
00272 int FlagValueToTextMultiple (
00273 FLAG *flags,
00274 UINT32 *FlagVal
00275 );
00276
00277 int FlagValueToTextMultiple (
00278 PARM *flags,
00279 UINT32 *FlagVal
00280 );
00281 #endif
00282 #endif
00283
00286 DEPRECATED_MSG("Just construct a STRUTF8 from *smlstr") STRUTF8 GetSTRUTF8 (
00287 ) const;
00288
00290 DEPRECATED_MSG("Use Assign instead") void SetString (
00291 const char* str
00292 );
00293
00294 private:
00295 #ifndef GENERATING_DOXYGEN_OUTPUT
00296 int m_refcount;
00297 USERDATACONTAINER m_userdata;
00298
00299 friend class CONTEXT;
00300 #endif // GENERATING_DOXYGEN_OUTPUT
00301 };
00302
00304 RVCSYSLIBEXPORT void PrintfSubMISTRING (
00305 MISTRING& output,
00306 int numargs,
00307 SML::ARG *args,
00308 UINT8 *type
00309 );
00310
00311 }
00312
00313 typedef SML::STRING SMLSTRING;
00314 #define _SML_PrintfSubMISTRING SML::PrintfSubMISTRING
00315
00316 #undef RVCSYSLIBEXPORT
00317 #undef RVCSYSLIBCLASSEXPORT
00318
00319 #endif // INC_SML_STRING_H
00320
00321