From fceaada9babb17e9206f47eecc12c3858a5f8066 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Fri, 25 Sep 2020 18:42:32 +0200 Subject: [PATCH] bitparser: reverOrder is now configurable, fix _bit_length must be in bit instead of byte --- src/bitparser.cpp | 13 +++++++++---- src/bitparser.hpp | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/bitparser.cpp b/src/bitparser.cpp index c985237..aa085ec 100644 --- a/src/bitparser.cpp +++ b/src/bitparser.cpp @@ -14,10 +14,10 @@ using namespace std; #define display(...) \ do { if (_verbose) fprintf(stdout, __VA_ARGS__);} while(0) -BitParser::BitParser(const string &filename, bool verbose): +BitParser::BitParser(const string &filename, bool reverseOrder, bool verbose): ConfigBitstreamParser(filename, ConfigBitstreamParser::BIN_MODE, verbose), fieldA(), part_name(), date(), hour(), - design_name(), userID(), toolVersion() + design_name(), userID(), toolVersion(), _reverseOrder(reverseOrder) { } BitParser::~BitParser() @@ -126,9 +126,14 @@ int BitParser::parse() return -1; } - for (int i = 0; i < _bit_length; i++) { - _bit_data[i] = reverseByte(_bit_data[i]); + if (_reverseOrder) { + for (int i = 0; i < _bit_length; i++) { + _bit_data[i] = reverseByte(_bit_data[i]); + } } + /* convert size to bit */ + _bit_length *= 8; + return 0; } diff --git a/src/bitparser.hpp b/src/bitparser.hpp index c92707d..cc7bd58 100644 --- a/src/bitparser.hpp +++ b/src/bitparser.hpp @@ -8,7 +8,7 @@ class BitParser: public ConfigBitstreamParser { public: - BitParser(const std::string &filename, bool verbose = false); + BitParser(const std::string &filename, bool reverseOrder, bool verbose = false); ~BitParser(); int parse() override; @@ -21,6 +21,7 @@ class BitParser: public ConfigBitstreamParser { std::string design_name; std::string userID; std::string toolVersion; + bool _reverseOrder; }; #endif