Blame src/semanageswig_python.i

Packit Service 102278
/* Author: Spencer Shimko <sshimko@tresys.com>
Packit Service 102278
 *
Packit Service 102278
 * Copyright (C) 2004-2005 Tresys Technology, LLC
Packit Service 102278
 * Copyright (C) 2006 Red Hat, Inc
Packit Service 102278
 *  
Packit Service 102278
 *  This library is free software; you can redistribute it and/or
Packit Service 102278
 *  modify it under the terms of the GNU Lesser General Public
Packit Service 102278
 *  License as published by the Free Software Foundation; either
Packit Service 102278
 *  version 2.1 of the License, or (at your option) any later version.
Packit Service 102278
 *
Packit Service 102278
 *  This library is distributed in the hope that it will be useful,
Packit Service 102278
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 102278
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 102278
 *  Lesser General Public License for more details.
Packit Service 102278
 *
Packit Service 102278
 *  You should have received a copy of the GNU Lesser General Public
Packit Service 102278
 *  License along with this library; if not, write to the Free Software
Packit Service 102278
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit Service 102278
 */
Packit Service 102278
Packit Service 102278
/** standard typemaps **/
Packit Service 102278
Packit Service 102278
%header %{
Packit Service 102278
	#include <stdlib.h>
Packit Service 102278
	#include <semanage/semanage.h>
Packit Service 102278
	#include <sys/mman.h>
Packit Service 102278
Packit Service 102278
	#define STATUS_SUCCESS 0
Packit Service 102278
	#define STATUS_ERR -1
Packit Service 102278
%}
Packit Service 102278
Packit Service 102278
%include "stdint.i"
Packit Service 102278
%ignore semanage_module_install_pp;
Packit Service 102278
%ignore semanage_module_install_hll;
Packit Service 102278
Packit Service 102278
%wrapper %{
Packit Service 102278
Packit Service 102278
Packit Service 102278
	/* There are two ways to call this function:
Packit Service 102278
	 * One is with a valid swig_type and destructor.
Packit Service 102278
	 * Two is with a NULL swig_type and NULL destructor. 
Packit Service 102278
	 * 
Packit Service 102278
	 * In the first mode, the function converts
Packit Service 102278
	 * an array of *cloned* objects [of the given pointer swig type] 
Packit Service 102278
	 * into a PyList, and destroys the array in the process 
Packit Service 102278
	 * (the objects pointers are preserved).
Packit Service 102278
	 *
Packit Service 102278
	 * In the second mode, the function converts
Packit Service 102278
	 * an array of *constant* strings into a PyList, and destroys
Packit Service 102278
	 * the array in the process 
Packit Service 102278
	 * (the strings are copied, originals not freed). */
Packit Service 102278
Packit Service 102278
	static int semanage_array2plist(
Packit Service 102278
		semanage_handle_t* handle,
Packit Service 102278
		void** arr, 
Packit Service 102278
		unsigned int asize, 
Packit Service 102278
		swig_type_info* swig_type,
Packit Service 102278
		void (*destructor) (void*),	
Packit Service 102278
		PyObject** result) {
Packit Service 102278
		
Packit Service 102278
		PyObject* plist = PyList_New(0);
Packit Service 102278
		unsigned int i;
Packit Service 102278
Packit Service 102278
		if (!plist) 
Packit Service 102278
			goto err;
Packit Service 102278
	
Packit Service 102278
		for (i = 0; i < asize; i++)  {
Packit Service 102278
			
Packit Service 102278
			PyObject* obj = NULL;
Packit Service 102278
Packit Service 102278
			/* NULL indicates string conversion,
Packit Service 102278
			 * otherwise create an opaque pointer */
Packit Service 102278
			if (!swig_type)
Packit Service 102278
				obj = SWIG_FromCharPtr(arr[i]);
Packit Service 102278
			else
Packit Service 102278
				obj = SWIG_NewPointerObj(arr[i], swig_type, 0);				 
Packit Service 102278
Packit Service 102278
			if (!obj) 
Packit Service 102278
				goto err;
Packit Service 102278
Packit Service 102278
			if (PyList_Append(plist, obj) < 0) 
Packit Service 102278
				goto err;
Packit Service 102278
		}
Packit Service 102278
Packit Service 102278
		free(arr);
Packit Service 102278
		
Packit Service 102278
		*result = plist;		
Packit Service 102278
		return STATUS_SUCCESS;
Packit Service 102278
Packit Service 102278
		err:
Packit Service 102278
		for (i = 0; i < asize; i++) 
Packit Service 102278
			if (destructor)
Packit Service 102278
				destructor(arr[i]);
Packit Service 102278
		free(arr);
Packit Service 102278
		return STATUS_ERR;
Packit Service 102278
	}
Packit Service 102278
%} 
Packit Service 102278
/* a few helpful typemaps are available in this library */
Packit Service 102278
%include <typemaps.i>
Packit Service 102278
/* wrap all int*'s so they can be used for results 
Packit Service 102278
   if it becomes necessary to send in data this should be changed to INOUT */
