 |
Skia
2D Graphics Library
|
Go to the documentation of this file.
8 #ifndef SkString_DEFINED
9 #define SkString_DEFINED
14 #include "include/private/SkMalloc.h"
15 #include "include/private/SkTArray.h"
16 #include "include/private/SkTo.h"
27 return !strncmp(
string, prefixStr, strlen(prefixStr));
31 return (prefixChar == *
string);
39 static inline int SkStrFind(
const char string[],
const char substring[]) {
40 const char *first = strstr(
string, substring);
41 if (
nullptr == first)
return -1;
42 return SkToInt(first - &
string[0]);
46 const char* last = strrchr(
string, subchar);
47 if (
nullptr == last)
return -1;
48 return SkToInt(last - &
string[0]);
51 static inline bool SkStrContains(
const char string[],
const char substring[]) {
54 return (-1 !=
SkStrFind(
string, substring));
56 static inline bool SkStrContains(
const char string[],
const char subchar) {
127 bool isEmpty()
const {
return 0 == fRec->fLength; }
128 size_t size()
const {
return (
size_t) fRec->fLength; }
129 const char*
c_str()
const {
return fRec->data(); }
134 bool equals(
const char text[],
size_t len)
const;
154 int find(
const char substring[])
const {
155 return SkStrFind(fRec->data(), substring);
175 char&
operator[](
size_t n) {
return this->writable_str()[n]; }
183 void set(
const char text[]);
184 void set(
const char text[],
size_t len);
187 void insert(
size_t offset,
const char text[]);
188 void insert(
size_t offset,
const char text[],
size_t len);
191 void insertS64(
size_t offset, int64_t value,
int minDigits = 0);
193 void insertU64(
size_t offset, uint64_t value,
int minDigits = 0);
194 void insertHex(
size_t offset, uint32_t value,
int minDigits = 0);
198 void append(
const char text[]) { this->insert((
size_t)-1, text); }
199 void append(
const char text[],
size_t len) { this->insert((
size_t)-1, text, len); }
201 void appendS32(int32_t value) { this->insertS32((
size_t)-1, value); }
202 void appendS64(int64_t value,
int minDigits = 0) { this->insertS64((
size_t)-1, value, minDigits); }
203 void appendU32(uint32_t value) { this->insertU32((
size_t)-1, value); }
204 void appendU64(uint64_t value,
int minDigits = 0) { this->insertU64((
size_t)-1, value, minDigits); }
205 void appendHex(uint32_t value,
int minDigits = 0) { this->insertHex((
size_t)-1, value, minDigits); }
209 void prepend(
const char text[]) { this->insert(0, text); }
210 void prepend(
const char text[],
size_t len) { this->insert(0, text, len); }
212 void prependS32(int32_t value) { this->insertS32(0, value); }
213 void prependS64(int32_t value,
int minDigits = 0) { this->insertS64(0, value, minDigits); }
214 void prependHex(uint32_t value,
int minDigits = 0) { this->insertHex(0, value, minDigits); }
218 void printVAList(const
char format[], va_list);
220 void appendVAList(const
char format[], va_list);
222 void prependVAList(const
char format[], va_list);
224 void remove(
size_t offset,
size_t length);
239 constexpr Rec(uint32_t len, int32_t refCnt) : fLength(len), fRefCnt(refCnt) {}
241 char* data() {
return &fBeginningOfData; }
242 const char* data()
const {
return &fBeginningOfData; }
248 mutable std::atomic<int32_t> fRefCnt;
249 char fBeginningOfData =
'\0';
253 void operator delete(
void* p) { ::operator
delete(p); }
260 const SkString& validate()
const {
return *
this; }
263 static const Rec gEmptyRec;
289 SkTArray<SkString>* out);
290 inline void SkStrSplit(
const char* str,
const char* delimiters, SkTArray<SkString>* out) {
static constexpr int kSkStrAppendU32_MaxSize
Definition: SkString.h:82
bool endsWith(const char suffixStr[]) const
Definition: SkString.h:142
void prepend(const char text[])
Definition: SkString.h:209
bool equals(const char text[], size_t len) const
void appendHex(uint32_t value, int minDigits=0)
Definition: SkString.h:205
static int SkStrFind(const char string[], const char substring[])
Definition: SkString.h:39
SkString & operator=(const SkString &)
void insert(size_t offset, const char text[], size_t len)
void set(const char text[])
void set(const SkString &src)
Definition: SkString.h:182
bool contains(const char subchar) const
Definition: SkString.h:151
void insertS32(size_t offset, int32_t value)
static bool SkStrStartsWith(const char string[], const char prefixStr[])
Definition: SkString.h:24
@ kCoalesce_SkStrSplitMode
Definition: SkString.h:284
void printf(const char format[],...) SK_PRINTF_LIKE(2
void insertUnichar(size_t offset, SkUnichar)
static constexpr int kSkStrAppendS64_MaxSize
Definition: SkString.h:89
bool contains(const char substring[]) const
Definition: SkString.h:148
static void swap(SkString &a, SkString &b)
Definition: SkString.h:272
void append(const char text[], size_t len)
Definition: SkString.h:199
bool SkStrEndsWith(const char string[], const char suffixStr[])
#define SK_PRINTF_LIKE(A, B)
Definition: SkTypes.h:375
friend bool operator==(const SkString &a, const SkString &b)
Definition: SkString.h:161
static bool SkStrContains(const char string[], const char substring[])
Definition: SkString.h:51
char & operator[](size_t n)
Definition: SkString.h:175
int findLastOf(const char subchar) const
Definition: SkString.h:157
char * SkStrAppendU32(char buffer[], uint32_t)
void insertU32(size_t offset, uint32_t value)
SkString & operator+=(const char c)
Definition: SkString.h:228
void append(const SkString &str)
Definition: SkString.h:197
@ kStrict_SkStrSplitMode
Definition: SkString.h:279
void prependScalar(SkScalar value)
Definition: SkString.h:215
char operator[](size_t n) const
Definition: SkString.h:130
size_t size() const
Definition: SkString.h:128
void appendS32(int32_t value)
Definition: SkString.h:201
SkString(const std::string &)
#define SK_API
Definition: SkTypes.h:181
#define SkASSERT(cond)
Definition: SkTypes.h:460
SkString(const char text[], size_t len)
char * SkStrAppendS32(char buffer[], int32_t)
void appendScalar(SkScalar value)
Definition: SkString.h:206
static int SkStrFindLastOf(const char string[], const char subchar)
Definition: SkString.h:45
void insert(size_t offset, const char text[])
void appendS64(int64_t value, int minDigits=0)
Definition: SkString.h:202
void insert(size_t offset, const SkString &src)
Definition: SkString.h:186
int SkStrStartsWithOneOf(const char string[], const char prefixes[])
char * SkStrAppendScalar(char buffer[], SkScalar)
Write the scalar in decimal format into buffer, and return a pointer to the next char after the last ...
void swap(SkString &other)
Swap contents between this and other.
void insertU64(size_t offset, uint64_t value, int minDigits=0)
float SkScalar
Definition: SkScalar.h:16
SkString(const SkString &)
static constexpr int kSkStrAppendScalar_MaxSize
Floats have at most 8 significant digits, so we limit our g to that.
Definition: SkString.h:99
int32_t SkUnichar
32 bit integer to hold a unicode value
Definition: SkTypes.h:552
static constexpr int kSkStrAppendU64_MaxSize
Definition: SkString.h:84
void SkStrSplit(const char *str, const char *delimiters, SkStrSplitMode splitMode, SkTArray< SkString > *out)
SkString & operator=(SkString &&)
SkString(const char text[])
void resize(size_t len)
String contents are preserved on resize.
bool isEmpty() const
Definition: SkString.h:127
void prependS64(int32_t value, int minDigits=0)
Definition: SkString.h:213
void insertHex(size_t offset, uint32_t value, int minDigits=0)
SkString SkStringPrintf(const char *format,...) SK_PRINTF_LIKE(1
Creates a new string and writes into it using a printf()-style format.
char * SkStrAppendU64(char buffer[], uint64_t, int minDigits)
void prependUnichar(SkUnichar uni)
Definition: SkString.h:211
char * SkStrAppendS64(char buffer[], int64_t, int minDigits)
void set(const char text[], size_t len)
void insertScalar(size_t offset, SkScalar)
const char * c_str() const
Definition: SkString.h:129
bool startsWith(const char prefixChar) const
Definition: SkString.h:139
Definition: SkString.h:116
sk_sp< SkDrawLooper > SK_API Make(SkColor4f color, SkColorSpace *cs, SkScalar sigma, SkScalar dx, SkScalar dy)
bool endsWith(const char suffixChar) const
Definition: SkString.h:145
bool equals(const char text[]) const
SkString & operator=(const char text[])
bool startsWith(const char prefixStr[]) const
Definition: SkString.h:136
int find(const char substring[]) const
Definition: SkString.h:154
void prepend(const char text[], size_t len)
Definition: SkString.h:210
void prepend(const SkString &str)
Definition: SkString.h:208
static constexpr int kSkStrAppendS32_MaxSize
Definition: SkString.h:87
SkStrSplitMode
Definition: SkString.h:276
void appendU32(uint32_t value)
Definition: SkString.h:203
friend bool operator!=(const SkString &a, const SkString &b)
Definition: SkString.h:164
bool equals(const SkString &) const
void prependHex(uint32_t value, int minDigits=0)
Definition: SkString.h:214
void prependS32(int32_t value)
Definition: SkString.h:212
SkString & operator+=(const char text[])
Definition: SkString.h:227
void appendUnichar(SkUnichar uni)
Definition: SkString.h:200
void append(const char text[])
Definition: SkString.h:198
void insertS64(size_t offset, int64_t value, int minDigits=0)
void appendU64(uint64_t value, int minDigits=0)
Definition: SkString.h:204