r5224: Add in/out typemaps for resume handles. This saves us having to much
authorTim Potter <tpot@samba.org>
Fri, 4 Feb 2005 06:35:45 +0000 (06:35 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:09:33 +0000 (13:09 -0500)
around with pointers to just one uint32.

Add an output typemap to copy a policy handle as the talloc context is
destroyed before the wrapper function returns.  More work here needed
to avoid memory leaks.

Use the swig carrays.i file to create accessor and setter functions
for fixed width integer types.  Also add functions for struct samr_SamEntry
as it's returned by the LookupDomain RPC.  This really needs to be
done by pidl so I don't have to go through and find all the structures
that are returned in arrays.

Include security.i to give us SIDs and security descriptors.
(This used to be commit 5a1f6c999ef5e84e93ec8f07b9751d795c4566a5)

source4/scripting/swig/dcerpc.i

index 52cd83350894f3c00d25de25d270c40432bbb93a..53aaf29b1f1556fd968ffb4b53e37712f2eebf4a 100644 (file)
@@ -169,10 +169,49 @@ NTSTATUS dcerpc_pipe_connect(struct dcerpc_pipe **OUT,
 
 const char *dcerpc_server_name(struct dcerpc_pipe *p);
 
+/* Some typemaps for easier access to resume handles.  Really this can
+   also be done using the uint32 carray functions, but it's a bit of a
+   hassle.  TODO: Fix memory leak here. */
+
+%typemap(in) uint32_t *resume_handle {
+       $1 = malloc(sizeof(*$1));
+       *$1 = PyLong_AsLong($input);
+}
+
+%typemap(out) uint32_t *resume_handle {
+       $result = PyLong_FromLong(*$1);
+}
+
+/* When returning a policy handle to Python we need to make a copy of
+   as the talloc context it is created under is destroyed after the
+   wrapper function returns.  TODO: Fix memory leak created here. */
+
+%typemap(out) struct policy_handle * {
+       struct policy_handle *temp = (struct policy_handle *)malloc(sizeof(struct policy_handle));
+       memcpy(temp, $1, sizeof(struct policy_handle));
+       $result = SWIG_NewPointerObj(temp, SWIGTYPE_p_policy_handle, 0);
+}
+
 %{
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 %}
 
+%include "carrays.i"
+
+/* Some functions for accessing arrays of fixed-width integers. */
+
+%array_functions(uint8_t, uint8_array);
+%array_functions(uint16_t, uint16_array);
+%array_functions(uint32_t, uint32_array);
+
+/* Functions for handling arrays of structures.  It would be nice for 
+   pidl to automatically generating these instead of having to find
+   them all by hand. */
+
+%array_functions(struct samr_SamEntry, samr_SamEntry_array);
+
 %include "librpc/gen_ndr/misc.i"
+%include "librpc/gen_ndr/security.i"
 %include "librpc/gen_ndr/samr.i"