Rudiments
Public Member Functions | List of all members
stringbuffer Class Reference

Inherits bytebuffer.

Public Member Functions

 stringbuffer ()
 
 stringbuffer (size_t initialsize, size_t increment)
 
 stringbuffer (char *initialcontents, size_t initialsize, size_t increment)
 
 stringbuffer (const stringbuffer &s)
 
stringbufferoperator= (const stringbuffer &s)
 
 ~stringbuffer ()
 
void setPosition (size_t pos)
 
size_t getPosition ()
 
stringbufferwrite (const unsigned char *string)
 
stringbufferwrite (const unsigned char *string, size_t size)
 
stringbufferwrite (const char *string)
 
stringbufferwrite (const char *string, size_t size)
 
stringbufferwrite (char character)
 
stringbufferwrite (int16_t number)
 
stringbufferwrite (int32_t number)
 
stringbufferwrite (int64_t number)
 
stringbufferwrite (unsigned char character)
 
stringbufferwrite (uint16_t number)
 
stringbufferwrite (uint32_t number)
 
stringbufferwrite (uint64_t number)
 
stringbufferwrite (float number)
 
stringbufferwrite (float number, uint16_t scale)
 
stringbufferwrite (float number, uint16_t precision, uint16_t scale)
 
stringbufferwrite (double number)
 
stringbufferwrite (double number, uint16_t scale)
 
stringbufferwrite (double number, uint16_t precision, uint16_t scale)
 
stringbufferappend (const unsigned char *string)
 
stringbufferappend (const unsigned char *string, size_t size)
 
stringbufferappend (const char *string)
 
stringbufferappend (const char *string, size_t size)
 
stringbufferappend (char character)
 
stringbufferappend (int16_t number)
 
stringbufferappend (int32_t number)
 
stringbufferappend (int64_t number)
 
stringbufferappend (unsigned char character)
 
stringbufferappend (uint16_t number)
 
stringbufferappend (uint32_t number)
 
stringbufferappend (uint64_t number)
 
stringbufferappend (int16_t number, uint16_t zeropadding)
 
stringbufferappend (int32_t number, uint16_t zeropadding)
 
stringbufferappend (int64_t number, uint16_t zeropadding)
 
stringbufferappend (uint16_t number, uint16_t zeropadding)
 
stringbufferappend (uint32_t number, uint16_t zeropadding)
 
stringbufferappend (uint64_t number, uint16_t zeropadding)
 
stringbufferappend (float number)
 
stringbufferappend (float number, uint16_t scale)
 
stringbufferappend (float number, uint16_t precision, uint16_t scale)
 
stringbufferappend (double number)
 
stringbufferappend (double number, uint16_t scale)
 
stringbufferappend (double number, uint16_t precision, uint16_t scale)
 
void truncate (size_t pos)
 
void truncate ()
 
void clear ()
 
const char * getString ()
 
char * detachString ()
 
size_t getStringLength ()
 
- Public Member Functions inherited from bytebuffer
 bytebuffer ()
 
 bytebuffer (size_t initialsize, size_t increment)
 
 bytebuffer (unsigned char *initialcontents, size_t initialsize, size_t increment)
 
 bytebuffer (const bytebuffer &v)
 
bytebufferoperator= (const bytebuffer &v)
 
virtual ~bytebuffer ()
 
void setPosition (size_t pos)
 
size_t getPosition ()
 
bytebufferwrite (const unsigned char *data, size_t size)
 
bytebufferwrite (const char *string)
 
bytebufferwrite (const char *string, size_t size)
 
bytebufferwrite (char character)
 
bytebufferwrite (int16_t number)
 
bytebufferwrite (int32_t number)
 
bytebufferwrite (int64_t number)
 
bytebufferwrite (unsigned char character)
 
bytebufferwrite (uint16_t number)
 
bytebufferwrite (uint32_t number)
 
bytebufferwrite (uint64_t number)
 
bytebufferwrite (float number)
 
bytebufferwrite (double number)
 
bytebufferwriteFormatted (const char *format,...)
 
bytebufferwriteFormatted (const char *format, va_list *argp)
 
bytebufferappend (const unsigned char *data, size_t size)
 
bytebufferappend (const char *string)
 
bytebufferappend (const char *string, size_t size)
 
bytebufferappend (char character)
 
bytebufferappend (int16_t number)
 
