From 60072c1d8089ffd3294e76636198d14710be95b8 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 9 Sep 2017 07:55:22 +0100 Subject: Restructuring --- yage/base/iomanager.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 yage/base/iomanager.cpp (limited to 'yage/base/iomanager.cpp') diff --git a/yage/base/iomanager.cpp b/yage/base/iomanager.cpp new file mode 100644 index 00000000..93ab41c9 --- /dev/null +++ b/yage/base/iomanager.cpp @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * iomanager.cpp + * + * Copyright (c) 2017 Yann Herklotz Grave -- MIT License + * See file LICENSE for more details + * ---------------------------------------------------------------------------- + */ + +#include + +#include +#include + +namespace yage +{ + +bool IoManager::readFileToBuffer(const std::string &file_path, + std::vector &buffer) +{ + std::ifstream file(file_path, std::ios::binary); + if (!file.is_open()) { + throw std::runtime_error("Could not open '" + file_path + "'"); + } + + // seek to the end + file.seekg(0, std::ios::end); + + // get the file size + int file_size = file.tellg(); + file.seekg(0, std::ios::beg); + + // reduce file size by header bytes + file_size -= file.tellg(); + + buffer.resize(file_size); + file.read((char *)&buffer[0], file_size); + file.close(); + + return true; +} + +} // namespace yage -- cgit