44 #ifndef CCXX_STRING_H_
45 #define CCXX_STRING_H_
47 #ifndef CCXX_MISSING_H_
51 #ifndef CCXX_STRCHAR_H_
55 #ifdef CCXX_NAMESPACES
105 char text[(
sizeof(
char *) + (
sizeof(
size_t) * 2) + 1)];
123 {
return content.ministring.big;};
133 const char *set(
const char *str,
size_t len = 0);
141 void set(
const String &str);
151 const char *set(
size_t size,
const char *format, ...);
160 void copy(
const String &str);
174 static char *getSpace(
size_t size);
183 size_t setSize(
size_t size);
190 void setLength(
size_t len);
202 virtual int compare(
const char *text,
size_t len = 0,
size_t index = 0)
const;
213 size_t search(
const char *text,
size_t clen = 0,
size_t offset = 0)
const;
244 String(std::string
string);
253 String(
const String &str,
size_t offset,
size_t len = npos);
262 String(
size_t size,
const char *format, ...);
271 String(
size_t count,
const char *str);
280 String(
size_t count,
const char fill =
' ');
294 const char *getIndex(
size_t index)
const;
301 char *getText(
void)
const;
308 long getValue(
long defvalue = 0l)
const;
315 bool getBool(
bool defbool =
false)
const;
322 const size_t getLength(
void)
const;
329 const size_t getSize(
void)
const;
336 bool isEmpty(
void)
const;
343 void resize(
size_t size);
355 char at(ssize_t offset)
const;
365 unsigned count(
const String &s,
size_t offset = 0)
const;
376 unsigned count(
const char *s,
size_t offset = 0,
size_t len = 0)
const;
385 String token(
const char *delim =
" \t\n\r",
size_t offset = 0);
395 size_t find(
const String &s,
size_t offset = 0,
unsigned instance = 1)
const;
404 size_t rfind(
const String &s,
size_t offset = 0)
const;
415 size_t find(
const char *s,
size_t offset = 0,
size_t len = 0,
unsigned count = 1)
const;
425 size_t rfind(
const char *s,
size_t offset = 0,
size_t len = 0)
const;
432 inline void trim(
const char *cs)
433 {setLength(
strtrim(cs, getText(), getLength()));};
440 inline void chop(
const char *cs)
441 {setLength(
strchop(cs, getText(), getLength()));};
448 void strip(
const char *cs);
463 void trim(
size_t count);
471 void erase(
size_t start,
size_t len = npos);
480 void insert(
size_t start,
const char *text,
size_t len = 0);
488 void insert(
size_t start,
const String &str);
499 void replace(
size_t start,
size_t len,
const char *text,
size_t count = 0);
509 void replace(
size_t start,
size_t len,
const String &
string);
520 inline size_t find(
unsigned instance,
const char *text,
size_t offset = 0,
size_t len = 0)
const
521 {
return find(text, offset, len, instance);};
531 inline size_t find(
unsigned instance,
const String &
string,
size_t offset = 0)
const
532 {
return find(
string, offset, instance);};
543 {
return String(*
this, start, len);};
552 inline const char *(
index)(
size_t ind)
const
553 {
return getIndex(ind);};
560 {resize(getLength() + 1);};
575 inline operator char *()
const
608 {
return strlen(getText());};
616 {
return getLength();};
638 void append(
const char *str,
size_t count = 0);
647 void append(
size_t size,
const char *format, ...);
657 void append(
const char *str,
size_t offset,
size_t count);
671 void append(
const String &str);
684 inline const char *operator =(
const char *str)
704 {append(str);
return *
this;};
710 {add(c);
return *
this;};
716 {append(str);
return *
this;};
722 {append(str.c_str());
return *
this;};
734 friend __EXPORT std::istream &getline(std::istream &is,
String &str,
char delim =
'\n',
size_t size = 0);
746 {
return getline(is, str);};
757 friend __EXPORT int strprintf(
String &str,
size_t size,
const char *format, ...);
760 bool operator<(
const String &str)
const;
761 bool operator<(
const char *str)
const;
762 bool operator>(
const String &str)
const;
763 bool operator>(
const char *str)
const;
764 bool operator<=(
const String &str)
const;
765 bool operator<=(
const char *str)
const;
766 bool operator>=(
const String &str)
const;
767 bool operator>=(
const char *str)
const;
768 bool operator==(
const String &str)
const;
769 bool operator==(
const char *str)
const;
770 bool operator!=(
const String &str)
const;
771 bool operator!=(
const char *str)
const;
779 {append(16,
"%d", i);
return *
this;};
782 {append(16,
"%u", i);
return *
this;};
785 {append(16,
"%l", l);
return *
this;};
788 {append(16,
"%ul", l);
return *
this;};
791 {append(32,
"%f", f);
return *
this;};
794 {append(32,
"%f", d);
return *
this;};
797 {append(8,
"%hd", s);
return *
this;};
800 {append(8,
"%hu", s);
return *
this;};
807 {set(16,
"%d", i);
return *
this;};
810 {set(16,
"%u", i);
return *
this;};
813 {set(16,
"%l", l);
return *
this;};
816 {set(16,
"%ul", l);
return *
this;};
819 {set(32,
"%f", f);
return *
this;};
822 {set(32,
"%f", d);
return *
this;};
825 {set(8,
"%hd", s);
return *
this;};
828 {set(8,
"%hu", s);
return *
this;};
832 {copy(original);
return *
this;};
837 bool operator*=(
const String &str)
const;
842 bool operator*=(
const char *str)
const;
892 void operator delete(
void *obj);
895 #ifdef CCXX_NAMESPACES
size_t size
Definition: string.h:101
String & operator=(long l)
Definition: string.h:812
char * data(void) const
Alternate get text method.
Definition: string.h:599
void chop(size_t chars)
Chop n leading characters from a string.
Definition: string.h:455
This is a generic and portable string class.
Definition: string.h:77
String & operator+=(unsigned short s)
Definition: string.h:799
String & operator=(unsigned int i)
Definition: string.h:809
String & operator+=(float f)
Definition: string.h:790
size_t size_type
Definition: string.h:218
void compact(void)
Reduce the size of the string allocation to the minimum needed based on the current effective length...
Definition: string.h:559
String & operator=(double d)
Definition: string.h:821
#define NEW_THROWS
Definition: config.h:946
String & operator+=(unsigned int i)
Definition: string.h:781
String & operator=(const String &original)
Definition: string.h:831
char * c_str(void) const
Old ANSI C++ compatible string pointer extraction.
Definition: string.h:567
static const unsigned slotsize
Definition: string.h:81
void chop(const char *cs)
Chop leading characters from a string.
Definition: string.h:440
#define __EXPORT
Definition: config.h:980
String & operator+=(const String &str)
Append operator.
Definition: string.h:703
substitute functions which may be missing in target platform libc.
String & operator=(unsigned long l)
Definition: string.h:815
String & operator+=(const char *str)
Append operator.
Definition: string.h:715
static const unsigned minsize
Definition: string.h:80
String substr(size_t start, size_t len) const
Return a new string that contains a specific substring of the current string.
Definition: string.h:542
Common and portable character string related functions.
const char operator[](unsigned ind) const
Extract a character by array indexing.
Definition: string.h:678
String & operator=(float f)
Definition: string.h:818
String & operator+=(double d)
Definition: string.h:793
bool operator!(void) const
Logical test for string empty.
Definition: string.h:583
friend std::istream & operator>>(std::istream &is, String &str)
Stream input into our variable.
Definition: string.h:745
String & operator=(short s)
Definition: string.h:824
String & operator+=(unsigned long l)
Definition: string.h:787
String & operator=(int i)
Assignment operator.
Definition: string.h:806
size_t length
Definition: string.h:102
size_t length(void) const
Get length as if null terminated string.
Definition: string.h:607
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.
Definition: string.h:531
char * text
Definition: string.h:100
The StringObject class is used to derive subclasses that use the String managed memory pool for all s...
Definition: string.h:881
String & operator+=(long l)
Definition: string.h:784
String & operator+=(int i)
Append operator.
Definition: string.h:778
static const unsigned slotcount
Definition: string.h:84
static const unsigned pagesize
Definition: string.h:82
bool isBig(void) const
Determine if string is allocated in local variable or an external reference.
Definition: string.h:122
__EXPORT size_t strchop(const char *cs, char *str, size_t len=0)
__EXPORT char * find(const char *cs, char *str, size_t len=0)
__EXPORT std::ostream & operator<<(std::ostream &os, const IPV4Address &ia)
String & operator+=(short s)
Definition: string.h:796
static const unsigned slotlimit
Definition: string.h:83
static const size_t npos
Definition: string.h:216
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.
Definition: string.h:520
const char *() index(size_t ind) const
Return an indexed string based on the index, such as from a find.
Definition: string.h:552
size_t size(void) const
Get actual length of string data.
Definition: string.h:615
__EXPORT char * strip(const char *cs, char *str, size_t len=0)
__EXPORT size_t strtrim(const char *cs, char *str, size_t len=0)
size_t capacity(void) const
Get space allocated to hold current string.
Definition: string.h:623
__EXPORT char * rfind(const char *cs, char *str, size_t len=0)
char * text(void) const
Alternate get text method.
Definition: string.h:591
String & operator+=(char c)
Append operator.
Definition: string.h:709
String & operator+=(const std::string &str)
Append operator.
Definition: string.h:721
String & operator=(unsigned short s)
Definition: string.h:827
bool empty(void) const
Return true if string is empty.
Definition: string.h:629
void trim(const char *cs)
Trim trailing characters from a string.
Definition: string.h:432