X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=py%2Fannotations.cpp;h=453406dce8105d27e0e1daf55d0160574468fd1a;hp=4c0c53cca80a34ebd88019a079d8c25be5952b8c;hb=b2b25b0aeb07c0a77e5a552ae0c29238578442ea;hpb=c417e847eccd0af3bf9dfed0bc252115bbbf3d83 diff --git a/py/annotations.cpp b/py/annotations.cpp index 4c0c53c..453406d 100644 --- a/py/annotations.cpp +++ b/py/annotations.cpp @@ -8,11 +8,30 @@ using namespace boost::python; #include "alg/annotations.hpp" - #include "stl_container_adapter.hpp" +#include + +typedef std::pair pair_string; + +struct pair_string_to_tuple +{ + static PyObject * convert(pair_string const &p) { + PyObject *key = PyString_FromString(p.first.c_str()); + PyObject *value = PyString_FromString(p.second.c_str()); + PyObject *tuple = PyTuple_New(2); + if (key == 0 or value == 0 or tuple == 0) + throw std::runtime_error("Allocation Error"); + + PyTuple_SetItem(tuple, 0, key); + PyTuple_SetItem(tuple, 1, value); + return tuple; + } +}; + void export_annotations() { + to_python_converter(); class_("annotations", init()) .add_property("name", &Annotations::name, &Annotations::setName) @@ -21,10 +40,12 @@ void export_annotations() .def("__getitem__", &map_item::get, return_value_policy()) .def("__setitem__", &map_item::set) + .def("__iter__", iterator()) .def("__len__", &Annotations::size) .def("keys", &map_item::keys) .def("values", &map_item::values) .def("items", &map_item::items) + ; //register_ptr_to_python< AnnotationsRef >();