Starting work on a buffer type.
This commit is contained in:
92
Buffer.cc
Normal file
92
Buffer.cc
Normal file
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// Created by kyle on 2023-10-09.
|
||||
//
|
||||
|
||||
#include <cstring>
|
||||
#include "Buffer.h"
|
||||
|
||||
namespace kge {
|
||||
uint8_t *
|
||||
Buffer::Contents()
|
||||
{
|
||||
return this->contents;
|
||||
}
|
||||
|
||||
bool
|
||||
Buffer::Append(uint8_t *data, size_t datalen)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
Buffer::Append(uint8_t c)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
Buffer::Insert(size_t index, uint8_t *data, size_t datalen)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
Buffer::Insert(size_t index, uint8_t c)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t
|
||||
Buffer::Size()
|
||||
{
|
||||
return this->length;
|
||||
}
|
||||
|
||||
void
|
||||
Buffer::Resize(size_t newCapacity)
|
||||
{
|
||||
if (newCapacity < this->length) {
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t *newContents = new uint8_t[newCapacity];
|
||||
|
||||
memcpy(newContents, this->contents, this->length);
|
||||
delete this->contents;
|
||||
this->contents = newContents;
|
||||
this->capacity = newCapacity;
|
||||
}
|
||||
|
||||
size_t
|
||||
Buffer::Trim()
|
||||
{
|
||||
size_t projectedCapacity = this->capacity * 2;
|
||||
|
||||
if (projectedCapacity < this->capacity) {
|
||||
this->Resize(projectedCapacity);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Buffer::Clear()
|
||||
{
|
||||
memset(this->contents, 0, this->length);
|
||||
this->length = 0;
|
||||
}
|
||||
|
||||
void
|
||||
Buffer::Reclaim()
|
||||
{
|
||||
delete this->contents;
|
||||
this->length = 0;
|
||||
this->capacity = 0;
|
||||
}
|
||||
|
||||
bool
|
||||
Buffer::mustGrow(size_t newLength)
|
||||
{
|
||||
return (newLength + this->length) >= this->capacity;
|
||||
}
|
||||
|
||||
|
||||
} // kge
|
||||
Reference in New Issue
Block a user