2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-20 04:42:28 +00:00

clean other attempts for making unicode -> const char* conversion work, since now we have the right way in previous commit.

[SVN r53693]
This commit is contained in:
Haoyu Bai
2009-06-06 14:51:35 +00:00
parent 6fe34b46d4
commit eea11df1ea
2 changed files with 0 additions and 51 deletions

View File

@@ -62,35 +62,6 @@ 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
//

View File

@@ -370,24 +370,6 @@ namespace
#endif
};
#if PY_VERSION_HEX >= 0x03000000
// A SlotPolicy for extracting C char* string from Python 3 unicode string.
struct char_rvalue_from_python
{
static unaryfunc* get_slot(PyObject *obj)
{
printf("*********CALLED*************\n");
return PyUnicode_Check(obj) ? &py_unicode_as_string_unaryfunc : 0;
}
static const char* extract(PyObject* intermediate)
{
return PyBytes_AsString(intermediate);
}
static PyTypeObject const* get_pytype() { return &PyUnicode_Type;}
};
#endif
#if defined(Py_USING_UNICODE) && !defined(BOOST_NO_STD_WSTRING)
// encode_string_unaryfunc/py_encode_string -- manufacture a unaryfunc
// "slot" which encodes a Python string using the default encoding
@@ -541,10 +523,6 @@ void initialize_builtin_converters()
registry::insert(convert_to_cstring,type_id<char>(),&converter::wrap_pytype<&PyString_Type>::get_pytype);
#else
registry::insert(convert_to_cstring,type_id<char>(),&converter::wrap_pytype<&PyUnicode_Type>::get_pytype);
//TODO(bhy) This doesn't work because for const char* a lvalue converter is
// always expected. (See select_extract in extract.hpp for detail)
// So we should figure out a workaround.
//slot_rvalue_from_python<const char*, char_rvalue_from_python>();
#endif
// Register by-value converters to std::string, std::wstring