Bayonne2 / Common C++ 2 Framework
|
This is a generic and portable string class. More...
#include <string.h>
Public Types | |
typedef size_t | size_type |
Public Member Functions | |
String () | |
Construct an empty string. More... | |
String (const String &original) | |
Copy constructor. More... | |
String (const char *str) | |
Create a string from a cstring. More... | |
String (std::string string) | |
Create a String from std::string. More... | |
String (const String &str, size_t offset, size_t len=npos) | |
Create a new string from a subset of another string. More... | |
String (size_t count, const char *str) | |
Create a string of a known size, and optionally fill with content. More... | |
String (size_t count, const char fill= ' ') | |
Fill a new string with character data. More... | |
virtual | ~String () |
Destroy the string... More... | |
const char * | getIndex (size_t index) const |
Get a string pointer to string content based on an indexed offset. More... | |
char * | getText (void) const |
Get the text of a string. More... | |
long | getValue (long defvalue=0l) const |
Get the value of a string. More... | |
bool | getBool (bool defbool=false) const |
Get the bool flag of a string. More... | |
const size_t | getLength (void) const |
Get the assigned length of string. More... | |
const size_t | getSize (void) const |
Get the allocation size of the string variable. More... | |
bool | isEmpty (void) const |
Return true if string is empty. More... | |
void | resize (size_t size) |
Re-allocate buffer space for string. More... | |
void | clear (void) |
Clear the contents of the entire string. More... | |
char | at (ssize_t offset) const |
Return a character at a known offset. More... | |
unsigned | count (const String &s, size_t offset=0) const |
Count the number of occurences of a specific string within our string. More... | |
unsigned | count (const char *s, size_t offset=0, size_t len=0) const |
Count the number of occurrences of a specific text pattern within our string. More... | |
String | token (const char *delim=" \t\n\r", size_t offset=0) |
Extract a new string as a token from the current string. More... | |
size_t | find (const String &s, size_t offset=0, unsigned instance=1) const |
Find the index to the nth instance of a substring in our string. More... | |
size_t | rfind (const String &s, size_t offset=0) const |
Find last occurence of a substring in our string. More... | |
size_t | find (const char *s, size_t offset=0, size_t len=0, unsigned count=1) const |
Find the index to the nth instance of text in our string. More... | |
size_t | rfind (const char *s, size_t offset=0, size_t len=0) const |
Find last occurence of a text in our string. More... | |
void | trim (const char *cs) |
Trim trailing characters from a string. More... | |
void | chop (const char *cs) |
Chop leading characters from a string. More... | |
void | strip (const char *cs) |
Strip lead and trailing characters from a string. More... | |
void | chop (size_t chars) |
Chop n leading characters from a string. More... | |
void | trim (size_t count) |
Trim n trailing characters from a string. More... | |
void | erase (size_t start, size_t len=npos) |
Erase a portion of string. More... | |
void | insert (size_t start, const char *text, size_t len=0) |
Insert text into a string. More... | |
void | insert (size_t start, const String &str) |
Insert other string into our string. More... | |
void | replace (size_t start, size_t len, const char *text, size_t count=0) |
Replace text at a specific position in the string with new text. More... | |
void | replace (size_t start, size_t len, const String &string) |
Replace text at a specific position in the string with new string,. More... | |
size_t | find (unsigned instance, const char *text, size_t offset=0, size_t len=0) const |
A more convenient version of find for nth occurences, by putting the instance first. More... | |
size_t | find (unsigned instance, const String &string, size_t offset=0) const |
A more convenient version of find for nth occurences, by putting the instance first. More... | |
String | substr (size_t start, size_t len) const |
Return a new string that contains a specific substring of the current string. More... | |
const char *() | index (size_t ind) const |
Return an indexed string based on the index, such as from a find. More... | |
void | compact (void) |
Reduce the size of the string allocation to the minimum needed based on the current effective length. More... | |
char * | c_str (void) const |
Old ANSI C++ compatible string pointer extraction. More... | |
operator char * () const | |
Get our string data through dereference operator. More... | |
bool | operator! (void) const |
Logical test for string empty. More... | |
char * | text (void) const |
Alternate get text method. More... | |
char * | data (void) const |
Alternate get text method. More... | |
size_t | length (void) const |
Get length as if null terminated string. More... | |
size_t | size (void) const |
Get actual length of string data. More... | |
size_t | capacity (void) const |
Get space allocated to hold current string. More... | |
bool | empty (void) const |
Return true if string is empty. More... | |
void | append (const char *str, size_t count=0) |
Append text to the end of the current string. More... | |
void | append (const char *str, size_t offset, size_t count) |
Append text into the current string. More... | |
void | add (char c) |
Add a character to the end of a string. More... | |
void | append (const String &str) |
Append string to the end of the current string. More... | |
const char | operator[] (unsigned ind) const |
Extract a character by array indexing. More... | |
const char * | operator= (const char *str) |
Assign our string for c string. More... | |
String & | operator+= (const String &str) |
Append operator. More... | |
String & | operator+= (char c) |
Append operator. More... | |
String & | operator+= (const char *str) |
Append operator. More... | |
String & | operator+= (const std::string &str) |
Append operator. More... | |
bool | operator< (const String &str) const |
bool | operator< (const char *str) const |
bool | operator> (const String &str) const |
bool | operator> (const char *str) const |
bool | operator<= (const String &str) const |
bool | operator<= (const char *str) const |
bool | operator>= (const String &str) const |
bool | operator>= (const char *str) const |
bool | operator== (const String &str) const |
bool | operator== (const char *str) const |
bool | operator!= (const String &str) const |
bool | operator!= (const char *str) const |
String & | operator= (const String &original) |
bool | operator*= (const String &str) const |
Test if string is contained in our string. More... | |
bool | operator*= (const char *str) const |
Test if text is contained in our string. More... | |
Static Public Attributes | |
static const size_t | npos |
Protected Member Functions | |
bool | isBig (void) const |
Determine if string is allocated in local variable or an external reference. More... | |
const char * | set (const char *str, size_t len=0) |
Set the content of the string variable to the specified string value, and use smart re-allocation strategies if appropriate to shrink the size of the variable. More... | |
void | set (const String &str) |
Set the content of the string variable to that of another variable. More... | |
void | copy (const String &str) |
Impliment the copy constructor, used internally. More... | |
void | init (void) |
Used to initialize a string object. More... | |
size_t | setSize (size_t size) |
Set the size of allocated space in the string variable (capacity) to a known value. More... | |
void | setLength (size_t len) |
Set the length value of the string content. More... | |
virtual int | compare (const char *text, size_t len=0, size_t index=0) const |
A derivable low level comparison operator. More... | |
size_t | search (const char *text, size_t clen=0, size_t offset=0) const |
An internal method used to search for a substring starting at a known offset. More... | |
Static Protected Member Functions | |
static char * | getSpace (size_t size) |
Used to fetch memory, if needed, based on the size, from the pager, or the system heap. More... | |
Static Protected Attributes | |
static const unsigned | minsize |
static const unsigned | slotsize |
static const unsigned | pagesize |
static const unsigned | slotlimit |
static const unsigned | slotcount |
Private Attributes | |
union { | |
struct { | |
char * text | |
size_t size | |
size_t length | |
} bigstring | |
struct { | |
char text [(sizeof(char *)+(sizeof(size_t)*2)+1)] | |
char length: 6 | |
bool big: 1 | |
} ministring | |
} | content |
Static Private Attributes | |
static MemPager * | pager |
static char ** | idx |
Friends | |
class | StringObject |
class | MemPager |
__EXPORT String | operator+ (const String &s1, const String &s2) |
Add two strings and return a temporary object. More... | |
__EXPORT String | operator+ (const String &s1, const char *s2) |
__EXPORT String | operator+ (const char *s1, const String &s2) |
__EXPORT String | operator+ (const String &s1, const char c2) |
__EXPORT String | operator+ (const char c1, const String &s2) |
__EXPORT std::istream & | getline (std::istream &is, String &str, char delim= '\n', size_t size=0) |
Fetch input from a std::istream into the current string variable until either the string variable is filled (based on current length) or the deliminator is read. More... | |
__EXPORT std::ostream & | operator<< (std::ostream &os, const String &str) |
Stream the content of our string variable directly to a C++ streaming source. More... | |
std::istream & | operator>> (std::istream &is, String &str) |
Stream input into our variable. More... | |
This is a generic and portable string class.
It uses optimized memory allocation strategies to efficiently handle smaller string content by grouping strings into 32 byte aligned slots that can be re-allocated from a free list directly.
While meant to cover the basic functionality of the ANSI C++ string class in form and function, this class offers some important enhancements, including the ability to derive class type specific versions of itself. The latter might be used to derive a unicode string, a string for data and time data types, or to add case insensitive comparisons, for example.
typedef size_t String::size_type |
String::String | ( | ) |
Construct an empty string.
String::String | ( | const String & | original | ) |
Copy constructor.
original | string to copy from. |
String::String | ( | const char * | str | ) |
Create a string from a cstring.
str | text to set with. |
String::String | ( | std::string | string | ) |
Create a String from std::string.
string | from std::string to copy from. |
Create a new string from a subset of another string.
str | reference of source string. |
offset | offset to start of data in prior string. |
len | length of our substring. |
String::String | ( | size_t | count, |
const char * | str | ||
) |
Create a string of a known size, and optionally fill with content.
count | size to allocate for our new string. |
str | content to put into it. |
String::String | ( | size_t | count, |
const char | fill = ' ' |
||
) |
Fill a new string with character data.
count | size of new string. |
fill | char to fill string with. |
|
virtual |
Destroy the string...
void String::add | ( | char | c | ) |
Add a character to the end of a string.
c | char to add. |
void String::append | ( | const char * | str, |
size_t | count = 0 |
||
) |
Append text to the end of the current string.
str | text to append. |
count | size of text to append. |
void String::append | ( | const char * | str, |
size_t | offset, | ||
size_t | count | ||
) |
Append text into the current string.
str | text to append. |
offset | offset to overlay. |
count | size of text to append. |
void String::append | ( | const String & | str | ) |
Append string to the end of the current string.
str | string to append. |
char String::at | ( | ssize_t | offset | ) | const |
Return a character at a known offset.
|
inline |
|
inline |
|
inline |
|
inline |
void String::clear | ( | void | ) |
Clear the contents of the entire string.
|
inline |
|
protectedvirtual |
A derivable low level comparison operator.
This can be used to create custom comparison data types in derived string classes.
text | text to compare. |
len | length of text to compare. |
index | offset from start of string, used in searchs. |
|
protected |
Impliment the copy constructor, used internally.
Will always create a minimum sized string allocation.
str | string to copy from. |
unsigned String::count | ( | const String & | s, |
size_t | offset = 0 |
||
) | const |
Count the number of occurences of a specific string within our string.
s | string to test. |
offset | offset to start from. |
unsigned String::count | ( | const char * | s, |
size_t | offset = 0 , |
||
size_t | len = 0 |
||
) | const |
Count the number of occurrences of a specific text pattern within our string.
s | text pattern to find |
offset | offset to start from. |
len | length of text pattern if specified. |
|
inline |
|
inline |
void String::erase | ( | size_t | start, |
size_t | len = npos |
||
) |
Erase a portion of string.
start | starting index to erase from. |
len | number of characters to erase. |
size_t String::find | ( | const String & | s, |
size_t | offset = 0 , |
||
unsigned | instance = 1 |
||
) | const |
Find the index to the nth instance of a substring in our string.
s | string to search for. |
offset | offset to start at. |
instance | instance to look for. |
size_t String::find | ( | const char * | s, |
size_t | offset = 0 , |
||
size_t | len = 0 , |
||
unsigned | count = 1 |
||
) | const |
Find the index to the nth instance of text in our string.
s | string to search for. |
offset | offset to start at. |
len | size of string text. |
count | instance to look for. |
|
inline |
|
inline |
bool String::getBool | ( | bool | defbool = false | ) | const |
Get the bool flag of a string.
const char* String::getIndex | ( | size_t | index | ) | const |
Get a string pointer to string content based on an indexed offset.
A NULL is returned if the index is outsize of range.
index |
const size_t String::getLength | ( | void | ) | const |
Get the assigned length of string.
const size_t String::getSize | ( | void | ) | const |
Get the allocation size of the string variable.
|
staticprotected |
Used to fetch memory, if needed, based on the size, from the pager, or the system heap.
size | of space needed. |
char* String::getText | ( | void | ) | const |
Get the text of a string.
long String::getValue | ( | long | defvalue = 0l | ) | const |
Get the value of a string.
|
inline |
|
protected |
Used to initialize a string object.
void String::insert | ( | size_t | start, |
const char * | text, | ||
size_t | len = 0 |
||
) |
Insert text into a string.
start | starting offset to insert at. |
text | text to insert. |
len | size of text to insert. |
void String::insert | ( | size_t | start, |
const String & | str | ||
) |
Insert other string into our string.
start | string offset to insert at. |
str | string to insert. |
|
inlineprotected |
bool String::isEmpty | ( | void | ) | const |
Return true if string is empty.
|
inline |
|
inline |
|
inline |
bool String::operator!= | ( | const String & | str | ) | const |
bool String::operator!= | ( | const char * | str | ) | const |
bool String::operator*= | ( | const String & | str | ) | const |
Test if string is contained in our string.
bool String::operator*= | ( | const char * | str | ) | const |
Test if text is contained in our string.
|
inline |
|
inline |
|
inline |
bool String::operator< | ( | const String & | str | ) | const |
bool String::operator< | ( | const char * | str | ) | const |
bool String::operator<= | ( | const String & | str | ) | const |
bool String::operator<= | ( | const char * | str | ) | const |
|
inline |
bool String::operator== | ( | const String & | str | ) | const |
bool String::operator== | ( | const char * | str | ) | const |
bool String::operator> | ( | const String & | str | ) | const |
bool String::operator> | ( | const char * | str | ) | const |
bool String::operator>= | ( | const String & | str | ) | const |
bool String::operator>= | ( | const char * | str | ) | const |
|
inline |
void String::replace | ( | size_t | start, |
size_t | len, | ||
const char * | text, | ||
size_t | count = 0 |
||
) |
Replace text at a specific position in the string with new text.
start | starting offset to replace at. |
len | length of text to remove. |
text | text to replace with. |
count | size of replacement text. |
void String::replace | ( | size_t | start, |
size_t | len, | ||
const String & | string | ||
) |
Replace text at a specific position in the string with new string,.
start | starting offset to replace at. |
len | length of text to remove. |
string | reference to replace with. |
void String::resize | ( | size_t | size | ) |
Re-allocate buffer space for string.
size | new size to use. |
size_t String::rfind | ( | const String & | s, |
size_t | offset = 0 |
||
) | const |
Find last occurence of a substring in our string.
s | string to search for. |
offset | offset to start from. |
size_t String::rfind | ( | const char * | s, |
size_t | offset = 0 , |
||
size_t | len = 0 |
||
) | const |
Find last occurence of a text in our string.
s | string to search for. |
offset | offset to start from. |
len | size of string to look for. |
|
protected |
An internal method used to search for a substring starting at a known offset.
Used by find and count methods.
text | text to search for. |
clen | length of search text. |
offset | offset to start from. |
|
protected |
Set the content of the string variable to the specified string value, and use smart re-allocation strategies if appropriate to shrink the size of the variable.
str | string to set. |
len | length of string if passed. |
|
protected |
Set the content of the string variable to that of another variable.
Uses the string set method.
str | string to copy from. |
|
protected |
Set the length value of the string content.
len | size in bytes. |
|
protected |
Set the size of allocated space in the string variable (capacity) to a known value.
The value is recomputed and adjusted based on allocation method.
size | in bytes. |
|
inline |
void String::strip | ( | const char * | cs | ) |
Strip lead and trailing characters from a string.
cs | list of chars to strip. |
|
inline |
|
inline |
String String::token | ( | const char * | delim = " \t\n\r" , |
size_t | offset = 0 |
||
) |
Extract a new string as a token from the current string.
delim | deliminator characters. |
offset | offset to start from. |
|
inline |
void String::trim | ( | size_t | count | ) |
Trim n trailing characters from a string.
count | number of bytes to trim. |
|
friend |
Fetch input from a std::istream into the current string variable until either the string variable is filled (based on current length) or the deliminator is read.
is | stream to read. |
str | string to save into. |
delim | deliminator to use. |
size | optional size limitor. |
Add two strings and return a temporary object.
Stream the content of our string variable directly to a C++ streaming source.
|
friend |
|
friend |
struct { ... } String::bigstring |
union { ... } String::content |
struct { ... } String::ministring |