pidl/python: support HRESULT errors in generated python bindings.
authorGünther Deschner <gd@samba.org>
Mon, 7 Apr 2014 13:47:02 +0000 (15:47 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 13 Mar 2015 22:58:07 +0000 (23:58 +0100)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
pidl/lib/Parse/Pidl/Samba4/Python.pm
source4/libcli/util/pyerrors.h

index 920d10acadc50fea39ae3a4d5e40b1450859afa3..91201bbd1f122407489583cfb669f2889d28e9f6 100644 (file)
@@ -1059,6 +1059,11 @@ sub ConvertObjectFromPythonData($$$$$$;$)
                return;
        }
 
+       if ($actual_ctype->{TYPE} eq "SCALAR" and $actual_ctype->{NAME} eq "HRESULT") {
+               $self->pidl("$target = HRES_ERROR(PyInt_AsLong($cvar));");
+               return;
+       }
+
        if ($actual_ctype->{TYPE} eq "SCALAR" and $actual_ctype->{NAME} eq "string_array") {
                $self->pidl("$target = PyCObject_AsVoidPtr($cvar);");
                return;
@@ -1212,6 +1217,10 @@ sub ConvertScalarToPython($$$)
                return "PyErr_FromWERROR($cvar)";
        }
 
+       if ($ctypename eq "HRESULT") {
+               return "PyErr_FromHRESULT($cvar)";
+       }
+
        if (($ctypename eq "string" or $ctypename eq "nbt_string" or $ctypename eq "nbt_name" or $ctypename eq "wrepl_nbt_name")) {
                return "PyString_FromStringOrNULL($cvar)";
        }
index 0241e961e5ede38c024849cfd20c077c7df2bffd..ef997131fff5ef0a016c718c42eccdb21aa522f5 100644 (file)
@@ -22,6 +22,8 @@
 
 #define PyErr_FromWERROR(err) Py_BuildValue("(i,s)", W_ERROR_V(err), discard_const_p(char, win_errstr(err)))
 
+#define PyErr_FromHRESULT(err) Py_BuildValue("(i,s)", HRES_ERROR_V(err), discard_const_p(char, hresult_errstr_const(err)))
+
 #define PyErr_FromNTSTATUS(status) Py_BuildValue("(i,s)", NT_STATUS_V(status), discard_const_p(char, get_friendly_nt_error_msg(status)))
 
 #define PyErr_FromString(str) Py_BuildValue("(s)", discard_const_p(char, str))