diff options
| author | Dylan <boss@tehbox.org> | 2025-10-07 18:45:28 +1300 |
|---|---|---|
| committer | Dylan <boss@tehbox.org> | 2025-10-07 19:31:32 +1300 |
| commit | 328e2464c81b0dfce623d4fbe9617ef79d6ed3c1 (patch) | |
| tree | ecccb3c6583640af4792efa93ff280f17b4f707a /src/reader.cpp | |
| parent | 308b65134bd9d185741a612bfad3cca80ddddc48 (diff) | |
| download | tehimage-328e2464c81b0dfce623d4fbe9617ef79d6ed3c1.tar.gz tehimage-328e2464c81b0dfce623d4fbe9617ef79d6ed3c1.zip | |
feat: Added cpp namespacev0.0.2
All functions and classes are now behind the cpp namespace `TehImage`
Diffstat (limited to 'src/reader.cpp')
| -rw-r--r-- | src/reader.cpp | 149 |
1 files changed, 77 insertions, 72 deletions
diff --git a/src/reader.cpp b/src/reader.cpp index 57c474b..f8b053f 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -8,103 +8,108 @@ #include <cstring> #include <iostream> -Reader::Reader(std::string filename) +namespace TehImage { - file = fopen(filename.c_str(), "rb"); - refreshBuffer(); - ready = true; -} -Reader::~Reader() -{ - if(ready) - fclose(file); -} -char Reader::readByte() -{ - if(pos == BUFFER_SIZE) + Reader::Reader(std::string filename) + { + file = fopen(filename.c_str(), "rb"); refreshBuffer(); - return buffer[pos++]; -} + ready = true; + } + Reader::~Reader() + { + if(ready) + fclose(file); + } -void Reader::refreshBuffer() -{ + char Reader::readByte() + { + if(pos == BUFFER_SIZE) + refreshBuffer(); + return buffer[pos++]; + } + + void Reader::refreshBuffer() + { fread(buffer, sizeof(buffer), 1, file); pos = 0; -} + } -template<> uint8_t Reader::readData<uint8_t>() -{ - return readByte(); -} + template<> uint8_t Reader::readData<uint8_t>() + { + return readByte(); + } -template<> uint16_t Reader::readData<uint16_t>() -{ - uint16_t num = 0; - for(int i = 0; i < 2; i++) + template<> uint16_t Reader::readData<uint16_t>() { - num += readByte() << (8 * (1-i)); + uint16_t num = 0; + for(int i = 0; i < 2; i++) + { + num += readByte() << (8 * (1-i)); + } + return num; } - return num; -} -template<> uint32_t Reader::readData<uint32_t>() -{ - uint32_t num = 0; - for(int i = 0; i < 4; i++) + template<> uint32_t Reader::readData<uint32_t>() { - uint8_t byte = readByte(); - debug(std::cout << std::hex << 0+byte << " "); - num += byte << (8 * (3-i)); + uint32_t num = 0; + for(int i = 0; i < 4; i++) + { + uint8_t byte = readByte(); + debug(std::cout << std::hex << 0+byte << " "); + num += byte << (8 * (3-i)); + } + debug(std::cout << std::dec << std::endl); + return num; } - debug(std::cout << std::dec << std::endl); - return num; -} -template<> uint64_t Reader::readData<uint64_t>() -{ - uint64_t num = 0; - for(int i = 0; i < 8; i++) + template<> uint64_t Reader::readData<uint64_t>() { - num += readByte() << (8 * (7-i)); + uint64_t num = 0; + for(int i = 0; i < 8; i++) + { + num += readByte() << (8 * (7-i)); + } + return num; } - return num; -} -void Reader::readBytes(char* out, size_t len) -{ - while(len > 0) + void Reader::readBytes(char* out, size_t len) { - size_t bytesToRead = std::min(len, BUFFER_SIZE - pos); - if(bytesToRead == 0) + while(len > 0) { - refreshBuffer(); - continue; + size_t bytesToRead = std::min(len, BUFFER_SIZE - pos); + if(bytesToRead == 0) + { + refreshBuffer(); + continue; + } + memcpy(out, buffer + pos, bytesToRead); + out += bytesToRead; + len -= bytesToRead; + pos += bytesToRead; } - memcpy(out, buffer + pos, bytesToRead); - out += bytesToRead; - len -= bytesToRead; - pos += bytesToRead; } -} -void Reader::skipBytes(size_t len) -{ - while(len > 0) + void Reader::skipBytes(size_t len) { - size_t bytesToRead = std::min(len, BUFFER_SIZE - pos); - if(bytesToRead == 0) + while(len > 0) { - refreshBuffer(); - continue; + size_t bytesToRead = std::min(len, BUFFER_SIZE - pos); + if(bytesToRead == 0) + { + refreshBuffer(); + continue; + } + len -= bytesToRead; + pos += bytesToRead; } - len -= bytesToRead; - pos += bytesToRead; } -} -void Reader::close() -{ - fclose(file); - ready = false; + void Reader::close() + { + fclose(file); + ready = false; + } + } |
