Thread: [Jahshaka-cvs] openlibraries/src/openpluginlib/py/pcos any.cpp, 1.6, 1.7
Status: Beta
Brought to you by:
jahshaka
From: tim <tim...@us...> - 2007-03-28 10:48:03
|
Update of /cvsroot/openlibraries/openlibraries/src/openpluginlib/py/pcos In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv25133/src/openpluginlib/py/pcos Modified Files: any.cpp Log Message: pcos: - allow correct discrimination between int and bool on construction Index: any.cpp =================================================================== RCS file: /cvsroot/openlibraries/openlibraries/src/openpluginlib/py/pcos/any.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- any.cpp 12 Dec 2006 11:48:54 -0000 1.6 +++ any.cpp 28 Mar 2007 10:47:53 -0000 1.7 @@ -28,11 +28,20 @@ pcos::double_list (*double_list_cast)( const pcos::any& ) = &pcos::any_cast< pcos::double_list >; bool (*bool_cast)( const pcos::any& ) = &pcos::any_cast< bool >; +// injected constructor +pcos::any* make_Value( py::back_reference<int> x ) +{ + if (x.source().ptr()-> ob_type == &PyBool_Type) { + return new pcos::any(x.get() != 0); + } + else { + return new pcos::any(x.get()); + } +} + void py_pcos_any() { - py::class_< pcos::any >( "any", py::init< int >() ) - .def( py::init< double >() ) - .def( py::init< int >() ) + py::class_< pcos::any >( "any", py::init< double >() ) .def( py::init< unsigned int >() ) .def( py::init< string >() ) .def( py::init< wstring >() ) @@ -41,7 +50,7 @@ .def( py::init< pcos::int_list >() ) .def( py::init< pcos::uint_list >() ) .def( py::init< pcos::double_list >() ) - .def( py::init< bool >() ) + .def("__init__", py::make_constructor(make_Value)) .def( "as_double", double_cast ) .def( "as_int", int_cast ) .def( "as_uint", uint_cast ) |