xref: /aosp_15_r20/external/selinux/libsemanage/src/semanageswig_ruby.i (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker /* Author Dave Quigley
2*2d543d20SAndroid Build Coastguard Worker  * based on semanageswig_python.i by Spencer Shimko
3*2d543d20SAndroid Build Coastguard Worker  */
4*2d543d20SAndroid Build Coastguard Worker 
5*2d543d20SAndroid Build Coastguard Worker %header %{
6*2d543d20SAndroid Build Coastguard Worker         #include <stdlib.h>
7*2d543d20SAndroid Build Coastguard Worker         #include <semanage/semanage.h>
8*2d543d20SAndroid Build Coastguard Worker 
9*2d543d20SAndroid Build Coastguard Worker         #define STATUS_SUCCESS 0
10*2d543d20SAndroid Build Coastguard Worker         #define STATUS_ERR -1
11*2d543d20SAndroid Build Coastguard Worker %}
12*2d543d20SAndroid Build Coastguard Worker /* a few helpful typemaps are available in this library */
13*2d543d20SAndroid Build Coastguard Worker %include <typemaps.i>
14*2d543d20SAndroid Build Coastguard Worker 
15*2d543d20SAndroid Build Coastguard Worker /* wrap all int*'s so they can be used for results
16*2d543d20SAndroid Build Coastguard Worker    if it becomes necessary to send in data this should be changed to INOUT */
17*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { int * };
18*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { size_t * };
19*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { unsigned int * };
20*2d543d20SAndroid Build Coastguard Worker 
21*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) char **(char *temp=NULL) {
22*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
23*2d543d20SAndroid Build Coastguard Worker }
24*2d543d20SAndroid Build Coastguard Worker 
25*2d543d20SAndroid Build Coastguard Worker %typemap(argout) char** {
26*2d543d20SAndroid Build Coastguard Worker         %append_output(SWIG_FromCharPtr(*$1));
27*2d543d20SAndroid Build Coastguard Worker         free(*$1);
28*2d543d20SAndroid Build Coastguard Worker }
29*2d543d20SAndroid Build Coastguard Worker 
30*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) char ***(char **temp=NULL) {
31*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
32*2d543d20SAndroid Build Coastguard Worker }
33*2d543d20SAndroid Build Coastguard Worker 
34*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting ruby functions
35*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_module_info_t ** parameter */
36*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_module_info_t **(semanage_module_info_t *temp=NULL) {
37*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
38*2d543d20SAndroid Build Coastguard Worker }
39*2d543d20SAndroid Build Coastguard Worker 
40*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_module_info_t ** {
41*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
42*2d543d20SAndroid Build Coastguard Worker }
43*2d543d20SAndroid Build Coastguard Worker 
44*2d543d20SAndroid Build Coastguard Worker /** context typemaps **/
45*2d543d20SAndroid Build Coastguard Worker 
46*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
47*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_context_t ** parameter */
48*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp=NULL) {
49*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
50*2d543d20SAndroid Build Coastguard Worker }
51*2d543d20SAndroid Build Coastguard Worker 
52*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_context_t** {
53*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
54*2d543d20SAndroid Build Coastguard Worker }
55*2d543d20SAndroid Build Coastguard Worker 
56*2d543d20SAndroid Build Coastguard Worker /** boolean typemaps **/
57*2d543d20SAndroid Build Coastguard Worker 
58*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
59*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_bool_t *** parameter */
60*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp=NULL) {
61*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
62*2d543d20SAndroid Build Coastguard Worker }
63*2d543d20SAndroid Build Coastguard Worker 
64*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp=NULL) {
65*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
66*2d543d20SAndroid Build Coastguard Worker }
67*2d543d20SAndroid Build Coastguard Worker 
68*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_bool_t ** {
69*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
70*2d543d20SAndroid Build Coastguard Worker }
71*2d543d20SAndroid Build Coastguard Worker 
72*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_bool_key_t ** {
73*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
74*2d543d20SAndroid Build Coastguard Worker }
75*2d543d20SAndroid Build Coastguard Worker 
76*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp=NULL) {
77*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
78*2d543d20SAndroid Build Coastguard Worker }
79*2d543d20SAndroid Build Coastguard Worker 
80*2d543d20SAndroid Build Coastguard Worker /** fcontext typemaps **/
81*2d543d20SAndroid Build Coastguard Worker 
82*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
83*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_fcontext_t *** parameter */
84*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_t ***(semanage_fcontext_t **temp=NULL) {
85*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
86*2d543d20SAndroid Build Coastguard Worker }
87*2d543d20SAndroid Build Coastguard Worker 
88*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp=NULL) {
89*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
90*2d543d20SAndroid Build Coastguard Worker }
91*2d543d20SAndroid Build Coastguard Worker 
92*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_fcontext_t ** {
93*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
94*2d543d20SAndroid Build Coastguard Worker }
95*2d543d20SAndroid Build Coastguard Worker 
96*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_fcontext_key_t ** {
97*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
98*2d543d20SAndroid Build Coastguard Worker }
99*2d543d20SAndroid Build Coastguard Worker 
100*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_key_t **(semanage_fcontext_key_t *temp=NULL) {
101*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
102*2d543d20SAndroid Build Coastguard Worker }
103*2d543d20SAndroid Build Coastguard Worker 
104*2d543d20SAndroid Build Coastguard Worker /** interface typemaps **/
105*2d543d20SAndroid Build Coastguard Worker 
106*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
107*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_iface_t *** parameter */
108*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp=NULL) {
109*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
110*2d543d20SAndroid Build Coastguard Worker }
111*2d543d20SAndroid Build Coastguard Worker 
112*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp=NULL) {
113*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
114*2d543d20SAndroid Build Coastguard Worker }
115*2d543d20SAndroid Build Coastguard Worker 
116*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_iface_t ** {
117*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
118*2d543d20SAndroid Build Coastguard Worker }
119*2d543d20SAndroid Build Coastguard Worker 
120*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_iface_key_t ** {
121*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
122*2d543d20SAndroid Build Coastguard Worker }
123*2d543d20SAndroid Build Coastguard Worker 
124*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp=NULL) {
125*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
126*2d543d20SAndroid Build Coastguard Worker }
127*2d543d20SAndroid Build Coastguard Worker 
128*2d543d20SAndroid Build Coastguard Worker /** seuser typemaps **/
129*2d543d20SAndroid Build Coastguard Worker 
130*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
131*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_seuser_t *** parameter */
132*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_t ***(semanage_seuser_t **temp=NULL) {
133*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
134*2d543d20SAndroid Build Coastguard Worker }
135*2d543d20SAndroid Build Coastguard Worker 
136*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp=NULL) {
137*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
138*2d543d20SAndroid Build Coastguard Worker }
139*2d543d20SAndroid Build Coastguard Worker 
140*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_seuser_t ** {
141*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
142*2d543d20SAndroid Build Coastguard Worker }
143*2d543d20SAndroid Build Coastguard Worker 
144*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_seuser_key_t ** {
145*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
146*2d543d20SAndroid Build Coastguard Worker }
147*2d543d20SAndroid Build Coastguard Worker 
148*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_key_t **(semanage_seuser_key_t *temp=NULL) {
149*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
150*2d543d20SAndroid Build Coastguard Worker }
151*2d543d20SAndroid Build Coastguard Worker 
152*2d543d20SAndroid Build Coastguard Worker /** user typemaps **/
153*2d543d20SAndroid Build Coastguard Worker 
154*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
155*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_user_t *** parameter */
156*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_t ***(semanage_user_t **temp=NULL) {
157*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
158*2d543d20SAndroid Build Coastguard Worker }
159*2d543d20SAndroid Build Coastguard Worker 
160*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp=NULL) {
161*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
162*2d543d20SAndroid Build Coastguard Worker }
163*2d543d20SAndroid Build Coastguard Worker 
164*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_user_t ** {
165*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
166*2d543d20SAndroid Build Coastguard Worker }
167*2d543d20SAndroid Build Coastguard Worker 
168*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_user_key_t ** {
169*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
170*2d543d20SAndroid Build Coastguard Worker }
171*2d543d20SAndroid Build Coastguard Worker 
172*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_key_t **(semanage_user_key_t *temp=NULL) {
173*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
174*2d543d20SAndroid Build Coastguard Worker }
175*2d543d20SAndroid Build Coastguard Worker 
176*2d543d20SAndroid Build Coastguard Worker /** port typemaps **/
177*2d543d20SAndroid Build Coastguard Worker 
178*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
179*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_port_t *** parameter */
180*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_t ***(semanage_port_t **temp=NULL) {
181*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
182*2d543d20SAndroid Build Coastguard Worker }
183*2d543d20SAndroid Build Coastguard Worker 
184*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp=NULL) {
185*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
186*2d543d20SAndroid Build Coastguard Worker }
187*2d543d20SAndroid Build Coastguard Worker 
188*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_port_t ** {
189*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
190*2d543d20SAndroid Build Coastguard Worker }
191*2d543d20SAndroid Build Coastguard Worker 
192*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_port_key_t ** {
193*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
194*2d543d20SAndroid Build Coastguard Worker }
195*2d543d20SAndroid Build Coastguard Worker 
196*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_key_t **(semanage_port_key_t *temp=NULL) {
197*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
198*2d543d20SAndroid Build Coastguard Worker }
199*2d543d20SAndroid Build Coastguard Worker 
200*2d543d20SAndroid Build Coastguard Worker /** node typemaps **/
201*2d543d20SAndroid Build Coastguard Worker 
202*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions
203*2d543d20SAndroid Build Coastguard Worker    will not take the semanage_node_t *** parameter */
204*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_t ***(semanage_node_t **temp=NULL) {
205*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
206*2d543d20SAndroid Build Coastguard Worker }
207*2d543d20SAndroid Build Coastguard Worker 
208*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_t **(semanage_node_t *temp=NULL) {
209*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
210*2d543d20SAndroid Build Coastguard Worker }
211*2d543d20SAndroid Build Coastguard Worker 
212*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_node_t ** {
213*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
214*2d543d20SAndroid Build Coastguard Worker }
215*2d543d20SAndroid Build Coastguard Worker 
216*2d543d20SAndroid Build Coastguard Worker 
217*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_node_key_t ** {
218*2d543d20SAndroid Build Coastguard Worker         $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0));
219*2d543d20SAndroid Build Coastguard Worker }
220*2d543d20SAndroid Build Coastguard Worker 
221*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_key_t **(semanage_node_key_t *temp=NULL) {
222*2d543d20SAndroid Build Coastguard Worker         $1 = &temp;
223*2d543d20SAndroid Build Coastguard Worker }
224*2d543d20SAndroid Build Coastguard Worker 
225*2d543d20SAndroid Build Coastguard Worker %include "semanageswig.i"
226