Changeset 11336


Ignore:
Timestamp:
07/11/11 11:09:11 (13 years ago)
Author:
tbretz
Message:
Added code to allow option values as hexadecimal numbers; added Get and Has for sections and for default values.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/Configuration.h

    r11329 r11336  
    131131    // Simplified access to the parsed options
    132132    template<class T>
    133        T Get(const char *var) const { return fVariables[var].as<T>(); }
    134     bool Has(const char *var) const { return fVariables.count(var)>0; }
    135 
    136     template<class T>
    137         std::map<std::string, T> GetMap(const std::string &var) const
     133        T Get(const std::string &var) const { return fVariables[var].as<T>(); }
     134    bool Has(const std::string &var) const { return fVariables.count(var)>0; }
     135
     136    template<class T, class S>
     137    T Get(const std::string &var, const S &val) const
     138    {
     139        std::ostringstream str;
     140        str << var << val;
     141        return Get<T>(str.str());
     142    }
     143
     144    template<class T>
     145    bool Has(const std::string &var, const T &val) const
     146    {
     147        std::ostringstream str;
     148        str << var << val;
     149        return Has(str.str());
     150    }
     151
     152    template<class T, class S>
     153    T GetDef(const std::string &var, const S &val) const
     154    {
     155        return Has(var, val) ? Get<T>(var, val) : Get<T>(var+"default");
     156    }
     157
     158    template<class T>
     159    bool HasDef(const std::string &var, const T &val) const
     160    {
     161        return Has(var, val) ? true : Has(var+"default");
     162    }
     163
     164    template<class T>
     165    std::map<std::string, T> GetMap(const std::string &var) const
    138166    {
    139167        const size_t len = var.length();
     
    149177
    150178    template<class T>
    151         std::vector<std::string> GetKeys(const std::string &var) const
     179    std::vector<std::string> GetKeys(const std::string &var) const
    152180    {
    153181        const size_t len = var.length();
     
    165193};
    166194
     195template<typename T>
     196struct Hex
     197{
     198    T val;
     199    Hex() { }
     200    Hex(const T &v) : val(v) { }
     201    operator T() const { return val; }
     202};
     203template<typename T>
     204std::istream &operator>>(std::istream &in, Hex<T> &rc)
     205{
     206    T val;
     207    in >> std::hex >> val;
     208    rc.val = val;
     209    return in;
     210}
     211
    167212template<class T>
    168213inline po::typed_value<T> *var(T *ptr=0)
Note: See TracChangeset for help on using the changeset viewer.