summaryrefslogtreecommitdiff
path: root/src/BitfieldMan.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-23 23:19:10 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-24 21:56:55 +0900
commita081f651a17a5251400fd3c332948ed577bcb74c (patch)
tree602ab646e8d09b1b9e919f991f8306b2f4809a37 /src/BitfieldMan.cc
parent7318c361bcb4c06537016f2a88813ade79fb8f2d (diff)
GeomStreamPieceSelector: Made base changeable and added offsetIndex
parameter.
Diffstat (limited to 'src/BitfieldMan.cc')
-rw-r--r--src/BitfieldMan.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/BitfieldMan.cc b/src/BitfieldMan.cc
index 79d86d19..247f286d 100644
--- a/src/BitfieldMan.cc
+++ b/src/BitfieldMan.cc
@@ -317,15 +317,18 @@ bool getGeomMissingUnusedIndex
const Array& bitfield,
const unsigned char* useBitfield,
size_t blockLength,
- size_t blocks)
+ size_t blocks,
+ double base,
+ size_t offsetIndex)
{
- const size_t base = 2;
- size_t start = 0;
- size_t end = 1;
- while(start < blocks) {
+ double start = 0;
+ double end = 1;
+ while(start+offsetIndex < blocks) {
index = blocks;
bool ok = false;
- for(size_t i = start, eoi = std::min(blocks, end); i < eoi; ++i) {
+ for(size_t i = start+offsetIndex,
+ eoi = std::min(blocks, static_cast<size_t>(end+offsetIndex));
+ i < eoi; ++i) {
if(bitfield::test(useBitfield, blocks, i)) {
ok = false;
break;
@@ -351,19 +354,23 @@ bool BitfieldMan::getGeomMissingUnusedIndex
(size_t& index,
size_t minSplitSize,
const unsigned char* ignoreBitfield,
- size_t ignoreBitfieldLength) const
+ size_t ignoreBitfieldLength,
+ double base,
+ size_t offsetIndex) const
{
if(filterEnabled_) {
return aria2::getGeomMissingUnusedIndex
(index, minSplitSize,
array(ignoreBitfield)|~array(filterBitfield_)|
array(bitfield_)|array(useBitfield_),
- useBitfield_, blockLength_, blocks_);
+ useBitfield_, blockLength_, blocks_,
+ base, offsetIndex);
} else {
return aria2::getGeomMissingUnusedIndex
(index, minSplitSize,
array(ignoreBitfield)|array(bitfield_)|array(useBitfield_),
- useBitfield_, blockLength_, blocks_);
+ useBitfield_, blockLength_, blocks_,
+ base, offsetIndex);
}
}