ScummVM API documentation
Common::String Class Reference

#include <str.h>

Inheritance diagram for Common::String:
Common::BaseString< char > Titanic::CString Ultima::Shared::String Ultima::Std::string Titanic::CStringParser

Public Types

typedef unsigned char unsigned_type
 
- Public Types inherited from Common::BaseString< char >
typedef char value_type
 
typedef char * iterator
 
typedef const char * const_iterator
 

Public Member Functions

constexpr String ()
 
 String (const char *str)
 
 String (const char *str, uint32 len)
 
 String (const char *beginP, const char *endP)
 
 String (const String &str)
 
 String (String &&str)
 
constexpr String (value_type c)
 
 String (const U32String &str, CodePage page=kUtf8)
 
Stringoperator= (const char *str)
 
Stringoperator= (const String &str)
 
Stringoperator= (String &&str)
 
Stringoperator= (char c)
 
Stringoperator+= (const char *str)
 
Stringoperator+= (const String &str)
 
Stringoperator+= (char c)
 
bool equalsIgnoreCase (const String &x) const
 
int compareToIgnoreCase (const String &x) const
 
bool equalsIgnoreCase (const char *x) const
 
int compareToIgnoreCase (const char *x) const
 
int compareDictionary (const String &x) const
 
int compareDictionary (const char *x) const
 
bool hasSuffix (const String &x) const
 
bool hasSuffix (const char *x) const
 
bool hasSuffixIgnoreCase (const String &x) const
 
bool hasSuffixIgnoreCase (const char *x) const
 
bool hasPrefix (const String &x) const
 
bool hasPrefix (const char *x) const
 
bool hasPrefixIgnoreCase (const String &x) const
 
bool hasPrefixIgnoreCase (const char *x) const
 
bool contains (const String &x) const
 
bool contains (const char *x) const
 
bool matchString (const char *pat, bool ignoreCase=false, const char *wildcardExclusions=NULL) const
 
bool matchString (const String &pat, bool ignoreCase=false, const char *wildcardExclusions=NULL) const
 
String substr (size_t pos=0, size_t len=npos) const
 
String forEachLine (String(*func)(const String, va_list args),...) const
 
U32String decode (CodePage page=kUtf8) const
 
- Public Member Functions inherited from Common::BaseString< char >
constexpr BaseString ()
 
constexpr BaseString (value_type c)
 
 BaseString (const BaseString &str)
 
 BaseString (BaseString &&str)
 
 BaseString (const value_type *str)
 
 BaseString (const value_type *str, uint32 len)
 
 BaseString (const value_type *beginP, const value_type *endP)
 
bool operator== (const BaseString &x) const
 
bool operator== (const value_type *x) const
 
bool operator!= (const BaseString &x) const
 
bool operator!= (const value_type *x) const
 
bool operator< (const BaseString &x) const
 
bool operator< (const value_type *x) const
 
bool operator<= (const BaseString &x) const
 
bool operator<= (const value_type *x) const
 
bool operator> (const BaseString &x) const
 
bool operator> (const value_type *x) const
 
bool operator>= (const BaseString &x) const
 
bool operator>= (const value_type *x) const
 
bool equals (const BaseString &x) const
 
bool equals (const value_type *x) const
 
bool equalsC (const char *x) const
 
int compareTo (const BaseString &x) const
 
int compareTo (const value_type *x) const
 
int compareToC (const char *x) const
 
void setChar (value_type c, uint32 p)
 
void deleteChar (uint32 p)
 
void deleteLastChar ()
 
void erase (uint32 p, uint32 len=npos)
 
iterator erase (iterator it)
 
void chop (uint32 len=1)
 
void clear ()
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
const value_type * c_str () const
 
uint size () const
 
bool empty () const
 
value_type firstChar () const
 
value_type lastChar () const
 
value_type operator[] (int idx) const
 
bool contains (const BaseString &otherString) const
 
bool contains (value_type x) const
 
void insertChar (value_type c, uint32 p)
 
void insertString (const value_type *s, uint32 p)
 
void insertString (const BaseString &s, uint32 p)
 
uint32 find (value_type x, uint32 pos=0) const
 
size_t find (const value_type *s, uint32 pos=0) const
 
uint32 find (const BaseString &str, uint32 pos=0) const
 
size_t rfind (const value_type *s) const
 
