/*! 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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
}
Beispiel #5
0
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);
  }
}