Provide some additional conversions from attribute_value to numeric types.

This commit is contained in:
J. Tyne 2012-12-14 15:05:34 +00:00
parent 4d8768ca9c
commit 19e0974935
2 changed files with 39 additions and 5 deletions

View file

@ -175,21 +175,52 @@ int config::attribute_value::to_int(int def) const
return def;
}
long config::attribute_value::to_long(long def) const
unsigned config::attribute_value::to_unsigned(unsigned def) const
{
const double* i = boost::get<const double>(&value_);
if(i != NULL)
{
return unsigned(*i);
}
return def;
}
long long config::attribute_value::to_long_long(long long def) const
{
const double* i = boost::get<const double>(&value_);
if (i != NULL)
{
return long(*i);
return static_cast<long long>(*i);
}
return def;
}
size_t config::attribute_value::to_size_t(size_t def) const
{
const double* i = boost::get<const double>(&value_);
if (i != NULL)
{
return static_cast<size_t>(*i);
}
return def;
}
time_t config::attribute_value::to_time_t(time_t def) const
{
const double* i = boost::get<const double>(&value_);
if (i != NULL)
{
return static_cast<time_t>(*i);
}
return def;
}
double config::attribute_value::to_double(double def) const
{
const double* d = boost::get<const double>(&value_);;
const double* d = boost::get<const double>(&value_);
if(d != NULL)
{
return *d;;
return *d;
}
return def;
}

View file

@ -208,7 +208,10 @@ public:
// Extracting as a specific type:
bool to_bool(bool def = false) const;
int to_int(int def = 0) const;
long to_long(long def = 0) const;
unsigned to_unsigned(unsigned def = 0) const;
long long to_long_long(long long def = 0) const;
size_t to_size_t(size_t def = 0) const;
time_t to_time_t(time_t def = 0) const;
double to_double(double def = 0.) const;
std::string str() const;
t_string t_str() const;