mirror of
https://github.com/boostorg/python.git
synced 2026-01-22 05:22:45 +00:00
implemented a arg_from_python converter that converts py3k unicode to const char*, not an ideal solution, just experimenting.
[SVN r53653]
This commit is contained in:
@@ -62,6 +62,35 @@ struct arg_from_python<PyObject* const&>
|
||||
PyObject* m_source;
|
||||
};
|
||||
|
||||
#if PY_VERSION_HEX >= 0x03000000
|
||||
// specialization for const char *, experimenting
|
||||
template <>
|
||||
struct arg_from_python<const char*>
|
||||
{
|
||||
typedef const char* result_type;
|
||||
|
||||
arg_from_python(PyObject* p) : m_source(p), intermediate(0) {}
|
||||
bool convertible() const
|
||||
{
|
||||
return PyUnicode_Check(m_source);
|
||||
}
|
||||
const char* operator()()
|
||||
{
|
||||
const char* result;
|
||||
intermediate = PyUnicode_AsUTF8String(m_source);
|
||||
result = PyBytes_AsString(intermediate);
|
||||
return result;
|
||||
}
|
||||
~arg_from_python()
|
||||
{
|
||||
Py_DECREF(intermediate);
|
||||
}
|
||||
private:
|
||||
PyObject* m_source;
|
||||
PyObject* intermediate;
|
||||
};
|
||||
#endif
|
||||
|
||||
//
|
||||
// implementations
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user