47 lines
811 B
C++
47 lines
811 B
C++
#pragma once
|
|
#include <cstddef>
|
|
|
|
struct StringView
|
|
{
|
|
size_t size;
|
|
const char* data;
|
|
public:
|
|
StringView()
|
|
{
|
|
data = nullptr;
|
|
size = 0;
|
|
}
|
|
|
|
StringView(const char* data, size_t size)
|
|
{
|
|
this->data = data;
|
|
this->size = size;
|
|
}
|
|
};
|
|
|
|
struct StringBuilder
|
|
{
|
|
size_t size;
|
|
size_t capacity;
|
|
char* data;
|
|
public:
|
|
StringBuilder()
|
|
{
|
|
size = 0;
|
|
capacity = 10;
|
|
data = (char*)malloc(capacity * sizeof(char));
|
|
}
|
|
private:
|
|
void ensureSize(size_t newSize)
|
|
{
|
|
if (newSize <= capacity) return;
|
|
capacity = capacity + (capacity / 2);
|
|
data = (char*)realloc(data, capacity * sizeof(char));
|
|
}
|
|
public:
|
|
void PushChar(char c)
|
|
{
|
|
ensureSize(size + 1);
|
|
data[size++] = c;
|
|
}
|
|
}; |