All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
UString.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------------------
2 // Copyright (c) 2001-2025 by Apryse Software Inc. All Rights Reserved.
3 // Consult legal.txt regarding legal and license information.
4 //---------------------------------------------------------------------------------------
5 #ifndef PDFTRON_H_CPPCommonUString
6 #define PDFTRON_H_CPPCommonUString
7 
8 #include <Common/BasicTypes.h>
9 #include <Common/Exception.h>
10 #include <C/Common/TRN_Types.h>
11 #include <C/Common/TRN_UString.h>
12 #include <Common/Common.h>
13 #include <Common/CharTraits.h>
14 #include <ostream>
15 
16 namespace pdftron {
17 
27 class UString
28 {
29 public:
30 
34  UString();
35 
40  UString(const UString& str);
41 
47  explicit UString(Unicode value);
48 
54  UString(const Unicode* value);
55 
63  UString(const Unicode* value, int length);
64 
68  enum TextEncoding {
76  };
77 
88  UString(const char* buf, int buf_sz = -1, TextEncoding enc = e_utf8);
89 
97  UString(const std::string & str, TextEncoding enc = e_utf8);
98 
104  UString( const std::wstring& value );
105 
109  ~UString();
110 
115  UString& operator=(const UString& str);
116  UString& operator=(const char* ascii_str);
117 
122  UString& Assign(const UString& uni);
123  UString& Assign(const Unicode* uni, int buf_sz = -1);
124  UString& Assign2(const char* buf, int buf_sz = -1, TextEncoding enc = e_utf8);
125 
130  UString& operator+=(const UString& str);
131 
139  UString Concat(const UString &str) const;
140 
141  friend UString operator+( const UString& str1, const UString& str2) { return str1.Concat(str2);}
142 
149  int GetLength() const;
150 
155  bool Empty() const;
156 
164  const Unicode* GetBuffer() const;
165 
181  int Compare(const UString& str, int max_length = -1) const;
182 
196  UString SubStr(int off = 0, int count = -1) const;
197 
209  Unicode GetAt(int idx) const;
210 
215  void PushBack(Unicode ch);
216 
224  void Resize(int count, Unicode ch = ' ');
225 
229  void ToUpper();
230 
234  void ToLower();
235 
240  void Reserve(int count);
241 
248  const Unicode* CStr() const;
249 
254  bool IsInAscii() const;
255 
273  int ConvertToAscii(char* in_out_buf, int buf_sz, bool null_term) const;
274 
293  int ConvertToUtf8(char* in_out_buf, int buf_sz, bool null_term) const;
294 
313  int ConvertToUtf32( UInt32* in_out_buf, int buf_sz, bool null_term ) const;
314 
318  std::wstring ConvertToNativeWString() const;
319 
324  std::string ConvertToAscii() const;
325 
330  std::string ConvertToUtf8() const;
331 
335  std::basic_string<UInt32> ConvertToUtf32() const;
336 
362  int ConvertToPDFText(char* in_out_buf, int buf_sz, bool force_unicode = false) const;
363 
364  friend bool operator == (const UString& rStr1, const UString& rStr2) { return rStr1.GetLength() == rStr2.GetLength() && rStr1.Compare( rStr2 ) == 0; }
365  friend bool operator == (const UString& rStr1, const Unicode* pStr2) { return rStr1.Compare( pStr2 ) == 0; }
366  friend bool operator == (const Unicode* pStr1, const UString& rStr2) { return UString( pStr1 ).Compare( rStr2 ) == 0; }
367  friend bool operator != (const UString& rStr1, const UString& rStr2) { return !(operator == ( rStr1, rStr2 )); }
368  friend bool operator != (const UString& rStr1, const Unicode* pStr2) { return !(operator == ( rStr1, pStr2 )); }
369  friend bool operator != (const Unicode* pStr1, const UString& rStr2) { return !(operator == ( pStr1, rStr2 )); }
370  friend bool operator < (const UString& rStr1, const UString& rStr2) { return rStr1.Compare( rStr2 ) < 0; }
371  friend bool operator > (const UString& rStr1, const UString& rStr2) { return rStr1.Compare( rStr2 ) > 0; }
372  friend bool operator <= (const UString& rStr1, const UString& rStr2) { return rStr1.Compare( rStr2 ) <= 0; }
373  friend bool operator >= (const UString& rStr1, const UString& rStr2) { return rStr1.Compare( rStr2 ) >= 0; }
374 
375 // private:
376  // @cond PRIVATE_DOC
377  UString(TRN_UString impl);
378  TRN_UString mp_impl;
379  // @endcond
380 };
381 
382 
388 inline std::ostream& operator<<(std::ostream& stream, const UString& str) {
389  return stream << str.ConvertToAscii();
390 }
391 
392 
393 #include <Impl/UString.inl>
394 
395 
396 }; // namespace pdftron
397 
398 #endif // PDFTRON_H_CPPCommonUString
std::string ConvertToUtf8() const
std::basic_string< UInt32 > ConvertToUtf32() const
friend UString operator+(const UString &str1, const UString &str2)
Definition: UString.h:141
void Reserve(int count)
ASCII encoded text.
Definition: UString.h:69
std::ostream & operator<<(std::ostream &stream, const UString &str)
Definition: UString.h:388
std::string ConvertToAscii() const
void Resize(int count, Unicode ch= ' ')
friend bool operator==(const UString &rStr1, const UString &rStr2)
Definition: UString.h:364
friend bool operator<=(const UString &rStr1, const UString &rStr2)
Definition: UString.h:372
int GetLength() const
Text represented as PDF Text (section 3.8.1 &#39;Text Strings&#39; in PDF Reference).
Definition: UString.h:72
std::wstring ConvertToNativeWString() const
TRN_Unicode Unicode
Definition: BasicTypes.h:22
bool Empty() const
int ConvertToAscii(char *in_out_buf, int buf_sz, bool null_term) const
int ConvertToPDFText(char *in_out_buf, int buf_sz, bool force_unicode=false) const
bool IsInAscii() const
TRN_UInt32 UInt32
Definition: BasicTypes.h:13
const Unicode * GetBuffer() const
UString Concat(const UString &str) const
UTF-16BE (big-endian) encoding scheme.
Definition: UString.h:73
UTF-8 encoding scheme.
Definition: UString.h:74
Unicode GetAt(int idx) const
UString & Assign(const UString &uni)
PDFDocEncoding. See Appendix &#39;D&#39; in PDF Reference.
Definition: UString.h:70
UString & operator+=(const UString &str)
friend bool operator<(const UString &rStr1, const UString &rStr2)
Definition: UString.h:370
friend bool operator!=(const UString &rStr1, const UString &rStr2)
Definition: UString.h:367
const Unicode * CStr() const
No specific encoding.
Definition: UString.h:75
int Compare(const UString &str, int max_length=-1) const
WinAnsiiEncoding. See Appendix &#39;D&#39; in PDF Reference.
Definition: UString.h:71
UString SubStr(int off=0, int count=-1) const
void PushBack(Unicode ch)
friend bool operator>=(const UString &rStr1, const UString &rStr2)
Definition: UString.h:373
UString & Assign2(const char *buf, int buf_sz=-1, TextEncoding enc=e_utf8)
friend bool operator>(const UString &rStr1, const UString &rStr2)
Definition: UString.h:371
UString & operator=(const UString &str)