ucommon
7.0.0
About: GNU uCommon C++ is a portable and optimized class framework for writing C++ applications that need to use threads and support concurrent synchronization, and that use sockets, XML parsing, object serialization, thread-optimized string and data structure classes, etc.. Fossies Dox: ucommon-7.0.0.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation) 
|
Go to the documentation of this file. 36 #ifndef _UCOMMON_STRING_H_ 37 #define _UCOMMON_STRING_H_ 39 #ifndef _UCOMMON_CPR_H_ 43 #ifndef _UCOMMON_GENERICS_H_ 47 #ifndef _UCOMMON_PROTOCOLS_H_ 51 #ifndef _UCOMMON_OBJECT_H_ 63 #define PGP_B64_WIDTH 64 64 #define MIME_B64_WIDTH 76 108 regex(
const char *pattern,
size_t size = 1);
109 regex(
size_t size = 1);
112 size_t offset(
unsigned member);
113 size_t size(
unsigned member);
119 bool match(
const char *text,
unsigned flags = 0);
121 regex& operator=(
const char *
string);
123 bool operator*=(
const char *
string);
125 operator bool()
const {
126 return object != NULL;
130 return object == NULL;
160 void clear(
size_t offset);
168 void set(
size_t offset,
const char *text,
size_t size);
174 void set(
const char *text);
180 void add(
const char *text);
186 void add(
char character);
198 void inc(
size_t number);
205 void dec(
size_t number);
216 cstring *create(
size_t size)
const;
226 virtual int compare(
const char *
string)
const;
234 bool equal(
const char *
string)
const;
252 virtual cstring *c_copy(
void)
const;
260 virtual void cow(
size_t size = 0);
262 size_t getStringSize(
void)
const;
265 const static size_t npos = ((size_t)-1);
266 const static char eos =
'\0';
286 String(
size_t size,
const char *format, ...);
301 String(
const char *text,
size_t size);
309 String(
const char *text,
const char *end);
330 String get(
size_t offset,
size_t size = 0)
const;
337 int scanf(
const char *format, ...)
__SCANF(2, 3);
345 int vscanf(const
char *format, va_list args)
__SCANF(2, 0);
352 size_t printf(const
char *format, ...)
__PRINTF(2, 3);
360 size_t vprintf(const
char *format, va_list args)
__PRINTF(2, 0);
368 inline
char *c_mem() {
376 const char *c_str(
void)
const;
383 virtual bool resize(
size_t size);
389 void set(
const char *text);
398 void set(
size_t offset,
const char *text,
size_t size = 0);
407 void set(
const char *text,
char overflow,
size_t offset,
size_t size = 0);
416 void rset(
const char *text,
char overflow,
size_t offset,
size_t size = 0);
422 void add(
const char *text);
428 void add(
char character);
434 void trim(
const char *list);
440 inline void trim(
size_t count = 1) {
448 void chop(
const char *list);
454 inline void chop(
size_t count = 1) {
462 void strip(
const char *list);
469 bool unquote(
const char *
quote);
476 void cut(
size_t offset,
size_t size = 0);
484 void paste(
size_t offset,
const char *text,
size_t size = 0);
490 void clear(
size_t offset);
517 size_t ccount(
const char *list)
const;
523 size_t count(
void)
const;
529 size_t size(
void)
const;
540 size_t offset(
const char *
pointer)
const;
547 char at(
int position)
const;
553 const char *begin(
void)
const;
559 const char *end(
void)
const;
567 const char *skip(
const char *list,
size_t offset = 0)
const;
576 const char *rskip(
const char *list,
size_t offset = npos)
const;
583 const char *search(
const char *
string,
unsigned instance = 0,
unsigned flags = 0)
const;
585 const char *search(regex& expr,
unsigned instance = 0,
unsigned flags = 0)
const;
587 unsigned replace(
const char *
string,
const char *text = NULL,
unsigned flags = 0);
589 unsigned replace(regex& expr,
const char *text = NULL,
unsigned flags = 0);
597 const char *find(
const char *list,
size_t offset = 0)
const;
605 const char *rfind(
const char *list,
size_t offset = npos)
const;
612 void split(
const char *
pointer);
619 void split(
size_t offset);
621 void fill(
size_t size,
char fill);
628 void rsplit(
const char *
pointer);
635 void rsplit(
size_t offset);
642 const char *chr(
char character)
const;
650 const char *rchr(
char character)
const;
656 size_t len(
void)
const;
662 inline operator const char *()
const {
678 bool full(
void)
const;
686 String operator()(
int offset,
size_t size)
const;
694 return operator()(0, size);
703 return operator()(-((
int)offset), 0);
713 return operator()((
int)offset, size);
723 const char *operator()(
int offset)
const;
730 const char operator[](
int offset)
const;
736 bool operator!()
const;
742 operator bool()
const;
755 String& operator|=(
const char *text);
757 String& operator&=(
const char *text);
771 String& operator^=(
const char *text);
785 String& operator|(
const char *text);
803 bool operator*=(
const char *substring);
805 bool operator*=(regex& expr);
811 String& operator=(
const char *text);
833 String& operator-=(
size_t number);
839 String& operator*=(
size_t number);
846 bool operator==(
const char *text)
const;
853 bool operator!=(
const char *text)
const;
860 bool operator<(
const char *text)
const;
867 bool operator<=(
const char *text)
const;
874 bool operator>(
const char *text)
const;
881 bool operator>=(
const char *text)
const;
884 add(text);
return *
this;
888 add(code);
return *
this;
896 String &operator%(
short& value);
903 String &operator%(
unsigned short& value);
910 String &operator%(
long& value);
917 String &operator%(
unsigned long& value);
924 String &operator%(
double& value);
931 String &operator%(
const char *text);
944 static void fix(
String&
object);
953 static bool check(
const char *
string,
size_t maximum,
size_t minimum = 0);
959 static void erase(
char *text);
965 static void lower(
char *text);
971 static void upper(
char *text);
986 static char *token(
char *text,
char **last,
const char *list,
const char *
quote = NULL,
const char *end = NULL);
994 static char *skip(
char *text,
const char *list);
1002 static char *rskip(
char *text,
const char *list);
1011 static char *unquote(
char *text,
const char *
quote);
1020 static char *rset(
char *
buffer,
size_t size,
const char *text);
1030 static char *set(
char *
buffer,
size_t size,
const char *text);
1041 static char *set(
char *
buffer,
size_t size,
const char *text,
size_t max);
1052 static char *add(
char *
buffer,
size_t size,
const char *text);
1064 static char *add(
char *
buffer,
size_t size,
const char *text,
size_t max);
1073 static const char *ifind(
const char *text,
const char *key,
const char *optional);
1082 static const char *find(
const char *text,
const char *key,
const char *optional);
1089 static size_t count(
const char *text);
1097 static int compare(
const char *text1,
const char *text2);
1099 inline static int collate(
const char *text1,
const char *text2) {
1100 return compare(text1, text2);
1109 static bool equal(
const char *text1,
const char *text2);
1118 static int compare(
const char *text1,
const char *text2,
size_t size);
1127 static bool equal(
const char *text1,
const char *text2,
size_t size);
1135 static bool eq_case(
const char *text1,
const char *text2);
1144 static bool eq_case(
const char *text1,
const char *text2,
size_t size);
1153 static char *trim(
char *text,
const char *list);
1162 static char *chop(
char *text,
const char *list);
1171 static char *strip(
char *text,
const char *list);
1181 static char *fill(
char *text,
size_t size,
char character);
1189 static unsigned ccount(
const char *text,
const char *list);
1197 static char *find(
char *text,
const char *list);
1205 static size_t seek(
char *text,
const char *list);
1213 static char *rfind(
char *text,
const char *list);
1220 static char *
dup(
const char *text);
1228 static char *left(
const char *text,
size_t size);
1236 static const char *pos(
const char *text, ssize_t offset);
1238 inline static char *
right(
const char *text,
size_t size) {
1239 return dup(pos(text, -(ssize_t)size));
1242 inline static char *
copy(
const char *text,
size_t offset,
size_t len) {
1243 return left(pos(text, (ssize_t)offset), len);
1246 static void cut(
char *text,
size_t offset,
size_t len);
1248 static void paste(
char *text,
size_t max,
size_t offset,
const char *data,
size_t len = 0);
1262 inline char *
token(
char **last,
const char *list,
const char *
quote = NULL,
const char *end = NULL) {
1263 return token(data(), last, list,
quote, end);
1273 return strtod(data(),
pointer);
1283 return strtol(data(),
pointer, 0);
1292 inline static double tod(
const char *text,
char **
pointer = NULL) {
1302 inline static long tol(
const char *text,
char **
pointer = NULL) {
1303 return strtol(text,
pointer, 0);
1314 static size_t b64size(
size_t size);
1324 static size_t b64encode(
char *
string,
const uint8_t *
binary,
size_t size,
size_t width = 0);
1334 static size_t b64decode(uint8_t *
binary,
const char *
string,
size_t size,
bool ws =
false);
1336 static size_t b64count(
const char *
str,
bool ws =
false);
1344 static uint32_t crc24(uint8_t *
binary,
size_t size);
1352 static uint16_t crc16(uint8_t *
binary,
size_t size);
1369 static size_t hexdump(
const uint8_t *
binary,
char *
string,
const char *format);
1379 static size_t hexpack(uint8_t *
binary,
const char *
string,
const char *format);
1381 static size_t hex2bin(
const char *
string, uint8_t *
binary,
size_t maxsize,
bool wsflag =
false);
1383 static size_t hexsize(
const char *format);
1385 static size_t hexcount(
const char *
str,
bool ws =
false);
1401 bool resize(
size_t size)
__FINAL;
1414 set(
object.c_str());
1509 inline operator bool()
const {
1525 inline operator char *() {
1571 inline size_t len(
void)
const {
1636 inline bool eq(
char const *s1,
char const *s2) {
1640 inline bool ne(
char const *s1,
char const *s2) {
1651 inline bool eq(
char const *s1,
char const *s2,
size_t size) {
1655 inline bool ne(
char const *s1,
char const *s2,
size_t size) {
1699 inline bool eq_case(
char const *s1,
char const *s2)
1702 inline bool ne_case(
char const *s1,
char const *s2)
1713 inline bool eq_case(
char const *s1,
char const *s2,
size_t size) {
1776 inline operator bool()
const {
1777 return data !=
nullptr;
1781 return data ==
nullptr;
1784 inline operator char*()
const {
bool ge(String &s1, const char *s2)
strdup_t & operator=(char *str)
std::string & operator+(std::string &target, String &source)
bool eq_case(char const *s1, char const *s2)
const char * c_str(void) const
String left(size_t size) const
static void swap(String &object1, String &object2)
charbuf(const char *text)
static char * right(const char *text, size_t size)
long tol(char **pointer=NULL)
bool le(String &s1, const char *s2)
static double tod(const char *text, char **pointer=NULL)
void operator=(String &object)
char & operator[](int size)
static void adj(struct timeval *ts)
double tod(char **pointer=NULL)
IPV4Host operator&(const IPV4Host &addr, const IPV4Mask &mask)
String & operator<<(const char *text)
void trim(size_t count=1)
char buffer[sizeof(cstring)+S]
static bool eq_case(const char *text1, const char *text2)
static shell::stringopt quote('q', "--quote", _TEXT("set quote for each argument"), "string", "")
bool lt(String &s1, const char *s2)
charbuf(const charbuf ©)
void chop(size_t count=1)
bool eq(const struct sockaddr *s1, const struct sockaddr *s2)
char * token(char **last, const char *list, const char *quote=NULL, const char *end=NULL)
void set(const char *text)
static char * copy(const char *text, size_t offset, size_t len)
String & operator<<(char code)
void operator=(const char *text)
bool equal(const char *string) const
char & operator[](size_t offset) const
void operator+=(const char *text)
String str(Socket &so, size_t size)
bool ne(char const *s1, char const *s2)
static uint8_t buffer[65536]
void add(const char *text)
virtual int compare(const char *string) const
const char * operator*() const
static int collate(const char *text1, const char *text2)
static long tol(const char *text, char **pointer=NULL)
char * operator()(size_t offset)
String copy(size_t offset, size_t size) const
const char * operator*() const
void swap< string_t >(string_t &s1, string_t &s2)
void operator=(const char *text)
String right(size_t offset) const
const char * c_str(void) const
char * operator+(size_t size)
size_t members(void) const
std::string & operator+=(std::string &target, String &source)
void operator=(const char *text)
bool gt(String &s1, const char *s2)
bool ne_case(char const *s1, char const *s2)
stringbuf(const char *text)