Archived
1
Fork 0

Add memory buffer read/write functions

This commit is contained in:
Joshua Goins 2022-04-28 23:20:22 -04:00
parent 98793efa70
commit 4279dc2827
2 changed files with 32 additions and 3 deletions

View file

@ -5,6 +5,7 @@
#include <istream> #include <istream>
#include <memory> #include <memory>
#include <cstring> #include <cstring>
#include <vector>
enum class Seek { enum class Seek {
Current, Current,
@ -41,8 +42,6 @@ struct MemoryBuffer {
position = end; position = end;
} }
size_t size() const { size_t size() const {
return data.size(); return data.size();
} }
@ -143,3 +142,4 @@ private:
}; };
void write_buffer_to_file(const MemoryBuffer& buffer, std::string_view path); void write_buffer_to_file(const MemoryBuffer& buffer, std::string_view path);
MemoryBuffer read_file_to_buffer(std::string_view path);

29
src/memorybuffer.cpp Normal file
View file

@ -0,0 +1,29 @@
#include "memorybuffer.h"
void write_buffer_to_file(const MemoryBuffer& buffer, std::string_view path) {
FILE* file = fopen(path.data(), "wb");
if(file == nullptr)
throw std::runtime_error("Failed to open file for writing.");
fwrite(buffer.data.data(), buffer.data.size(), 1, file);
fclose(file);
}
MemoryBuffer read_file_to_buffer(std::string_view path) {
FILE* file = fopen(path.data(), "rb");
if(file == nullptr)
throw std::runtime_error("Failed to open file for reading.");
fseek(file, 0, SEEK_END);
size_t size = ftell(file);
fseek(file, 0, SEEK_SET);
MemoryBuffer buffer;
buffer.data.resize(size);
fread(buffer.data.data(), size, 1, file);
fclose(file);
return buffer;
}