From 22231518b9c2c0b7f73c72a6ca834df659c63c7f Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Wed, 22 Jun 2016 00:15:08 +0200 Subject: Reduces the amount of boilerplate neccesary to parse the binary format. --- le/le_header.cpp | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) (limited to 'le/le_header.cpp') diff --git a/le/le_header.cpp b/le/le_header.cpp index f28cc4d..b2bd7bd 100644 --- a/le/le_header.cpp +++ b/le/le_header.cpp @@ -1,13 +1,13 @@ #include "le_header.hpp" -#include "index_list.hpp" -#include "binparse.hpp" +#include "parse.hpp" +#include "output.hpp" #include BOOST_FUSION_ADAPT_STRUCT( - le::LEHeader, + le::Header, (binparse::Magic16, magic) (binparse::Value8, B_ord) (binparse::Value8, W_ord) @@ -58,35 +58,16 @@ BOOST_FUSION_ADAPT_STRUCT( namespace le { -template -LEHeader parse_header_impl(std::istream& is, indices) { - - return {parse::type>::type>(is, boost::fusion::extension::struct_member_name::call())...}; +Header parse_header(std::istream& is) { + using binparse::parse; + return parse
(is); } -LEHeader parse_header(std::istream& is) { - - typedef build_indices::value>::type indices; - - return parse_header_impl(is, indices{}); -} -std::ostream& output_impl(std::ostream& os, LEHeader const&, indices<>) { - return os; -} - -template -std::ostream& output_impl(std::ostream& os, const LEHeader& header, indices) { - os << boost::fusion::extension::struct_member_name::call() << ": " << boost::fusion::at_c(header) << std::endl; - return output_impl(os, header, indices{}); -} - -std::ostream& operator<<(std::ostream& os, LEHeader const& header) +std::ostream& operator<<(std::ostream& os, Header const& header) { - typedef build_indices::value>::type indices; - - return output_impl(os, header, indices{}); + return binparse::operator<<(os, header); } } \ No newline at end of file -- cgit v1.2.3-70-g09d2