42    enum { NONE = 0, BOOL = 1, INT = 2, DOUBLE = 3, COMPLEX_DOUBLE = 4, STRING = 5 };
 
   52    RData(
const bool v) : type_(BOOL), b_data(v) {}
 
   55    RData(
const int v) : type_(INT) { i_data.push_back(v); }
 
   58    RData(
const double v) : type_(DOUBLE) { d_data.push_back(v); }
 
   61    RData(
const std::complex<double> v) : type_(COMPLEX_DOUBLE) { cd_data.push_back(v); }
 
   63    RData(
const std::string& v) : type_(STRING), s_data(v) {}
 
   65    RData(
const char* v) : type_(STRING), s_data(v) {}
 
   68    template <
typename InputIterator>
 
   69    RData(InputIterator first, InputIterator last) {
 
   70        set_impl<InputIterator, typename std::iterator_traits<InputIterator>::value_type>::f(
 
 
   76    RData(
const std::vector<T>& v) {
 
   77        set(v.begin(), v.end());
 
 
   87    void set(
const bool v) {
 
 
   94    void set(
const int v) {
 
 
  101    void set(
const double v) {
 
 
  108    void set(
const std::complex<double> v) {
 
  110        type_ = COMPLEX_DOUBLE;
 
  111        cd_data.push_back(v);
 
 
  115    void set(
const std::string& data) {
 
 
  122    void set(
const char* data) {
 
  125        s_data = std::string(data);
 
 
  129    template <
typename T>
 
  130    void set(
const std::vector<T>& v) {
 
  131        set(v.begin(), v.end());
 
 
  135    template <
typename InputIterator>
 
  136    void set(InputIterator first, InputIterator last) {
 
  137        set_impl<InputIterator, typename std::iterator_traits<InputIterator>::value_type>::f(
 
 
  145    const std::vector<int>& 
get_int()
 const { 
return i_data; }
 
  148    const std::vector<double>& 
get_double()
 const { 
return d_data; }
 
  156    template <
typename T>
 
  157    inline const std::vector<T>& 
get()
 const {
 
  159        return std::vector<T>();
 
 
  166    int type()
 const { 
return type_; }
 
  176                return typeid(double);
 
  178                return typeid(std::complex<double>);
 
  180                return typeid(std::string);
 
 
  195                return i_data.size();
 
  197                return d_data.size();
 
  199                return cd_data.size();
 
  201                return s_data.size();
 
 
  217        const size_t rdata_mul[6] = {0, 
sizeof(bool), 4, 8, 16, 1};
 
  218        const size_t rdata_add[6] = {0, 0, 0, 0, 0, 0};
 
  220        return rdata_mul[
type] * num_elements + rdata_add[
type];
 
 
  232                return (
const void*)&b_data;
 
  234                return (
const void*)&
get_int()[0];
 
  237            case RData::COMPLEX_DOUBLE:
 
 
  248    bool operator==(
const bool o)
 const { 
return (type_ == RData::BOOL && b_data == o); }
 
  252        return (type_ == RData::INT && i_data.size() == 1 && i_data.front() == o);
 
 
  257        return (type_ == RData::INT && i_data == o);
 
 
  262        return (type_ == RData::DOUBLE && d_data.size() == 1 && d_data.front() == o);
 
 
  267        return (type_ == RData::DOUBLE && d_data == o);
 
 
  273        return (type_ == RData::COMPLEX_DOUBLE && cd_data.size() == 1 && cd_data.front() == o);
 
 
  278    bool operator==(
const std::vector<std::complex<double> >& o)
 const {
 
  279        return (type_ == RData::COMPLEX_DOUBLE && cd_data == o);
 
 
  284    bool operator==(
const std::string& o)
 const { 
return (type_ == RData::STRING && s_data == o); }
 
  288    bool operator==(
const char* o)
 const { 
return (type_ == RData::STRING && s_data == o); }
 
  291    friend std::ostream& operator<<(std::ostream& o, 
const RData& v);
 
  293    void print(std::ostream& o = std::cout)
 const {
 
  299                o << (b_data ? 
"TRUE" : 
"FALSE");
 
  302                for (
size_t i = 0; i != i_data.size(); ++i) {
 
  303                    o << (i > 0 ? 
", " : 
"") << i_data[i];
 
  308                o << std::setprecision(15) << 
"[";
 
  309                for (
size_t i = 0; i != d_data.size(); ++i) {
 
  310                    o << (i > 0 ? 
", " : 
"") << d_data[i];
 
  315                o << std::setprecision(15) << 
"[";
 
  316                for (
size_t i = 0; i != cd_data.size(); ++i) {
 
  317                    o << (i > 0 ? 
", " : 
"") << cd_data[i];
 
  322                o << 
'"' << s_data << 
'"';
 
  329    template <
typename T, 
typename V>
 
  331        static void f(
RData& r, T first, T last) { r.clear(); }
 
  334    template <
typename T>
 
  335    struct set_impl<T, int> {
 
  336        static void f(
RData& r, T first, T last) {
 
  338            r.type_ = RData::INT;
 
  339            r.i_data.insert(r.i_data.end(), first, last);
 
  343    template <
typename T>
 
  344    struct set_impl<T, double> {
 
  345        static void f(
RData& r, T first, T last) {
 
  347            r.type_ = RData::DOUBLE;
 
  348            r.d_data.insert(r.d_data.end(), first, last);
 
  352    template <
typename T>
 
  353    struct set_impl<T, std::complex<double> > {
 
  354        static void f(
RData& r, T first, T last) {
 
  356            r.type_ = RData::COMPLEX_DOUBLE;
 
  357            r.cd_data.insert(r.cd_data.end(), first, last);
 
  361    template <
typename T>
 
  362    struct set_impl<T, 
b2000::csda<double> > {
 
  363        static void f(
RData& r, T first, T last) {
 
  365            r.type_ = RData::COMPLEX_DOUBLE;
 
  366            r.cd_data.insert(r.cd_data.end(), first, last);
 
  370    template <
typename T>
 
  371    struct set_impl<T, char> {
 
  372        static void f(
RData& r, T first, T last) {
 
  374            r.type_ = RData::STRING;
 
  375            r.s_data.insert(r.s_data.end(), first, last);
 
  390    std::vector<int> i_data;
 
  391    std::vector<double> d_data;
 
  392    std::vector<std::complex<double> > cd_data;
 
 
  396inline std::ostream& operator<<(std::ostream& o, 
const RData& v) {
 
  402inline const std::vector<int>& RData::get<int>()
 const {
 
  407inline const std::vector<double>& RData::get<double>()
 const {
 
  412inline const std::vector<std::complex<double> >& RData::get<std::complex<double> >() 
const {
 
  413    return get_complex_double();
 
  417inline const std::vector<b2000::csda<double> >& RData::get<b2000::csda<double> >() 
const {
 
  418    return reinterpret_cast<const std::vector<b2000::csda<double> 
>&>(get_complex_double());
 
  427class RTable : 
public std::map<std::string, RData> {
 
  433    bool has_key(
const std::string& key)
 const { 
return find(key) != end(); }
 
  437        iterator i = find(key);
 
  438        if (i == end()) { 
return; }
 
 
  444        const_iterator i = find(key);
 
  445        if (i == end()) { key_error(key); }
 
 
  451        iterator i = find(key);
 
  452        if (i == end()) { key_error(key); }
 
 
  458        for (
auto const& i : o) { (*this)[i.first] = i.second; }
 
 
  462    template <
typename T>
 
  463    void set(
const std::string& key, 
const T& v, 
const bool new_key = 
false) {
 
  464        iterator i = find(key);
 
  466            i = insert(std::pair<std::string, RData>(key, 
RData(v))).first;
 
  468            if (new_key) { exists_error(key); }
 
 
  473    void set(
const std::string& key, 
const bool v, 
const bool new_key = 
false) {
 
  474        iterator i = find(key);
 
  476            i = insert(std::pair<std::string, RData>(key, 
RData(v))).first;
 
  478            if (new_key) { exists_error(key); }
 
  484    template <
typename T>
 
  485    void set(
const std::string& key, 
const std::vector<T>& v, 
const bool new_key = 
false) {
 
  486        iterator i = find(key);
 
  488            i = insert(std::pair<std::string, RData>(key, 
RData(v))).first;
 
  490            if (new_key) { exists_error(key); }
 
 
  496    template <
typename InputIterator>
 
  498          const std::string& key, InputIterator first, InputIterator last,
 
  499          const bool new_key = 
false) {
 
  500        iterator i = find(key);
 
  502            i = insert(std::pair<std::string, RData>(key, 
RData(first, last))).first;
 
  504            if (new_key) { exists_error(key); }
 
  505            (*i).second.set(first, last);
 
 
  510    void set(
const std::string& key, 
const std::string& s, 
const bool new_key = 
false) {
 
  511        iterator i = find(key);
 
  513            i = insert(std::pair<std::string, RData>(key, 
RData(s))).first;
 
  515            if (new_key) { exists_error(key); }
 
 
  523        const_iterator i = find(key);
 
  525            if (i->second.type() == RData::BOOL) { 
return i->second.get_bool(); }
 
  526            type_error(key, i->second.type(), RData::BOOL);
 
 
  535    bool get_bool(
const std::string& key, 
const bool default_)
 const {
 
  536        const_iterator i = find(key);
 
  538            if (i->second.type() == RData::BOOL) { 
return i->second.get_bool(); }
 
  539            type_error(key, i->second.type(), RData::BOOL);
 
 
  547        const std::vector<int>& vv = get_int_(key);
 
  548        if (vv.empty()) { empty_error(key); }
 
 
  555    int get_int(
const std::string& key, 
const int default_)
 const {
 
  556        const_iterator i = find(key);
 
  557        if (i == end()) { 
return default_; }
 
  558        const std::vector<int>& vv = (*i).second.get_int();
 
  559        if (vv.empty()) { empty_error(key); }
 
 
  566        const_iterator i = find(key);
 
  567        if (i == end()) { key_error(key); }
 
  568        const RData& r = (*i).second;
 
  569        if (r.
empty()) { empty_error(key); }
 
 
  578    double get_double(
const std::string& key, 
const double default_)
 const {
 
  579        const_iterator i = find(key);
 
  580        if (i == end()) { 
return default_; }
 
  581        const RData& r = (*i).second;
 
  582        if (r.
empty()) { empty_error(key); }
 
 
  591        const_iterator i = find(key);
 
  592        if (i == end()) { key_error(key); }
 
  593        const RData& r = (*i).second;
 
  594        if (r.
empty()) { empty_error(key); }
 
  595        if (r.
type() == RData::DOUBLE) { 
return std::complex<double>(r.
get_double().front()); }
 
  596        if (r.
type() != RData::COMPLEX_DOUBLE) { type_error(key, r.
type(), RData::COMPLEX_DOUBLE); }
 
 
  612          const std::string& key, 
const std::complex<double>& default_)
 const {
 
  613        const_iterator i = find(key);
 
  614        if (i == end()) { 
return default_; }
 
  615        const RData& r = (*i).second;
 
  616        if (r.
empty()) { empty_error(key); }
 
  617        if (r.
type() == RData::DOUBLE) { 
return std::complex<double>(r.
get_double().front()); }
 
  618        if (r.
type() != RData::COMPLEX_DOUBLE) { type_error(key, r.
type(), RData::COMPLEX_DOUBLE); }
 
 
  627          const std::string& key, 
const b2000::csda<double>& default_)
 const {
 
 
  633    std::string 
get_string(
const std::string& key)
 const { 
return get_string_(key); }
 
  638    std::string 
get_string(
const std::string& key, 
const std::string& default_)
 const {
 
  639        const_iterator i = find(key);
 
  640        if (i == end()) { 
return default_; }
 
  641        return (*i).second.get_string();
 
 
  646    template <
typename T>
 
  647    inline T 
get(
const std::string& key)
 const {
 
 
  655    template <
typename T>
 
  656    inline T 
get(
const std::string& key, 
const T& default_)
 const {
 
 
  663    void get(
const std::string& key, std::vector<int>& v)
 const {
 
  664        const std::vector<int>& vv = get_int_(key);
 
 
  670    void get(
const std::string& key, std::vector<double>& v)
 const {
 
  671        const_iterator i = find(key);
 
  672        if (i == end()) { key_error(key); }
 
  673        const RData& r = (*i).second;
 
  674        if (r.
type() == RData::COMPLEX_DOUBLE) {
 
  677            v.reserve(vc.size());
 
  678            for (
auto j : vc) { v.push_back(j.real()); }
 
  679        } 
else if (r.
type() == RData::DOUBLE) {
 
  682            type_error(key, r.
type(), RData::DOUBLE);
 
 
  689    void get(
const std::string& key, std::vector<std::complex<double> >& v)
 const {
 
  690        const_iterator i = find(key);
 
  691        if (i == end()) { key_error(key); }
 
  692        const RData& r = (*i).second;
 
  693        if (r.
type() == RData::DOUBLE) {
 
  694            const std::vector<double>& vd = r.
get_double();
 
  696            v.reserve(vd.size());
 
  697            for (
auto j : vd) { v.push_back(std::complex<double>(j)); }
 
  698        } 
else if (r.
type() == RData::COMPLEX_DOUBLE) {
 
  701            type_error(key, r.
type(), RData::COMPLEX_DOUBLE);
 
 
  708    void get(
const std::string& key, std::vector<b2000::csda<double> >& v)
 const {
 
  709        const_iterator i = find(key);
 
  710        if (i == end()) { key_error(key); }
 
  711        const RData& r = (*i).second;
 
  712        if (r.
type() == RData::DOUBLE) {
 
  713            const std::vector<double>& vd = r.
get_double();
 
  715            v.reserve(vd.size());
 
  716            for (
auto j : vd) { v.push_back(std::complex<double>(j)); }
 
  717        } 
else if (r.
type() == RData::COMPLEX_DOUBLE) {
 
  720            v.reserve(vc.size());
 
  721            for (
auto j : vc) { v.push_back(std::complex<double>(j)); }
 
  723            type_error(key, r.
type(), RData::COMPLEX_DOUBLE);
 
 
  730    void get(
const std::string& key, 
const size_t size_, 
int* v)
 const {
 
  731        const std::vector<int>& vv = get_int_(key);
 
  732        if (vv.size() < size_) { size_error(key, vv.size(), size_); }
 
  733        std::copy(&vv[0], &vv[0] + size_, v);
 
 
  739    void get(
const std::string& key, 
const size_t size_, 
double* v)
 const {
 
  740        const std::vector<double>& vv = get_double_(key);
 
  741        if (vv.size() < size_) { size_error(key, vv.size(), size_); }
 
  742        std::copy(&vv[0], &vv[0] + size_, v);
 
 
  749    void get(
const std::string& key, 
const size_t size_, std::complex<double>* v)
 const {
 
  750        const_iterator i = find(key);
 
  751        if (i == end()) { key_error(key); }
 
  752        const RData& r = (*i).second;
 
  753        if (r.
type() == RData::DOUBLE) {
 
  754            const std::vector<double>& vd = r.
get_double();
 
  755            if (vd.size() < size_) { size_error(key, vd.size(), size_); }
 
  756            for (
size_t j = 0; j != vd.size(); ++j) { v[j] = std::complex<double>(vd[j]); }
 
  757        } 
else if (r.
type() == RData::COMPLEX_DOUBLE) {
 
  759            if (vc.size() < size_) { size_error(key, vc.size(), size_); }
 
  760            std::copy(&vc[0], &vc[0] + size_, v);
 
  762            type_error(key, r.
type(), RData::COMPLEX_DOUBLE);
 
 
  787    friend std::ostream& operator<<(std::ostream& o, 
const RTable& r);
 
  789    void print(std::ostream& o)
 const {
 
  791        for (const_iterator i = begin(); i != end(); ++i) {
 
  792            o << (i != begin() ? 
", " : 
"") << 
'"' << (*i).first << 
"\":" << (*i).second;
 
  797    const std::vector<int>& get_int_(
const std::string& key)
 const {
 
  798        const_iterator i = find(key);
 
  799        if (i == end()) { key_error(key); }
 
  800        const RData& r = (*i).second;
 
  801        if (r.type() != RData::INT) { type_error(key, r.type(), RData::INT); }
 
  805    const std::vector<double>& get_double_(
const std::string& key)
 const {
 
  806        const_iterator i = find(key);
 
  807        if (i == end()) { key_error(key); }
 
  808        const RData& r = (*i).second;
 
  809        if (r.type() != RData::DOUBLE) { type_error(key, r.type(), RData::DOUBLE); }
 
  810        return r.get_double();
 
  813    std::complex<double> get_complex_double_first_(
const std::string& key)
 const {
 
  814        const_iterator i = find(key);
 
  815        if (i == end()) { key_error(key); }
 
  816        const RData& r = (*i).second;
 
  817        if (r.empty()) { empty_error(key); }
 
  818        if (r.type() == RData::DOUBLE) { 
return std::complex<double>(r.get_double().front()); }
 
  819        if (r.type() != RData::COMPLEX_DOUBLE) { type_error(key, r.type(), RData::COMPLEX_DOUBLE); }
 
  820        return r.get_complex_double().front();
 
  823    const std::string& get_string_(
const std::string& key)
 const {
 
  824        const_iterator i = find(key);
 
  825        if (i == end()) { key_error(key); }
 
  826        const RData& r = (*i).second;
 
  827        if (r.type() != RData::STRING) { type_error(key, r.type(), RData::STRING); }
 
  828        return r.get_string();
 
  831    void key_error(
const std::string& key) 
const;
 
  833    void exists_error(
const std::string& key) 
const;
 
  835    void type_error(
const std::string& key, 
const int has, 
const int need) 
const;
 
  837    void empty_error(
const std::string& key) 
const;
 
  839    void size_error(
const std::string& key, 
const size_t has, 
const size_t need) 
const;
 
 
  842inline std::ostream& operator<<(std::ostream& o, 
const RTable& r) {
 
  848inline std::string RTable::get<std::string>(
const std::string& key)
 const {
 
  849    return get_string(key);
 
  853inline bool RTable::get<bool>(
const std::string& key)
 const {
 
  858inline int RTable::get<int>(
const std::string& key)
 const {
 
  863inline double RTable::get<double>(
const std::string& key)
 const {
 
  868inline std::complex<double> RTable::get<std::complex<double> >(
const std::string& key) 
const {
 
  869    return get_complex_double(key);
 
  873inline b2000::csda<double> RTable::get<b2000::csda<double> >(
const std::string& key) 
const {
 
  874    return get_complex_double(key);
 
  878inline std::string RTable::get<std::string>(
 
  879      const std::string& key, 
const std::string& default_)
 const {
 
  880    return get_string(key, default_);
 
  884inline bool RTable::get<bool>(
const std::string& key, 
const bool& default_)
 const {
 
  889inline int RTable::get<int>(
const std::string& key, 
const int& default_)
 const {
 
  894inline double RTable::get<double>(
const std::string& key, 
const double& default_)
 const {
 
  899inline std::complex<double> RTable::get<std::complex<double> >(
 
  900      const std::string& key, 
const std::complex<double>& default_) 
const {
 
  901    return get_complex_double(key, default_);
 
  905inline b2000::csda<double> RTable::get<b2000::csda<double> >(
 
  906      const std::string& key, 
const b2000::csda<double>& default_) 
const {
 
  907    return get_complex_double(key, default_);
 
#define THROW
Definition b2exception.H:198
 
bool operator==(const bool o) const
Comparison with a bool. The data type must be of type BOOL.
Definition b2rtable.H:248
 
bool operator==(const char *o) const
Definition b2rtable.H:288
 
const std::type_info & type_info() const
Return the typeid() of the data type.
Definition b2rtable.H:169
 
const std::vector< std::complex< double > > & get_complex_double() const
Definition b2rtable.H:152
 
void set(InputIterator first, InputIterator last)
Copy a range.
Definition b2rtable.H:136
 
static size_t get_data_size(const int type, const size_t num_elements)
Definition b2rtable.H:215
 
void set(const std::vector< T > &v)
Copy a vector.
Definition b2rtable.H:130
 
bool operator==(const std::vector< double > &o) const
Comparison with a vector of double. The data type must be of type DOUBLE.
Definition b2rtable.H:266
 
void set(const bool v)
Assign a single bool value.
Definition b2rtable.H:87
 
int type() const
Definition b2rtable.H:166
 
RData()
Create an RData instance of type NONE.
Definition b2rtable.H:49
 
void set(const std::string &data)
Assign a string.
Definition b2rtable.H:115
 
RData(const double v)
Create an RData instance by assigning a single element.
Definition b2rtable.H:58
 
const std::vector< double > & get_double() const
Definition b2rtable.H:148
 
const std::vector< T > & get() const
Definition b2rtable.H:157
 
const std::string & get_string() const
Definition b2rtable.H:163
 
bool operator==(const std::vector< int > &o) const
Comparison with a vector of int. The data type must be of type INT.
Definition b2rtable.H:256
 
bool operator==(const int &o) const
Comparison with an int. The data type must be of type INT.
Definition b2rtable.H:251
 
bool operator==(const std::complex< double > &o) const
Definition b2rtable.H:272
 
bool empty() const
true if the number of elements is 0.
Definition b2rtable.H:208
 
void set(const std::complex< double > v)
Assign a single complex-double value.
Definition b2rtable.H:108
 
RData(const bool v)
Create an RData instance by assigning a single element.
Definition b2rtable.H:52
 
RData(InputIterator first, InputIterator last)
Create an RData instance by copying a range.
Definition b2rtable.H:69
 
void set(const double v)
Assign a single double value.
Definition b2rtable.H:101
 
bool get_bool() const
Definition b2rtable.H:142
 
RData(const std::vector< T > &v)
Create an RData instance by copying a vector.
Definition b2rtable.H:76
 
bool operator==(const std::string &o) const
Definition b2rtable.H:284
 
size_t get_data_size() const
Definition b2rtable.H:225
 
bool operator==(const std::vector< std::complex< double > > &o) const
Definition b2rtable.H:278
 
RData(const int v)
Create an RData instance by assigning a single element.
Definition b2rtable.H:55
 
const std::vector< int > & get_int() const
Definition b2rtable.H:145
 
RData(const std::complex< double > v)
Create an RData instance by assigning a single element.
Definition b2rtable.H:61
 
void set(const char *data)
Assign a 0-terminated array of characters.
Definition b2rtable.H:122
 
void set(const int v)
Assign a single integer value.
Definition b2rtable.H:94
 
size_t size() const
Definition b2rtable.H:188
 
static const char * type_to_string[6]
Definition b2rtable.H:46
 
bool operator==(const double &o) const
Comparison with a double. The data type must be of type DOUBLE.
Definition b2rtable.H:261
 
void set()
Assign NONE.
Definition b2rtable.H:81
 
const void * get_data() const
Definition b2rtable.H:229
 
Definition b2rtable.H:427
 
void set(const std::string &key, const std::vector< T > &v, const bool new_key=false)
Copy a vector. If new_key is true, the key must not exist.
Definition b2rtable.H:485
 
bool has_key(const std::string &key) const
Definition b2rtable.H:433
 
std::complex< double > get_complex_double(const std::string &key) const
Definition b2rtable.H:590
 
void get(const std::string &key, const size_t size_, std::complex< double > *v) const
Definition b2rtable.H:749
 
void update(const RTable &o)
Update with all (key,value) pairs from another RTable.
Definition b2rtable.H:457
 
void get(const std::string &key, std::vector< std::complex< double > > &v) const
Definition b2rtable.H:689
 
int get_int(const std::string &key, const int default_) const
Definition b2rtable.H:555
 
void get(const std::string &key, std::vector< double > &v) const
Definition b2rtable.H:670
 
void get(const std::string &key, const size_t size_, int *v) const
Definition b2rtable.H:730
 
bool get_bool(const std::string &key, const bool default_) const
Definition b2rtable.H:535
 
const RData & operator()(const std::string &key) const
Definition b2rtable.H:443
 
void get(const std::string &key, std::vector< int > &v) const
Definition b2rtable.H:663
 
void set(const std::string &key, InputIterator first, InputIterator last, const bool new_key=false)
Copy a range. If new_key is true, the key must not exist.
Definition b2rtable.H:497
 
T get(const std::string &key) const
Definition b2rtable.H:647
 
void get(const std::string &key, std::vector< b2000::csda< double > > &v) const
Definition b2rtable.H:708
 
std::string get_string(const std::string &key) const
Definition b2rtable.H:633
 
void remove_key(const std::string &key)
Remove entry "key".
Definition b2rtable.H:436
 
const char * update_from_array(const char *abegin, const char *aend)
Definition b2rtable.C:123
 
T get(const std::string &key, const T &default_) const
Definition b2rtable.H:656
 
b2000::csda< double > get_csda_double(const std::string &key) const
Definition b2rtable.H:603
 
b2000::csda< double > get_csda_double(const std::string &key, const b2000::csda< double > &default_) const
Definition b2rtable.H:626
 
bool get_bool(const std::string &key) const
Definition b2rtable.H:522
 
void append_to_array(std::vector< char > &a) const
Definition b2rtable.C:49
 
std::complex< double > get_complex_double(const std::string &key, const std::complex< double > &default_) const
Definition b2rtable.H:611
 
void set(const std::string &key, const T &v, const bool new_key=false)
Assign a single value. If new_key is true, the key must not exist.
Definition b2rtable.H:463
 
std::string get_string(const std::string &key, const std::string &default_) const
Definition b2rtable.H:638
 
std::string errmsg_context
Will be pre-pended to error messages.
Definition b2rtable.H:430
 
double get_double(const std::string &key, const double default_) const
Definition b2rtable.H:578
 
int get_int(const std::string &key) const
Definition b2rtable.H:546
 
RData & operator()(const std::string &key)
Definition b2rtable.H:450
 
void get(const std::string &key, const size_t size_, double *v) const
Definition b2rtable.H:739
 
double get_double(const std::string &key) const
Definition b2rtable.H:565
 
void set(const std::string &key, const std::string &s, const bool new_key=false)
Copy a string. If new_key is true, the key must not exist.
Definition b2rtable.H:510
 
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
 
GenericException< UnimplementedError_name > UnimplementedError
Definition b2exception.H:314