22 #ifndef COMMON_STR_BASE_H 23 #define COMMON_STR_BASE_H 25 #include "common/scummsys.h" 26 #include "common/str-enc.h" 34 static void releaseMemoryPoolMutex();
36 static const uint32 npos = 0xFFFFFFFF;
39 typedef const T * const_iterator;
47 static const uint32
_builtinCapacity = 32 - (
sizeof(uint32) +
sizeof(
char *)) /
sizeof(value_type);
73 mutable int *_refCount;
78 inline bool isStorageIntern()
const {
99 BaseString(
const value_type *beginP,
const value_type *endP);
102 bool operator==(
const value_type *x)
const;
104 bool operator!=(
const value_type *x)
const;
107 bool operator<(
const value_type *x)
const;
109 bool operator<=(
const value_type *x)
const;
111 bool operator>(
const value_type *x)
const;
113 bool operator>=(
const value_type *x)
const;
120 bool equals(
const value_type *x)
const;
121 bool equalsC(
const char *x)
const;
123 int compareTo(
const value_type *x)
const;
124 int compareToC(
const char *x)
const;
127 void setChar(value_type c, uint32 p);
140 void erase(uint32 p, uint32 len = npos);
143 iterator
erase(iterator it);
146 void chop(uint32 len = 1);
162 return begin() + size();
165 const_iterator begin()
const {
169 const_iterator end()
const {
170 return begin() + size();
173 inline const value_type *c_str()
const {
return _str; }
174 inline uint size()
const {
return _size; }
176 inline bool empty()
const {
return (_size == 0); }
177 value_type firstChar()
const {
return (_size > 0) ? _str[0] : 0; }
178 value_type lastChar()
const {
return (_size > 0) ? _str[_size - 1] : 0; }
180 value_type operator[](
int idx)
const {
183 assert(idx < (
int)_size);
195 void insertString(
const value_type *s, uint32 p);
196 void insertString(
const BaseString &s, uint32 p);
199 uint32
find(value_type x, uint32 pos = 0)
const;
201 size_t find(
const value_type *s, uint32 pos = 0)
const;
205 size_t rfind(
const value_type *s)
const;
207 return rfind(s.c_str());
211 size_t rfind(value_type c,
size_t pos = npos)
const;
214 size_t findFirstOf(value_type c,
size_t pos = 0)
const;
217 size_t findFirstOf(
const value_type *chars,
size_t pos = 0)
const;
223 size_t findLastOf(value_type c,
size_t pos = npos)
const;
226 size_t findLastOf(
const value_type *chars,
size_t pos = npos)
const;
235 size_t findFirstNotOf(
const value_type *chars,
size_t pos = 0)
const;
266 void replace(uint32 pos, uint32 count,
const value_type *str);
270 void replace(iterator begin, iterator end,
const value_type *str);
274 uint32 posDest, uint32 countDest);
277 void replace(uint32 posOri, uint32 countOri,
const value_type *str,
278 uint32 posDest, uint32 countDest);
286 void replace(value_type from, value_type to);
289 void append(
const value_type *begin,
const value_type *end);
300 void wordWrap(
const uint32 maxLength);
336 ensureCapacity(_size,
true);
339 void ensureCapacity(uint32 new_size,
bool keep_old);
340 void incRefCount()
const;
341 void decRefCount(
int *oldRefCount);
342 void initWithValueTypeStr(
const value_type *str, uint32 len);
344 void assignInsert(
const value_type *str, uint32 p);
345 void assignInsert(value_type c, uint32 p);
346 void assignInsert(
const BaseString &str, uint32 p);
347 void assignAppend(
const value_type *str);
348 void assignAppend(value_type c);
352 void assign(value_type c);
353 void assign(
const value_type *str);
355 bool pointerInOwnBuffer(
const value_type *str)
const;
357 uint getUnsignedValue(uint pos)
const;
359 void toCase(
int (*caseChangeFunc)(
int));
361 static uint32 cStrLen(
const value_type *str);
362 static const value_type *cMemChr(
const value_type *ptr, value_type c,
size_t count);
363 static value_type *cMemChr(value_type *ptr, value_type c,
size_t count);
364 static int cMemCmp(
const value_type* ptr1,
const value_type* ptr2,
size_t count);
size_t findFirstNotOf(value_type c, size_t pos=0) const
bool equals(const BaseString &x) const
void insertChar(value_type c, uint32 p)
uint64 asUint64Ext() const
void deleteChar(uint32 p)
value_type _storage[_builtinCapacity]
Definition: str-base.h:67
size_t findLastOf(value_type c, size_t pos=npos) const
size_t findLastNotOf(value_type c) const
uint32 find(value_type x, uint32 pos=0) const
size_t findFirstOf(value_type c, size_t pos=0) const
Definition: str-base.h:32
struct Common::BaseString::@23::@25 _extern
uint32 _size
Definition: str-base.h:54
constexpr BaseString()
Definition: str-base.h:84
static const uint32 _builtinCapacity
Definition: str-base.h:47
Definition: algorithm.h:29
void deleteLastChar()
Definition: str-base.h:137
void erase(uint32 p, uint32 len=npos)
size_t rfind(const value_type *s) const
void replace(uint32 pos, uint32 count, const BaseString &str)
void append(const value_type *begin, const value_type *end)
void setChar(value_type c, uint32 p)
value_type * _str
Definition: str-base.h:60
void wordWrap(const uint32 maxLength)
bool contains(const BaseString &otherString) const