smarter type extraction in python_to_value
This commit is contained in:
parent
b860b58f0f
commit
180bc17fc6
1 changed files with 26 additions and 18 deletions
|
@ -82,29 +82,37 @@ namespace mapnik {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PyBool_Check(obj.ptr()))
|
||||||
|
{
|
||||||
|
extract<mapnik::value_bool> ex(obj);
|
||||||
|
if (ex.check())
|
||||||
|
{
|
||||||
|
vars[key] = ex();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (PyFloat_Check(obj.ptr()))
|
||||||
|
{
|
||||||
|
extract<mapnik::value_double> ex(obj);
|
||||||
|
if (ex.check())
|
||||||
|
{
|
||||||
|
vars[key] = ex();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
extract<mapnik::value_integer> ex(obj);
|
||||||
|
if (ex.check())
|
||||||
|
{
|
||||||
|
vars[key] = ex();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
extract<std::string> ex0(obj);
|
extract<std::string> ex0(obj);
|
||||||
if (ex0.check())
|
if (ex0.check())
|
||||||
{
|
{
|
||||||
vars[key] = tr_.transcode(ex0().c_str());
|
vars[key] = tr_.transcode(ex0().c_str());
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
extract<mapnik::value_integer> ex2(obj);
|
|
||||||
if (ex2.check())
|
|
||||||
{
|
|
||||||
vars[key] = ex2();
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
extract<double> ex3(obj);
|
|
||||||
if (ex3.check())
|
|
||||||
{
|
|
||||||
vars[key] = ex3();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
extract<mapnik::value_bool> ex1(obj);
|
|
||||||
if (ex1.check())
|
|
||||||
{
|
|
||||||
vars[key] = ex1();
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return vars;
|
return vars;
|
||||||
|
|
Loading…
Reference in a new issue