Elm  1.0
ELM is a library providing generic data structures, OS-independent interface, plugins and XML.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StringBuffer.h
1 /*
2  * $Id$
3  * Copyright (c) 2004, Alfheim Corporation.
4  *
5  * elm/string/StringBuffer.h -- interface for StringBuffer class.
6  */
7 #ifndef ELM_STRING_STRING_BUFFER_H
8 #define ELM_STRING_STRING_BUFFER_H
9 
10 #include <elm/string/CString.h>
11 #include <elm/string/String.h>
12 #include <elm/io/BlockOutStream.h>
13 #include <elm/io/Output.h>
14 
15 namespace elm {
16 
17 // StringBuffer class
18 class StringBuffer: public io::Output {
19  io::BlockOutStream _stream;
20 public:
21  inline StringBuffer(int capacity = 64, int increment = 32);
22  inline String toString(void);
23  inline String copyString(void);
24  inline int length(void) const;
25  inline void reset(void);
26  inline io::OutStream& stream(void);
27 };
28 
29 
30 // Inlines
31 inline StringBuffer::StringBuffer(int capacity, int increment)
32 : io::Output(_stream), _stream(capacity, increment) {
33  String::buffer_t str = { 0 };
34  _stream.write((char *)&str, sizeof(short));
35 }
36 
38  int len = length();
39  _stream.write('\0');
40  return String((String::buffer_t *)_stream.detach(), sizeof(short), len);
41 }
42 
43 inline int StringBuffer::length(void) const {
44  return _stream.size() - sizeof(short);
45 }
46 
47 inline void StringBuffer::reset(void) {
48  _stream.setSize(sizeof(short));
49 }
50 
52  return _stream;
53 }
54 
56  return String(
57  _stream.block() + sizeof(short),
58  _stream.size() - sizeof(short));
59 }
60 
61 } // elm
62 
63 #endif // ELM_STRING_STRING_BUFFER_H
Definition: BlockOutStream.h:18
io::OutStream & stream(void)
Definition: StringBuffer.h:51
char * detach(void)
Definition: BlockOutStream.h:23
Definition: Output.h:161
void reset(void)
Definition: StringBuffer.h:47
Definition: OutStream.h:30
StringBuffer(int capacity=64, int increment=32)
Definition: StringBuffer.h:31
int length(void) const
Definition: StringBuffer.h:43
void setSize(int size)
Definition: BlockOutStream.h:25
Definition: StringBuffer.h:18
Definition: String.h:31
int size(void) const
Definition: BlockOutStream.h:22
virtual int write(const char *buffer, int size)
Definition: io_BlockOutStream.cpp:85
String copyString(void)
Definition: StringBuffer.h:55
const char * block(void) const
Definition: BlockOutStream.h:21
String toString(void)
Definition: StringBuffer.h:37