BitVector Sparse6Writer::constructBitvector(vector<pair<unsigned, unsigned> >& groups, unsigned sizeOfGroups) { BitVector result; for (unsigned i = 0; i < groups.size(); ++i) { // append the b[i] result.appendBit(groups[i].first); // append sizeOfGroup bits of the integer groups[i].second result.appendByte(groups[i].second, sizeOfGroups); } return result; }
void Sparse6Writer::padUp(BitVector& bitVector, unsigned numberOfNodes, unsigned k, bool last, bool beforeLast) { unsigned numberOfBitsToPad = 0; while ((bitVector.size() + numberOfBitsToPad) % 6 != 0) numberOfBitsToPad++; if ((numberOfNodes >= k + 1) && last && !beforeLast && isMutipleOfTwo(numberOfNodes)) bitVector.appendBit(0); // pad to multiples of 6 with one's bitVector.padR(6, true); }