size_t rfind (const BaseString &s) const
 
size_t rfind (value_type c, size_t pos=npos) const
 
size_t findFirstOf (value_type c, size_t pos=0) const
 
size_t findFirstOf (const value_type *chars, size_t pos=0) const
 
size_t findFirstOf (const BaseString &chars, size_t pos=0) const
 
size_t findLastOf (value_type c, size_t pos=npos) const
 
size_t findLastOf (const value_type *chars, size_t pos=npos) const
 
size_t findLastOf (const BaseString &chars, size_t pos=npos) const
 
size_t findFirstNotOf (value_type c, size_t pos=0) const
 
size_t findFirstNotOf (const value_type *chars, size_t pos=0) const
 
size_t findFirstNotOf (const BaseString &chars, size_t pos=0) const
 
size_t findLastNotOf (value_type c) const
 
size_t findLastNotOf (const value_type *chars) const
 
size_t findLastNotOf (const BaseString &chars) const
 
void replace (value_type from, value_type to)
 
void append (const value_type *begin, const value_type *end)
 
void wordWrap (const uint32 maxLength)
 
uint64 asUint64 () const
 
uint64 asUint64Ext () const
 
void toLowercase ()
 
void toUppercase ()
 
void trim ()
 
uint hash () const
 
void replace (uint32 pos, uint32 count, const BaseString &str)
 
void replace (uint32 pos, uint32 count, const value_type *str)
 
void replace (iterator begin, iterator end, const BaseString &str)
 
void replace (iterator begin, iterator end, const value_type *str)
 
void replace (uint32 posOri, uint32 countOri, const BaseString &str, uint32 posDest, uint32 countDest)
 
void replace (uint32 posOri, uint32 countOri, const value_type *str, uint32 posDest, uint32 countDest)
 

Static Public Member Functions

