#ifndef _BoostPyTest_UppString_h_ #define _BoostPyTest_UppString_h_ #include using namespace boost::python; #include using namespace Upp; //a convertable instance struct String_to_python_str { static PyObject* convert(const String& s) { return incref(object(s.Begin()).ptr()); } }; struct String_from_python_str { String_from_python_str() { converter::registry::push_back(&convertible, &construct, type_id()); } static void* convertible(PyObject* po) { if(PyString_Check(po)) return po; return 0; } static void construct(PyObject* po, converter::rvalue_from_python_stage1_data* data) { void* d = ((converter::rvalue_from_python_storage*)data)->storage.bytes; const char* c = PyString_AsString(po); if(c == 0) throw_error_already_set(); new(d) String(c); data->convertible = d; } }; String Stringhello(); //tests to-python std::size_t Stringsize(const String& s); //tests from-python //fw void export_UppString(); #endif