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 |
