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