bytebufferappend (int32_t number)
 
bytebufferappend (int64_t number)
 
bytebufferappend (unsigned char character)
 
bytebufferappend (uint16_t number)
 
bytebufferappend (uint32_t number)
 
bytebufferappend (uint64_t number)
 
bytebufferappend (float number)
 
bytebufferappend (double number)
 
bytebufferappendFormatted (const char *format,...)
 
bytebufferappendFormatted (const char *format, va_list *argp)
 
ssize_t read (unsigned char *data, size_t size)
 
void clear ()
 
const unsigned char * getBuffer ()
 
size_t getSize ()
 
size_t getEnd ()
 
size_t getActualSize ()
 
unsigned char * detachBuffer ()
 

Detailed Description

The stringbuffer class can be used to store strings of arbitrary length.

Internally, the class stores this data in a series of extents which are coalesced when getString() or detachString() are called. The size of the initial and incremental extents may be defined in the constructor, if desired.

When cleared, all extents are freed except for the initial extent.

It is generally more efficient to reuse the same stringbuffer over and over than to allocate a new one for each operation.

Constructor & Destructor Documentation

◆ stringbuffer() [1/4]

stringbuffer::stringbuffer ( )

Creates an instance of the stringbuffer class with default initial size and increment parameters.

◆ stringbuffer() [2/4]

stringbuffer::stringbuffer ( size_t  initialsize,
size_t  increment 
)

Creates an instance of the stringbuffer class with the specified "initialsize" and "increment" parameters.

◆ stringbuffer() [3/4]

stringbuffer::stringbuffer ( char *  initialcontents,
size_t  initialsize,
size_t  increment 
)

Creates an instance of the stringbuffer class. The buffer "initialcontents" will be attached to the instance and used as the initial contents. This buffer should not be freed by the calling program. The initial size and increment may be specified respectively by the "initialsize" and "increment" parameters.

◆ stringbuffer() [4/4]

stringbuffer::stringbuffer ( const stringbuffer s)

Creates an instance of the stringbuffer class that is a copy of "s".

◆ ~stringbuffer()

stringbuffer::~stringbuffer ( )

Deletes this instance of the stringbuffer class.

Member Function Documentation

◆ append() [1/24]

stringbuffer* stringbuffer::append ( const unsigned char *  string)

Appends "string" to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [2/24]

stringbuffer* stringbuffer::append ( const unsigned char *  string,
size_t  size 
)

Appends the first "size" bytes of "string" to the stringbuffer, growing the internall buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [3/24]

stringbuffer* stringbuffer::append ( const char *  string)

Appends "string" to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [4/24]

stringbuffer* stringbuffer::append ( const char *  string,
size_t  size 
)

Appends the first "size" bytes of "string" to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [5/24]

stringbuffer* stringbuffer::append ( char  character)

Appends "character" to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [6/24]

