}
if ($actual_ctype->{TYPE} eq "SCALAR" and $actual_ctype->{NAME} eq "string_array") {
- $self->pidl("$target = pyrpc_string_array_from_PyList($mem_ctx, $cvar, \"$target\");");
+ $self->pidl("$target = pytalloc_get_ptr($cvar);");
return;
}
# Not yet supported
if ($ctypename eq "string_array") {
- return "pyrpc_string_array_to_PyList($cvar)";
+ return "pytalloc_GenericObject_reference_ex($mem_ctx, $cvar)";
}
if ($ctypename eq "ipv4address") { return "PyString_FromStringOrNULL($cvar)"; }
if ($ctypename eq "ipv6address") { return "PyString_FromStringOrNULL($cvar)"; }
return PyStr_FromString(str);
}
-const char **pyrpc_string_array_from_PyList(TALLOC_CTX *mem_ctx, PyObject *list,
- const char *debug_name)
-{
- const char **ret = NULL;
- Py_ssize_t i;
-
- if (!PyList_Check(list)) {
- PyErr_Format(PyExc_TypeError, "%s is not a list", debug_name);
- return NULL;
- }
-
- ret = talloc_array(NULL, const char *, PyList_Size(list)+1);
- if (ret == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
-
- for (i = 0; i < PyList_Size(list); i++) {
- const char *str = NULL;
- Py_ssize_t size;
- PyObject *item = PyList_GetItem(list, i);
- if (!PyStr_Check(item)) {
- PyErr_Format(PyExc_TypeError, "%s should be strings",
- debug_name);
- talloc_free(ret);
- return NULL;
- }
- str = PyStr_AsUTF8AndSize(item, &size);
- if (str == NULL) {
- talloc_free(ret);
- return NULL;
- }
- ret[i] = talloc_strndup(ret, str, size);
- if (ret[i] == NULL) {
- talloc_free(ret);
- PyErr_NoMemory();
- return NULL;
- }
- }
-
- ret[i] = NULL;
- return ret;
-}
-
-PyObject *pyrpc_string_array_to_PyList(const char **string_array)
-{
- /*
- * TODO
- */
- Py_RETURN_NONE;
-}
-
PyObject *pyrpc_import_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level,
const void *in, const char *typename)
{
PyObject *PyString_FromStringOrNULL(const char *str);
-const char **pyrpc_string_array_from_PyList(TALLOC_CTX *mem_ctx, PyObject *list,
- const char *debug_name);
-PyObject *pyrpc_string_array_to_PyList(const char **string_array);
-
PyObject *pyrpc_import_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level,
const void *in, const char *typename);
void *pyrpc_export_union(PyTypeObject *type, TALLOC_CTX *mem_ctx, int level,