| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | #include "FileStream.h"#include <stdexcept>  // for runtime_error#include "BellLogger.h"  // for bellusing namespace bell;FileStream::FileStream(const std::string& path, std::string read) {  file = fopen(path.c_str(), "rb");  if (file == NULL) {    throw std::runtime_error("Could not open file: " + path);  }}FileStream::~FileStream() {  close();}size_t FileStream::read(uint8_t* buf, size_t nbytes) {  if (file == NULL) {    throw std::runtime_error("Stream is closed");  }  return fread(buf, 1, nbytes, file);}size_t FileStream::skip(size_t nbytes) {  if (file == NULL) {    throw std::runtime_error("Stream is closed");  }  return fseek(file, nbytes, SEEK_CUR);}size_t FileStream::position() {  if (file == NULL) {    throw std::runtime_error("Stream is closed");  }  return ftell(file);}size_t FileStream::size() {  if (file == NULL) {    throw std::runtime_error("Stream is closed");  }  size_t pos = ftell(file);  fseek(file, 0, SEEK_END);  size_t size = ftell(file);  fseek(file, pos, SEEK_SET);  return size;}void FileStream::close() {  if (file != NULL) {    fclose(file);    file = NULL;  }}
 |