From 06336eaddcc6a8f9cc578d8f059117c3aa535c9f Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Tue, 5 Jul 2016 17:51:21 +0200 Subject: Made the interface somewhat more consistant. --- binparse/parse.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'binparse/parse.cpp') diff --git a/binparse/parse.cpp b/binparse/parse.cpp index a26e72e..de0f04d 100644 --- a/binparse/parse.cpp +++ b/binparse/parse.cpp @@ -79,6 +79,12 @@ Offset16 parse(std::istream& is, std::string name) { return Offset16(parse(is, name)); } +template<> +Value24 parse(std::istream& is, std::__cxx11::string name) +{ + return Value24(parse>(is, name)); +} + template<> Value32 parse(std::istream& is, std::string name) { return Value32(parse(is, name)); @@ -97,13 +103,13 @@ PString8 parse(std::istream& is, std::string name) { return PString8(std::string(data.begin(), data.end())); } -template<> -std::array parse>(std::istream& is, std::string name) { +template +std::array parse(std::istream& is, std::string name) { if(!is) { throw UnexpectedEOS(); } - std::array buffer; + std::array buffer; is.read(reinterpret_cast(buffer.data()), buffer.size()); if(!is) { @@ -113,20 +119,19 @@ std::array parse>(std::istream& is, std::stri return buffer; } +template<> +std::array parse>(std::istream& is, std::string name) { + return parse(is, name); +} + +template<> +std::array parse>(std::istream& is, std::string name) { + return parse(is, name); +} + template<> std::array parse>(std::istream& is, std::string name) { - if(!is) { - throw UnexpectedEOS(); - } - - std::array buffer; - is.read(reinterpret_cast(buffer.data()), buffer.size()); - - if(!is) { - throw UnexpectedEOS(name); - } - - return buffer; + return parse(is, name); } void dump_bytes(std::istream& is, std::vector& buffer, std::string name) -- cgit v1.2.3-70-g09d2