1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #ifdef READER_CPP
- #include "filereader.hpp"
- unsigned FileReader::size() {
- return fp.size();
- }
- //This function will allocate memory even if open() fails.
- //This is needed so that when SRAM files do not exist, the
- //memory for the SRAM data will be allocated still.
- //The memory is flushed to 0x00 when no file is opened.
- uint8_t* FileReader::read(unsigned length) {
- uint8_t *data = 0;
- if(length == 0) {
- //read the entire file into RAM
- data = new(zeromemory) uint8_t[fp.size()];
- if(fp.open()) fp.read(data, fp.size());
- } else if(length > fp.size()) {
- //read the entire file into RAM, pad the rest with 0x00s
- data = new(zeromemory) uint8_t[length];
- if(fp.open()) fp.read(data, fp.size());
- } else { //filesize >= length
- //read only what was requested
- data = new(zeromemory) uint8_t[length];
- if(fp.open()) fp.read(data, length);
- }
- return data;
- }
- bool FileReader::ready() {
- return fp.open();
- }
- FileReader::FileReader(const char *fn) {
- if(!fp.open(fn, file::mode_read)) return;
- if(fp.size() == 0) {
- //empty file
- fp.close();
- }
- }
- FileReader::~FileReader() {
- if(fp.open()) fp.close();
- }
- #endif //ifdef READER_CPP
|