19 #include <boost/type_traits.hpp>
20 #include <boost/tokenizer.hpp>
21 #include <boost/shared_ptr.hpp>
22 #include <boost/make_shared.hpp>
23 #include <boost/algorithm/string.hpp>
49 <<
" do not match type: " << EI_TypeName::qval <<
";\n"
50 <<
"During declaration of the key: " << EI_KeyName::qval );
75 virtual string type_name()
const {
return "TypeBase"; }
104 {
return typeid(*this) ==
typeid(other); }
108 {
return ! (*
this == other); }
118 static void lazy_finish();
140 virtual bool valid_default(
const string &str)
const =0;
170 static bool is_valid_identifier(
const string& key);
199 static bool was_constructed(
const TypeBase * ptr);
239 : lower_bound_(min_size), upper_bound_(max_size), finished(false)
256 template <
class ValueType>
257 Array(
const ValueType &type,
unsigned int min_size=0,
unsigned int max_size=std::numeric_limits<unsigned int>::max() );
260 virtual bool finish();
263 return data_->finished; }
267 ASSERT( data_->finished,
"Getting sub-type from unfinished Array.\n");
268 return *data_->type_of_values_; }
272 return size >=data_->lower_bound_ && size<=data_->upper_bound_; }
275 virtual string type_name()
const;
278 virtual string full_type_name()
const;
288 virtual bool valid_default(
const string &str)
const;
309 virtual string full_type_name()
const;
326 bool from_default(
const string &str)
const;
328 virtual string type_name()
const;
330 virtual bool valid_default(
const string &str)
const;
345 Integer(
int lower_bound=std::numeric_limits<int>::min(),
int upper_bound=std::numeric_limits<int>::max())
346 : lower_bound_(lower_bound), upper_bound_(upper_bound)
352 bool match(
int value)
const;
357 int from_default(
const string &str)
const;
359 virtual bool valid_default(
const string &str)
const;
361 virtual string type_name()
const;
380 Double(
double lower_bound= -std::numeric_limits<double>::max(),
double upper_bound=std::numeric_limits<double>::max())
381 : lower_bound_(lower_bound), upper_bound_(upper_bound)
387 bool match(
double value)
const;
390 virtual bool valid_default(
const string &str)
const;
395 double from_default(
const string &str)
const;
397 virtual string type_name()
const;
414 virtual string type_name()
const;
418 string from_default(
const string &str)
const;
423 virtual bool match(
const string &value)
const;
426 virtual bool valid_default(
const string &str)
const;
452 virtual string type_name()
const;
455 {
return typeid(*this) ==
typeid(other) &&
456 (type_== static_cast<const FileName *>(&other)->get_file_type() );
460 virtual bool match(
const string &str)
const;