Packit Service 102278
%apply int *OUTPUT { int * };
Packit Service 102278
%apply int *OUTPUT { size_t * };
Packit Service 102278
%apply int *OUTPUT { unsigned int * };
Packit Service 102278
%apply int *OUTPUT { uint16_t * };
Packit Service 102278
Packit Service 102278
%include <cstring.i>
Packit Service 102278
/* This is needed to properly mmaped binary data in SWIG */
Packit Service 102278
%cstring_output_allocate_size(void **mapped_data, size_t *data_len, munmap(*$1, *$2));
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) char **(char *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) char** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_FromCharPtr(*$1));
Packit Service 102278
	free(*$1);
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) char ***(char **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	const semanage_user_t* user,
Packit Service 102278
	const char*** roles_arr, 
Packit Service 102278
	unsigned int* num_roles) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$3, *$4,
Packit Service 102278
                        	NULL, NULL, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** module typemaps**/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_module_info_t ** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_module_info_t **(semanage_module_info_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_module_info_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** module key typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_module_key_t ** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_module_key_t **(semanage_module_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_module_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** context typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_context_t ** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_context_t** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** boolean typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_bool_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_bool_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_bool,
Packit Service 102278
				(void (*) (void*)) &semanage_bool_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
		   	        $result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_bool_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_bool_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** fcontext typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_fcontext_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_fcontext_t ***(semanage_fcontext_t **temp=NULL) {
Packit Service 102278
        $1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_fcontext_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_fcontext,
Packit Service 102278
				(void (*) (void*)) &semanage_fcontext_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp=NULL) {
Packit Service 102278
        $1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_fcontext_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_fcontext_key_t ** {
Packit Service 102278
        $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_fcontext_key_t **(semanage_fcontext_key_t *temp=NULL) {
Packit Service 102278
        $1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** interface typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_iface_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_iface_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_iface,
Packit Service 102278
				(void (*) (void*)) &semanage_iface_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_iface_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_iface_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** seuser typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_seuser_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_seuser_t ***(semanage_seuser_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_seuser_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_seuser,
Packit Service 102278
				(void (*) (void*)) &semanage_seuser_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_seuser_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_seuser_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_seuser_key_t **(semanage_seuser_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** user typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_user_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_user_t ***(semanage_user_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_user_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_user,
Packit Service 102278
				(void (*) (void*)) &semanage_user_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_user_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_user_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_user_key_t **(semanage_user_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** port typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_port_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_port_t ***(semanage_port_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_port_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_port,
Packit Service 102278
				(void (*) (void*)) &semanage_port_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_port_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_port_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_port_key_t **(semanage_port_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** ibpkey typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_ibpkey_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibpkey_t ***(semanage_ibpkey_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
	semanage_handle_t* handle,
Packit Service 102278
	semanage_ibpkey_t*** records,
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_ibpkey,
Packit Service 102278
				(void (*) (void*)) &semanage_ibpkey_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibpkey_t **(semanage_ibpkey_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_ibpkey_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_ibpkey_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibpkey_key_t **(semanage_ibpkey_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** ibendport typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_ibendport_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibendport_t ***(semanage_ibendport_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
	semanage_handle_t* handle,
Packit Service 102278
	semanage_ibendport_t*** records,
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_ibendport,
Packit Service 102278
				(void (*) (void*)) &semanage_ibendport_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibendport_t **(semanage_ibendport_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_ibendport_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_ibendport_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_ibendport_key_t **(semanage_ibendport_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
/** node typemaps **/
Packit Service 102278
Packit Service 102278
/* the wrapper will setup this parameter for passing... the resulting python functions
Packit Service 102278
   will not take the semanage_node_t *** parameter */
Packit Service 102278
%typemap(in, numinputs=0) semanage_node_t ***(semanage_node_t **temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) (
Packit Service 102278
 	semanage_handle_t* handle,
Packit Service 102278
	semanage_node_t*** records, 
Packit Service 102278
	unsigned int* count) {
Packit Service 102278
Packit Service 102278
	if ($result) {	
Packit Service 102278
		int value;
Packit Service 102278
		SWIG_AsVal_int($result, &value);
Packit Service 102278
		if (value >= 0) {
Packit Service 102278
			PyObject* plist = NULL;
Packit Service 102278
			if (semanage_array2plist($1, (void**) *$2, *$3, SWIGTYPE_p_semanage_node,
Packit Service 102278
				(void (*) (void*)) &semanage_node_free, &plist) < 0)
Packit Service 102278
				$result = SWIG_From_int(STATUS_ERR);
Packit Service 102278
			else
Packit Service 102278
				$result = SWIG_Python_AppendOutput($result, plist);
Packit Service 102278
		}
Packit Service 102278
	}
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_node_t **(semanage_node_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_node_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
Packit Service 102278
%typemap(argout) semanage_node_key_t ** {
Packit Service 102278
	$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%typemap(in, numinputs=0) semanage_node_key_t **(semanage_node_key_t *temp=NULL) {
Packit Service 102278
	$1 = &tem;;
Packit Service 102278
}
Packit Service 102278
Packit Service 102278
%include "semanageswig_python_exception.i"
Packit Service 102278
%include "semanageswig.i"