From cea325b7451c1fb8dd22462ec2e7b5b88ea9b547 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Sun, 19 Jun 2016 20:23:07 +0200 Subject: Adds an LE executable parser. Adds the binparse library that holds common components for the MZ and LE parsers. --- binparse/binparse.hpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 binparse/binparse.hpp (limited to 'binparse/binparse.hpp') diff --git a/binparse/binparse.hpp b/binparse/binparse.hpp new file mode 100644 index 0000000..1620ab5 --- /dev/null +++ b/binparse/binparse.hpp @@ -0,0 +1,57 @@ +#include "types.hpp" + +#include +#include +#include + +namespace binparse { + +struct UnexpectedEOS : public std::runtime_error { + UnexpectedEOS(); + + UnexpectedEOS(std::string location); +}; + +template +T parse(std::istream& is, std::string name); + +template<> +uint8_t parse(std::istream& is, std::string name); + +template<> +uint16_t parse(std::istream& is, std::string name); + +template<> +uint32_t parse(std::istream& is, std::string name); + +template<> +Magic16 parse(std::istream& is, std::string name); + +template<> +Value16 parse(std::istream& is, std::string name); + +template<> +Offset16 parse(std::istream& is, std::string name); + +template<> +Value32 parse(std::istream& is, std::string name); + +template<> +Offset32 parse(std::istream& is, std::string name); + +std::string to_string(Magic16 magic); + +//overload inside this namespace to output unsigned char as value not as characters. +std::ostream& operator<<(std::ostream& os, uint8_t); + +std::ostream& operator<<(std::ostream& os, Value8 v); +std::ostream& operator<<(std::ostream& os, Offset8 o); + +std::ostream& operator<<(std::ostream& os, Magic16 m); +std::ostream& operator<<(std::ostream& os, Value16 v); +std::ostream& operator<<(std::ostream& os, Offset16 o); + +std::ostream& operator<<(std::ostream& os, Value32 v); +std::ostream& operator<<(std::ostream& os, Offset32 o); + +} \ No newline at end of file -- cgit v1.2.3-70-g09d2