Mercurial > dedupe
view BitDecoder.cpp @ 115:404795616b1e default tip
Added a lot of common files to ignore
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Sat, 25 Mar 2017 17:43:57 +0100 |
| parents | b9515dc35fe4 |
| children |
line wrap: on
line source
#include "BitDecoder.hpp" #include "Exception/InvalidDataException.hpp" BitDecoder::BitDecoder(BitDecoder* low_in, BitDecoder* high_in) : low(low_in), high(high_in) { } BitDecoder::BitDecoder(const QString& d) : low(0), high(0), _data(d) { } BitDecoder::~BitDecoder() { delete low; delete high; } const QString& BitDecoder::data() const { return _data; } BitDecoder* BitDecoder::merge(BitDecoder* low, BitDecoder* high) { return new BitDecoder(low, high); } QMap<QString, BitArray> BitDecoder::createEncoder() const { QMap<QString, BitArray> retVal; if (!_data.isNull()) { retVal.insert(_data, BitArray()); } if (low) { QMap<QString, BitArray> vals = low->createEncoder(); for(QMap<QString, BitArray>::const_iterator it = vals.begin(); it != vals.end(); ++it) { retVal.insert(it.key(), unite(BitArray(1, false), it.value())); } } if (high) { QMap<QString, BitArray> vals = high->createEncoder(); for(QMap<QString, BitArray>::const_iterator it = vals.begin(); it != vals.end(); ++it) { retVal.insert(it.key(), unite(BitArray(1, true), it.value())); } } return retVal; } BitArray BitDecoder::bitsFromString(const QString& str) { BitArray bits(str.size()); for (int i = 0; i < str.size(); ++i) { if (str[i] == '1') bits.setBit(i, true); else if (str[i] == '0') bits.setBit(i, false); else throw InvalidDataException(); } return bits; } QString BitDecoder::decode(const QString& bits) const { return decode(bitsFromString(bits)); }
