This commit is contained in:
Nikola Petrov 2024-12-25 00:32:25 +01:00
parent 0ccb4dbdd9
commit 13132ccfea
5 changed files with 2 additions and 214 deletions

View File

@ -272,7 +272,7 @@ int compile_src_dir()
#endif #endif
command.push_back("-I" + INC_DIR.string()); command.push_back("-I" + INC_DIR.string());
command.push_back("-std=c++23"); command.push_back("-std=c++20");
command.push_back("-Wall"); command.push_back("-Wall");
#ifdef Wextra #ifdef Wextra
command.push_back("-Wextra"); command.push_back("-Wextra");
@ -368,7 +368,7 @@ void build_as_one()
#endif #endif
command.push_back("-I" + INC_DIR.string()); command.push_back("-I" + INC_DIR.string());
command.push_back("-std=c++23"); command.push_back("-std=c++20");
command.push_back("-Wall"); command.push_back("-Wall");
#ifdef Wextra #ifdef Wextra
command.push_back("-Wextra"); command.push_back("-Wextra");

View File

@ -1,37 +0,0 @@
#ifndef BUFFER_HPP
#define BUFFER_HPP
#include <cstdint>
#include <string>
class Buffer
{
public:
uint8_t *buffer = nullptr;
size_t taken = 0;
size_t size = 0;
Buffer(size_t size);
Buffer();
~Buffer();
bool resize(size_t new_size);
uint32_t add_end(uint8_t *data, size_t data_size);
int add_middle(uint8_t *data, size_t data_size, size_t index);
// Removes data from buffer without checking if it's in the buffer
void remove_fast(uint8_t *data, size_t data_size);
void remove(size_t index, size_t data_size);
size_t find(uint8_t *data, size_t data_size);
void remove(uint8_t *data, size_t data_size);
void clear() { taken = 0; }
bool save_to_file(std::string file_path);
bool load_from_file(std::string file_path);
};
#endif

View File

@ -1,15 +0,0 @@
#include "values/Buffer.hpp"
class RandBuffer
{
public:
RandBuffer() = default;
~RandBuffer() = default;
void reset();
float next();
private:
Buffer m_buffer;
size_t m_pos = 0;
};

View File

@ -1,140 +0,0 @@
#include <iostream>
#include <fstream>
#include <cstring>
#include "values/Buffer.hpp"
Buffer::Buffer()
{
buffer = nullptr;
size = 0;
taken = 0;
}
Buffer::Buffer(size_t size)
{
this->size = size;
this->buffer = new uint8_t[size];
}
Buffer::~Buffer()
{
if (buffer)
delete[] buffer;
}
bool Buffer::resize(size_t new_size)
{
if (size >= new_size)
return true;
uint8_t *new_buffer = (uint8_t *)realloc(buffer, new_size);
if (!new_buffer)
{
printf("Error resizing buffer\n");
return false;
}
buffer = new_buffer;
size = new_size;
return true;
}
uint32_t Buffer::add_end(uint8_t *data, size_t data_size)
{
if (taken + data_size > size)
if (!resize((size + data_size) * 2))
return -1;
memcpy(buffer + taken, data, data_size);
taken += data_size;
return taken - data_size;
}
int Buffer::add_middle(uint8_t *data, size_t data_size, size_t index)
{
if (taken + data_size > size)
if (!resize((size + data_size) * 2))
return -1;
memmove(buffer + index + data_size, buffer + index, taken - index);
memcpy(buffer + index, data, data_size);
taken += data_size;
return index;
}
void Buffer::remove_fast(uint8_t *data, size_t data_size)
{
size_t index = data - buffer;
if (index < 0 || index > taken || index + data_size > taken)
{
printf("Error removing from buffer\n");
return;
}
memmove(buffer + index, buffer + index + data_size, taken - index - data_size);
taken -= data_size;
}
void Buffer::remove(size_t index, size_t data_size)
{
if (index + data_size > taken)
{
printf("Error removing from buffer\n");
return;
}
memmove(buffer + index, buffer + index + data_size, taken - index - data_size);
taken -= data_size;
}
size_t Buffer::find(uint8_t *data, size_t data_size)
{
for (size_t i = 0; i < taken; i++)
if (memcmp(buffer + i, data, data_size) == 0)
return i;
return SIZE_MAX;
}
void Buffer::remove(uint8_t *data, size_t data_size)
{
size_t index = find(data, data_size);
if (index == SIZE_MAX)
{
printf("Error removing from buffer\n");
return;
}
remove(index, data_size);
}
bool Buffer::save_to_file(std::string file_path)
{
std::ofstream file(file_path, std::ios::binary | std::ios::out);
if (!file.is_open())
{
printf("Error saving file\n");
return false;
}
file.write((char *)this->buffer, this->taken);
file.close();
return true;
}
bool Buffer::load_from_file(std::string file_path)
{
std::ifstream file(file_path, std::ios::binary | std::ios::in);
if (!file.is_open())
return false;
file.seekg(0, std::ios::end);
size_t file_size = file.tellg();
resize(file_size);
file.seekg(0, std::ios::beg);
file.read((char *)buffer, size);
if (file)
taken = file_size;
else
taken = file.gcount();
file.close();
return true;
}

View File

@ -1,20 +0,0 @@
#include "values/RandBuffer.hpp"
#include "values/mrand.hpp"
void RandBuffer::reset()
{
m_buffer.clear();
m_pos = 0;
}
float RandBuffer::next()
{
if (m_pos * 4 < m_buffer.taken)
{
return ((float *)m_buffer.buffer)[m_pos++];
}
float ret = mrand::getFloat();
m_buffer.add_end((uint8_t *)&ret, sizeof(float));
m_pos++;
return ret;
}