|
@@ -2062,15 +2062,18 @@ void InterfaceMakerPythonNative::write_function_instance(ostream &out, Interface
|
|
|
parameter_list += ", &" + param_name;
|
|
parameter_list += ", &" + param_name;
|
|
|
|
|
|
|
|
} else if (TypeManager::is_wstring(orig_type)) {
|
|
} else if (TypeManager::is_wstring(orig_type)) {
|
|
|
- indent(out,indent_level) << "Py_UNICODE *" << param_name
|
|
|
|
|
- << "_str; int " << param_name << "_len";
|
|
|
|
|
- format_specifiers += "u#";
|
|
|
|
|
- parameter_list += ", &" + param_name
|
|
|
|
|
- + "_str, &" + param_name + "_len";
|
|
|
|
|
|
|
+ indent(out,indent_level) << "PyUnicodeObject *" << param_name << "\n";
|
|
|
|
|
+ format_specifiers += "U";
|
|
|
|
|
+ parameter_list += ", &" + param_name;
|
|
|
|
|
+
|
|
|
|
|
+ extra_convert += " int " + param_name + "_len = PyUnicode_GetSize((PyObject *)" + param_name + "); wchar_t *" + param_name + "_str = new wchar_t[" + param_name + "_len]; PyUnicode_AsWideChar(" + param_name + ", " + param_name + "_str, " + param_name + "_len);";
|
|
|
|
|
+
|
|
|
pexpr_string = "basic_string<wchar_t>((wchar_t *)" +
|
|
pexpr_string = "basic_string<wchar_t>((wchar_t *)" +
|
|
|
param_name + "_str, " +
|
|
param_name + "_str, " +
|
|
|
param_name + "_len)";
|
|
param_name + "_len)";
|
|
|
|
|
|
|
|
|
|
+ extra_cleanup += " delete[] " + param_name + "_str;";
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
indent(out,indent_level) << "char *" << param_name
|
|
indent(out,indent_level) << "char *" << param_name
|
|
|
<< "_str; int " << param_name << "_len";
|
|
<< "_str; int " << param_name << "_len";
|