Value.basetype in Python returns a Value's base type

This commit is contained in:
John Wiegley 2009-11-11 02:58:06 -05:00
parent ed9209cc27
commit 4a4ff9d4b2

View file

@ -47,6 +47,22 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(set_string_overloads, set_string, 0, 2)
namespace {
PyObject * py_base_type(value_t& value) {
if (value.is_boolean()) {
return (PyObject *)&PyBool_Type;
}
else if (value.is_long()) {
return (PyObject *)&PyInt_Type;
}
else if (value.is_string()) {
return (PyObject *)&PyUnicode_Type;
}
else {
object typeobj(object(value).attr("__class__"));
return typeobj.ptr();
}
}
expr_t py_value_getattr(const value_t& value, const string& name)
{
if (value.is_scope()) {
@ -305,6 +321,8 @@ void export_value()
.def("label", &value_t::label)
.def("valid", &value_t::valid)
.def("basetype", py_base_type)
;
scope().attr("NULL_VALUE") = NULL_VALUE;