1 /*****************************************************************************/ 2 // Copyright 2006-2007 Adobe Systems Incorporated 3 // All Rights Reserved. 4 // 5 // NOTICE: Adobe permits you to use, modify, and distribute this file in 6 // accordance with the terms of the Adobe license agreement accompanying it. 7 /*****************************************************************************/ 8 9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_string.h#2 $ */ 10 /* $DateTime: 2012/07/31 22:04:34 $ */ 11 /* $Change: 840853 $ */ 12 /* $Author: tknoll $ */ 13 14 /** \file 15 * Text string representation. 16 */ 17 18 /*****************************************************************************/ 19 20 #ifndef __dng_string__ 21 #define __dng_string__ 22 23 /*****************************************************************************/ 24 25 #include "dng_types.h" 26 #include "dng_memory.h" 27 28 /*****************************************************************************/ 29 30 class dng_string 31 { 32 33 private: 34 35 // Always stored internally as a UTF-8 encoded string. 36 37 dng_memory_data fData; 38 39 public: 40 41 dng_string (); 42 43 dng_string (const dng_string &s); 44 45 dng_string & operator= (const dng_string &s); 46 47 ~dng_string (); 48 49 const char * Get () const; 50 51 bool IsASCII () const; 52 53 void Set (const char *s); 54 55 void Set_ASCII (const char *s); 56 57 void Set_UTF8 (const char *s); 58 59 uint32 Get_SystemEncoding (dng_memory_data &buffer) const; 60 61 void Set_SystemEncoding (const char *s); 62 63 bool ValidSystemEncoding () const; 64 65 void Set_JIS_X208_1990 (const char *s); 66 67 static uint32 DecodeUTF8 (const char *&s, 68 uint32 maxBytes = 6, 69 bool *isValid = NULL); 70 71 static bool IsUTF8 (const char *s); 72 73 void Set_UTF8_or_System (const char *s); 74 75 uint32 Get_UTF16 (dng_memory_data &buffer) const; 76 77 void Set_UTF16 (const uint16 *s); 78 79 void Clear (); 80 81 void Truncate (uint32 maxBytes); 82 83 bool TrimTrailingBlanks (); 84 85 bool TrimLeadingBlanks (); 86 87 bool IsEmpty () const; 88 NotEmpty()89 bool NotEmpty () const 90 { 91 return !IsEmpty (); 92 } 93 94 uint32 Length () const; 95 96 bool operator== (const dng_string &s) const; 97 98 bool operator!= (const dng_string &s) const 99 { 100 return !(*this == s); 101 } 102 103 // A utility for doing case insensitive comparisons on strings... 104 105 static bool Matches (const char *t, 106 const char *s, 107 bool case_sensitive = false); 108 109 // ...wrapped up for use with dng_string. 110 111 bool Matches (const char *s, 112 bool case_sensitive = false) const; 113 114 bool StartsWith (const char *s, 115 bool case_sensitive = false) const; 116 117 bool EndsWith (const char *s, 118 bool case_sensitive = false) const; 119 120 bool Contains (const char *s, 121 bool case_sensitive = false, 122 int32 *match_offset = NULL) const; 123 124 bool Replace (const char *old_string, 125 const char *new_string, 126 bool case_sensitive = true); 127 128 bool TrimLeading (const char *s, 129 bool case_sensitive = false); 130 131 void Append (const char *s); 132 133 void SetUppercase (); 134 135 void SetLowercase (); 136 137 void SetLineEndings (char ending); 138 SetLineEndingsToNewLines()139 void SetLineEndingsToNewLines () 140 { 141 SetLineEndings ('\n'); 142 } 143 SetLineEndingsToReturns()144 void SetLineEndingsToReturns () 145 { 146 SetLineEndings ('\r'); 147 } 148 149 void StripLowASCII (); 150 151 void ForceASCII (); 152 153 int32 Compare (const dng_string &s) const; 154 155 // A utility to convert fields of numbers into comma separated numbers. 156 157 void NormalizeAsCommaSeparatedNumbers (); 158 159 }; 160 161 /*****************************************************************************/ 162 163 #endif 164 165 /*****************************************************************************/ 166