22#ifndef COMMON_STRING_H
23#define COMMON_STRING_H
25#include "common/scummsys.h"
26#include "common/str-enc.h"
27#include "common/ustr.h"
28#include "common/str-base.h"
95 String &operator=(
const char *str);
99 String &operator+=(
const char *str);
101 String &operator+=(
char c);
103 bool equalsIgnoreCase(
const String &x)
const;
104 int compareToIgnoreCase(
const String &x)
const;
106 bool equalsIgnoreCase(
const char *x)
const;
107 int compareToIgnoreCase(
const char *x)
const;
108 int compareDictionary(
const String &x)
const;
109 int compareDictionary(
const char *x)
const;
111 bool hasSuffix(
const String &x)
const;
112 bool hasSuffix(
const char *x)
const;
113 bool hasSuffixIgnoreCase(
const String &x)
const;
114 bool hasSuffixIgnoreCase(
const char *x)
const;
116 bool hasPrefix(
const String &x)
const;
117 bool hasPrefix(
const char *x)
const;
118 bool hasPrefixIgnoreCase(
const String &x)
const;
119 bool hasPrefixIgnoreCase(
const char *x)
const;
122 bool contains(
const String &x)
const;
123 bool contains(
const char *x)
const;
150 bool matchString(
const char *pat,
bool ignoreCase =
false,
const char *wildcardExclusions = NULL)
const;
151 bool matchString(
const String &pat,
bool ignoreCase =
false,
const char *wildcardExclusions = NULL)
const;
177 StringEncodingResult encodeUTF8(const
U32String &src,
char errorChar);
178 StringEncodingResult encodeWindows932(const
U32String &src,
char errorChar);
179 StringEncodingResult encodeWindows936(const
U32String &src,
char errorChar);
180 StringEncodingResult encodeWindows949(const
U32String &src,
char errorChar);
181 StringEncodingResult encodeWindows950(const
U32String &src,
bool translit,
char errorChar);
182 StringEncodingResult encodeJohab(const
U32String &src,
char errorChar);
183 StringEncodingResult encodeOneByte(const
U32String &src, CodePage page,
bool translit,
char errorChar);
184 StringEncodingResult encodeInternal(const
U32String &src, CodePage page,
char errorChar);
185 StringEncodingResult translitChar(
U32String::value_type point,
char errorChar);
200bool operator==(const
char *x, const
String &y);
201bool operator!=(const
char *x, const
String &y);
204extern
char *ltrim(
char *t);
205extern
char *rtrim(
char *t);
206extern
char *
trim(
char *t);
277bool matchString(const
char *str, const
char *pat,
bool ignoreCase = false, const
char *wildcardExclusions = NULL);
310void strcpy_s(
char *dst,
size_t size, const
char *src);
322template<typename T,
size_t N>
323FORCEINLINE
void strcpy_s(T (&dst)[N], const
char *src) {
324 static_assert(
sizeof(T) ==
sizeof(
char),
"T is not compatible with char");
340void strcat_s(
char *dst,
size_t size,
const char *src);
353template<
typename T,
size_t N>
354FORCEINLINE
void strcat_s(T (&dst)[N],
const char *src) {
355 static_assert(
sizeof(T) ==
sizeof(
char),
"T is not compatible with char");
375template<
typename T,
size_t N>
377 static_assert(
sizeof(T) ==
sizeof(
char),
"T is not compatible with char");
397template<typename T,
size_t N>
399 static_assert(
sizeof(T) ==
sizeof(
char),
"T is not compatible with char");
423size_t strlcpy(
char *dst,
const char *src,
size_t size);
443size_t strlcat(
char *dst,
const char *src,
size_t size);
454size_t strnlen(
const char *src,
size_t maxSize);
461#define tag2str(x) Common::tag2string(x).c_str()
468#define tag2strP(x) Common::tag2string(x, true).c_str()
489extern int scumm_stricmp(
const char *s1,
const char *s2);
490extern int scumm_strnicmp(
const char *s1,
const char *s2, uint n);
491extern char *scumm_strdup(
const char *in);
493extern int scumm_compareDictionary(
const char *s1,
const char *s2);
494extern const char *scumm_skipArticle(
const char *s1);
496extern const char *scumm_strcasestr(
const char *s,
const char *
find);
Definition: str-base.h:32
void replace(uint32 pos, uint32 count, const BaseString &str)
static String format(MSVC_PRINTF const char *fmt,...) GCC_PRINTF(1
unsigned char unsigned_type
Definition: str.h:66
U32String decode(CodePage page=kUtf8) const
String(String &&str)
Definition: str.h:84
String substr(size_t pos=0, size_t len=npos) const
String(const String &str)
Definition: str.h:81
constexpr String(value_type c)
Definition: str.h:87
String(const char *str)
Definition: str.h:72
String(const char *beginP, const char *endP)
Definition: str.h:78
static String static String vformat(const char *fmt, va_list args)
String(const char *str, uint32 len)
Definition: str.h:75
String(size_t n, value_type c)
Definition: str.h:90
String forEachLine(String(*func)(const String, va_list args),...) const
constexpr String()
Definition: str.h:69
String(const U32String &str, CodePage page=kUtf8)
bool matchString(const char *pat, bool ignoreCase=false, const char *wildcardExclusions=NULL) const
In find(In first, In last, const T &v)
Definition: algorithm.h:225
size_t strnlen(const char *src, size_t maxSize)
String lastPathComponent(const String &path, const char sep)
size_t strlcat(char *dst, const char *src, size_t size)
int vsprintf_s(char *dst, size_t size, const char *format, va_list ap) GCC_PRINTF(3
String tag2string(uint32 tag, bool nonPrintable=false)
String percentEncodeString(const String &src)
int sprintf_s(char *dst, size_t size, MSVC_PRINTF const char *format,...) GCC_PRINTF(3
int FORCEINLINE GCC_PRINTF(2, 0) int vsprintf_s(T(&dst)[N]
void strcat_s(char *dst, size_t size, const char *src)
String toPrintable(const String &src, bool keepNewLines=true)
size_t strlcpy(char *dst, const char *src, size_t size)
void strcpy_s(char *dst, size_t size, const char *src)
String firstPathComponents(const String &path, const char sep)
String normalizePath(const String &path, const char sep)
Definition: algorithm.h:29