All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ivan Gyurdiev <ivg2@cornell.edu>
To: SELinux List <SELinux@tycho.nsa.gov>
Cc: Stephen Smalley <sds@tycho.nsa.gov>,
	Joshua Brindle <jbrindle@tresys.com>
Subject: Move python bindings into semanageswig_python.i
Date: Tue, 14 Feb 2006 07:08:44 -0500	[thread overview]
Message-ID: <43F1C84C.5030800@cornell.edu> (raw)
In-Reply-To: <43F1B827.401@cornell.edu>

[-- Attachment #1: Type: text/plain, Size: 1052 bytes --]

Ivan Gyurdiev wrote:
> Attached is a resync of this patch against current genhomedircon.
Now move python stuff into semanageswig_python.i. Trim #include list to 
semanage/semanage.h, which is sufficient. Actually, I doubt that's 
needed at all, since swig seems to prototype all wrapped functions itself.

I define "python stuff" as any typemaps, which are overriding the normal 
SWIG-generated output with custom code - things that re-direct pointers 
to output, as well as list-to-array conversions. There should be no need 
to override swig in the language independent .i file. Also move the lone 
char_by_idx function. Other by_idx functions should be kept out, because 
they might not be needed in other languages. In fact, I should look at 
char_by_idx too, it's probably not needed.

Patch requires resync-ed pylist patch above, as well as the small 
free-leak patch I sent earlier.
It doesn't attempt to make the Makefile language independent - it just 
renames the current .i file being used (it's already hardcoded to use 
-python anyways).


[-- Attachment #2: libsemanage.split_swig.diff --]
[-- Type: text/x-patch, Size: 22443 bytes --]

diff -Naurp --exclude-from excludes old/libsemanage/src/Makefile new/libsemanage/src/Makefile
--- old/libsemanage/src/Makefile	2006-01-27 10:00:53.000000000 -0500
+++ new/libsemanage/src/Makefile	2006-02-14 06:52:03.000000000 -0500
@@ -23,7 +23,7 @@ LIBVERSION = 1
 
 LIBA=libsemanage.a
 TARGET=libsemanage.so
-SWIGIF= semanageswig.i
+SWIGIF= semanageswig_python.i
 SWIGCOUT= semanageswig_wrap.c
 SWIGLOBJ:= $(patsubst %.c,%.lo,$(SWIGCOUT)) 
 SWIGSO=_semanage.so
diff -Naurp --exclude-from excludes old/libsemanage/src/semanageswig.i new/libsemanage/src/semanageswig.i
--- old/libsemanage/src/semanageswig.i	2006-02-14 06:48:05.000000000 -0500
+++ new/libsemanage/src/semanageswig.i	2006-02-14 06:56:05.000000000 -0500
@@ -1,6 +1,7 @@
 /* Author: Spencer Shimko <sshimko@tresys.com>
  *
  * Copyright (C) 2004-2005 Tresys Technology, LLC
+ * Copyright (C) 2006 Red Hat, Inc.
  * 
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -20,381 +21,9 @@
 
 %module semanage
 %{
-	#include "semanage/debug.h"
-	#include "semanage/handle.h"
-	#include "semanage/modules.h"
-	#include "semanage/context_record.h"
-	#include "semanage/boolean_record.h"
-	#include "semanage/booleans_policy.h"
-	#include "semanage/booleans_local.h"
-	#include "semanage/booleans_active.h"
-	#include "semanage/iface_record.h"
-	#include "semanage/node_record.h"
-	#include "semanage/interfaces_local.h"
-	#include "semanage/interfaces_policy.h"
-	#include "semanage/user_record.h"
-	#include "semanage/users_local.h"
-	#include "semanage/users_policy.h"
-	#include "semanage/port_record.h"
-	#include "semanage/ports_local.h"
-	#include "semanage/ports_policy.h"
-	#include "semanage/seuser_record.h"
-	#include "semanage/fcontext_record.h"
-	#include "semanage/fcontexts_local.h"
-	#include "semanage/fcontexts_policy.h"
-	#include "semanage/seusers_local.h"
-	#include "semanage/seusers_policy.h"
-	#include "semanage/nodes_local.h"
-	#include "semanage/nodes_policy.h"
 	#include "semanage/semanage.h"
 %}
 
-%inline {
-	char *char_by_idx(char **list, int n) {
-		return list[n];
-	}
-}
-
-
-/** standard typemaps **/
-
-/* a few helpful typemaps are available in this library */
-%include <typemaps.i>
-/* wrap all int*'s so they can be used for results 
-   if it becomes necessary to send in data this should be changed to INOUT */
-%apply int *OUTPUT { int * };
-%apply int *OUTPUT { size_t * };
-%apply int *OUTPUT { unsigned int * };
-
-%typemap(in, numinputs=0) char **(char *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) char** {
-	$result = t_output_helper($result, SWIG_FromCharPtr(*$1));
-	free(*$1);
-}
-
-%typemap(in, numinputs=0) char ***(char **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) char*** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_char, 0));
-}
-
-/** module typemaps**/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_module_info_t ** parameter */
-%typemap(in, numinputs=0) semanage_module_info_t **(semanage_module_info_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_module_info_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_module_info, 0));
-}
-
-/** context typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_context_t ** parameter */
-%typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_context_t** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_context, 0));
-}
-
-/** boolean typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_bool_t *** parameter */
-%typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_bool_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_bool, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}
-
-%typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_bool_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool, 0));
-}
-
-%typemap(argout) semanage_bool_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp) {
-	$1 = &temp;
-}
-
-/** fcontext typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_fcontext_t *** parameter */
-%typemap(in, numinputs=0) semanage_fcontext_t ***(semanage_fcontext_t **temp) {
-        $1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_fcontext_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_fcontext, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}
-
-%typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp) {
-        $1 = &temp;
-}
-
-%typemap(argout) semanage_fcontext_t ** {
-        $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_fcontext, 0));
-}
-
-%typemap(argout) semanage_fcontext_key_t ** {
-        $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_fcontext_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_fcontext_key_t **(semanage_fcontext_key_t *temp) {
-        $1 = &temp;
-}
-
-/** interface typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_iface_t *** parameter */
-%typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_iface_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_iface, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}	
-
-%typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_iface_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface, 0));
-}
-
-%typemap(argout) semanage_iface_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp) {
-	$1 = &temp;
-}
-
-/** seuser typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_seuser_t *** parameter */
-%typemap(in, numinputs=0) semanage_seuser_t ***(semanage_seuser_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_seuser_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_seuser, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}	
-
-%typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_seuser_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_seuser, 0));
-}
-
-%typemap(argout) semanage_seuser_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_seuser_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_seuser_key_t **(semanage_seuser_key_t *temp) {
-	$1 = &temp;
-}
-
-/** user typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_user_t *** parameter */
-%typemap(in, numinputs=0) semanage_user_t ***(semanage_user_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_user_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_user, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}
-	
-%typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_user_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_user, 0));
-}
-
-%typemap(argout) semanage_user_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_user_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_user_key_t **(semanage_user_key_t *temp) {
-	$1 = &temp;
-}
-
-/** port typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_port_t *** parameter */
-%typemap(in, numinputs=0) semanage_port_t ***(semanage_port_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_port_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++) 
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_port, 0));
-	
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}	
-
-%typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_port_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_port, 0));
-}
-
-%typemap(argout) semanage_port_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_port_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_port_key_t **(semanage_port_key_t *temp) {
-	$1 = &temp;
-}
-
-/** node typemaps **/
-
-/* the wrapper will setup this parameter for passing... the resulting python functions
-   will not take the semanage_node_t *** parameter */
-%typemap(in, numinputs=0) semanage_node_t ***(semanage_node_t **temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) (
-	semanage_handle_t* handle,
-	semanage_node_t*** records,
-	unsigned int* count) {
-
-	if (result >= 0) {
-		PyObject* plist = PyList_New(*$3);
-		unsigned int i;
-
-		for (i = 0; i < *$3; i++)
-			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_node, 0));
-
-		$result = t_output_helper($result, plist);
-		free(*$2);
-	}
-}
-
-%typemap(in, numinputs=0) semanage_node_t **(semanage_node_t *temp) {
-	$1 = &temp;
-}
-
-%typemap(argout) semanage_node_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_node, 0));
-}
-
-
-%typemap(argout) semanage_node_key_t ** {
-	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_node_key, 0));
-}
-
-%typemap(in, numinputs=0) semanage_node_key_t **(semanage_node_key_t *temp) {
-	$1 = &temp;
-}
-
 /* pull in the headers */
 %include "../include/semanage/debug.h"
 %include "../include/semanage/handle.h"
