#include "types.hpp" #include #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); template<> std::array parse>(std::istream& is, std::string name); template<> std::array parse>(std::istream& is, std::string name); void dump_bytes(std::istream& is, std::vector buffer, 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); }