44 lines
953 B
C++
44 lines
953 B
C++
#include "FileDevice.h"
|
|
#include <iostream>
|
|
|
|
FileDevice::FileDevice(const std::string& fname) : filename(fname) {
|
|
file.open(filename, std::ios::in | std::ios::out | std::ios::binary);
|
|
|
|
if (!file.is_open()) {
|
|
file.clear();
|
|
file.open(filename, std::ios::out | std::ios::binary);
|
|
file.close();
|
|
file.open(filename, std::ios::in | std::ios::out | std::ios::binary);
|
|
}
|
|
}
|
|
|
|
FileDevice::~FileDevice() {
|
|
if (file.is_open()) {
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
bool FileDevice::test() const {
|
|
return file.is_open() && file.good();
|
|
}
|
|
|
|
uint8_t FileDevice::read() {
|
|
char c;
|
|
if (file.is_open()) {
|
|
if (file.get(c)) {
|
|
uint8_t byte = (uint8_t)c;
|
|
return byte;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void FileDevice::write(uint8_t value) {
|
|
if (file.is_open()) {
|
|
char c = (char)value;
|
|
file.put(c);
|
|
file.flush();
|
|
}
|
|
}
|