libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GSString.h
Go to the documentation of this file.
1//
2// Copyright Nemetschek Vectorworks, Inc.
3// Use of this file is governed by the Nemetschek Vectorworks SDK License Agreement
4// http://developer.vectorworks.net/index.php?title=Vectorworks_SDK_License
5//
6//
7// TXString class
8//
9
10
11#ifndef _GSSTRINGX_
12#define _GSSTRINGX_
13
14#pragma once
15#include "GSTypes.h"
16#include "GSIntTypes.h"
17
18// For Unicode string literal
19#if GS_WIN
20#define txu(string) L##string
21#define txuc(string) L##string
22#elif GS_LIN
23#define txu(string) L##string
24#define txuc(string) L##string
25#else
26#include <CoreFoundation/CoreFoundation.h>
27#define txu(string) (const UCChar*)u##string
28#define txuc(ch) (const UCChar)u##ch
29#endif
30
31
32#include <string>
33#include <vector>
34#include <memory>
35#include <sstream>
36namespace VectorworksMVR
37{
38// Used to specify the encoding of TXString (char buffer).
39enum class ETXEncoding {
42 eSysEncoded, // use Windows encoding on Windows and Mac encoding on Mac
43 eUTF8,
44 eUTF16, // UTF-16 little endian
46};
47
48
49// TXString character type
50#if GS_WIN
51typedef wchar_t TXChar;
52#elif GS_LIN
53typedef char16_t TXChar;
54#else
56#endif
57
58// StdUStr definition
59#if GS_WIN
60// Allocator for StdUStr
61template <typename T>
62class TXAlloc
63{
64public:
65 // Type definitions
66 typedef size_t size_type;
67 typedef ptrdiff_t difference_type;
68 typedef T* pointer;
69 typedef const T* const_pointer;
70 typedef T& reference;
71 typedef const T& const_reference;
72 typedef T value_type;
73
74 // Rebind allocator to type U
75 template <typename U>
76 struct rebind {
77 typedef TXAlloc<U> other;
78 };
79
80 // Return address of values
81 pointer address(reference value) const { return &value; }
82 const_pointer address(const_reference value) const { return &value; }
83
84 // Constructors and distructors
85 TXAlloc() throw() {}
86 TXAlloc(const TXAlloc&) throw() {}
87 template <typename U> TXAlloc(const TXAlloc<U>&) throw() {}
88 ~TXAlloc() throw() {}
89
90 // Max size
91 size_type max_size() const throw() { return (size_type)(-1) / sizeof(T); }
92
93 // Allocation
94 pointer allocate(size_type num, const void* hint = 0)
95 {
96 return (pointer)malloc(num * sizeof(T));
97 }
98
99 // Deallocation
100 void deallocate(pointer p, size_type)
101 {
102 delete p;
103 }
104
105 // Construction
106 void construct(pointer p, const_reference value) { new (p) T(value); }
107
108 // Destruction
109 void destroy(pointer p) { p->~T(); }
110
111 inline bool operator==(TXAlloc const&) throw() { return true; }
112 inline bool operator!=(TXAlloc const&) throw() { return false; }
113};
114
115template <typename T>
116bool operator==(const TXAlloc<T>& lhs, const TXAlloc<T>& rhs) throw() {
117 return true;
118}
119// StrUStr definition
120typedef std::basic_string<TXChar, std::char_traits<TXChar>, TXAlloc<TXChar>> StdUStr;
121
122#elif GS_LIN
123typedef std::basic_string<TXChar> StdUStr;
124#else // Mac
125typedef std::basic_string<TXChar> StdUStr;
126#endif
127
128
129
130//#######################################################################################
131// TXString class
132//#######################################################################################
134{
135public:
136
137 //***********************************************************************************
138 // Constructors and destructor
139 //***********************************************************************************
140
141 TXString(); // Default constructor
142 TXString(const TXString& src); // Copy constructor
143 TXString(TXString&& src); // Move constructor
144 TXString(const StdUStr& src); // Copy constructor from StdUStr
145 TXString(StdUStr&& src); // Move constructor from StdUStr
146
147 // From other string type
148 TXString(const std::string& src, ETXEncoding e = ETXEncoding::eUTF8);
149
150#if GS_WIN
151 TXString(const std::wstring& src);
152#elif GS_LIN
153 // not defined
154#elif GS_MAC
155 TXString(const std::wstring& src);
156#endif
157
158 // Specify initial size
159 explicit TXString(size_t nInitialSize); // Specify size (size_t version)
160 explicit TXString(int nInitialSize); // Specify size (int version)
161
162 // From a buffer
163 TXString(const char* src, ETXEncoding e = ETXEncoding::eUTF8);
164 TXString(const char* src, size_t len, ETXEncoding e = ETXEncoding::eUTF8);
165
166 TXString(const unsigned char* src, ETXEncoding e = ETXEncoding::eUTF8);
167
168 TXString(const UCChar* src);
169 TXString(const UCChar* src, size_t len);
170
171 TXString(const wchar_t* src);
172 TXString(const wchar_t* src, size_t len);
173
174 // From a character
175 explicit TXString(char ch, size_t count = 1);
176 explicit TXString(unsigned char ch, size_t count = 1);
177 explicit TXString(UCChar ch, size_t count = 1);
178 explicit TXString(wchar_t ch, size_t count = 1);
179
180 // Destructor
181 virtual ~TXString();
182
183
184 //***********************************************************************************
185 // Assignments
186 //***********************************************************************************
187
188 TXString& operator=(const TXString& src); // Copy assignment operator
189 TXString& operator=(TXString&& src); // Move assignment operator
190 TXString& operator=(const std::string& src); // Assignment from std::string
191 TXString& operator=(const std::wstring&src); // Assignment from std::wstring
192
193 // From a buffer
194 TXString& operator=(const char *src);
195 TXString& operator=(const unsigned char* src);
196 TXString& operator=(const UCChar* src);
197 TXString& operator=(const wchar_t* src);
198
199 // From single character
200 TXString& operator=(char ch);
201 TXString& operator=(unsigned char ch);
203 TXString& operator=(wchar_t ch);
204 TXString& operator=(int codePoint); // For example: txString = 0x27
205
206
207 //***********************************************************************************
208 // Length and width related functions
209 //***********************************************************************************
210
211 size_t GetLength() const;
212 size_t GetByteSize() const;
213 size_t GetEncodingLength(ETXEncoding e) const;
214
215 bool IsEmpty() const;
216
217 TXString& SetLength(size_t len);
218 TXString& SetLength(size_t len, TXChar ch);
219 TXString& Truncate(size_t len);
220 TXString& Clear();
221
222 //***********************************************************************************
223 // Element access
224 //***********************************************************************************
225
226 TXChar& operator[](ptrdiff_t nIndex);
227 TXChar operator[](ptrdiff_t nIndex) const;
228 TXChar& GetAt(size_t nIndex);
229 TXChar GetAt(size_t nIndex) const;
230 TXChar& GetLast();
231 TXChar GetLast() const;
232 TXString& SetAt(size_t nIndex, TXChar ch);
233
234
235 //***********************************************************************************
236 // Concatenation
237 //***********************************************************************************
238
239 // Extends string from another TXString object
240 TXString& operator+=(const TXString& src);
241
242 // Extends string from character buffer
243 TXString& operator+=(const char* src); // UTF-8
244 TXString& operator+=(const unsigned char* src); // UTF-8
245 TXString& operator+=(const UCChar* src);
246 TXString& operator+=(const wchar_t* src);
247
248 // Extends string by one character
249 TXString& operator+=(char ch);
250 TXString& operator+=(unsigned char ch);
252 TXString& operator+=(wchar_t ch);
253 #ifdef GS_LIN
255 #endif
256 TXString& operator+=(int n); // Unicode code point, for example: 0x63
257 // This is different behaviour than operator<< which appends the number as value
258
259 // String concatenation by using '<<'
260 TXString& operator<<(const TXString& src);
261
262 // Extends string from character buffer
263 TXString& operator<<(const char *src); // UTF-8
264 TXString& operator<<(const unsigned char* src); // UTF-8
265 TXString& operator<<(const UCChar* src);
266 TXString& operator<<(const wchar_t* src);
267
268 // Extends string by one character
269 TXString& operator<<(char ch);
270 TXString& operator<<(unsigned char ch);
272 TXString& operator<<(wchar_t ch);
273
274 // Append a number as string
275 TXString& operator<<(Sint32 number);
276 TXString& operator<<(Sint64 number);
277 TXString& operator<<(Uint32 number);
278 TXString& operator<<(Uint64 number);
279 TXString& operator<<(double number);
280
281#if GS_MAC
282 TXString& operator<<(size_t number); // size_t is different from Uint64 on the mac
283#endif
284
285
286 //***********************************************************************************
287 // Insertion and deletion
288 //***********************************************************************************
289
290 // Insert another TXString at position 'pos'.
291 TXString& Insert(size_t pos, const TXString& src);
292
293 // Insert one buffer at position 'pos'.
294 TXString& Insert(size_t pos, const char* src);
295 TXString& Insert(size_t pos, const unsigned char* src); // UTF-8
296 TXString& Insert(size_t pos, const UCChar* src);
297 TXString& Insert(size_t pos, const wchar_t* src);
298
299 // Insert one character 'ch' at position 'pos'.
300 TXString& Insert(size_t pos, char ch);
301 TXString& Insert(size_t pos, unsigned char ch);
302 TXString& Insert(size_t pos, UCChar ch);
303 TXString& Insert(size_t pos, wchar_t ch);
304 TXString& Insert(size_t pos, int ch); // e.g. 0xA5, '�'
305
306 // Delete characters starting from 'pos' for 'len' characters.
307 TXString& Delete(size_t pos, size_t len = (size_t)-1);
308
309 // Delete the last character
311
312 // Trims white spaces (' ', '\t') or invalid chars
315 TXString& Trim();
316
320
321
322 //***********************************************************************************
323 // Replacement, case conversion, reversion, Unicode normalization form conversion
324 //***********************************************************************************
325
326 // Replaces all 'oldStr' with 'newSTr'.
327 TXString& Replace(const TXString& oldStr, const TXString& newStr, bool bIgnoreCase = false);
328
329 // Upper case and lower case conversion
332
333 // Reverse the string.
335
336 //***********************************************************************************
337 // Getting data and casting
338 //***********************************************************************************
339
340 // Returns const pointer to the TXChar buffer.
341 const TXChar* GetData() const;
342 const TXChar* GetTXCharPtr() const;
343
344 // Casting operators
345 operator const char*() const; // UTF-8
346 operator const unsigned char*() const; // UTF-8
347 operator const UCChar*() const; // Unsigned short, UTF-16
348 operator const wchar_t*() const; // wchar_t: Win:UTF-16, Mac:UTF-32
349
350 // Casting operators in function form.
351 const char* GetCharPtr() const { return (operator const char*()); }
352 const unsigned char* GetUCharPtr() const { return (operator const unsigned char*()); }
353 const UCChar* GetUCCharPtr() const { return (operator const UCChar*()); }
354 const wchar_t* GetWCharPtr() const { return (operator const wchar_t*()); }
355
356 // Returns a std string or wstring
357 std::string GetStdString(ETXEncoding e = ETXEncoding::eUTF8) const;
358 std::wstring GetStdWString() const;
359
360#if GS_MAC
361 CFStringRef GetCFStringRef() const;
362#endif
363
364
365 //***********************************************************************************
366 // Copying data into external buffer
367 //
368 // Note: 'bufSize' is the size of the buffer in bytes. For example, "xyz" needs four bytes to include '\0' at the end.
369 //
370 //***********************************************************************************
371 void CopyInto(char* dst,
372 size_t bufSize,
374
375 void CopyInto(unsigned char* ps,
376 size_t bufSize,
378
379 void CopyInto(UCChar* dst, size_t bufElemSize) const;
380
381 void CopyInto(wchar_t* dst, size_t bufElemSize) const;
382
383
384 //***********************************************************************************
385 // Find functions
386 //***********************************************************************************
387 ptrdiff_t Find(const TXString &subStr, size_t posFirst = 0, bool bIgnoreCase = false) const;
388 ptrdiff_t Find(int ch, size_t posFirst = 0, bool bIgnoreCase = false) const;
389 ptrdiff_t Find(char ch, size_t posFirst = 0, bool bIgnoreCase = false) const;
390
391 ptrdiff_t ReverseFind(const TXString &subStr, size_t posLast = -1, bool bIgnoreCase = false) const;
392 ptrdiff_t ReverseFind(int ch, size_t posLast = -1, bool bIgnoreCase = false) const;
393 ptrdiff_t ReverseFind(char ch, size_t posLast = -1, bool bIgnoreCase = false) const;
394
395 ptrdiff_t FindOneOf(const TXString &charSet, size_t posFirst = 0) const;
396 ptrdiff_t ReverseFindOneOf(const TXString &charSet, size_t posLast = -1) const;
397
398 ptrdiff_t FindNotOneOf(const TXString &charSet, size_t posFirst = 0) const;
399 ptrdiff_t ReverseFindNotOneOf(const TXString &charSet, size_t posLast = -1) const;
400
401 //***********************************************************************************
402 // Creating sub-string
403 //***********************************************************************************
404 TXString Mid(size_t nFirst, size_t len = -1) const;
405 TXString Left(size_t len) const;
406 TXString Right(size_t len) const;
407
408 // Splits string on every occasion of ch, result does not contain ch
409 std::vector<TXString> Split(char ch) const;
410 std::vector<TXString> Split(TXString ch) const;
411
412 //***********************************************************************************
413 // Conversion to and from numerics
414 //***********************************************************************************
415 Sint32 atoi() const;
416 Sint64 atoi64() const;
417 Real64 atof() const;
418 TXString& itoa(Sint64 value);
419 TXString& ftoa(Real64 value);
420 TXString& ftoa(Real64 value, Sint32 precision);
421 bool IsCompleteNumber();
422 static TXString ToStringInt(Sint64 value);
423 static TXString ToStringInt(Sint64 value, Sint32 width, wchar_t paddingChar);
424 static TXString ToStringReal(Real64 value);
425 static TXString ToStringReal(Real64 value, Sint32 precision, bool fixed = true);
426 template<typename T>
427 static TXString ToString(T value);
428 template<typename T>
429 static TXString ToStringHex(T value, bool upperCase = true, size_t symbolsCnt = size_t(-1));
430
431 static bool IsPunctuation(TXChar aTXChar);
432 static bool IsWhitespace(TXChar aTXChar);
433
434
435 //***********************************************************************************
436 // Comparison and plus operator
437 //***********************************************************************************
438
439 // Equality functions
440 bool Equal(const TXString &str) const;
441 bool EqualNoCase(const TXString &str) const;
442
443 // Comparison functions
444 Sint32 Compare(const TXString &str) const;
445 Sint32 CompareNoCase(const TXString &str) const;
446
447 // Compare parts
448 bool EndsWith(const TXString &suffix) const;
449
450 // Comparison operators
451 friend bool operator==(const TXString& lhs, const TXString& rhs);
452 friend bool operator==(const TXString& lhs, const char* rhs);
453 friend bool operator==(const char* lhs, const TXString& rhs);
454 friend bool operator==(const TXString& lhs, const TXChar* rhs);
455 friend bool operator==(const TXChar* lhs, const TXString& rhs);
456
457 friend bool operator!=(const TXString& lhs, const TXString& rhs);
458 friend bool operator!=(const TXString& lhs, const char* rhs);
459 friend bool operator!=(const char* lhs, const TXString& rhs);
460 friend bool operator!=(const TXString& lhs, const TXChar* rhs);
461 friend bool operator!=(const TXChar* lhs, const TXString& rhs);
462
463 friend bool operator<=(const TXString& lhs, const TXString& rhs);
464 friend bool operator>=(const TXString& lhs, const TXString& rhs);
465
466 friend bool operator<(const TXString& lhs, const TXString& rhs);
467 friend bool operator>(const TXString& lhs, const TXString& rhs);
468
469 // Plus operator
470 friend TXString operator+(const TXString& lhs, const TXString& rhs);
471 friend TXString operator+(const TXString& lhs, TXChar rhs);
472 friend TXString operator+(TXChar lhs, const TXString& rhs);
473 friend TXString operator+(const TXString& lhs, const TXChar* rhs);
474 friend TXString operator+(const TXChar* lhs, const TXString& rhs);
475
476 // Strict type formatting functions to replace the Format function
477 // It will substitute any %x in the string with the specified value. NOTE: No modifies supported
478 // These use std::wstringstream and operator << to concatenate to the string
479 // VisualStudio 2010 doesnt support variadic templates still, so i'm forced in doing this
480 TXString& Format(const TXString& format);
481 template<typename T0>
482 TXString& Format(const TXString& format, const T0& val0);
483 template<typename T0, typename T1>
484 TXString& Format(const TXString& format, const T0& val0, const T1& val1);
485 template<typename T0, typename T1, typename T2>
486 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2);
487 template<typename T0, typename T1, typename T2, typename T3>
488 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3);
489 template<typename T0, typename T1, typename T2, typename T3, typename T4>
490 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4);
491 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
492 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5);
493 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
494 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6);
495 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
496 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6, const T7& val7);
497 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
498 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6, const T7& val7, const T8& val8);
499 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
500 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6, const T7& val7, const T8& val8, const T9& val9);
501 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
502 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6, const T7& val7, const T8& val8, const T9& val9, const T10& val10);
503 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
504 TXString& Format(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6, const T7& val7, const T8& val8, const T9& val9, const T10& val10, const T11& val11);
505
506 // static tool functions: Formatted
507 template<typename T0>
508 static TXString Formatted(const TXString& format, const T0& val0) { return TXString().Format(format, val0); }
509 template<typename T0, typename T1>
510 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1) { return TXString().Format(format, val0, val1); }
511 template<typename T0, typename T1, typename T2>
512 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1, const T2& val2) { return TXString().Format(format, val0, val1, val2); }
513 template<typename T0, typename T1, typename T2, typename T3>
514 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3) { return TXString().Format(format, val0, val1, val2, val3); }
515 template<typename T0, typename T1, typename T2, typename T3, typename T4>
516 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4) { return TXString().Format(format, val0, val1, val2, val3, val4); }
517 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
518 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5) { return TXString().Format(format, val0, val1, val2, val3, val4, val5); }
519 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
520 static TXString Formatted(const TXString& format, const T0& val0, const T1& val1, const T2& val2, const T3& val3, const T4& val4, const T5& val5, const T6& val6) { return TXString().Format(format, val0, val1, val2, val3, val4, val5, val6); }
521
522 // Swap function
523 void swap(TXString& rhs);
524
525 // Hash function
526 size_t hash() const { return std::hash<StdUStr>{}(this->stdUStr); }
527
528 //***********************************************************************************
529 // Private members
530 //***********************************************************************************
531private:
532 StdUStr stdUStr;
533
534 void SetStdUStrFromCharBuffer(const char* src, size_t len = -1, ETXEncoding e = ETXEncoding::eUTF8);
535
536 // For char buffer. TXString might be better to return a std::string instead of
537 // returning const char* in the future.
538 mutable char* charPtr;
539 mutable size_t charBufSize;
540 void PrepareCharBuffer(ETXEncoding e = ETXEncoding::eUTF8) const;
541
542#if GS_MAC || GS_LIN
543 mutable std::wstring wStr;
544#endif
545
546};
547typedef std::vector<TXString> TXStringArray;
548
549
550// Comparison operators
551bool operator==(const TXString& lhs, const TXString& rhs);
552bool operator==(const TXString& lhs, const char* rhs);
553bool operator==(const char* lhs, const TXString& rhs);
554bool operator==(const TXString& lhs, const TXChar* rhs);
555bool operator==(const TXChar* lhs, const TXString& rhs);
556
557bool operator!=(const TXString& lhs, const TXString& rhs);
558bool operator!=(const TXString& lhs, const char* rhs);
559bool operator!=(const char* lhs, const TXString& rhs);
560bool operator!=(const TXString& lhs, const TXChar* rhs);
561bool operator!=(const TXChar* lhs, const TXString& rhs);
562
563bool operator<=(const TXString& lhs, const TXString& rhs);
564bool operator>=(const TXString& lhs, const TXString& rhs);
565
566bool operator<(const TXString& lhs, const TXString& rhs);
567bool operator>(const TXString& lhs, const TXString& rhs);
568
569// Plus operator
570TXString operator+(const TXString& lhs, const TXString& rhs);
571TXString operator+(const TXString& lhs, TXChar rhs);
572TXString operator+(TXChar lhs, const TXString& rhs);
573TXString operator+(const TXString& lhs, const TXChar* rhs);
574TXString operator+(const TXChar* lhs, const TXString& rhs);
575
576// Non-member swap function
577void swap(TXString& lhs, TXString& rhs);
578
579#endif // _GSSTRINGX_
580}
581
582namespace std {
583template <>
584struct hash<VectorworksMVR::TXString>
585{
586 std::size_t operator()(const VectorworksMVR::TXString& s) const
587 {
588 return s.hash();
589 }
590};
591}
int64_t Sint64
Definition GSTypes.h:37
Uint16 UniChar
Definition GSTypes.h:133
int32_t Sint32
Definition GSTypes.h:36
uint64_t Uint64
Definition GSTypes.h:28
double Real64
Definition GSTypes.h:66
uint32_t Uint32
Definition GSTypes.h:27
Uint16 UCChar
Definition GSTypes.h:121
Definition GSString.h:134
friend bool operator!=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2246
void CopyInto(char *dst, size_t bufSize, ETXEncoding e=ETXEncoding::eUTF8) const
Definition GSString.cpp:1569
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6)
Definition GSString.h:520
static bool IsPunctuation(TXChar aTXChar)
Definition GSString.cpp:2108
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3)
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4)
TXString & TrimRightInvalidCharacter()
Definition GSString.cpp:1308
TXString & SetLength(size_t len)
Definition GSString.cpp:593
static TXString ToStringInt(Sint64 value)
Definition GSString.cpp:2072
const char * GetCharPtr() const
Definition GSString.h:351
const UCChar * GetUCCharPtr() const
Definition GSString.h:353
TXChar & operator[](ptrdiff_t nIndex)
Definition GSString.cpp:655
TXString & operator+=(const TXString &src)
Definition GSString.cpp:771
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2)
Definition GSString.h:512
ptrdiff_t FindNotOneOf(const TXString &charSet, size_t posFirst=0) const
Definition GSString.cpp:1886
TXString & MakeLower()
Definition GSString.cpp:1415
ptrdiff_t ReverseFindNotOneOf(const TXString &charSet, size_t posLast=-1) const
Definition GSString.cpp:1901
size_t hash() const
Definition GSString.h:526
const wchar_t * GetWCharPtr() const
Definition GSString.h:354
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6, const T7 &val7, const T8 &val8, const T9 &val9, const T10 &val10, const T11 &val11)
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6, const T7 &val7, const T8 &val8, const T9 &val9)
friend bool operator==(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2203
Real64 atof() const
Definition GSString.cpp:2037
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6)
virtual ~TXString()
Definition GSString.cpp:355
TXString & operator+=(int n)
TXString & operator=(int codePoint)
bool EndsWith(const TXString &suffix) const
Definition GSString.cpp:2196
const unsigned char * GetUCharPtr() const
Definition GSString.h:352
ptrdiff_t ReverseFindOneOf(const TXString &charSet, size_t posLast=-1) const
Definition GSString.cpp:1872
ptrdiff_t FindOneOf(const TXString &charSet, size_t posFirst=0) const
Definition GSString.cpp:1857
Sint64 atoi64() const
Definition GSString.cpp:2028
std::string GetStdString(ETXEncoding e=ETXEncoding::eUTF8) const
Definition GSString.cpp:1529
size_t GetLength() const
Definition GSString.cpp:550
friend bool operator>=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2289
bool IsCompleteNumber()
Definition GSString.cpp:2063
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5)
TXString & Truncate(size_t len)
Definition GSString.cpp:627
TXString & Replace(const TXString &oldStr, const TXString &newStr, bool bIgnoreCase=false)
Definition GSString.cpp:1345
TXString Left(size_t len) const
Definition GSString.cpp:1935
bool EqualNoCase(const TXString &str) const
Definition GSString.cpp:2147
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5)
Definition GSString.h:518
TXString & SetAt(size_t nIndex, TXChar ch)
Definition GSString.cpp:753
TXString & operator=(const TXString &src)
Definition GSString.cpp:367
TXString & Insert(size_t pos, int ch)
TXString & TrimRight()
Definition GSString.cpp:1260
TXString & Clear()
Definition GSString.cpp:640
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6, const T7 &val7, const T8 &val8)
size_t GetEncodingLength(ETXEncoding e) const
Definition GSString.cpp:567
static TXString Formatted(const TXString &format, const T0 &val0)
Definition GSString.h:508
TXString & Format(const TXString &format, const T0 &val0)
const TXChar * GetTXCharPtr() const
Definition GSString.cpp:1473
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1)
Definition GSString.h:510
friend bool operator>(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2303
friend bool operator<=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2296
TXString & itoa(Sint64 value)
Definition GSString.cpp:2044
TXString & Trim()
Definition GSString.cpp:1279
TXString & Delete(size_t pos, size_t len=(size_t) -1)
Definition GSString.cpp:1217
static TXString ToString(T value)
void swap(TXString &rhs)
Definition GSString.cpp:2572
TXString & Format(const TXString &format)
Definition GSString.cpp:2355
TXString & TrimInvalidCharacters()
Definition GSString.cpp:1324
TXString & ftoa(Real64 value)
Definition GSString.cpp:2051
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6, const T7 &val7)
friend TXString operator+(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2317
std::vector< TXString > Split(char ch) const
Definition GSString.cpp:1960
bool Equal(const TXString &str) const
Definition GSString.cpp:2140
ptrdiff_t Find(const TXString &subStr, size_t posFirst=0, bool bIgnoreCase=false) const
Definition GSString.cpp:1710
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3)
Definition GSString.h:514
TXString & TrimLeft()
Definition GSString.cpp:1241
bool IsEmpty() const
Definition GSString.cpp:586
std::wstring GetStdWString() const
Definition GSString.cpp:1538
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1)
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5, const T6 &val6, const T7 &val7, const T8 &val8, const T9 &val9, const T10 &val10)
const TXChar * GetData() const
Definition GSString.cpp:1466
TXString & TrimLeftInvalidCharacter()
Definition GSString.cpp:1292
TXString & MakeReverse()
Definition GSString.cpp:1445
TXString()
Definition GSString.cpp:54
TXString & operator<<(const TXString &src)
Definition GSString.cpp:896
static bool IsWhitespace(TXChar aTXChar)
Definition GSString.cpp:2121
TXChar & GetAt(size_t nIndex)
Definition GSString.cpp:688
ptrdiff_t ReverseFind(const TXString &subStr, size_t posLast=-1, bool bIgnoreCase=false) const
Definition GSString.cpp:1784
TXString Mid(size_t nFirst, size_t len=-1) const
Definition GSString.cpp:1918
Sint32 Compare(const TXString &str) const
Definition GSString.cpp:2154
TXChar & GetLast()
Definition GSString.cpp:721
friend bool operator<(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2310
TXString Right(size_t len) const
Definition GSString.cpp:1943
size_t GetByteSize() const
Definition GSString.cpp:557
static TXString Formatted(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4)
Definition GSString.h:516
TXString & Format(const TXString &format, const T0 &val0, const T1 &val1, const T2 &val2)
static TXString ToStringReal(Real64 value)
Definition GSString.cpp:2088
static TXString ToStringHex(T value, bool upperCase=true, size_t symbolsCnt=size_t(-1))
TXString & MakeUpper()
Definition GSString.cpp:1385
Sint32 atoi() const
Definition GSString.cpp:2019
TXString & Insert(size_t pos, const TXString &src)
Definition GSString.cpp:1012
TXString & DeleteLast()
Definition GSString.cpp:1229
Sint32 CompareNoCase(const TXString &str) const
Definition GSString.cpp:2161
Definition CieColor.h:9
bool operator==(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2203
bool operator<=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2296
TXString operator+(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2317
bool operator>(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2303
void swap(TXString &lhs, TXString &rhs)
Definition GSString.cpp:2579
std::vector< TXString > TXStringArray
Definition GSString.h:547
std::basic_string< TXChar > StdUStr
Definition GSString.h:125
bool operator!=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2246
bool operator<(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2310
UniChar TXChar
Definition GSString.h:55
bool operator>=(const TXString &lhs, const TXString &rhs)
Definition GSString.cpp:2289
ETXEncoding
Definition GSString.h:39
Definition GSString.h:582