100 lines
1.8 KiB
C++
100 lines
1.8 KiB
C++
#include "CharArray.h"
|
|
#include "utils.h"
|
|
|
|
CharArray::CharArray() : _buf(nullptr), _size(0){}
|
|
|
|
CharArray::CharArray(const char *s) : CharArray() {
|
|
this->operator=(s);
|
|
}
|
|
|
|
CharArray::CharArray(const CharArray &s) : CharArray() {
|
|
this->operator=(s);
|
|
}
|
|
|
|
CharArray::CharArray(size_t i) {
|
|
_size = i;
|
|
_buf = new char[i](); /* Zero initialize */
|
|
}
|
|
|
|
CharArray::~CharArray() {
|
|
delete[] _buf;
|
|
}
|
|
|
|
CharArray::operator char *() {
|
|
return _buf;
|
|
}
|
|
|
|
CharArray::operator const char *() const {
|
|
return _buf;
|
|
}
|
|
|
|
const char *CharArray::c_str() const {
|
|
return _buf;
|
|
}
|
|
|
|
size_t CharArray::length() const {
|
|
return strlen(_buf);
|
|
}
|
|
|
|
size_t CharArray::size() const {
|
|
return _size;
|
|
}
|
|
|
|
CharArray &CharArray::operator=(const CharArray &s) {
|
|
delete[] _buf;
|
|
_size = s._size;
|
|
_buf = new char[_size];
|
|
memcpy(_buf, s._buf, _size);
|
|
return *this;
|
|
}
|
|
|
|
CharArray &CharArray::operator=(const char *s) {
|
|
delete[] _buf;
|
|
_buf = strdup2(s, &_size);
|
|
return *this;
|
|
}
|
|
|
|
CharArray &CharArray::operator=(CharArray &&s) {
|
|
delete[] _buf;
|
|
_size = s._size;
|
|
_buf = s._buf;
|
|
s._buf = nullptr;
|
|
s._size = 0;
|
|
return *this;
|
|
}
|
|
|
|
bool CharArray::operator==(const char *s) const {
|
|
if (_buf == nullptr || s == nullptr)
|
|
return false;
|
|
return strcmp(_buf, s) == 0;
|
|
}
|
|
|
|
bool CharArray::operator==(char *s) const {
|
|
return *this == (const char *) s;
|
|
}
|
|
|
|
bool CharArray::operator!=(const char *s) const {
|
|
return !(*this == s);
|
|
}
|
|
|
|
int CharArray::compare(const char *s) const {
|
|
return strcmp(_buf, s);
|
|
}
|
|
|
|
int CharArray::compare(const char *s, size_t len) const {
|
|
return strncmp(_buf, s, len);
|
|
}
|
|
|
|
bool CharArray::contains(const char *s) const {
|
|
return strstr(_buf, s) != nullptr;
|
|
}
|
|
|
|
bool CharArray::starts_with(const char *s) const {
|
|
return compare(s, strlen(s)) == 0;
|
|
}
|
|
|
|
bool CharArray::empty() const {
|
|
return _buf == nullptr || _buf[0] == '\0';
|
|
}
|
|
|