C++ bindings for cgul_string
More...
#include <cgul_string_cxx.h>
Public Member Functions | |
cgul_string_cxx () | |
cgul_string_cxx (const cgul_string_cxx &rhs) | |
cgul_string_cxx (const char *rhs) | |
virtual | ~cgul_string_cxx () |
virtual cgul_string_cxx & | operator= (const cgul_string_cxx &rhs) |
virtual cgul_string_cxx & | operator= (const char *rhs) |
virtual cgul_string_cxx & | operator+= (const cgul_string_cxx &rhs) |
virtual cgul_string_cxx & | operator+= (const char *rhs) |
virtual char & | operator[] (size_t index) |
virtual const char & | operator[] (size_t index) const |
virtual | operator char * () const |
virtual int | operator== (const cgul_string_cxx &rhs) const |
virtual int | operator< (const cgul_string_cxx &rhs) const |
virtual int | operator<= (const cgul_string_cxx &rhs) const |
virtual int | operator> (const cgul_string_cxx &rhs) const |
virtual int | operator>= (const cgul_string_cxx &rhs) const |
virtual char * | get_value () const |
virtual char * | take_value () |
virtual void | set_value (const char *value) |
virtual char | get_value_at (size_t index) const |
virtual void | set_value_at (size_t index, char c) |
virtual void | clear () |
virtual signed char | to_schar (int base=0) const |
virtual unsigned char | to_uchar (int base=0) const |
virtual short int | to_short (int base=0) const |
virtual unsigned short int | to_ushort (int base=0) const |
virtual int | to_int (int base=0) const |
virtual unsigned int | to_unsigned (int base=0) const |
virtual long int | to_long (int base=0) const |
virtual unsigned long int | to_unsigned_long (int base=0) const |
virtual double | to_double () const |
virtual void | append (const char *value) |
virtual void | append_block (const void *block, size_t block_size) |
virtual int | append_sprintf (const char *format,...) |
virtual int | append_vsprintf (const char *format, va_list args) |
virtual void | append_char (char c) |
virtual void | append_hchar (cgul_hchar_t *utf16, size_t utf16_length) |
virtual void | append_wchar (cgul_wchar_t utf32) |
virtual void | append_decimal (long int value) |
virtual void | append_unsigned_decimal (size_t value) |
virtual void | append_octal (size_t value) |
virtual void | append_hexadecimal (size_t value, int caps) |
virtual void | append_double (double value, int precision) |
virtual void | append_pointer (const void *ptr) |
virtual void | insert (size_t index, const char *value, size_t value_length) |
virtual void | insert_char (size_t index, char value) |
virtual void | pad_right (size_t width, char pad) |
virtual void | pad_left (size_t width, char pad) |
virtual void | trim () |
virtual void | trim_left () |
virtual void | trim_right () |
virtual void | reverse () |
virtual size_t | get_length () const |
virtual size_t | set_length (size_t length) |
virtual void | externally_adjusted () |
virtual void | trim_capacity () |
virtual size_t | get_minimum_capacity () const |
virtual void | set_minimum_capacity (size_t minimum_capacity) |
virtual int | compare (const cgul_string_cxx &rhs) const |
virtual int | icompare (const cgul_string_cxx &rhs) const |
virtual void | swap (cgul_string_cxx &rhs) |
virtual cgul_string_t | get_obj () const |
virtual cgul_string_t | take_obj () |
virtual void | set_obj (cgul_string_t rhs) |
This class provides the C++ bindings for C cgul_string
objects. The main purpose of this class is to convert the C-style function calls and exception handling in cgul_string
into C++-style function calls and exception handling.
|
inline |
Default constructor that creates a new instance with an empty string.
References cgul_string__new().
|
inline |
Copy constructor that creates a new instance by copying the value from rhs
.
[in] | rhs | right-hand side |
References cgul_string__new_from_cstring(), and get_value().
|
inline |
Copy constructor that creates a new instance by copying the value from rhs
.
[in] | rhs | right-hand side |
References cgul_string__new_from_cstring().
|
inlinevirtual |
Destructor.
References cgul_string__delete().
|
inlinevirtual |
Assign the value from rhs
to this object and return this object.
[in] | rhs | right-hand side |
References cgul_string__set_value(), and get_value().
|
inlinevirtual |
Assign the value from rhs
to this object and return this object.
[in] | rhs | right-hand side |
References cgul_string__set_value().
|
inlinevirtual |
Append the value from rhs
to this object and return this object.
[in] | rhs | right-hand side |
References cgul_string__append(), and get_value().
|
inlinevirtual |
Append the value from rhs
to this object and return this object.
[in] | rhs | right-hand side |
References cgul_string__append().
|
inlinevirtual |
Index operator that returns the character at index
. If index
is out of bounds, an exception is thrown.
References cgul_exception__new(), cgul_string__get_length(), and cgul_string__get_value().
|
inlinevirtual |
Index operator that returns the character at index
. If index
is out of bounds, an exception is thrown. This is the overloaded operator[]()
that is necessary for use with const
objects.
References cgul_exception__new(), cgul_string__get_length(), and cgul_string__get_value().
|
inlinevirtual |
This method allows instances of this class to be cast to C-style strings.
References get_value().
|
inlinevirtual |
This method compares this object with rhs
using the current locale. It returns 1 if this object is equal to rhs
; otherwise, it returns 0.
[in] | rhs | right-hand side |
rhs
References compare().
|
inlinevirtual |
This method compares this object with rhs
using the current locale. It returns 1 if this object is less than rhs
; otherwise, it returns 0.
[in] | rhs | right-hand side |
rhs
References compare().
|
inlinevirtual |
This method compares this object with rhs
using the current locale. It returns 1 if this object is less than or equal to rhs
; otherwise, it returns 0.
[in] | rhs | right-hand side |
rhs
References compare().
|
inlinevirtual |
This method compares this object with rhs
using the current locale. It returns 1 if this object is greater than rhs
; otherwise, it returns 0.
[in] | rhs | right-hand side |
rhs
References compare().
|
inlinevirtual |
This method compares this object with rhs
using the current locale. It returns 1 if this object is greater than or equal to rhs
; otherwise, it returns 0.
[in] | rhs | right-hand side |
rhs
References compare().
|
inlinevirtual |
This method returns a pointer to the internal C-style string. You are allowed to manually set individual characters in the string. Just remember to call externally_adjusted()
afterward. Compare this method to the take_value()
method.
References cgul_string__get_value().
Referenced by cgul_string_cxx(), operator char *(), operator+=(), and operator=().
|
inlinevirtual |
This method lets you take ownership of the underlying C-style string which is returned. Immediately upon taking ownership, the internal state of this class is reset including resetting a new underlying C-style string to be empty. One use of this function is to build up a string using cgul_string
that you then pass to cgul_hash
or cgul_rbtree
. Compare this function with get_value()
.
References cgul_string__take_value().
|
inlinevirtual |
Set the value of the underlying c-style string to value. If an error occurs, an exception is thrown.
[in] | value | new value |
References cgul_string__set_value().
|
inlinevirtual |
This method returns the character indicated by index
where index
is zero-based. If index
is out of bounds, an exception is thrown.
[in] | index | index into the string |
index
References cgul_string__get_value_at().
|
inlinevirtual |
This method sets the character indicated by index
where index
is zero-based to c
. If index
is out of bounds, an exception is thrown.
[in] | index | index into the string |
[in] | c | character |
References cgul_string__set_value_at().
|
inlinevirtual |
This method is equivalent to calling set_value()
where value
is an empty string.
References cgul_string__clear().
|
inlinevirtual |
This method converts the string to a signed char
. Typically, "base" will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading character in the string. The string cannot have any extraneous characters. If it does, the conversion will fail. On success, the converted value is returned; otherwise, 0 is returned and an exception is thrown.
[in] | base | base to use for the conversion |
References cgul_string__to_schar().
|
inlinevirtual |
This method converts the string to an unsigned char
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading characters in the string. The string cannot have any extraneous characters. If it does, the conversion will fail. On success, the converted value is returned; otherwise, 0 is returned and an exception is thrown.
[in] | base | base to use for the conversion |
References cgul_string__to_uchar().
|
inlinevirtual |
This method converts the string to a short
. Typically, "base" will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading character in the string. The string cannot have any extraneous characters. If it does, the conversion will fail. On success, the converted value is returned; otherwise, 0 is returned and an exception is thrown.
[in] | base | base to use for the conversion |
References cgul_string__to_short().
|
inlinevirtual |
This method converts the string to an unsigned short
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading characters in the string. The string cannot have any extraneous characters. If it does, the conversion will fail. On success, the converted value is returned; otherwise, 0 is returned and an exception is thrown.
[in] | base | base to use for the conversion |
References cgul_string__to_ushort().
|
inlinevirtual |
This method converts the string to an int
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading character in the string. The string cannot have any extraneous characters. If it does, the conversion fails, and an exception is thrown. An exception will also be thrown if the converted value is out of bounds.
[in] | base | base to use for the conversion |
References cgul_string__to_int().
|
inlinevirtual |
This method converts the string to an unsigned
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading characters in the string. The string cannot have any extraneous characters. If it does, the conversion fails, and an exception is thrown. An exception will also be thrown if the converted value is out of bounds.
[in] | base | base to use for the conversion |
References cgul_string__to_unsigned().
|
inlinevirtual |
This method converts the string to an long
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading characters in the string. The string cannot have any extraneous characters. If it does, the conversion fails, and an exception is thrown. An exception will also be thrown if the converted value is out of bounds.
[in] | base | base to use for the conversion |
References cgul_string__to_long().
|
inlinevirtual |
This method converts the string to an unsigned long
. Typically, base
will be set to 0 to allow conversion for decimal, hexadecimal, and octal based on the leading characters in the string. The string cannot have any extraneous characters. If it does, the conversion fails, and an exception is thrown. An exception will also be thrown if the converted value is out of bounds.
[in] | base | base to use for the conversion |
References cgul_string__to_unsigned_long().
|
inlinevirtual |
This method converts the string to a double
. The string cannot have any extraneous characters. If it does, the conversion fails, and an exception is thrown. An exception will also be thrown if the converted value is out of bounds.
References cgul_string__to_double().
|
inlinevirtual |
Appends value
to the string. If an error occurs, an exception is thrown.
[in] | value | value to append |
References cgul_string__append().
|
inlinevirtual |
Append a block of non-NUL characters. The caller should verify that there are no embedded NUL characters in the string. If an error occurs, an exception is thrown.
[in] | block | block to append |
[in] | block_size | size of block to append |
References cgul_string__append_block().
|
inlinevirtual |
This function is a thin wrapper around append_vsprintf()
.
format | format string |
... | variable number of arguments that satisfy format |
References append_vsprintf().
|
inlinevirtual |
This function substitutes the conversion specifications in the format
string and appends them to the underlying object. If an error occurs, an exception is thrown.
The format string is the same as what you pass into sprintf()
or snprintf()
. The following length modifiers are honored: l, h, z.
Any string associated with a "%s" conversion specification is assumed to be a UTF-8 string. The main difference that this makes is that, if a field width is specified, it specifies the number of characters, not bytes, in the field.
The "%ls" conversion specification is honored, but instead of converting a string composed of wchar_t
characters to a multi-byte string encoded according to the current locale, it converts a string composed of Unicode UTF-32 cgul_wchar_t
characters to a UTF-8 string. The "%ls" conversions also differ in that, if a precision is given, it determines the number of characters appended not the number of bytes.
The "%lc" conversion specification is honored, but like the "%ls" conversion specification, it converts from UTF-32 to UTF-8 exclusively. Also, it expects the associated argument to be cgul_wchar_t
, not wchar_t
.
The GNU "%m" conversion specification is honored. This conversion specification appends the result of strerror(errno)
.
format | format string |
args | variable number of arguments that satisfy format |
References cgul_string__append_vsprintf().
Referenced by append_sprintf().
|
inlinevirtual |
|
inlinevirtual |
Append the UTF-16 character utf16
as a UTF-8 sequence. Because utf16
could be a surrogate pair, to avoid reading off the end of the sequence, the number of cgul_hchar_t
elements (i.e., 16-bit elements) in the utf16
buffer must be specified using utf16_length
. If more than one UTF-16 character is present in the utf16
buffer, only the first character is appended.
[in] | utf16 | UTF-16 character to append |
[in] | utf16_length | length of utf16 in cgul_hchar_t elements |
References cgul_string__append_hchar().
|
inlinevirtual |
Append the UTF-32 character utf32
to the string as a UTF-8 sequence.
[in] | utf32 | UTF-32 character to append |
References cgul_string__append_wchar().
|
inlinevirtual |
Append value
to the string in decimal format.
[in] | value | to append |
References cgul_string__append_decimal().
|
inlinevirtual |
Append value
to the string in decimal format.
[in] | value | to append |
References cgul_string__append_unsigned_decimal().
|
inlinevirtual |
Append value
to the string in octal format.
[in] | value | to append |
References cgul_string__append_octal().
|
inlinevirtual |
Append value
to the string in hexadecimal format using "abcdef".
[in] | value | to append |
[in] | caps | whether to capitalize the hex digits |
References cgul_string__append_hexadecimal().
|
inlinevirtual |
Append value
to the string. "precision" determines the number of significant digits that are printed. Zeros after the decimal point at the end of number are not printed.
[in] | value | to append |
[in] | precision | precision |
References cgul_string__append_double().
|
inlinevirtual |
Append ptr
to the string.
[in] | ptr | pointer to append |
References cgul_string__append_pointer().
|
inlinevirtual |
Inserts value
at index
which can range from 0 to the length (inclusive) of this string. If index
is out of bounds or if memory cannot be allocated, an exception is thrown.
[in] | index | index where value is inserted |
[in] | value | value to insert |
[in] | value_length | length of value |
References cgul_string__insert().
|
inlinevirtual |
Inserts value
at index
which can range from 0 to the length (inclusive) of this string. If index
is out of bounds or if memory cannot be allocated, an exception is thrown.
[in] | index | index where value is inserted |
[in] | value | value to insert |
References cgul_string__insert_char().
|
inlinevirtual |
Pad the current string such that it is at least width
characters wide using the pad
character. The string will be right aligned.
[in] | width | padding width |
[in] | pad | character to use for padding |
References cgul_string__pad_right().
|
inlinevirtual |
Pad the current string such that it is at least width
characters wide using the pad
character. The string will be left aligned.
[in] | width | padding width |
[in] | pad | character to use for padding |
References cgul_string__pad_left().
|
inlinevirtual |
Trim the string by removing leading and trailing white-space where white-space is definded by cgul_char::isspace()
.
References cgul_string__trim().
|
inlinevirtual |
Trim the string by removing leading white-space where white-space is definded by cgul_char::isspace()
.
References cgul_string__trim_left().
|
inlinevirtual |
Trim the string by removing trailing white-space where white-space is definded by cgul_char::isspace()
.
References cgul_string__trim_right().
|
inlinevirtual |
Reverse the order of the characters in the string.
References cgul_string__reverse().
|
inlinevirtual |
This method returns the length of the string.
References cgul_string__get_length().
|
inlinevirtual |
This method can be used to set the length of the string. It can only be used to make the string shorter. If it is used in an attempt to make the string longer, an exception is thrown. If the length of the string is successfully changed, the previous length of the string is returned.
[in] | length | new, shorter length of the string |
References cgul_string__set_length().
|
inlinevirtual |
If you manually alter the underlying buffer by modifying the char*
string returned by get_value()
, you'll need to manually have the class reset its internal state.
References cgul_string__externally_adjusted().
|
inlinevirtual |
Trim the string by returning excess capacity to the heap.
References cgul_string__trim_capacity().
|
inlinevirtual |
|
inlinevirtual |
Set the minimum capacity. The default value is 128
which means there is always capacity for 127 characters plus one NUL-terminator. Decreasing the capacity will decrease the amount of space used and (typically) also decrease performance. If an error occurs, an exception is thrown.
[in] | minimum_capacity | minimum capacity |
References cgul_string__set_minimum_capacity().
|
inlinevirtual |
Perform a case-significant string comparison of this object and rhs
using the current locale. Return -1, 0, or 1 if this object is less than, equal to, or greater than rhs
respectively.
Note that this method can throw an exception if either string contains a character that is not part of the current locale's collating sequence.
[in] | rhs | right-hand side |
*this
is less than, equal to, or greater than rhs
respectively References cgul_string__compare().
Referenced by operator<(), operator<=(), operator==(), operator>(), and operator>=().
|
inlinevirtual |
Perform a case-insensitive string comparison of this object and rhs
using the current locale. Return -1, 0, or 1 if this object is less than, equal to, or greater than rhs
respectively.
Note that this method can throw an exception if either string contains a character that is not part of the current locale's collating sequence.
[in] | rhs | right-hand side |
*this
is less than, equal to, or greater than rhs
respectively References cgul_string__icompare().
|
inlinevirtual |
Swap the underlying data for this object and rhs
. For large strings, this should be much faster than trying to do the same thing using set_value()
.
[in] | rhs | right-hand side |
References cgul_string__swap().
|
inlinevirtual |
Get the underlying cgul_string
object.
Referenced by cgul_bdf_glyph_cxx::append_bitmap_to_string(), cgul_varsub_cxx(), cgul_varsub_formatted_cxx(), cgul_unicode_cxx::hcstombs(), cgul_csv_cxx::quote(), cgul_bdf_glyph_cxx::sdraw(), cgul_convspec_cxx::serialize(), cgul_unicode_cxx::wcstombs(), cgul_line_wrapper_cxx::wrap_utf8_at_column(), and cgul_line_wrapper_cxx::wrap_utf8_at_width().
|
inlinevirtual |
Take the underlying cgul_string
object. This means the underlying object will not be deleted when the wrapper goes out of scope. Also, because you have taken the underlying object, no other methods should be called on this wrapper's instance. Lastly, after taking the underlying object, it is the caller's responsibility to delete the underlying object by calling cgul_string__delete()
.
|
inlinevirtual |
Set the new underlying object to rhs
. This causes the old underlying object to be deleted which invalidates any outstanding pointers to or iterators for the old underlying object.
This instance takes ownership of rhs
which means rhs
will be automatically deleted when the C++ wrapper is deleted. To prevent automatic deletion of rhs
, call take_obj()
when the C++ wrapper is no longer needed.
[in] | rhs | right-hand side |
References cgul_string__delete().