stringbuffer* stringbuffer::append ( int16_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [7/24]

stringbuffer* stringbuffer::append ( int32_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [8/24]

stringbuffer* stringbuffer::append ( int64_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [9/24]

stringbuffer* stringbuffer::append ( unsigned char  character)

Appends "character" to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [10/24]

stringbuffer* stringbuffer::append ( uint16_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [11/24]

stringbuffer* stringbuffer::append ( uint32_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [12/24]

stringbuffer* stringbuffer::append ( uint64_t  number)

Converts "number" to a string and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [13/24]

stringbuffer* stringbuffer::append ( int16_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [14/24]

stringbuffer* stringbuffer::append ( int32_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [15/24]

stringbuffer* stringbuffer::append ( int64_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [16/24]

stringbuffer* stringbuffer::append ( uint16_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [17/24]

stringbuffer* stringbuffer::append ( uint32_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [18/24]

stringbuffer* stringbuffer::append ( uint64_t  number,
uint16_t  zeropadding 
)

Converts "number" to a string with the specified amount of zeropadding and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [19/24]

stringbuffer* stringbuffer::append ( float  number)

Converts "number" to a string (using a default scale of 4) and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [20/24]

stringbuffer* stringbuffer::append ( float  number,
uint16_t  scale 
)

Converts "number" to a string using the specified "scale" and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [21/24]

stringbuffer* stringbuffer::append ( float  number,
uint16_t  precision,
uint16_t  scale 
)

Converts "number" to a string using the specified "precision" and "scale" and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [22/24]

stringbuffer* stringbuffer::append ( double  number)

Converts "number" to a string (using a default scale of 4) and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [23/24]

stringbuffer* stringbuffer::append ( double  number,
uint16_t  scale 
)

Converts "number" to a string using the specified "scale" and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ append() [24/24]

stringbuffer* stringbuffer::append ( double  number,
uint16_t  precision,
uint16_t  scale 
)

Converts "number" to a string using the specified "precision" and "scale" and appends it to the stringbuffer, growing the internal buffer as necessary to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->append("numbers: ")->append(5)->append(5.5);

◆ clear()

void stringbuffer::clear ( )

Empties the stringbuffer.

◆ detachString()

char* stringbuffer::detachString ( )

Returns a pointer to the string currently stored in the stringbuffer, then resets the stringbuffer such that it will no longer use that string.

The calling program must deallocate the string returned from this method.

◆ getPosition()

size_t stringbuffer::getPosition ( )

Returns the position in the internal buffer at which the next write will occur.

◆ getString()

const char* stringbuffer::getString ( )

Returns the string currently stored in the stringbuffer.

◆ getStringLength()

size_t stringbuffer::getStringLength ( )

Returns the length of the string currently stored in the stringbuffer.

◆ operator=()

stringbuffer& stringbuffer::operator= ( const stringbuffer s)

Makes this instance of the stringbuffer class identical to "s".

◆ setPosition()

void stringbuffer::setPosition ( size_t  pos)

Sets the position in the internal buffer at which the next write will occur to "pos". If the position is set beyond the end of the buffer, the buffer will grow but the data between the current end of the buffer and the new position will be undefined.

◆ truncate() [1/2]

void stringbuffer::truncate ( size_t  pos)
virtual

Trucnates the stringbuffer at position "pos".

Reimplemented from bytebuffer.

◆ truncate() [2/2]

void stringbuffer::truncate ( )
virtual

Trucnates the stringbuffer at the current position.

Reimplemented from bytebuffer.

◆ write() [1/18]

stringbuffer* stringbuffer::write ( const unsigned char *  string)

Writes "string" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [2/18]

stringbuffer* stringbuffer::write ( const unsigned char *  string,
size_t  size 
)

Writes the first "size" bytes of "string" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [3/18]

stringbuffer* stringbuffer::write ( const char *  string)

Writes "string" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [4/18]

stringbuffer* stringbuffer::write ( const char *  string,
size_t  size 
)

Writes the first "size" bytes of "string" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [5/18]

stringbuffer* stringbuffer::write ( char  character)

Writes "character" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [6/18]

stringbuffer* stringbuffer::write ( int16_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [7/18]

stringbuffer* stringbuffer::write ( int32_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [8/18]

stringbuffer* stringbuffer::write ( int64_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the inernal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [9/18]

stringbuffer* stringbuffer::write ( unsigned char  character)

Writes "character" to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [10/18]

stringbuffer* stringbuffer::write ( uint16_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [11/18]

stringbuffer* stringbuffer::write ( uint32_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [12/18]

stringbuffer* stringbuffer::write ( uint64_t  number)

Converts "number" to a string and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [13/18]

stringbuffer* stringbuffer::write ( float  number)

Converts "number" to a string (using a default scale of 4) and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the interna buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [14/18]

stringbuffer* stringbuffer::write ( float  number,
uint16_t  scale 
)

Converts "number" to a string using the specified "scale" and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [15/18]

stringbuffer* stringbuffer::write ( float  number,
uint16_t  precision,
uint16_t  scale 
)

Converts "number" to a string using the specified "precision" and "scale" and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [16/18]

stringbuffer* stringbuffer::write ( double  number)

Converts "number" to a string (using a default scale of 4) and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [17/18]

stringbuffer* stringbuffer::write ( double  number,
uint16_t  scale 
)

Converts "number" to a string using the specified "scale" and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);

◆ write() [18/18]

stringbuffer* stringbuffer::write ( double  number,
uint16_t  precision,
uint16_t  scale 
)

Converts "number" to a string using the specified "precision" and "scale" and writes it to the stringbuffer at the current position and increments the current position to the next byte after the data that was written. If necessary, the internal buffer will grow to accommodate the new data.

Returns a pointer to "this" to enable chaining such as: sb->write("numbers: ")->write(5)->write(5.5);