EightBit/inc/IntelHexFile.h
Adrian Conlon 5eedbe1225 Make better use of modern c++
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2020-05-02 11:36:43 +01:00

33 lines
730 B
C++

#pragma once
#include <cstdint>
#include <fstream>
#include <string>
#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;
};
}