libcsdbg  1.28
C++ exception (and generic) stack trace debug library
csdbg::string Class Reference

Lightweight string buffer class (for ISO-8859-1 text) More...

#include <string.hpp>

+ Inheritance diagram for csdbg::string:
+ Collaboration diagram for csdbg::string:

Public Member Functions

 string (u32=0)
 Object constructor. More...
 
 string (const i8 *,...)
 Object constructor. More...
 
 string (const string &)
 Object copy constructor. More...
 
virtual ~string ()
 Object destructor. More...
 
virtual stringclone () const
 Object virtual copy constructor. More...
 
virtual const i8cstr () const
 Get the C-string equivalent. More...
 
virtual u32 length () const
 Get the character count. More...
 
virtual u32 bufsize () const
 Get the buffer size. More...
 
virtual i8at (u32)
 Get/set the character at an offset. More...
 
virtual stringset (const i8 *,...)
 Fill with a printf-style format C-string expanded with the values of a variable argument list. More...
 
virtual stringset (const string &)
 Copy a string. More...
 
virtual stringoperator= (const string &)
 Assignment operator. More...
 
virtual stringoperator+= (const string &)
 Compound addition-assignment operator (append) More...
 
virtual i8operator[] (u32)
 Subscript operator. More...
 
virtual u32 available () const
 Get the available buffer size, the number of characters that can be appended without reallocation. More...
 
virtual stringshred (u8=0)
 Fill the whole buffer with a constant byte. More...
 
virtual stringclear ()
 Clear contents. More...
 
virtual stringappend (const string &)
 Append a string. More...
 
virtual stringappend (const i8 *,...)
 Append a printf-style format C-string expanded with the values of a variable argument list. More...
 
virtual stringappend (i8)
 Append a character. More...
 
virtual i32 cmp (const string &, bool=false) const
 Compare to another string. More...
 
virtual bool match (const string &, bool=false) const
 Match against a POSIX extended regular expression. More...
 
virtual stringtrim (i32=0)
 Remove leading and/or trailing whitespace characters. More...
 
virtual stringinsert (u32, const string &)
 Insert a string at a specified position. More...
 
virtual stringinsert (u32, const i8 *,...)
 Insert a printf-style format C-string expanded with the values of a variable argument list, at a specified position. More...
 
virtual chain< string > * split (const string &, bool=true, bool=false) const
 Tokenize using a POSIX extended regular expression. More...
 
- Public Member Functions inherited from csdbg::object
virtual ~object ()=0
 To be implemented. More...
 
virtual const i8class_name () const
 Query the class name of an object descending from csdbg::object. More...
 

Protected Member Functions

virtual stringmemalign (u32, bool=false)
 Allocate aligned memory, mandate a minimum buffer size. More...
 
virtual stringformat (const i8 *, va_list)
 Fill with a printf-style format C-string expanded with the values of a variable argument list. More...
 

Protected Attributes

i8m_data
 String data. More...
 
u32 m_length
 Character count. More...
 
u32 m_size
 Buffer size. More...
 

Friends

std::ostream & operator<< (std::ostream &, const string &)
 Stream insertion operator for csdbg::string objects. More...
 

Detailed Description

Lightweight string buffer class (for ISO-8859-1 text)

A string object is mainly used to create trace text. Text is easily appended using printf-style format strings and variable argument lists. Memory can be allocated in blocks (aligning) to reduce overhead when appending multiple small strings. It is comparable against POSIX extended regular expressions. By creating traces in string buffers it is easy to direct library output to any kind of stream (console, file, serial, network, plugin, device e.t.c). Apart from traces a string can be used for generic dynamic text manipulation. If the library is compiled with plugin support (CSDBG_WITH_PLUGIN) or with support for stack trace syntax highlighting (CSDBG_WITH_HIGHLIGHT) a string object gets equipped with a method to tokenize it using POSIX extended regular expressions and other advanced text processing methods. This class is not thread safe, the caller must implement thread sychronization

Todo:
Use std::regex (C++11) class for portability

Definition at line 36 of file string.hpp.


The documentation for this class was generated from the following files: