26#ifndef WATER_CHARPOINTER_UTF8_H_INCLUDED
27#define WATER_CHARPOINTER_UTF8_H_INCLUDED
32#include "CarlaUtils.hpp"
91 const signed char byte = (
signed char) *
data;
99 int numExtraValues = 0;
101 while ((
n & bit) != 0 && bit > 0x8)
110 for (
int i = 1;
i <= numExtraValues; ++
i)
114 if ((nextByte & 0xc0) != 0x80)
118 n |= (nextByte & 0x3f);
128 const signed char n = (
signed char) *
data++;
134 while ((
static_cast<unsigned char>(
n) & bit) != 0 && bit > 0x8)
149 while ((*--
data & 0xc0) == 0x80 && ++
count < 4)
159 const signed char byte = (
signed char) *
data++;
167 int numExtraValues = 0;
169 while ((
n & bit) != 0 && bit > 0x8)
178 while (--numExtraValues >= 0)
182 if ((nextByte & 0xc0) != 0x80)
187 n |= (nextByte & 0x3f);
206 while (++numToSkip <= 0)
211 while (--numToSkip >= 0)
258 while ((*
d & 0xc0) == 0x80)
271 size_t lengthUpTo (
const size_t maxCharsToCount)
const noexcept
288 return strlen (
data) + 1;
317 template <
class CharPo
inter>
341 int numExtraBytes = 1;
349 *
data++ = (
CharType) ((
uint32) (0xff << (7 - numExtraBytes)) | (
c >> (numExtraBytes * 6)));
351 while (--numExtraBytes >= 0)
352 *
data++ = (
CharType) (0x80 | (0x3f & (
c >> (numExtraBytes * 6))));
367 template <
typename CharPo
inter>
378 while ((*
data = *
s) != 0)
389 template <
typename CharPo
inter>
399 template <
typename CharPo
inter>
406 template <
typename CharPo
inter>
407 int compare (
const CharPointer other)
const noexcept
413 template <
typename CharPo
inter>
414 int compareUpTo (
const CharPointer other,
const int maxChars)
const noexcept
420 template <
typename CharPo
inter>
433 template <
typename CharPo
inter>
440 template <
typename CharPo
inter>
441 int indexOf (
const CharPointer stringToFind)
const noexcept
498 return ((
unsigned int) character) < (
unsigned int) 0x10ffff;
504 while (--maxBytesToRead >= 0 && *dataToTest != 0)
506 const signed char byte = (
signed char) *dataToTest++;
511 int numExtraValues = 0;
513 while ((
byte & bit) != 0)
521 if (bit == 8 && (numExtraValues > maxBytesToRead
526 if (numExtraValues == 0)
529 maxBytesToRead -= numExtraValues;
530 if (maxBytesToRead < 0)
533 while (--numExtraValues >= 0)
534 if ((*dataToTest++ & 0xc0) != 0x80)
555 wassert (possibleByteOrder !=
nullptr);
556 const uint8*
const c =
static_cast<const uint8*
> (possibleByteOrder);
#define noexcept
Definition DistrhoDefines.h:72
static const unsigned long mask[]
Definition bitwise.c:31
#define byte
Definition blargg_source.h:87
CharPointer_UTF8(const CharType *const rawPointer) noexcept
Definition CharPointer_UTF8.h:49
static size_t getBytesRequiredFor(CharPointer text) noexcept
Definition CharPointer_UTF8.h:318
bool isWhitespace() const noexcept
Definition CharPointer_UTF8.h:460
size_t writeWithDestByteLimit(const CharPointer src, const size_t maxDestBytes) noexcept
Definition CharPointer_UTF8.h:390
int64 getIntValue64() const noexcept
Definition CharPointer_UTF8.h:481
void operator-=(int numToSkip) noexcept
Definition CharPointer_UTF8.h:217
bool operator!=(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:73
int compareIgnoreCaseUpTo(const CharPointer other, const int maxChars) const noexcept
Definition CharPointer_UTF8.h:434
CharType * data
Definition CharPointer_UTF8.h:564
CharType * getAddress() const noexcept
Definition CharPointer_UTF8.h:80
bool operator<=(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:74
size_t length() const noexcept
Definition CharPointer_UTF8.h:247
CharPointer_UTF8 & operator=(CharPointer_UTF8 other) noexcept
Definition CharPointer_UTF8.h:59
CharPointer_UTF8(const CharType *const rawPointer) noexcept
Definition CharPointer_UTF8.h:49
bool operator==(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:72
size_t sizeInBytes() const noexcept
Definition CharPointer_UTF8.h:285
bool isUpperCase() const noexcept
Definition CharPointer_UTF8.h:468
bool operator>=(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:76
void writeNull() const noexcept
Definition CharPointer_UTF8.h:361
int compareIgnoreCase(const CharPointer other) const noexcept
Definition CharPointer_UTF8.h:421
int indexOf(const water_uchar charToFind) const noexcept
Definition CharPointer_UTF8.h:447
water_uchar operator[](int characterIndex) const noexcept
Definition CharPointer_UTF8.h:223
bool isLowerCase() const noexcept
Definition CharPointer_UTF8.h:470
int indexOf(const water_uchar charToFind, const bool ignoreCase) const noexcept
Definition CharPointer_UTF8.h:453
bool isLetter() const noexcept
Definition CharPointer_UTF8.h:464
bool isDigit() const noexcept
Definition CharPointer_UTF8.h:462
CharPointer_UTF8 & operator++() noexcept
Definition CharPointer_UTF8.h:125
water_uchar operator*() const noexcept
Definition CharPointer_UTF8.h:89
double getDoubleValue() const noexcept
Definition CharPointer_UTF8.h:490
CharPointer_UTF8 operator-(int numToSkip) const noexcept
Definition CharPointer_UTF8.h:239
friend class String
Definition CharPointer_UTF8.h:566
static bool isValidString(const CharType *dataToTest, int maxBytesToRead)
Definition CharPointer_UTF8.h:502
void operator+=(int numToSkip) noexcept
Definition CharPointer_UTF8.h:202
bool isEmpty() const noexcept
Definition CharPointer_UTF8.h:86
static bool isByteOrderMark(const void *possibleByteOrder) noexcept
Definition CharPointer_UTF8.h:553
CharPointer_UTF8 findEndOfWhitespace() const noexcept
Definition CharPointer_UTF8.h:493
CharPointer_UTF8 findTerminatingNull() const noexcept
Definition CharPointer_UTF8.h:329
bool isLetterOrDigit() const noexcept
Definition CharPointer_UTF8.h:466
bool operator>(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:77
water_uchar toUpperCase() const noexcept
Definition CharPointer_UTF8.h:473
size_t lengthUpTo(const size_t maxCharsToCount) const noexcept
Definition CharPointer_UTF8.h:271
@ byteOrderMark2
Definition CharPointer_UTF8.h:546
@ byteOrderMark1
Definition CharPointer_UTF8.h:545
@ byteOrderMark3
Definition CharPointer_UTF8.h:547
int indexOf(const CharPointer stringToFind) const noexcept
Definition CharPointer_UTF8.h:441
int compare(const CharPointer other) const noexcept
Definition CharPointer_UTF8.h:407
int compareUpTo(const CharPointer other, const int maxChars) const noexcept
Definition CharPointer_UTF8.h:414
static size_t getBytesRequiredFor(const water_uchar charToWrite) noexcept
Definition CharPointer_UTF8.h:294
int compareIgnoreCase(const CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:427
int getIntValue32() const noexcept
Definition CharPointer_UTF8.h:478
void writeAll(const CharPointer src) noexcept
Definition CharPointer_UTF8.h:368
static bool canRepresent(water_uchar character) noexcept
Definition CharPointer_UTF8.h:496
CharPointer_UTF8 operator+(int numToSkip) const noexcept
Definition CharPointer_UTF8.h:231
void write(const water_uchar charToWrite) noexcept
Definition CharPointer_UTF8.h:335
char CharType
Definition CharPointer_UTF8.h:47
void writeWithCharLimit(const CharPointer src, const int maxChars) noexcept
Definition CharPointer_UTF8.h:400
CharPointer_UTF8(const CharPointer_UTF8 &other) noexcept
Definition CharPointer_UTF8.h:54
size_t lengthUpTo(const CharPointer_UTF8 end) const noexcept
Definition CharPointer_UTF8.h:277
CharPointer_UTF8 & operator--() noexcept
Definition CharPointer_UTF8.h:145
void writeAll(const CharPointer_UTF8 src) noexcept
Definition CharPointer_UTF8.h:374
water_uchar getAndAdvance() noexcept
Definition CharPointer_UTF8.h:157
water_uchar toLowerCase() const noexcept
Definition CharPointer_UTF8.h:475
bool operator<(CharPointer_UTF8 other) const noexcept
Definition CharPointer_UTF8.h:75
static water_uchar toUpperCase(water_uchar character) noexcept
Definition CharacterFunctions.cpp:34
static int compareUpTo(CharPointerType1 s1, CharPointerType2 s2, int maxChars) noexcept
Definition CharacterFunctions.h:396
static bool isLetterOrDigit(char character) noexcept
Definition CharacterFunctions.cpp:94
static int indexOf(CharPointerType1 textToSearch, const CharPointerType2 substringToLookFor) noexcept
Definition CharacterFunctions.h:458
static bool isLetter(char character) noexcept
Definition CharacterFunctions.cpp:83
static int compareIgnoreCase(water_uchar char1, water_uchar char2) noexcept
Definition CharacterFunctions.h:413
static int compareIgnoreCaseUpTo(CharPointerType1 s1, CharPointerType2 s2, int maxChars) noexcept
Definition CharacterFunctions.h:438
static double getDoubleValue(CharPointerType text) noexcept
Definition CharacterFunctions.h:236
static water_uchar toLowerCase(water_uchar character) noexcept
Definition CharacterFunctions.cpp:39
static int indexOfChar(Type text, const water_uchar charToFind) noexcept
Definition CharacterFunctions.h:535
static bool isLowerCase(water_uchar character) noexcept
Definition CharacterFunctions.cpp:53
static int compare(water_uchar char1, water_uchar char2) noexcept
Definition CharacterFunctions.h:368
static bool isUpperCase(water_uchar character) noexcept
Definition CharacterFunctions.cpp:44
static void copyAll(DestCharPointerType &dest, SrcCharPointerType src) noexcept
Definition CharacterFunctions.h:315
static int indexOfCharIgnoreCase(Type text, water_uchar charToFind) noexcept
Definition CharacterFunctions.h:555
static void copyWithCharLimit(DestCharPointerType &dest, SrcCharPointerType src, int maxChars) noexcept
Definition CharacterFunctions.h:353
static Type findEndOfWhitespace(Type text) noexcept
Definition CharacterFunctions.h:577
static size_t lengthUpTo(CharPointerType text, const size_t maxCharsToCount) noexcept
Definition CharacterFunctions.h:290
static size_t copyWithDestByteLimit(DestCharPointerType &dest, SrcCharPointerType src, size_t maxBytesToWrite) noexcept
Definition CharacterFunctions.h:326
static IntType getIntValue(const CharPointerType text) noexcept
Definition CharacterFunctions.h:244
unsigned d
Definition inflate.c:940
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
#define wassert(expression)
Definition AudioSampleBuffer.h:33
unsigned int uint32
Definition water.h:98
long long int64
Definition water.h:100
unsigned char uint8
Definition water.h:90
uint32 water_uchar
Definition CharacterFunctions.h:38
const char * text
Definition swell-functions.h:167
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
typedef int(UZ_EXP MsgFn)()
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263
#define const
Definition zconf.h:137