Rudiments
stringbufferinlines.h
1 // Copyright (c) 1999-2018 David Muse
2 // See the COPYING file for more information
3 
4 #include <rudiments/charstring.h>
5 
6 inline
8 }
9 
10 inline
11 stringbuffer::stringbuffer(size_t initialsize) : bytebuffer(initialsize) {
12 }
13 
14 inline
15 stringbuffer::stringbuffer(char *initialcontents, size_t initialsize) :
16  bytebuffer((unsigned char *)initialcontents,initialsize) {
17 }
18 
19 inline
21 }
22 
23 inline
25  if (this!=&s) {
27  }
28  return *this;
29 }
30 
31 inline
33 }
34 
35 inline
36 void stringbuffer::setPosition(size_t pos) {
38 }
39 
40 inline
41 const char *stringbuffer::getString() {
42  bytebuffer::append('\0');
43  const char *retval=(const char *)getBuffer();
44  _position(_position()-1);
45  _size(_size()-1);
46  return retval;
47 }
48 
49 inline
51  return charstring::length(getString());
52 }
53 
54 inline
56  bytebuffer::append('\0');
57  return (char *)detachBuffer();
58 }
59 
60 inline
62  return bytebuffer::getPosition();
63 }
64 
65 inline
68 }
69 
70 inline
71 void stringbuffer::clear(size_t initialsize) {
72  bytebuffer::clear(initialsize);
73 }
74 
75 inline
76 void stringbuffer::clear(char *initialcontents, size_t initialsize) {
77  bytebuffer::clear((unsigned char *)initialcontents,initialsize);
78 }
79 
80 inline
81 stringbuffer *stringbuffer::append(const unsigned char *string) {
82  return (stringbuffer *)bytebuffer::append(string,
83  charstring::length((const char *)string));
84 }
85 
86 inline
87 stringbuffer *stringbuffer::append(const unsigned char *string, size_t size) {
88  return (stringbuffer *)bytebuffer::append(string,size);
89 }
90 
91 inline
92 stringbuffer *stringbuffer::append(const char *string) {
93  return (stringbuffer *)bytebuffer::
94  append(string,charstring::length(string));
95 }
96 
97 inline
98 stringbuffer *stringbuffer::append(const char *string, size_t length) {
99  return (stringbuffer *)bytebuffer::append(string,length);
100 }
101 
102 inline
105 }
106 
107 inline
109  return append(number,1);
110 }
111 
112 inline
114  return append(number,1);
115 }
116 
117 inline
119  return append(number,1);
120 }
121 
122 inline
123 stringbuffer *stringbuffer::append(int16_t number, uint16_t zeropadding) {
124  return append((int64_t)number,zeropadding);
125 }
126 
127 inline
128 stringbuffer *stringbuffer::append(int32_t number, uint16_t zeropadding) {
129  return append((int64_t)number,zeropadding);
130 }
131 
132 inline
133 stringbuffer *stringbuffer::append(int64_t number, uint16_t zeropadding) {
134  char *num=charstring::parseNumber(number,zeropadding);
135  append(num);
136  delete[] num;
137  return this;
138 }
139 
140 inline
143 }
144 
145 inline
147  return append(number,1);
148 }
149 
150 inline
152  return append(number,1);
153 }
154 
155 inline
157  return append(number,1);
158 }
159 
160 inline
161 stringbuffer *stringbuffer::append(uint16_t number, uint16_t zeropadding) {
162  return append((uint64_t)number,zeropadding);
163 }
164 
165 inline
166 stringbuffer *stringbuffer::append(uint32_t number, uint16_t zeropadding) {
167  return append((uint64_t)number,zeropadding);
168 }
169 
170 inline
171 stringbuffer *stringbuffer::append(uint64_t number, uint16_t zeropadding) {
172  char *num=charstring::parseNumber(number,zeropadding);
173  append(num);
174  delete[] num;
175  return this;
176 }
177 
178 inline
180  return append(number,4);
181 }
182 
183 inline
184 stringbuffer *stringbuffer::append(float number, uint16_t scale) {
185  return (stringbuffer *)appendFormatted("%.*f",scale,number);
186 }
187 
188 inline
189 stringbuffer *stringbuffer::append(float number, uint16_t precision,
190  uint16_t scale) {
191  return (stringbuffer *)appendFormatted("%*.*f",precision,scale,number);
192 }
193 
194 inline
196  return append(number,4);
197 }
198 
199 inline
200 stringbuffer *stringbuffer::append(double number, uint16_t scale) {
201  return (stringbuffer *)appendFormatted("%.*f",scale,number);
202 }
203 
204 inline
205 stringbuffer *stringbuffer::append(double number, uint16_t precision,
206  uint16_t scale) {
207  return (stringbuffer *)appendFormatted("%*.*f",precision,scale,number);
208 }
209 
210 inline
211 ssize_t stringbuffer::write(const unsigned char *string) {
212  return bytebuffer::write(string,
213  charstring::length((const char *)string));
214 }
215 
216 inline
217 ssize_t stringbuffer::write(const unsigned char *string, size_t size) {
218  return bytebuffer::write(string,size);
219 }
220 
221 inline
222 ssize_t stringbuffer::write(const char *string) {
223  return bytebuffer::write(string,charstring::length(string));
224 }
225 
226 inline
227 ssize_t stringbuffer::write(const char *string, size_t length) {
228  return bytebuffer::write(string,length);
229 }
230 
231 inline
234 }
235 
236 inline
237 ssize_t stringbuffer::write(int16_t number) {
238  return writeFormatted("%hd",number);
239 }
240 
241 inline
242 ssize_t stringbuffer::write(int32_t number) {
243  return writeFormatted("%d",number);
244 }
245 
246 inline
247 ssize_t stringbuffer::write(int64_t number) {
248  return writeFormatted("%lld",number);
249 }
250 
251 inline
252 ssize_t stringbuffer::write(unsigned char character) {
254 }
255 
256 inline
257 ssize_t stringbuffer::write(uint16_t number) {
258  return writeFormatted("%hd",number);
259 }
260 
261 inline
262 ssize_t stringbuffer::write(uint32_t number) {
263  return writeFormatted("%d",number);
264 }
265 
266 inline
267 ssize_t stringbuffer::write(uint64_t number) {
268  return bytebuffer::writeFormatted("%lld",number);
269 }
270 
271 inline
272 ssize_t stringbuffer::write(float number) {
273  return write(number,4);
274 }
275 
276 inline
277 ssize_t stringbuffer::write(float number, uint16_t scale) {
278  return writeFormatted("%.*f",scale,number);
279 }
280 
281 inline
282 ssize_t stringbuffer::write(float number, uint16_t precision, uint16_t scale) {
283  return writeFormatted("%*.*f",precision,scale,number);
284 }
285 
286 inline
287 ssize_t stringbuffer::write(double number) {
288  return write(number,4);
289 }
290 
291 inline
292 ssize_t stringbuffer::write(double number, uint16_t scale) {
293  return writeFormatted("%.*f",scale,number);
294 }
295 
296 inline
297 ssize_t stringbuffer::write(double number, uint16_t precision, uint16_t scale) {
298  return writeFormatted("%*.*f",precision,scale,number);
299 }
300 
301 inline
302 void stringbuffer::truncate(size_t pos) {
304 }
305 
306 inline
309 }
Definition: bytebuffer.h:13
unsigned char * detachBuffer()
bytebuffer * append(const unsigned char *data, size_t size)
void setPosition(size_t pos)
void clear()
virtual void truncate()
bytebuffer * appendFormatted(const char *format,...)
ssize_t write(const unsigned char *data, size_t size)
bytebuffer & operator=(const bytebuffer &v)
const unsigned char * getBuffer()
ssize_t writeFormatted(const char *format,...)
size_t getPosition()
Definition: character.h:11
static char * parseNumber(int16_t number)
static size_t length(const char *string)
Definition: stringbuffer.h:13
size_t getStringLength()
Definition: stringbufferinlines.h:50
const char * getString()
Definition: stringbufferinlines.h:41
stringbuffer & operator=(const stringbuffer &s)
Definition: stringbufferinlines.h:24
stringbuffer()
Definition: stringbufferinlines.h:7
size_t getPosition()
Definition: stringbufferinlines.h:61
~stringbuffer()
Definition: stringbufferinlines.h:32
void clear()
Definition: stringbufferinlines.h:66
void setPosition(size_t pos)
Definition: stringbufferinlines.h:36
stringbuffer * append(const unsigned char *string)
Definition: stringbufferinlines.h:81
void truncate()
Definition: stringbufferinlines.h:307
char * detachString()
Definition: stringbufferinlines.h:55
ssize_t write(const unsigned char *string)
Definition: stringbufferinlines.h:211