ultimatepp/bazaar/BoostPyTest/UppString.h
kohait bbc2ef5b80 bazaar: BoostPyTest: Value export for the common types, including String and ValueArray
git-svn-id: svn://ultimatepp.org/upp/trunk@3340 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2011-04-13 21:12:59 +00:00

48 lines
1 KiB
C++

#ifndef _BoostPyTest_UppString_h_
#define _BoostPyTest_UppString_h_
#include <Py/Py.h>
using namespace boost::python;
#include <Core/Core.h>
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<String>());
}
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<String>*)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