diff options
Diffstat (limited to 'src/Option.cc')
| -rw-r--r-- | src/Option.cc | 98 |
1 files changed, 54 insertions, 44 deletions
diff --git a/src/Option.cc b/src/Option.cc index 633e9281..93d81a1c 100644 --- a/src/Option.cc +++ b/src/Option.cc @@ -42,21 +42,20 @@ namespace aria2 { Option::Option() - : table_(option::countOption()), - use_((option::countOption()+7)/8) -{} + : table_(option::countOption()), use_((option::countOption() + 7) / 8) +{ +} Option::~Option() {} Option::Option(const Option& option) - : table_(option.table_), - use_(option.use_), - parent_(option.parent_) -{} + : table_(option.table_), use_(option.use_), parent_(option.parent_) +{ +} Option& Option::operator=(const Option& option) { - if(this != &option) { + if (this != &option) { table_ = option.table_; use_ = option.use_; parent_ = option.parent_; @@ -66,93 +65,107 @@ Option& Option::operator=(const Option& option) namespace { -template<typename V> -void setBit(V& b, PrefPtr pref) +template <typename V> void setBit(V& b, PrefPtr pref) { - b[pref->i/8] |= 128 >> (pref->i%8); + b[pref->i / 8] |= 128 >> (pref->i % 8); } -template<typename V> -void unsetBit(V& b, PrefPtr pref) +template <typename V> void unsetBit(V& b, PrefPtr pref) { - b[pref->i/8] &= ~(128 >> (pref->i%8)); + b[pref->i / 8] &= ~(128 >> (pref->i % 8)); } } // namespace -void Option::put(PrefPtr pref, const std::string& value) { +void Option::put(PrefPtr pref, const std::string& value) +{ setBit(use_, pref); table_[pref->i] = value; } bool Option::defined(PrefPtr pref) const { - return bitfield::test(use_, use_.size()*8, pref->i) || - (parent_ && parent_->defined(pref)); + return bitfield::test(use_, use_.size() * 8, pref->i) || + (parent_ && parent_->defined(pref)); } bool Option::definedLocal(PrefPtr pref) const { - return bitfield::test(use_, use_.size()*8, pref->i); + return bitfield::test(use_, use_.size() * 8, pref->i); } bool Option::blank(PrefPtr pref) const { - if(bitfield::test(use_, use_.size()*8, pref->i)) { + if (bitfield::test(use_, use_.size() * 8, pref->i)) { return table_[pref->i].empty(); - } else { + } + else { return !parent_ || parent_->blank(pref); } } const std::string& Option::get(PrefPtr pref) const { - if(bitfield::test(use_, use_.size()*8, pref->i)) { + if (bitfield::test(use_, use_.size() * 8, pref->i)) { return table_[pref->i]; - } else if(parent_) { + } + else if (parent_) { return parent_->get(pref); - } else { + } + else { return A2STR::NIL; } } -int32_t Option::getAsInt(PrefPtr pref) const { +int32_t Option::getAsInt(PrefPtr pref) const +{ const std::string& value = get(pref); - if(value.empty()) { + if (value.empty()) { return 0; - } else { + } + else { return strtol(value.c_str(), nullptr, 10); } } -int64_t Option::getAsLLInt(PrefPtr pref) const { +int64_t Option::getAsLLInt(PrefPtr pref) const +{ const std::string& value = get(pref); - if(value.empty()) { + if (value.empty()) { return 0; - } else { + } + else { return strtoll(value.c_str(), nullptr, 10); } } -bool Option::getAsBool(PrefPtr pref) const { - return get(pref) == A2_V_TRUE; -} +bool Option::getAsBool(PrefPtr pref) const { return get(pref) == A2_V_TRUE; } -double Option::getAsDouble(PrefPtr pref) const { +double Option::getAsDouble(PrefPtr pref) const +{ const std::string& value = get(pref); - if(value.empty()) { + if (value.empty()) { return 0.0; - } else { + } + else { return strtod(value.c_str(), nullptr); } } -void Option::remove(PrefPtr pref) +void Option::removeLocal(PrefPtr pref) { unsetBit(use_, pref); table_[pref->i].clear(); } +void Option::remove(PrefPtr pref) +{ + removeLocal(pref); + if (parent_) { + parent_->remove(pref); + } +} + void Option::clear() { std::fill(use_.begin(), use_.end(), 0); @@ -161,10 +174,10 @@ void Option::clear() void Option::merge(const Option& option) { - size_t bits = option.use_.size()*8; - for(size_t i = 1, len = table_.size(); i < len; ++i) { - if(bitfield::test(option.use_, bits, i)) { - use_[i/8] |= 128 >> (i%8); + size_t bits = option.use_.size() * 8; + for (size_t i = 1, len = table_.size(); i < len; ++i) { + if (bitfield::test(option.use_, bits, i)) { + use_[i / 8] |= 128 >> (i % 8); table_[i] = option.table_[i]; } } @@ -175,9 +188,6 @@ void Option::setParent(const std::shared_ptr<Option>& parent) parent_ = parent; } -const std::shared_ptr<Option>& Option::getParent() const -{ - return parent_; -} +const std::shared_ptr<Option>& Option::getParent() const { return parent_; } } // namespace aria2 |
