blob: 7b63c58d8c9d216c795060af14f0e45261b5c491 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include "strbuf.h"
#include <cstdlib>
strbuf::strbuf (const strbuf& other) {
this->alloc = other.len + 1;
this->mem = static_cast<char*>(malloc(this->alloc));
strncpy(this->mem, other.mem, other.len);
}
void strbuf::realloc (size_t len) {
this->mem = static_cast<char*>(std::realloc(this->mem, len));
this->alloc = len;
}
strbuf::~strbuf() {
free (this->mem);
this->mem = NULL;
this->alloc = 0;
this->len = 0;
}
strbuf& strbuf::operator+=(char c) {
if (this->len + 1 > this->alloc) {
this->alloc <<= 1;
this->mem = static_cast<char*> (std::realloc(this->mem, this->alloc));
}
this->mem[this->len] = c;
this->ptr = ++this->len;
return *this;
}
|