/*! Removes the option \a name from \a optSet. If the option is not present \c false is returned, \c true otherwise. \param[in] optSet OptionSet to modify. \param[in] name Name of the option. \return Whether the option was successfully removed. */ bool IOFileTypeBase::unsetOption(OptionSet &optSet, const std::string &name) { bool retVal = false; OptionSet::iterator oIt = optSet.find(name); if(oIt != optSet.end()) { optSet.erase(oIt); retVal = true; } return retVal; }
/*! Attempts to return the \a value associated with option \a name in \a optSet. If the option is not present \c false is returned, \c true otherwise and only in this case value is being set. \param[in] optSet OptionSet to read. \param[in] name Name of the option. \param[out] value Value of option. \return Whether the option is present. */ bool IOFileTypeBase::getOption( const OptionSet &optSet, std::string const &name, std::string &value) { bool retVal = false; OptionSet::const_iterator oIt = optSet.find(name); if(oIt != optSet.end()) { value = oIt->second.optValue; retVal = true; } return retVal; }
size_t Options::OptionsSetDiff(const OptionSet &set_a, const OptionSet &set_b, OptionSet &diffs) { size_t num_diffs = 0; OptionSet::const_iterator pos_a; OptionSet::const_iterator pos_b; for (pos_a = set_a.begin(); pos_a != set_a.end(); ++pos_a) { pos_b = set_b.find(*pos_a); if (pos_b == set_b.end()) { ++num_diffs; diffs.insert(*pos_a); } } return num_diffs; }
bool Options::IsASubset(const OptionSet &set_a, const OptionSet &set_b) { bool is_a_subset = true; OptionSet::const_iterator pos_a; OptionSet::const_iterator pos_b; // set_a is a subset of set_b if every member of set_a is also a member of // set_b for (pos_a = set_a.begin(); pos_a != set_a.end() && is_a_subset; ++pos_a) { pos_b = set_b.find(*pos_a); if (pos_b == set_b.end()) is_a_subset = false; } return is_a_subset; }
void Options::OptionsSetUnion(const OptionSet &set_a, const OptionSet &set_b, OptionSet &union_set) { OptionSet::const_iterator pos; OptionSet::iterator pos_union; // Put all the elements of set_a into the union. for (pos = set_a.begin(); pos != set_a.end(); ++pos) union_set.insert(*pos); // Put all the elements of set_b that are not already there into the union. for (pos = set_b.begin(); pos != set_b.end(); ++pos) { pos_union = union_set.find(*pos); if (pos_union == union_set.end()) union_set.insert(*pos); } }