1
//========================================================================
5
// Simple variable-length string type.
7
// Copyright 1996-2002 Glyph & Cog, LLC
9
//========================================================================
16
#ifdef USE_GCC_PRAGMAS
25
// Create an empty string.
28
// Create a string from a C string.
29
GString(const char *sA);
31
// Create a string from <lengthA> chars at <sA>. This string
32
// can contain null characters.
33
GString(const char *sA, int lengthA);
35
// Create a string from <lengthA> chars at <idx> in <str>.
36
GString(GString *str, int idx, int lengthA);
39
GString(GString *str);
40
GString *copy() { return new GString(this); }
42
// Concatenate two strings.
43
GString(GString *str1, GString *str2);
45
// Convert an integer to a string.
46
static GString *fromInt(int x);
52
int getLength() const { return length; }
55
const char *getCString() const { return s; }
56
char *getCString() { return s; }
58
// Get <i>th character.
59
char getChar(int i) const { return s[i]; }
61
// Change <i>th character.
62
void setChar(int i, char c) { s[i] = c; }
64
// Clear string to zero length.
67
// Append a character or string.
68
GString *append(char c);
69
GString *append(GString *str);
70
GString *append(const char *str);
71
GString *append(const char *str, int lengthA);
73
// Insert a character or string.
74
GString *insert(int i, char c);
75
GString *insert(int i, GString *str);
76
GString *insert(int i, const char *str);
77
GString *insert(int i, const char *str, int lengthA);
79
// Delete a character or range of characters.
80
GString *del(int i, int n = 1);
82
// Convert string to all-upper/all-lower case.
86
// Compare two strings: -1:< 0:= +1:>
87
// These functions assume the strings do not contain null characters.
88
int cmp(const GString *str) const { return strcmp(s, str->getCString()); }
89
int cmpN(const GString *str, int n) const { return strncmp(s, str->getCString(), n); }
90
int cmp(const char *sA) const { return strcmp(s, sA); }
91
int cmpN(const char *sA, int n) const { return strncmp(s, sA, n); }
98
void resize(int length1);