anlogicBitParser: allows to reverse (or not) bytes

This commit is contained in:
Gwenhael Goavec-Merou 2020-08-24 08:53:30 +02:00
parent 31bc9cf988
commit bfd7e9b6ed
2 changed files with 11 additions and 4 deletions

View File

@ -31,8 +31,10 @@
using namespace std; using namespace std;
AnlogicBitParser::AnlogicBitParser(const string &filename, bool verbose): AnlogicBitParser::AnlogicBitParser(const string &filename, bool reverseOrder,
ConfigBitstreamParser(filename, ConfigBitstreamParser::BIN_MODE, verbose) bool verbose):
ConfigBitstreamParser(filename, ConfigBitstreamParser::BIN_MODE, verbose),
_reverseOrder(reverseOrder)
{} {}
AnlogicBitParser::~AnlogicBitParser() AnlogicBitParser::~AnlogicBitParser()
@ -136,7 +138,10 @@ int AnlogicBitParser::parse()
_bit_data.clear(); _bit_data.clear();
for (auto it = blocks.begin(); it != blocks.end(); it++) { for (auto it = blocks.begin(); it != blocks.end(); it++) {
for (size_t pos = 0; pos < it->size(); pos++) { for (size_t pos = 0; pos < it->size(); pos++) {
_bit_data += reverseByte(((*it)[pos])); if (_reverseOrder == true)
_bit_data += reverseByte(((*it)[pos]));
else
_bit_data += ((*it)[pos]);
} }
} }
_bit_length = _bit_data.size() * 8; _bit_length = _bit_data.size() * 8;

View File

@ -30,13 +30,15 @@
*/ */
class AnlogicBitParser: public ConfigBitstreamParser { class AnlogicBitParser: public ConfigBitstreamParser {
public: public:
AnlogicBitParser(const std::string &filename, bool verbose = false); AnlogicBitParser(const std::string &filename, bool reverseOrder,
bool verbose = false);
~AnlogicBitParser(); ~AnlogicBitParser();
int parse() override; int parse() override;
void displayHeader(); void displayHeader();
private: private:
int parseHeader(); int parseHeader();
bool _reverseOrder;
}; };
#endif // SRC_ANLOGICBITPARSER_HPP_ #endif // SRC_ANLOGICBITPARSER_HPP_