/* */ #include "Piece.h" Piece Piece::nullPiece; Piece::Piece(const Piece& piece) { index = piece.index; length = piece.length; if(piece.bitfield == NULL) { bitfield = NULL; } else { bitfield = new BitfieldMan(*piece.bitfield); } } Piece& Piece::operator=(const Piece& piece) { if(this != &piece) { index = piece.index; length = piece.length; if(bitfield != NULL) { delete bitfield; } if(piece.bitfield == NULL) { bitfield = NULL; } else { bitfield = new BitfieldMan(*piece.bitfield); } } return *this; } void Piece::completeBlock(int blockIndex) { bitfield->setBit(blockIndex); bitfield->unsetUseBit(blockIndex); } void Piece::clearAllBlock() { bitfield->clearAllBit(); } void Piece::setAllBlock() { bitfield->setAllBit(); } bool Piece::pieceComplete() const { return bitfield->isAllBitSet(); } void Piece::cancelBlock(int blockIndex) { bitfield->unsetUseBit(blockIndex); } int Piece::getMissingUnusedBlockIndex() const { int blockIndex = bitfield->getFirstMissingUnusedIndex(); if(blockIndex == -1) { return blockIndex; } bitfield->setUseBit(blockIndex); return blockIndex; } BlockIndexes Piece::getAllMissingBlockIndexes() const { return bitfield->getAllMissingIndexes(); }