static String format (MSVC_PRINTF const char *fmt,...) GCC_PRINTF(1
 
static String static String vformat (const char *fmt, va_list args)
 
- Static Public Member Functions inherited from Common::BaseString< char >
static void releaseMemoryPoolMutex ()
 

Protected Member Functions

StringEncodingResult encodeUTF8 (const U32String &src, char errorChar)
 
StringEncodingResult encodeWindows932 (const U32String &src, char errorChar)
 
StringEncodingResult encodeWindows936 (const U32String &src, char errorChar)
 
StringEncodingResult encodeWindows949 (const U32String &src, char errorChar)
 
StringEncodingResult encodeWindows950 (const U32String &src, bool translit, char errorChar)
 
StringEncodingResult encodeJohab (const U32String &src, char errorChar)
 
StringEncodingResult encodeOneByte (const U32String &src, CodePage page, bool translit, char errorChar)
 
StringEncodingResult encodeInternal (const U32String &src, CodePage page, char errorChar)
 
StringEncodingResult translitChar (U32String::value_type point, char errorChar)
 
- Protected Member Functions inherited from Common::BaseString< char >
bool isStorageIntern () const
 
void makeUnique ()
 
void ensureCapacity (uint32 new_size, bool keep_old)
 
void incRefCount () const
 
void decRefCount (int *oldRefCount)
 
void initWithValueTypeStr (const value_type *str, uint32 len)
 
void assignInsert (const value_type *str, uint32 p)
 
void assignInsert (value_type c, uint32 p)
 
void assignInsert (const BaseString &str, uint32 p)
 
void assignAppend (const value_type *str)
 
void assignAppend (value_type c)
 
void assignAppend (const BaseString &str)
 
void assign (const BaseString &str)
 
void assign (BaseString &&str)
 
void assign (value_type c)
 
void assign (const value_type *str)
 
bool pointerInOwnBuffer (const value_type *str) const
 
uint getUnsignedValue (uint pos) const
 
void toCase (int(*caseChangeFunc)(int))
 

Additional Inherited Members

- Public Attributes inherited from Common::BaseString< char >
value_type _storage [_builtinCapacity]
 
int * _refCount
 
uint32 _capacity
 
struct {
   int *   _refCount
 
   uint32   _capacity
 
_extern
 
- Static Public Attributes inherited from Common::BaseString< char >
static const uint32 npos
 
- Static Protected Member Functions inherited from Common::BaseString< char >
static uint32 cStrLen (const value_type *str)
 
static const value_type * cMemChr (const value_type *ptr, value_type c, size_t count)
 
static value_type * cMemChr (value_type *ptr, value_type c, size_t count)
 
static int cMemCmp (const value_type *ptr1, const value_type *ptr2, size_t count)
 
- Protected Attributes inherited from Common::BaseString< char >
uint32 _size
 
value_type * _str
 
union {
   value_type   _storage [_builtinCapacity]
 
   struct {
      int *   _refCount
 
      uint32   _capacity
 
   }   _extern
 
}; 
 
- Static Protected Attributes inherited from Common::BaseString< char >
static const uint32 _builtinCapacity
 

Detailed Description

Simple string class for ScummVM. Provides automatic storage management, and overloads several operators in a 'natural' fashion, mimicking the std::string class. Even provides simple iterators.

This class tries to avoid allocating lots of small blocks on the heap, since that is inefficient on several platforms supported by ScummVM. Instead, small strings are stored 'inside' the string object (i.e. on the stack, for stack allocated objects), and only for strings exceeding a certain length do we allocate a buffer on the heap.

The presence of \0 characters in the string will cause undefined behavior in some operations.

Member Typedef Documentation

◆ unsigned_type

typedef unsigned char Common::String::unsigned_type

Unsigned version of the underlying type. This can be used to cast individual string characters to bigger integer types without sign extension happening.

Constructor & Destructor Documentation

◆ String() [1/8]

constexpr Common::String::String ( )
inline

Construct a new empty string.

◆ String() [2/8]

Common::String::String ( const char *  str)
inline

Construct a new string from the given NULL-terminated C string.

◆ String() [3/8]

Common::String::String ( const char *  str,
uint32  len 
)
inline

Construct a new string containing exactly len characters read from address str.

◆ String() [4/8]

Common::String::String ( const char *  beginP,
const char *  endP 
)
inline

Construct a new string containing the characters between beginP (including) and endP (excluding).

◆ String() [5/8]

Common::String::String ( const String str)
inline

Construct a copy of the given string.

◆ String() [6/8]

Common::String::String ( String &&  str)
inline

Construct a string by moving an existing string.

◆ String() [7/8]

constexpr Common::String::String ( value_type  c)
inlineexplicit

Construct a string consisting of the given character.

◆ String() [8/8]

Common::String::String ( const U32String str,
CodePage  page = kUtf8 
)

Construct a new string from the given u32 string.

Member Function Documentation

◆ matchString()

bool Common::String::matchString ( const char *  pat,
bool  ignoreCase = false,
const char *  wildcardExclusions = NULL 
) const

Simple DOS-style pattern matching function (understands * and ? like used in DOS). Taken from exult/files/listfiles.cc

Token meaning: "*": any character, any amount of times. "?": any character, only once. "#": any decimal digit, only once. "\#": #, only once.

Example strings/patterns: String: monkey.s01 Pattern: monkey.s?? => true String: monkey.s101 Pattern: monkey.s?? => false String: monkey.s99 Pattern: monkey.s?1 => false String: monkey.s101 Pattern: monkey.s* => true String: monkey.s99 Pattern: monkey.s*1 => false String: monkey.s01 Pattern: monkey.s## => true String: monkey.s01 Pattern: monkey.### => false

Parameters
patGlob pattern.
ignoreCaseWhether to ignore the case when doing pattern match
wildcardExclusionsCharacters which are excluded from wildcards and must be matched explicitly.
Returns
true if str matches the pattern, false otherwise.

◆ format()

static String Common::String::format ( MSVC_PRINTF const char *  fmt,
  ... 
)
static

Print formatted data into a String object. Similar to sprintf, except that it stores the result in (variably sized) String instead of a fixed size buffer.

◆ vformat()

static String static String Common::String::vformat ( const char *  fmt,
va_list  args 
)
static

Print formatted data into a String object. Similar to vsprintf, except that it stores the result in (variably sized) String instead of a fixed size buffer.

◆ substr()

String Common::String::substr ( size_t  pos = 0,
size_t  len = npos 
) const

Return a substring of this string

◆ forEachLine()

String Common::String::forEachLine ( String(*)(const String, va_list args)  func,
  ... 
) const

Calls func on each line of the string, and returns a joined string

◆ decode()

U32String Common::String::decode ( CodePage  page = kUtf8) const

Python-like method


The documentation for this class was generated from the following file: