39 #ifndef BLOCXX_STRINGBUFFER_HPP_INCLUDE_GUARD_
40 #define BLOCXX_STRINGBUFFER_HPP_INCLUDE_GUARD_
41 #include "blocxx/BLOCXX_config.h"
51 class BLOCXX_COMMON_API StringBuffer
54 #if defined(BLOCXX_AIX)
55 static const size_t BLOCXX_DEFAULT_ALLOCATION_UNIT;
57 static const size_t BLOCXX_DEFAULT_ALLOCATION_UNIT = 128;
59 StringBuffer(
size_t allocSize = BLOCXX_DEFAULT_ALLOCATION_UNIT);
60 StringBuffer(
const char* arg);
61 StringBuffer(
const String& arg);
62 StringBuffer(
const StringBuffer& arg);
63 ~StringBuffer() {
delete [] m_bfr; }
64 StringBuffer& operator= (
const StringBuffer& arg);
65 StringBuffer& operator= (
const String& arg);
66 StringBuffer& operator= (
const char* str);
67 void swap(StringBuffer& x);
68 StringBuffer& append(
char c)
75 StringBuffer& append(
const char* str)
77 size_t len = ::strlen(str);
79 ::strcpy(m_bfr+m_len, str);
86 StringBuffer& append(
const StringBuffer& arg)
88 return append(arg.c_str(), arg.length());
90 StringBuffer& operator += (
char c)
92 StringBuffer& operator += (Char16 c)
93 {
return append(c.toString()); }
94 StringBuffer& operator += (
const char* str)
95 {
return append(str); }
96 StringBuffer& operator += (
const String& arg)
97 {
return append(arg); }
98 StringBuffer& operator += (Bool v);
99 StringBuffer& operator += (
UInt8 v);
100 StringBuffer& operator += (
Int8 v);
101 StringBuffer& operator += (UInt16 v);
102 StringBuffer& operator += (Int16 v);
103 StringBuffer& operator += (UInt32 v);
104 StringBuffer& operator += (Int32 v);
105 StringBuffer& operator += (UInt64 v);
106 StringBuffer& operator += (Int64 v);
108 #if defined(BLOCXX_INT32_IS_INT) && defined(BLOCXX_INT64_IS_LONG_LONG)
109 StringBuffer& operator += (
long v);
110 StringBuffer& operator += (
unsigned long v);
112 StringBuffer& operator += (Real32 v);
113 StringBuffer& operator += (Real64 v);
114 StringBuffer& operator += (
const StringBuffer& arg)
118 char operator[] (
size_t ndx)
const;
122 String releaseString()
128 size_t length()
const {
return m_len; }
137 void truncate(
size_t index);
145 const char* getLine(std::istream& is,
bool resetBuffer=
true);
147 bool endsWith(
char ch)
const;
148 bool startsWith(
char ch)
const;
152 size_t allocated()
const {
return m_allocated; }
154 const char* c_str()
const {
return m_bfr; }
155 bool equals(
const char* arg)
const;
159 void checkAvail(
size_t len=1)
161 size_t freeSpace = m_allocated - (m_len+1);
165 size_t toalloc = m_allocated * 2 + len;
166 char* bfr =
new char[toalloc];
167 ::memmove(bfr, m_bfr, m_len);
169 m_allocated = toalloc;