diff options
author | Mike Buland <eichlan@xagasoft.com> | 2019-05-13 19:47:19 -0700 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2019-05-13 19:47:19 -0700 |
commit | d605d6c3c04c1e26121f9b1c5c1d2dbcc5f7bc37 (patch) | |
tree | 0cd21d420fc67ae757ec2475610c4624fd714363 /src/unstable/utfstring.h | |
parent | 62753c815b5ec34ebfae37a3c89187a01cc17160 (diff) | |
download | libbu++-d605d6c3c04c1e26121f9b1c5c1d2dbcc5f7bc37.tar.gz libbu++-d605d6c3c04c1e26121f9b1c5c1d2dbcc5f7bc37.tar.bz2 libbu++-d605d6c3c04c1e26121f9b1c5c1d2dbcc5f7bc37.tar.xz libbu++-d605d6c3c04c1e26121f9b1c5c1d2dbcc5f7bc37.zip |
UtfString & Json overhaul.
UtfString supports a load of new stuff, and Json uses UtfString
exclusively now.
Diffstat (limited to 'src/unstable/utfstring.h')
-rw-r--r-- | src/unstable/utfstring.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/unstable/utfstring.h b/src/unstable/utfstring.h index 5085ec0..285b680 100644 --- a/src/unstable/utfstring.h +++ b/src/unstable/utfstring.h | |||
@@ -191,6 +191,18 @@ namespace Bu | |||
191 | void write( Bu::Stream &sOut, Encoding eEnc=Utf8 ) const; | 191 | void write( Bu::Stream &sOut, Encoding eEnc=Utf8 ) const; |
192 | 192 | ||
193 | /** | 193 | /** |
194 | * Reads as many bytes from the given stream, starting at the current | ||
195 | * position, as required to read a single UtfChar (code point). | ||
196 | */ | ||
197 | static int readPoint( Bu::Stream &sIn, UtfChar &c, | ||
198 | Encoding sEnc=Utf8 ); | ||
199 | static int writePoint( Bu::Stream &sOut, const UtfChar &c, | ||
200 | Encoding sEnc=Utf8 ); | ||
201 | |||
202 | int32_t toInt32( int iRadix=10 ) const; | ||
203 | int64_t toInt64( int iRadix=10 ) const; | ||
204 | |||
205 | /** | ||
194 | * This encodes the UtfString in the given encoding and returns it as | 206 | * This encodes the UtfString in the given encoding and returns it as |
195 | * a binary Bu::String. Like write, this also includes the proper BOM | 207 | * a binary Bu::String. Like write, this also includes the proper BOM |
196 | * at the begining. | 208 | * at the begining. |
@@ -216,9 +228,16 @@ namespace Bu | |||
216 | UtfChar nextChar( int &iIndex ) const; | 228 | UtfChar nextChar( int &iIndex ) const; |
217 | 229 | ||
218 | bool operator==( const Bu::UtfString &rhs ) const; | 230 | bool operator==( const Bu::UtfString &rhs ) const; |
231 | bool operator==( const Bu::String &rhs ) const; | ||
232 | bool operator==( const char *rhs ) const; | ||
219 | UtfString &operator+=( const Bu::UtfString &rhs ); | 233 | UtfString &operator+=( const Bu::UtfString &rhs ); |
220 | UtfString &operator+=( const UtfChar &rhs ); | 234 | UtfString &operator+=( const UtfChar &rhs ); |
221 | 235 | ||
236 | bool operator<( const Bu::UtfString &rhs ) const; | ||
237 | bool operator<=( const Bu::UtfString &rhs ) const; | ||
238 | bool operator>( const Bu::UtfString &rhs ) const; | ||
239 | bool operator>=( const Bu::UtfString &rhs ) const; | ||
240 | |||
222 | private: | 241 | private: |
223 | void append16( uint16_t i ) { aData.append( i ); } | 242 | void append16( uint16_t i ) { aData.append( i ); } |
224 | 243 | ||
@@ -237,6 +256,7 @@ namespace Bu | |||
237 | void writeUtf32le( Bu::Stream &sOut ) const; | 256 | void writeUtf32le( Bu::Stream &sOut ) const; |
238 | 257 | ||
239 | private: | 258 | private: |
259 | static uint8_t utf8_lmask[8]; | ||
240 | Bu::Array<uint16_t> aData; | 260 | Bu::Array<uint16_t> aData; |
241 | int iRawLen; | 261 | int iRawLen; |
242 | int iCharLen; | 262 | int iCharLen; |
@@ -254,6 +274,9 @@ namespace Bu | |||
254 | template<> uint32_t __calcHashCode<UtfString>( const UtfString &k ); | 274 | template<> uint32_t __calcHashCode<UtfString>( const UtfString &k ); |
255 | template<> bool __cmpHashKeys<UtfString>( | 275 | template<> bool __cmpHashKeys<UtfString>( |
256 | const UtfString &a, const UtfString &b ); | 276 | const UtfString &a, const UtfString &b ); |
277 | |||
278 | class Formatter; | ||
279 | Bu::Formatter operator<<( Bu::Formatter &f, const Bu::UtfString &s ); | ||
257 | }; | 280 | }; |
258 | 281 | ||
259 | #endif | 282 | #endif |