17#ifndef __B2DICTIONARY_H__
18#define __B2DICTIONARY_H__
53 virtual bool has_key(
const std::string& key)
const = 0;
56 virtual bool get_bool(
const std::string& key)
const = 0;
60 virtual bool get_bool(
const std::string& key,
bool default_)
const {
61 if (!
has_key(key)) {
return default_; }
66 virtual int get_int(
const std::string& key)
const = 0;
70 virtual int get_int(
const std::string& key,
int default_)
const {
71 if (!
has_key(key)) {
return default_; }
76 virtual double get_double(
const std::string& key)
const = 0;
80 virtual double get_double(
const std::string& key,
double default_)
const {
81 if (!
has_key(key)) {
return default_; }
91 const std::string& key, b2000::csda<double> default_)
const {
92 if (!
has_key(key)) {
return default_; }
102 const std::string& key, std::complex<double> default_)
const {
103 if (!
has_key(key)) {
return default_; }
108 virtual std::string
get_string(
const std::string& key)
const = 0;
112 virtual std::string
get_string(
const std::string& key,
const std::string& default_)
const {
115 }
catch (std::exception&) {
return default_; }
120 template <
typename T>
121 inline T
get(
const std::string& key)
const {
128 template <
typename T>
129 inline T
get(
const std::string& key,
const T& default_)
const {
135 virtual void get(
const std::string& key, std::vector<int>& v)
const = 0;
138 virtual void get(
const std::string& key, std::vector<double>& v)
const = 0;
141 virtual void get(
const std::string& key, std::vector<b2000::csda<double> >& v)
const = 0;
144 virtual void get(
const std::string& key, std::vector<std::complex<double> >& v)
const = 0;
150 virtual std::string has_string()
const {
return "?"; }
160std::ostream& operator<<(std::ostream& out,
const Dictionary& dictionary);
163inline std::string Dictionary::get<std::string>(
const std::string& key)
const {
164 return get_string(key);
168inline bool Dictionary::get<bool>(
const std::string& key)
const {
173inline int Dictionary::get<int>(
const std::string& key)
const {
178inline double Dictionary::get<double>(
const std::string& key)
const {
183inline b2000::csda<double> Dictionary::get<b2000::csda<double> >(
const std::string& key)
const {
184 return get_csda_double(key);
188inline std::complex<double> Dictionary::get<std::complex<double> >(
const std::string& key)
const {
189 return get_complex_double(key);
193inline std::string Dictionary::get<std::string>(
194 const std::string& key,
const std::string& default_)
const {
195 return get_string(key, default_);
199inline bool Dictionary::get<bool>(
const std::string& key,
const bool& default_)
const {
204inline int Dictionary::get<int>(
const std::string& key,
const int& default_)
const {
209inline double Dictionary::get<double>(
const std::string& key,
const double& default_)
const {
214inline b2000::csda<double> Dictionary::get<b2000::csda<double> >(
215 const std::string& key,
const b2000::csda<double>& default_)
const {
216 return get_csda_double(key, default_);
220inline std::complex<double> Dictionary::get<std::complex<double> >(
221 const std::string& key,
const std::complex<double>& default_)
const {
222 return get_complex_double(key, default_);
#define THROW
Definition b2exception.H:198
Definition b2dictionary.H:48
virtual void get(const std::string &key, std::vector< double > &v) const =0
virtual b2000::csda< double > get_csda_double(const std::string &key, b2000::csda< double > default_) const
Definition b2dictionary.H:90
virtual bool get_bool(const std::string &key) const =0
virtual std::string get_string(const std::string &key) const =0
virtual std::complex< double > get_complex_double(const std::string &key) const =0
virtual void get(const std::string &key, std::vector< b2000::csda< double > > &v) const =0
virtual void warn_on_non_used_key() const =0
virtual double get_double(const std::string &key) const =0
virtual void get(const std::string &key, std::vector< std::complex< double > > &v) const =0
virtual bool get_bool(const std::string &key, bool default_) const
Definition b2dictionary.H:60
virtual int get_int(const std::string &key) const =0
virtual std::string get_string(const std::string &key, const std::string &default_) const
Definition b2dictionary.H:112
virtual std::complex< double > get_complex_double(const std::string &key, std::complex< double > default_) const
Definition b2dictionary.H:101
virtual void get(const std::string &key, std::vector< int > &v) const =0
T get(const std::string &key, const T &default_) const
Definition b2dictionary.H:129
virtual double get_double(const std::string &key, double default_) const
Definition b2dictionary.H:80
virtual int get_int(const std::string &key, int default_) const
Definition b2dictionary.H:70
virtual b2000::csda< double > get_csda_double(const std::string &key) const =0
static Dictionary & get_empty()
Definition b2dictionary.C:78
T get(const std::string &key) const
Definition b2dictionary.H:121
virtual bool has_key(const std::string &key) const =0
Definition b2object.H:340
Definition b2object.H:456
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
GenericException< UnimplementedError_name > UnimplementedError
Definition b2exception.H:314