6 #ifndef CMR_STRING_BUFFER_INCLUDED
7 #define CMR_STRING_BUFFER_INCLUDED
15 typedef StringBuffer* PStringBuffer;
38 : current_(sb.first_) {}
44 bool more()
const {
return current_ != 0; }
48 const char*
current() {
if (current_) {
return (
const char*) ¤t_->s_[0]; }
else {
return ""; } }
57 current_ = current_->next_;
61 return current_->size_;
72 return current_->size_;
100 const Page* current_;
103 friend class ConstPageIterator;
112 ConstIterator(
size_t t,
int i,
const Page* p) : size_(t), index_(i), current_(p) {}
118 bool more()
const {
return size_ > index_; }
126 return *(
const char*)¤t_->s_[index_ % PAGE_SIZE];
136 size_t pos() {
return index_; }
145 if ((index_ + 1) % PAGE_SIZE == 0)
147 current_ = current_->next_;
180 const Page* current_;
183 friend class ConstIterator;
184 typedef ConstIterator const_iterator;
193 : size_(0), index_(0), current_(0) {}
195 : size_(t), index_(i), current_(p) {}
197 : size_(sb.size_), index_(0), current_(sb.first_) {}
203 bool more()
const {
return size_ > index_; }
209 char* u = (
char*) ¤t_->s_[0];
211 int i = index_ % PAGE_SIZE;
222 if ((index_ + 1) % PAGE_SIZE == 0)
224 current_ = current_->next_;
264 friend class Iterator;
265 typedef Iterator iterator;
281 enum { PAGE_SIZE = 128 };
292 StringBuffer(
const char* s,
size_t page_size = PAGE_SIZE);
317 size_t size()
const {
return size_; }
337 size_t append(
const char*);
351 size_t add_size(
size_t size);
420 const char* c_str(
char* s,
size_t size)
const;
424 const char* c_str(
AString& s)
const;
456 int compare(
const char*)
const;
459 return compare(s) < 0;
461 bool operator>(
const StringBuffer& s)
const
463 return compare(s) > 0;
465 bool operator>(
const char* s)
const
467 return compare(s) > 0;
469 bool operator<(
const char* s)
const
471 return compare(s) < 0;
473 bool operator==(
const StringBuffer& s)
const
475 return compare(s) == 0;
477 bool operator==(
const char* s)
const
479 return compare(s) == 0;
485 long write(CommBuffer& buffer)
const;
489 long read(
const CommBuffer& buffer);
493 long write_xml(OBStream& o)
const;
497 long write(OBStream& o)
const;
501 long write(OBStream& o,
const char* delimitor)
const;
505 long read(IBStream& i);
509 long read(IBStream& i,
const char* delimitor);
513 long read_xml(IBStream& i);
519 long write(
const Path& file_name,
bool check =
false)
const;
523 long read(
const Path& fileName);
531 PPage allocate_(
size_t size);
532 void release_(PPage p);
size_t pos()
Definition: StringBuffer.h:136
ConstIterator operator++(int)
Definition: StringBuffer.h:157
size_t next()
Definition: StringBuffer.h:53
ConstPageIterator operator++(int)
Definition: StringBuffer.h:80
const char * current()
Definition: StringBuffer.h:48
ConstIterator & operator++()
Definition: StringBuffer.h:167
Definition: StringBuffer.h:21
Definition: StringBuffer.h:189
iterator begin()
Definition: StringBuffer.h:437
size_t get_size() const
Definition: StringBuffer.h:316
bool more() const
Definition: StringBuffer.h:44
const char & operator*()
Definition: StringBuffer.h:171
const char * operator*()
Definition: StringBuffer.h:94
size_t next()
Definition: StringBuffer.h:141
const_iterator cbegin() const
Definition: StringBuffer.h:447
const_iterator begin() const
Definition: StringBuffer.h:430
size_t get_page_size() const
Definition: StringBuffer.h:321
Iterator operator++(int)
Definition: StringBuffer.h:234
ConstPageIterator & operator++()
Definition: StringBuffer.h:90
Iterator & operator++()
Definition: StringBuffer.h:244
long write(CommBuffer &buffer) const
size_t next()
Definition: StringBuffer.h:218
char & operator*()
Definition: StringBuffer.h:252
bool more() const
Definition: StringBuffer.h:118
Definition: StringBuffer.h:267
Definition: IOBStream.h:166
bool operator==(const ConstPageIterator &i) const
Definition: StringBuffer.h:98
Definition: StringBuffer.h:30
bool more() const
Definition: StringBuffer.h:203
size_t get_size() const
Definition: StringBuffer.h:68
bool operator==(const Iterator &i) const
Definition: StringBuffer.h:256
char & current()
Definition: StringBuffer.h:207
const char & current()
Definition: StringBuffer.h:122
Definition: StringBuffer.h:108
bool operator==(const ConstIterator &i) const
Definition: StringBuffer.h:175