// Copyright (c) 2002 David Muse // See the COPYING file for more information. #ifndef RUDIMENTS_STRINGBUFFER_H #define RUDIMENTS_STRINGBUFFER_H #include <rudiments/private/stringbufferincludes.h> // The stringbuffer class can be used to store strings of arbitrary length. class stringbuffer : public variablebuffer { public: stringbuffer(); stringbuffer(char *initialcontents, size_t initialsize, size_t increment); // Creates a new buffer which will grow as necessary // to accomodate the string written to it. ~stringbuffer(); void setPosition(size_t pos); // Sets the position 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. // The write() and append() methods return a pointer to the // variablebuffer instance. This enables chaining: // // sb->write("numbers: ")->write(5)->write(5.5); // or // sb->append("numbers: ")->append(5)->append(5.5); stringbuffer *write(const char *string); stringbuffer *write(const char *string, size_t size); stringbuffer *write(char character); stringbuffer *write(long number); stringbuffer *write(double number); stringbuffer *write(double number, unsigned short scale); stringbuffer *write(double number, unsigned short precision, unsigned short scale); // Writes the data to the stringbuffer at the current // position. If necessary, the buffer will grow to // accommodate the new data. stringbuffer *append(const char *string); stringbuffer *append(const char *string, size_t size); stringbuffer *append(char character); stringbuffer *append(long number); stringbuffer *append(double number); stringbuffer *append(double number, unsigned short scale); stringbuffer *append(double number, unsigned short precision, unsigned short scale); // Appends the data to the stringbuffer. The buffer // will grow to accommodate the new data. void clear(); // Empties the stringbuffer. char *getString(); // Returns the string currently stored in the // stringbuffer. size_t getStringLength(); // Returns the length of the string currently stored // in the stringbuffer. size_t getPosition(); // Returns the position in the buffer at which // the next write will occur. #include <rudiments/private/stringbuffer.h> }; #endif