EightBit/inc/IntelHexFile.h
Adrian Conlon 23219734da Resurrect linux build (checked on Ubuntu 18.04)
Signed-off-by: Adrian Conlon <adrian.conlon@gmail.com>
2020-06-07 11:49:57 +01:00

35 lines
764 B
C++

#pragma once
#include <cstdint>
#include <fstream>
#include <string>
#include <ios>
#include <sstream>
#include <map>
#include <optional>
#include <vector>
#include <utility>
namespace EightBit {
class IntelHexFile final {
public:
IntelHexFile(std::string path);
[[nodiscard]] std::map<uint16_t, std::vector<uint8_t>> parse();
private:
[[nodiscard]] std::optional<std::pair<uint16_t, std::vector<uint8_t>>> parse(std::string line);
[[nodiscard]] std::vector<uint8_t> parseDataRecord(std::string line, uint8_t count);
template <class T> T fromHex(std::string input) {
std::istringstream converter(input);
unsigned output;
converter >> std::hex >> output;
return static_cast<T>(output);
}
std::ifstream m_file;
bool m_eof;
};
}