#include <ace/SString.h>
class ACE_CString {
public:
static const int npos;
ACE_CString (ACE_Allocator *alloc = 0);
ACE_CString ( const char *s, ACE_Allocator *alloc = 0, int release = 1 );
ACE_CString ( const char *s, size_t len, ACE_Allocator *alloc = 0, int release = 1 );
ACE_CString (const ACE_CString &);
ACE_CString (const ACE_USHORT16 *s, ACE_Allocator *alloc = 0);
ACE_CString (char c, ACE_Allocator *alloc = 0);
~ACE_CString (void);
const char &operator [] (size_t slot) const;
char &operator [] (size_t slot);
ACE_CString &operator = (const ACE_CString &);
void set (const char *s, int release = 1);
void set (const char *s, size_t len, int release);
ACE_CString substring (size_t offset, ssize_t length = -1) const;
ACE_CString substr (size_t offset, ssize_t length = -1) const;
ACE_CString &operator += (const ACE_CString &);
u_long hash (void) const;
size_t length (void) const;
char *rep (void) const;
const char *fast_rep (void) const;
const char *c_str (void) const;
int strstr (const ACE_CString &s) const;
int find (const ACE_CString &str, int pos = 0) const;
int find (const char *s, int pos = 0) const;
int find (char c, int pos = 0) const;
int rfind (char c, int pos = npos) const;
int operator == (const ACE_CString &s) const;
int operator < (const ACE_CString &s) const;
int operator > (const ACE_CString &s) const;
int operator != (const ACE_CString &s) const;
int compare (const ACE_CString &s) const;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
private:
ACE_Allocator *allocator_;
size_t len_;
size_t buf_len_;
char *rep_;
int release_;
static char NULL_CString_;
};
ACE_Allocator
to allocate memory. The
user can make this a persistant class by providing an
ACE_Allocator with a persistable memory pool. This class is
optimized for efficiency, so it doesn't provide any internal
locking.
NOTE: if an instance of this class is constructed from or assigned an empty string (with first element of '\ '), then it is _not_ allocated new space. Instead, its internal representation is set equal to a global empty string.
CAUTION: in cases when ACE_CString is constructed from a provided buffer with the release parameter set to 0, ACE_CString is not guaranteed to be '\ ' terminated.
static const int npos;
ACE_CString (ACE_Allocator *alloc = 0);
ACE_CString (
const char *s,
ACE_Allocator *alloc = 0,
int release = 1
);
s
into dynamically allocated memory.
If release
is non-0 then the ACE_allocator
is responsible for
freeing this memory. Memory is _not_ allocated/freed if release
is 0.
ACE_CString (
const char *s,
size_t len,
ACE_Allocator *alloc = 0,
int release = 1
);
len
chars of s
into dynamically
allocated memory (will NUL terminate the result). If release
is non-0 then the ACE_allocator
is responsible for freeing this
memory. Memory is _not_ allocated/freed if release
is 0.
ACE_CString (const ACE_CString &);
ACE_CString (const ACE_USHORT16 *s, ACE_Allocator *alloc = 0);
s
into dynamically allocated memory.
Probable loss of data. Please use with care.
ACE_CString (char c, ACE_Allocator *alloc = 0);
c
into dynamically allocated memory.
~ACE_CString (void);
const char &operator [] (size_t slot) const;
slot'th
character in the string (doesn't perform
bounds checking).
char &operator [] (size_t slot);
slot'th
character by reference in the string
(doesn't perform bounds checking).
ACE_CString &operator = (const ACE_CString &);
void set (const char *s, int release = 1);
s
into this ACE_CString
. Memory is _not_
allocated/freed if release
is 0.
void set (const char *s, size_t len, int release);
len
bytes of s
(will NUL terminate the result).
Memory is _not_ allocated/freed if release
is 0.
ACE_CString substring (size_t offset, ssize_t length = -1) const;
ACE_CString substr (size_t offset, ssize_t length = -1) const;
substring
.
ACE_CString &operator += (const ACE_CString &);
u_long hash (void) const;
size_t length (void) const;
char *rep (void) const;
const char *fast_rep (void) const;
const char *c_str (void) const;
c_str
and fast_rep
.
int strstr (const ACE_CString &s) const;
int find (const ACE_CString &str, int pos = 0) const;
str
starting at pos. Returns the slot of the first
location that matches, else npos.
int find (const char *s, int pos = 0) const;
s
starting at pos. Returns the slot of the first
location that matches, else npos.
int find (char c, int pos = 0) const;
c
starting at pos. Returns the slot of the first
location that matches, else npos.
int rfind (char c, int pos = npos) const;
c
starting at pos (counting from the end). Returns the
slot of the first location that matches, else npos.
int operator == (const ACE_CString &s) const;
int operator < (const ACE_CString &s) const;
int operator > (const ACE_CString &s) const;
int operator != (const ACE_CString &s) const;
int compare (const ACE_CString &s) const;
strcmp
-style comparison.
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
ACE_Allocator *allocator_;
size_t len_;
size_t buf_len_;
char *rep_;
int release_;
static char NULL_CString_;