| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- #include "FileStream.h"
 
- #include <stdexcept>  // for runtime_error
 
- #include "BellLogger.h"  // for bell
 
- using 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;
 
-   }
 
- }
 
 
  |