diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-20 22:18:23 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-20 22:18:23 +0100 |
commit | 151571c4540e02b130c808d58d3cc169dd87627a (patch) | |
tree | 57627ffdcd8f57d72d5f4baef56847087a7460f9 /strbuf.c | |
parent | Further C++ improvements, maybe doesn't segfault now. (diff) | |
download | calp-151571c4540e02b130c808d58d3cc169dd87627a.tar.gz calp-151571c4540e02b130c808d58d3cc169dd87627a.tar.xz |
new segfaults, I give up.c++
Diffstat (limited to '')
-rw-r--r-- | strbuf.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -1,6 +1,7 @@ #include "strbuf.h" #include <cstdlib> +#include <cstring> strbuf::strbuf (const strbuf& other) { this->alloc = other.len + 1; @@ -28,5 +29,28 @@ strbuf& strbuf::operator+=(char c) { this->mem[this->len] = c; this->ptr = ++this->len; + return *this; } + +bool strbuf::operator==(strbuf& other) { + return strncmp(this->mem, other.mem, this->len) == 0; +} + +bool strbuf::operator==(const char* other) { + std::cerr << __FILE__ << ':' << __LINE__ << ' ' << this->c_str() << "==" << other << std::endl; + return strncmp(this->mem, other, this->len) == 0 ; +} + +std::ostream& operator << (std::ostream& out, strbuf& str) { + out << (str.to_string()); + return out; +} + +// TODO this leaks memmory +char* strbuf::c_str() { + char* buf = static_cast<char*>(malloc(this->len + 1)); + memcpy(buf, this->mem, this->len); + buf[this->len] = '\0'; + return buf; +} |