CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
OdString.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24
25
26
27
28#ifndef __ODSTRING_H__
29#define __ODSTRING_H__
30
31#include <stdarg.h>
32#include <stdio.h>
33
34#include "OdMutex.h"
35#include "OdPlatformSettings.h"
36#include "OdCodePage.h"
37#include "OdAnsiString.h"
38
39#define odaIsValidString(lpch) (true)
40
41#include "TD_PackPush.h"
42
43#ifdef sgi
44#include <string>
45using namespace std; // va_XXXX items are in std namespace for newest SGI compiler
46#endif
47
59{
64
69
74
79
84};
85
95{
96public:
97
99
101 { init(); }
102
106
111
114#if defined(_MSC_VER) && _MSC_VER >= 1300
115 OdString(const __wchar_t* source);
116 OdString(const __wchar_t* source, int length);
117#endif
118
119
120 OdString(const char* lpch, OdCodePageId codepage = CP_CNT);
121#ifndef ODA_WINDOWS
122 OdString(const OdChar16_t* lpch, OdCodePageId codepage = CP_CNT);
123#endif
124 OdString(const char* lpch, int nLength, OdCodePageId codepage = CP_CNT);
125 OdString(const OdAnsiString&);
126protected:
127 explicit OdString(OdStringData* pData);
128public:
129
133 int getLength() const
134 {
135 if (isUnicodeNotInSync())
136 syncUnicode();
137 return getData()->nDataLength;
138 }
139 int getLengthA() const;
140
144 bool isEmpty() const
145 {
146 return (getData()->nDataLength == 0 &&
147 (getData()->ansiString == 0 || getAnsiString()->isEmpty()));
148 }
149
153 void empty();
154
159 OdChar getAt(int charIndex) const
160 {
161#ifdef TD_UNICODE
162 if (isUnicodeNotInSync())
163 syncUnicode();
164#endif
165 ODA_ASSERT(charIndex >= 0);
166 ODA_ASSERT(charIndex < getData()->nDataLength);
167 return getData()->unicodeBuffer[charIndex];
168 }
169
177 OdChar operator[](int charIndex) const
178 {
179 return getAt(charIndex);
180 }
181
189 void setAt(int charIndex, OdChar ch);
190
191#if defined(_MSC_VER) && defined(_WIN32) && defined(_DEBUG) && defined(ODA_LINT)
192#define UPDATECONSTSTRINGDIAGNISTIC
193private:
194 void updateConstStringDiagnostic(const OdChar* pAddr) const;
195public:
196#else
197 #define updateConstStringDiagnostic(pAddr)
198#endif
199
203 const OdChar* c_str() const
204 {
205 if (isUnicodeNotInSync())
206 syncUnicode();
207 const OdChar* pRet = getData()->unicodeBuffer;
209 return pRet;
210 }
211
215 inline operator const OdChar*() const
216 {
217 return c_str();
218 }
219
220#if defined(_MSC_VER) && _MSC_VER >= 1300
221 operator const __wchar_t*() const
222 {
223 return reinterpret_cast<const __wchar_t*>(c_str());
224 }
225#endif
226
227 operator const char*() const;
228
230
232
234
235#ifndef ODA_WINDOWS
237#endif
238
239#if defined(_MSC_VER) && _MSC_VER >= 1300
240 OdString& operator=(const __wchar_t* source){ return operator=((const OdChar*)source); }
241#endif
242
243 OdString& operator=(const OdAnsiString& source);
244
245 OdString& operator=(const char* source);
246
255 OdString& operator+=(const OdString& string);
256
266
275 OdString& operator+=(const OdChar* string);
276
277#if defined(_MSC_VER) && _MSC_VER >= 1300
286 OdString& operator+=(const __wchar_t* string){ return operator+=((const OdChar*)string); }
287#endif
288
297 OdString& operator+=(const char* string);
298
304 friend FIRSTDLL_EXPORT OdString operator+(const OdString& string1, const OdString& string2);
307
308 friend FIRSTDLL_EXPORT OdString operator+(const OdString& string1, const OdChar* string2);
309 friend FIRSTDLL_EXPORT OdString operator+(const OdChar* string1, const OdString& string2);
310
326 int compare(const OdChar* otherString) const
327 {
328 if (isUnicodeNotInSync())
329 syncUnicode();
330 return odStrCmp((const wchar_t*)getData()->unicodeBuffer, (const wchar_t*)otherString);
331 }
332
348 inline int compare(const OdString& otherString) const{ return compare(otherString.c_str());}
349
350#if defined(_MSC_VER) && _MSC_VER >= 1300
366 int compare(const __wchar_t* otherString) const { return compare((const OdChar*)otherString);}
367#endif
368
384 int compare(const char* otherString) const;
385
401 int iCompare(const OdChar* otherString) const
402 {
403 if (isUnicodeNotInSync())
404 syncUnicode();
405 return odStrICmp(getData()->unicodeBuffer, otherString);
406 }
407
423 inline int iCompare(const OdString& otherString) const{ return iCompare(otherString.c_str()); }
424#if defined(_MSC_VER) && _MSC_VER >= 1300
440 __forceinline int iCompare(const __wchar_t* otherString) const {return iCompare((const OdChar*)otherString);}
441#endif
442
449 OdString mid(int startIndex, int length) const;
450
456 OdString mid(int startIndex) const;
457
462 OdString left(int length) const;
463
469
481 OdString spanIncluding(const OdChar* charSet) const;
482
494 inline OdString spanIncluding(const OdString& charSet) const { return spanIncluding(charSet.c_str()); }
495
496#if defined(_MSC_VER) && _MSC_VER >= 1300
508 OdString spanIncluding(const __wchar_t* charSet) const{return spanIncluding((const OdChar*)charSet);}
509#endif
510
522 OdString spanExcluding(const OdChar* charSet) const;
523
535 inline OdString spanExcluding(const OdString& charSet) const{ return spanExcluding(charSet.c_str());}
536
537#if defined(_MSC_VER) && _MSC_VER >= 1300
549 OdString spanExcluding(const __wchar_t* charSet) const{return spanExcluding((const OdChar*)charSet);}
550#endif
551
559
567
575
576
586
596
608
619 OdString& trimRight(const OdChar* whiteChars);
620
631 inline OdString& trimRight(const OdString& whiteChars){ return trimRight(whiteChars.c_str());}
632
633#if defined(_MSC_VER) && _MSC_VER >= 1300
644 OdString& trimRight(const __wchar_t* whiteChars){return trimRight((const OdChar*)whiteChars);}
645#endif
646
658
669 OdString& trimLeft(const OdChar* whiteChars);
670
681 inline OdString& trimLeft(const OdString& whiteChars){ return trimLeft(whiteChars.c_str());}
682
683#if defined(_MSC_VER) && _MSC_VER >= 1300
694 OdString& trimLeft(const __wchar_t* whiteChars){return trimLeft((const OdChar*)whiteChars);}
695#endif
705 int replace(OdChar oldChar, OdChar newChar);
706
716 int replace(const OdChar* oldString, const OdChar* newString);
717
727 inline int replace(const OdString& oldString, const OdString& newString){ return replace(oldString.c_str(), newString.c_str());}
728
729#if defined(_MSC_VER) && _MSC_VER >= 1300
730
740 int replace(const __wchar_t* oldString, const __wchar_t* newString){return replace((const OdChar*)oldString, (const OdChar*)newString);}
741#endif
750 int remove(OdChar chRemove);
751
765 int insert(int insertIndex, OdChar insertChar);
766
783 int insert(int insertIndex, const OdChar* insertString);
784
797 int insert(int insertIndex, const OdString& insertString){return insert(insertIndex, insertString.c_str());}
798
799#if defined(_MSC_VER) && _MSC_VER >= 1300
812 int insert(int insertIndex, const __wchar_t* insertString){return insert(insertIndex,(const OdChar*)insertString);}
813#endif
822 int deleteChars(int deleteIndex, int count = 1);
823
824
833 int find(OdChar searchChar) const;
834
843 int reverseFind(OdChar searchChar) const;
844
854 int reverseFind(OdChar searchChar, int startIndex) const;
855
867 int find(OdChar searchChar, int startIndex) const;
868
877 int findOneOf(const OdChar* charSet) const;
878
887 int find(const OdChar* searchString) const;
888
898 int find(const OdChar* searchString, int startIndex) const;
899
900#if defined(_MSC_VER) && _MSC_VER >= 1300
909 int findOneOf(const __wchar_t* charSet) const{return findOneOf((const OdChar*)charSet);}
910
919 int findOneOf(const OdString& charSet) const{return findOneOf((const OdChar*)charSet);}
920
921 int find(const __wchar_t* searchString) const{return find((const OdChar*)searchString);}
922
923 int find(const OdString& searchString) const{return find((const OdChar*)searchString);}
924
925 int find(const __wchar_t* searchString, int startIndex) const{return find((const OdChar*)searchString,startIndex);}
926
927 int find(const OdString& searchString, int startIndex) const{return find((const OdChar*)searchString,startIndex);}
928#endif
936 OdString& format(const OdChar* formatString, ...);
937
938#if defined(_MSC_VER) && _MSC_VER >= 1300
946 OdString& format(const __wchar_t* formatString, ...);
947#endif
948
957 OdString& formatV(const OdChar* formatString, va_list argList);
958
959#if defined(_MSC_VER) && _MSC_VER >= 1300
968 inline OdString& formatV(const __wchar_t* formatString, va_list argList)
969 {
970 return formatV((const OdChar*)formatString, argList);
971 }
972#endif
973
983 OdChar* getBuffer(int minBufLength);
984
991 void releaseBuffer(int newLength = -1);
992
1003
1008
1013
1018
1019/* disable wide char functionalities
1020 Constructor. This OdString will receive a copy of the wide character string referenced
1021 by lpsz.
1022 OdString(const OdCharW* lpsz);
1023
1024 Constructor. This OdString will receive a copy of the first nLength wide characters of
1025 the string referenced by lpch.
1026 OdString(const OdCharW* lpch, int nLength);
1027
1028 Assignment operator. This OdString is assigned the value of lpsz.
1029 const OdString& operator=(const OdCharW* lpsz);
1030
1031*/
1032
1033#ifdef NOT_IMPLEMENTED
1034
1051 int collate(const OdChar* otherString) const;
1052
1069 int iCollate(const OdChar* otherString) const;
1070
1078 OdString& ODA_CDECL format(unsigned int formatID, ...);
1079#endif
1080
1081
1082public:
1084
1088 int getAllocLength() const
1089 { return getData()->nAllocLength; }
1090
1098 inline void preallocate(int length)
1099 {
1100 allocBeforeWrite(length);
1101 m_pData->nDataLength = 0;
1102 }
1103
1104protected:
1106
1111
1116 { ODA_ASSERT(m_pData!= NULL); return m_pData; }
1117
1121 void init();
1122
1133 void allocCopy(OdString& destString, int copyLength, int copyIndex, int extraLength) const;
1134
1140 void allocBuffer(int length, bool allocAlways = false);
1141
1151 void assignCopy(int sourceLength, const OdChar* source);
1152
1164 void concatCopy(int sourceLength1, const OdChar* source1, int sourceLength2, const OdChar* source2);
1165
1175 void concatInPlace(int sourceLength, const OdChar* source);
1176
1185
1193 void allocBeforeWrite(int newLength);
1194
1208 void release();
1209
1210 static void release(OdStringData* pStringData);
1211
1218 static int safeStrlen(const OdChar* string)
1219 { return (string == NULL) ? (int)0 : (int)odStrLen((const wchar_t*)string); }
1220
1225 static void freeData(OdStringData* pStringData);
1226
1228 {
1229 return !getData()->unicodeBuffer && getData()->ansiString;
1230 }
1231 void syncUnicode() const;
1232 OdAnsiString* getAnsiString() const
1233 {
1234 if (getData()->ansiString)
1235 return reinterpret_cast<OdAnsiString*>(&getData()->ansiString);
1236 else
1237 return 0;
1238 }
1239 void freeAnsiString()const;
1240 friend class OdAnsiString;
1241public:
1245 struct lessnocase { bool operator()(const OdString& x, const OdString& y) const { return x.iCompare(y) < 0; } };
1246};
1247
1250
1251
1252#if defined(_MSC_VER) && _MSC_VER >= 1300
1253inline OdString operator+(const OdString& string1, const __wchar_t* string2)
1254{
1255 return operator+(string1, (const OdChar*)string2);
1256}
1257inline OdString operator+(const __wchar_t* string1, const OdString& string2)
1258{
1259 return operator+((const OdChar*)string1, string2);
1260}
1261#endif
1262
1263inline bool operator==(const OdString& s1, const OdString& s2)
1264 { return s1.compare(s2) == 0; }
1265
1266inline bool operator==(const OdString& s1, const OdChar* s2)
1267 { return s1.compare(s2) == 0; }
1268
1269inline bool operator==(const OdChar* s1, const OdString& s2)
1270 { return s2.compare(s1) == 0; }
1271
1272#if defined(_MSC_VER) && _MSC_VER >= 1300
1273inline bool operator==(const OdString& s1, const __wchar_t* s2)
1274{ return s1.compare((const OdChar*)s2) == 0; }
1275
1276inline bool operator==(const __wchar_t* s1, const OdString& s2)
1277{ return s2.compare((const OdChar*)s1) == 0; }
1278#endif
1279
1280inline bool operator==(const OdString& s1, const char* s2)
1281{ return s1.compare(s2) == 0; }
1282
1283inline bool operator==(const char* s1, const OdString& s2)
1284{ return odStrCmpA((const char*)s2, s1) == 0; }
1285
1286inline bool operator!=(const OdString& s1, const OdString& s2)
1287 { return s1.compare(s2) != 0; }
1288
1289inline bool operator!=(const OdString& s1, const OdChar* s2)
1290 { return s1.compare(s2) != 0; }
1291
1292inline bool operator!=(const OdChar* s1, const OdString& s2)
1293 { return s2.compare(s1) != 0; }
1294
1295#if defined(_MSC_VER) && _MSC_VER >= 1300
1296inline bool operator!=(const OdString& s1, const __wchar_t* s2)
1297{ return s1.compare((const OdChar*)s2) != 0; }
1298
1299inline bool operator!=(const __wchar_t* s1, const OdString& s2)
1300{ return s2.compare((const OdChar*)s1) != 0; }
1301#endif
1302
1303inline bool operator!=(const OdString& s1, const char* s2)
1304{ return s1.compare(s2) != 0; }
1305
1306inline bool operator!=(const char* s1, const OdString& s2)
1307{ return s2.compare(s1) != 0; }
1308
1309inline bool operator<(const OdString& s1, const OdString& s2)
1310 { return s1.compare(s2) < 0; }
1311
1312inline bool operator<(const OdString& s1, const OdChar* s2)
1313 { return s1.compare(s2) < 0; }
1314
1315inline bool operator<(const OdChar* s1, const OdString& s2)
1316 { return s2.compare(s1) > 0; }
1317
1318#if defined(_MSC_VER) && _MSC_VER >= 1300
1319inline bool operator<(const OdString& s1, const __wchar_t* s2)
1320{ return s1.compare((const OdChar*)s2) < 0; }
1321
1322inline bool operator<(const __wchar_t* s1, const OdString& s2)
1323{ return s2.compare((const OdChar*)s1) > 0; }
1324#endif
1325
1326inline bool operator<(const OdString& s1, const char* s2)
1327{ return s1.compare(s2) < 0; }
1328
1329inline bool operator<(const char* s1, const OdString& s2)
1330{ return s2.compare(s1) > 0; }
1331
1332inline bool operator>(const OdString& s1, const OdString& s2)
1333 { return s1.compare(s2) > 0; }
1334
1335inline bool operator>(const OdString& s1, const OdChar* s2)
1336 { return s1.compare(s2) > 0; }
1337
1338inline bool operator>(const OdChar* s1, const OdString& s2)
1339 { return s2.compare(s1) < 0; }
1340
1341#if defined(_MSC_VER) && _MSC_VER >= 1300
1342inline bool operator>(const OdString& s1, const __wchar_t* s2)
1343{ return s1.compare((const OdChar*)s2) > 0; }
1344inline bool operator>(const __wchar_t* s1, const OdString& s2)
1345{ return s2.compare((const OdChar*)s1) < 0; }
1346#endif
1347
1348inline bool operator>(const OdString& s1, const char* s2)
1349{ return s1.compare(s2) > 0; }
1350
1351inline bool operator>(const char* s1, const OdString& s2)
1352{ return s2.compare(s1) < 0; }
1353
1354inline bool operator<=(const OdString& s1, const OdString& s2)
1355 { return s1.compare(s2) <= 0; }
1356
1357inline bool operator<=(const OdString& s1, const OdChar* s2)
1358 { return s1.compare(s2) <= 0; }
1359
1360inline bool operator<=(const OdChar* s1, const OdString& s2)
1361 { return s2.compare(s1) >= 0; }
1362
1363#if defined(_MSC_VER) && _MSC_VER >= 1300
1364inline bool operator<=(const OdString& s1, const __wchar_t* s2)
1365{ return s1.compare((const OdChar*)s2) <= 0; }
1366inline bool operator<=(const __wchar_t* s1, const OdString& s2)
1367{ return s2.compare((const OdChar*)s1) >= 0; }
1368#endif
1369
1370inline bool operator<=(const OdString& s1, const char* s2)
1371{ return s1.compare(s2) <= 0; }
1372
1373inline bool operator<=(const char* s1, const OdString& s2)
1374{ return s2.compare(s1) >= 0; }
1375
1376inline bool operator>=(const OdString& s1, const OdString& s2)
1377 { return s1.compare(s2) >= 0; }
1378
1379inline bool operator>=(const OdString& s1, const OdChar* s2)
1380 { return s1.compare(s2) >= 0; }
1381
1382inline bool operator>=(const OdChar* s1, const OdString& s2)
1383 { return s2.compare(s1) <= 0; }
1384
1385#if defined(_MSC_VER) && _MSC_VER >= 1300
1386inline bool operator>=(const OdString& s1, const __wchar_t* s2)
1387{ return s1.compare((const OdChar*)s2) >= 0; }
1388
1389inline bool operator>=(const __wchar_t* s1, const OdString& s2)
1390{ return s2.compare((const OdChar*)s1) <= 0; }
1391#endif
1392
1393inline bool operator>=(const OdString& s1, const char* s2)
1394{ return s1.compare(s2) >= 0; }
1395
1396inline bool operator>=(const char* s1, const OdString& s2)
1397{ return s2.compare(s1) <= 0; }
1398
1399#if defined(ODA_UNIXOS)
1402class OdW2US
1403{
1404 OdUInt16* _buf;
1405public:
1406 OdW2US(const wchar_t* pStr)
1407 {
1408 size_t len = Od_wcslen(pStr);
1409 _buf = new OdUInt16[len+1];
1410 for (size_t i = 0; i < len; i++)
1411 {
1412 _buf[i] = (OdUInt16)pStr[i];
1413 }
1414 _buf[len] = 0;
1415 }
1416 ~OdW2US()
1417 {
1418 delete[]_buf;
1419 }
1420 operator const OdUInt16*() const { return _buf; }
1421};
1422
1426class OdUS2W
1427{
1428 wchar_t* _buf;
1429public:
1430 OdUS2W(const OdUInt16* pStr)
1431 {
1432 size_t len = 0;
1433 if (const OdUInt16* p = pStr)
1434 {
1435 while (*p++)
1436 len++;
1437 }
1438 _buf = new wchar_t[len+1];
1439 for (size_t i = 0; i < len; i++)
1440 {
1441 _buf[i] = (wchar_t)pStr[i];
1442 }
1443 _buf[len] = 0;
1444 }
1445 ~OdUS2W()
1446 {
1447 delete[] _buf;
1448 }
1449 operator const wchar_t*() const { return _buf; }
1450};
1451
1452#else
1453
1454#define OdUS2W(a) (const wchar_t*)(a)
1455#define OdW2US(a) (const OdUInt16*)(a)
1456
1457#endif
1458
1460
1465{
1466public:
1467 OdConstString(const OdChar* pSource = NULL);
1468 // Destructor of base class OdString is not virtual (critical for performance).
1469 // Therefore ~OdConstString is missing
1470
1472 OdString& operator=(const OdString& pSource);
1474 OdString& operator=(const OdChar* pSource);
1475 OdString& operator=(const OdAnsiString& pSource);
1476 OdString& operator=(const char* pSource);
1477 operator const OdChar*() const;
1478
1479protected:
1481};
1482
1484
1485#include "TD_PackPop.h"
1486
1487#endif // __ODSTRING_H__
1488
1489
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:57
OdCodePageId
Definition: OdCodePage.h:31
@ CP_CNT
Definition: OdCodePage.h:78
int OdRefCounter
Definition: OdMutex.h:487
#define odStrICmp
Definition: OdPlatform.h:409
#define odStrLen(str)
Definition: OdPlatform.h:272
#define odStrCmp(str, str2)
Definition: OdPlatform.h:280
#define odStrCmpA(str, str2)
Definition: OdPlatform.h:284
#define Od_wcslen
Definition: OdPlatform.h:154
unsigned short OdUInt16
char16_t OdChar16_t
wchar_t OdChar
bool operator>=(const OdString &s1, const OdString &s2)
Definition: OdString.h:1376
#define OdW2US(a)
Definition: OdString.h:1455
bool operator!=(const OdString &s1, const OdString &s2)
Definition: OdString.h:1286
bool operator==(const OdString &s1, const OdString &s2)
Definition: OdString.h:1263
bool operator<=(const OdString &s1, const OdString &s2)
Definition: OdString.h:1354
OdChar OdCharW
Definition: OdString.h:1248
#define OdUS2W(a)
Definition: OdString.h:1454
bool operator<(const OdString &s1, const OdString &s2)
Definition: OdString.h:1309
bool operator>(const OdString &s1, const OdString &s2)
Definition: OdString.h:1332
#define updateConstStringDiagnostic(pAddr)
Definition: OdString.h:197
#define FIRSTDLL_EXPORT
Definition: RootExport.h:39
#define FIRSTDLL_EXPORT_STATIC
Definition: RootExport.h:40
OdConstString & operator=(const OdConstString &pSource)
OdConstString(const OdChar *pSource=NULL)
OdString & operator=(const OdChar *pSource)
OdString & operator=(OdChar ch)
OdString & operator=(const char *pSource)
OdString & operator=(const OdString &pSource)
OdString & operator=(const OdAnsiString &pSource)
OdStringData m_data
Definition: OdString.h:1480
OdString & operator+=(const OdChar *string)
OdChar * getBufferSetLength(int length)
int replace(OdChar oldChar, OdChar newChar)
int compare(const OdString &otherString) const
Definition: OdString.h:348
OdString & trimLeft(const OdString &whiteChars)
Definition: OdString.h:681
OdString & operator+=(const OdString &string)
static void release(OdStringData *pStringData)
OdString & formatV(const OdChar *formatString, va_list argList)
OdString & operator=(OdChar ch)
void assignCopy(int sourceLength, const OdChar *source)
OdString(const OdChar *source)
int compare(const char *otherString) const
OdString & trimLeft()
void copyBeforeWrite()
OdString mid(int startIndex, int length) const
OdString(const OdChar16_t *lpch, OdCodePageId codepage=CP_CNT)
int compare(const OdChar *otherString) const
Definition: OdString.h:326
OdString & trimRight(const OdString &whiteChars)
Definition: OdString.h:631
int iCompare(const OdChar *otherString) const
Definition: OdString.h:401
int insert(int insertIndex, const OdString &insertString)
Definition: OdString.h:797
OdString & format(const OdChar *formatString,...)
OdString & trimLeft(OdChar whiteChar)
int find(const OdChar *searchString) const
OdString & operator=(const OdString &source)
OdString & operator=(const OdChar16_t *source)
int replace(const OdChar *oldString, const OdChar *newString)
OdString & trimLeft(const OdChar *whiteChars)
void syncUnicode() const
OdString(OdStringData *pData)
void empty()
OdString()
Definition: OdString.h:100
OdChar getAt(int charIndex) const
Definition: OdString.h:159
int remove(OdChar chRemove)
OdString & trimRight(const OdChar *whiteChars)
void init()
OdString & operator=(const OdChar *source)
int find(const OdChar *searchString, int startIndex) const
friend FIRSTDLL_EXPORT OdString operator+(const OdString &string1, const OdString &string2)
int iCompare(const OdString &otherString) const
Definition: OdString.h:423
OdString & makeLower()
int find(OdChar searchChar, int startIndex) const
void concatInPlace(int sourceLength, const OdChar *source)
OdString & operator=(const OdAnsiString &source)
bool isEmpty() const
Definition: OdString.h:144
OdChar * getBuffer(int minBufLength)
OdString mid(int startIndex) const
OdString & operator=(const char *source)
OdString(OdChar ch, int length)
OdString & trimRight()
void concatCopy(int sourceLength1, const OdChar *source1, int sourceLength2, const OdChar *source2)
void unlockBuffer()
OdString(const OdString &source)
friend FIRSTDLL_EXPORT OdString operator+(OdChar ch, const OdString &string)
int reverseFind(OdChar searchChar) const
OdString(const char *lpch, int nLength, OdCodePageId codepage=CP_CNT)
void allocCopy(OdString &destString, int copyLength, int copyIndex, int extraLength) const
void release()
void allocBuffer(int length, bool allocAlways=false)
void setAt(int charIndex, OdChar ch)
OdString left(int length) const
const OdChar * c_str() const
Definition: OdString.h:203
OdString spanExcluding(const OdChar *charSet) const
friend FIRSTDLL_EXPORT OdString operator+(const OdString &string1, const OdChar *string2)
static void freeData(OdStringData *pStringData)
int getLengthA() const
FIRSTDLL_EXPORT_STATIC static const OdString kEmpty
Definition: OdString.h:98
OdString right(int length) const
void freeExtra()
OdString spanIncluding(const OdString &charSet) const
Definition: OdString.h:494
void releaseBuffer(int newLength=-1)
int replace(const OdString &oldString, const OdString &newString)
Definition: OdString.h:727
OdStringData * getData() const
Definition: OdString.h:1115
void preallocate(int length)
Definition: OdString.h:1098
OdString spanIncluding(const OdChar *charSet) const
void allocBeforeWrite(int newLength)
int reverseFind(OdChar searchChar, int startIndex) const
OdString(const char *lpch, OdCodePageId codepage=CP_CNT)
OdString & operator+=(OdChar ch)
friend FIRSTDLL_EXPORT OdString operator+(const OdString &string, OdChar ch)
int insert(int insertIndex, OdChar insertChar)
OdString(const OdChar *source, int length)
OdString(const OdAnsiString &)
OdString & makeReverse()
int getAllocLength() const
Definition: OdString.h:1088
static FIRSTDLL_EXPORT_STATIC OdStringData kEmptyData
Definition: OdString.h:1105
bool isUnicodeNotInSync() const
Definition: OdString.h:1227
friend FIRSTDLL_EXPORT OdString operator+(const OdChar *string1, const OdString &string2)
OdString spanExcluding(const OdString &charSet) const
Definition: OdString.h:535
OdStringData * m_pData
Definition: OdString.h:1110
OdString & trimRight(OdChar whiteChar)
int deleteChars(int deleteIndex, int count=1)
OdChar * lockBuffer()
static int safeStrlen(const OdChar *string)
Definition: OdString.h:1218
OdString & operator+=(const char *string)
int insert(int insertIndex, const OdChar *insertString)
OdChar operator[](int charIndex) const
Definition: OdString.h:177
int find(OdChar searchChar) const
OdAnsiString * getAnsiString() const
Definition: OdString.h:1232
int findOneOf(const OdChar *charSet) const
int getLength() const
Definition: OdString.h:133
OdString & makeUpper()
void freeAnsiString() const
GLsizei GLsizei * count
Definition: gles2_ext.h:276
GLsizei GLsizei GLchar * source
Definition: gles2_ext.h:282
GLuint GLsizei GLsizei * length
Definition: gles2_ext.h:274
GLint GLint GLint GLsizei GLsizei GLenum format
Definition: gles2_ext.h:111
GLfloat x
Definition: gles2_ext.h:314
GLfloat GLfloat y
Definition: gles2_ext.h:316
bool operator()(const OdString &x, const OdString &y) const
Definition: OdString.h:1245
int nAllocLength
Definition: OdString.h:73
OdChar * unicodeBuffer
Definition: OdString.h:78
int nDataLength
Definition: OdString.h:68
OdRefCounter nRefs
Definition: OdString.h:63
char * ansiString
Definition: OdString.h:83