aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/conversions.h
diff options
context:
space:
mode:
Diffstat (limited to 'libshiboken/conversions.h')
-rw-r--r--libshiboken/conversions.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/libshiboken/conversions.h b/libshiboken/conversions.h
index 1cb4f913a..4b6d8e388 100644
--- a/libshiboken/conversions.h
+++ b/libshiboken/conversions.h
@@ -523,8 +523,32 @@ struct Converter_CString
}
};
-template <> struct Converter<char*> : Converter_CString<char*> {};
template <> struct Converter<const char*> : Converter_CString<const char*> {};
+template <> struct Converter<char*> : Converter_CString<char*>
+{
+ static inline char* toCpp(PyObject* pyobj)
+ {
+ if (pyobj == Py_None)
+ return 0;
+ return strdup(PyString_AsString(pyobj));
+ }
+};
+
+template <> struct Converter<std::string> : Converter_CString<std::string>
+{
+ static inline PyObject* toPython(void* cppobj) { return toPython(*reinterpret_cast<std::string*>(cppobj)); }
+ static inline PyObject* toPython(std::string cppObj)
+ {
+ return PyString_FromString(cppObj.c_str());
+ }
+
+ static inline std::string toCpp(PyObject* pyobj)
+ {
+ if (pyobj == Py_None)
+ return 0;
+ return std::string(PyString_AsString(pyobj));
+ }
+};
// C++ containers -------------------------------------------------------------
// The following container converters are meant to be used for pairs, lists and maps