diff -Naurp --exclude-from excludes old/libsemanage/src/semanageswig_python.i new/libsemanage/src/semanageswig_python.i
--- old/libsemanage/src/semanageswig_python.i	1969-12-31 19:00:00.000000000 -0500
+++ new/libsemanage/src/semanageswig_python.i	2006-02-14 06:56:10.000000000 -0500
@@ -0,0 +1,366 @@
+/* Author: Spencer Shimko <sshimko@tresys.com>
+ *
+ * Copyright (C) 2004-2005 Tresys Technology, LLC
+ * Copyright (C) 2006 Red Hat, Inc
+ *  
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/** standard typemaps **/
+
+/* a few helpful typemaps are available in this library */
+%include <typemaps.i>
+/* wrap all int*'s so they can be used for results 
+   if it becomes necessary to send in data this should be changed to INOUT */
+%apply int *OUTPUT { int * };
+%apply int *OUTPUT { size_t * };
+%apply int *OUTPUT { unsigned int * };
+
+%inline {
+	char *char_by_idx(char **list, int n) {
+		return list[n];
+	}
+}
+
+%typemap(in, numinputs=0) char **(char *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) char** {
+	$result = t_output_helper($result, SWIG_FromCharPtr(*$1));
+	free(*$1);
+}
+
+%typemap(in, numinputs=0) char ***(char **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) char*** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_char, 0));
+}
+
+/** module typemaps**/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_module_info_t ** parameter */
+%typemap(in, numinputs=0) semanage_module_info_t **(semanage_module_info_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_module_info_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_module_info, 0));
+}
+
+/** context typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_context_t ** parameter */
+%typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_context_t** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_context, 0));
+}
+
+/** boolean typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_bool_t *** parameter */
+%typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_bool_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_bool, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}
+
+%typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_bool_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool, 0));
+}
+
+%typemap(argout) semanage_bool_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp) {
+	$1 = &temp;
+}
+
+/** fcontext typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_fcontext_t *** parameter */
+%typemap(in, numinputs=0) semanage_fcontext_t ***(semanage_fcontext_t **temp) {
+        $1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_fcontext_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_fcontext, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}
+
+%typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp) {
+        $1 = &temp;
+}
+
+%typemap(argout) semanage_fcontext_t ** {
+        $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_fcontext, 0));
+}
+
+%typemap(argout) semanage_fcontext_key_t ** {
+        $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_fcontext_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_fcontext_key_t **(semanage_fcontext_key_t *temp) {
+        $1 = &temp;
+}
+
+/** interface typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_iface_t *** parameter */
+%typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_iface_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_iface, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}	
+
+%typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_iface_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface, 0));
+}
+
+%typemap(argout) semanage_iface_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp) {
+	$1 = &temp;
+}
+
+/** seuser typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_seuser_t *** parameter */
+%typemap(in, numinputs=0) semanage_seuser_t ***(semanage_seuser_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_seuser_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_seuser, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}	
+
+%typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_seuser_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_seuser, 0));
+}
+
+%typemap(argout) semanage_seuser_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_seuser_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_seuser_key_t **(semanage_seuser_key_t *temp) {
+	$1 = &temp;
+}
+
+/** user typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_user_t *** parameter */
+%typemap(in, numinputs=0) semanage_user_t ***(semanage_user_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_user_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_user, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}
+	
+%typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_user_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_user, 0));
+}
+
+%typemap(argout) semanage_user_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_user_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_user_key_t **(semanage_user_key_t *temp) {
+	$1 = &temp;
+}
+
+/** port typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_port_t *** parameter */
+%typemap(in, numinputs=0) semanage_port_t ***(semanage_port_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_port_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++) 
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_port, 0));
+	
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}	
+
+%typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_port_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_port, 0));
+}
+
+%typemap(argout) semanage_port_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_port_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_port_key_t **(semanage_port_key_t *temp) {
+	$1 = &temp;
+}
+
+/** node typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_node_t *** parameter */
+%typemap(in, numinputs=0) semanage_node_t ***(semanage_node_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) (
+	semanage_handle_t* handle,
+	semanage_node_t*** records,
+	unsigned int* count) {
+
+	if (result >= 0) {
+		PyObject* plist = PyList_New(*$3);
+		unsigned int i;
+
+		for (i = 0; i < *$3; i++)
+			PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_node, 0));
+
+		$result = t_output_helper($result, plist);
+		free(*$2);
+	}
+}
+
+%typemap(in, numinputs=0) semanage_node_t **(semanage_node_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_node_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_node, 0));
+}
+
+
+%typemap(argout) semanage_node_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_node_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_node_key_t **(semanage_node_key_t *temp) {
+	$1 = &temp;
+}
+
+%include "semanageswig.i"

  reply	other threads:[~2006-02-14 12:08 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-02 20:45 [SEMANAGE][UTILS] Use PyList in bindings Ivan Gyurdiev
2006-02-02 21:16 ` Ivan Gyurdiev
2006-02-03 14:00 ` Stephen Smalley
2006-02-03 14:36   ` Joshua Brindle
2006-02-14 10:59 ` Ivan Gyurdiev
2006-02-14 12:08   ` Ivan Gyurdiev [this message]
2006-02-14 18:51     ` Improve bindings, add PyList(String) for roles array Ivan Gyurdiev
2006-02-14 20:12       ` Stephen Smalley
2006-02-14 19:01     ` Move python bindings into semanageswig_python.i Stephen Smalley
2006-02-14 18:57   ` [SEMANAGE][UTILS] Use PyList in bindings Stephen Smalley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43F1C84C.5030800@cornell.edu \
    --to=ivg2@cornell.edu \
    --cc=SELinux@tycho.nsa.gov \
    --cc=jbrindle@tresys.com \
    --cc=sds@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.