Esempio n. 1
0
//______________________________________________________________________
int
optionmm::basic_option::position(size_t i) const
{
    if (i >= _positions.size()) return 0;
    if (!many_values()) return _positions[0];
    return _positions[i];
}
Esempio n. 2
0
inline void option<Type,arg,multi,Convert,Toggle>::push_arg(int pos)
{
    if (many_values())
        push(_values[0], pos);
    else {
        // value_type& v = _values[0];
        toggle_value<value_type>()(_values[0]);
        if (_positions.size() <= 0) _positions.push_back(pos);
        _positions[0] = pos;
    }
}
Esempio n. 3
0
inline void option<Type,arg,multi,Convert,Toggle>::push(const value_type& v,
        int pos)
{
    if (!many_values() || (_values.size() == 1 && !_got_one) ) {
        _got_one = true;
        _values[0] = v;
        if (_positions.size() <= 0) _positions.push_back(pos);
        _positions[0] = pos;
    } else {
        _values.push_back(v);
        _positions.push_back(pos);
    }
}
Esempio n. 4
0
//____________________________________________________________________
void
optionmm::basic_option::print(int ll, std::ostream& o) const
{
    if (ll <= 0) ll=16;
    if (_short_name != '\0') o << "-" << _short_name <<", ";
    else                     o << "    ";
    if (!_long_name.empty()) {
        o << "--" << _long_name;
        if (need_argument()) o << "=VALUE";
        else                 o << "      ";
        for (int i = _long_name.size(); i < ll; i++) o << " ";
    } else {
        o << std::setw(ll+2) << " ";
        if (need_argument()) o << " VALUE";
        else                 o << "      ";
    }
    o << "\t" << _help_string;
    if (many_values()) o << " (*)";
}
Esempio n. 5
0
inline Type option<Type,arg,multi,Convert,Toggle>::value(size_t i) const
{
    if (!many_values() || i >= _values.size())
        return _values[0];
    return _values[i];
}