Fix compiler warning due to missing function prototype.
[svn.git] / subversion / bindings / swig / include / svn_string.swg
blob3e8914d6122131cad320e9aaf411eda9cfa239f7
1 /*
2  * ====================================================================
3  * Copyright (c) 2000-2006 CollabNet.  All rights reserved.
4  *
5  * This software is licensed as described in the file COPYING, which
6  * you should have received as part of this distribution.  The terms
7  * are also available at http://subversion.tigris.org/license-1.html.
8  * If newer versions of this license are posted there, you may use a
9  * newer version instead, at your option.
10  *
11  * This software consists of voluntary contributions made by many
12  * individuals.  For exact contribution history, see the revision
13  * history and logs, available at http://subversion.tigris.org/.
14  * ====================================================================
15  *
16  * svn_string.swg: This is a child file of svn_types.swg, and should
17  *   not be included directly.  This file should contain typemaps that
18  *   deal with svn_string_t, svn_stringbuf_t and char * string types.
19  */
21 typedef struct svn_stringbuf_t svn_stringbuf_t;
22 typedef struct svn_string_t svn_string_t;
24 /* -----------------------------------------------------------------------
25    generic OUT param typemap for svn_string(buf)_t. we can share these
26    because we only refer to the ->data and ->len values.
28 #ifdef SWIGPYTHON
29 %typemap(argout) RET_STRING {
30     PyObject *s;
31     if (*$1 == NULL) {
32         Py_INCREF(Py_None);
33         s = Py_None;
34     }
35     else {
36         s = PyString_FromStringAndSize((*$1)->data, (*$1)->len);
37         if (s == NULL)
38             SWIG_fail;
39     }
40     %append_output(s);
42 #endif
43 #ifdef SWIGPERL
44 %typemap(argout) RET_STRING {
45   if (*$1) {
46     %append_output(sv_2mortal(newSVpvn((*$1)->data, (*$1)->len)));
47   } else {
48     %append_output(&PL_sv_undef);
49   }
51 #endif
52 #ifdef SWIGRUBY
53 %typemap(argout) RET_STRING {
54   if (*$1) {
55     %append_output(rb_str_new((*$1)->data, (*$1)->len));
56   } else {
57     %append_output(Qnil);
58   }
60 #endif
62 %apply RET_STRING {
63   svn_string_t **,
64   svn_stringbuf_t **
67 /* -----------------------------------------------------------------------
68    TYPE: svn_stringbuf_t
71 #ifdef SWIGPYTHON
72 %typemap(in) svn_stringbuf_t * {
73     if (!PyString_Check($input)) {
74         PyErr_SetString(PyExc_TypeError, "not a string");
75         SWIG_fail;
76     }
77     $1 = svn_stringbuf_ncreate(PyString_AS_STRING($input),
78                                PyString_GET_SIZE($input),
79                                /* ### gah... what pool to use? */
80                                _global_pool);
82 #endif
84 #ifdef SWIGPERL
85 %typemap(in) svn_stringbuf_t * {
86     apr_size_t len;
87     char *buf;
89     if (!SvOK($input)) {
90         $1 = NULL;
91     } else if (SvPOK($input)) {
92         buf = SvPV($input, len);
93         /* Another case of ugly pool handling, this should use the current
94            default pool, or make a new one if it doesn't exist yet */
95         $1 = svn_stringbuf_ncreate(buf,len,
96                                    svn_swig_pl_make_pool ((SV *)NULL));
97     } else {
98         croak("Not a string");
99     }
101 #endif
103 #ifdef SWIGRUBY
104 %typemap(in) svn_stringbuf_t *
106   if (NIL_P($input)) {
107     $1 = NULL;
108   } else {
109     $1 = svn_stringbuf_ncreate(StringValuePtr($input),
110                                RSTRING($input)->len,
111                                _global_pool);
112   }
115 %typemap(in) svn_stringbuf_t *node_name
117   if (NIL_P($input)) {
118     $1 = NULL;
119   } else {
120     VALUE rb_pool;
121     apr_pool_t *pool;
123     svn_swig_rb_get_pool(argc, argv, self, &rb_pool, &pool);
125     $1 = svn_stringbuf_ncreate(StringValuePtr($input),
126                                RSTRING($input)->len,
127                                pool);
128   }
130 #endif
133 #ifdef SWIGPYTHON
134 %typemap(out) svn_stringbuf_t * {
135     $result = PyString_FromStringAndSize($1->data, $1->len);
137 #endif
139 #ifdef SWIGPERL
140 %typemap(out) svn_stringbuf_t * {
141     SV *sv = sv_newmortal();
142     sv_setpvn(sv,$1->data,$1->len);
143     $result = sv;
144     argvi++;
146 #endif
148 #ifdef SWIGRUBY
149 %typemap(out) svn_stringbuf_t *
151   $result = rb_str_new($1->data, $1->len);
154 %typemap(argout) svn_stringbuf_t *output
156   %append_output(rb_str_new($1->data, $1->len));
158 #endif
160 /* -----------------------------------------------------------------------
161    TYPE: svn_string_t
164 /* const svn_string_t * is always an input parameter */
165 #ifdef SWIGPYTHON
166 %typemap(in) const svn_string_t * (svn_string_t value) {
167     if ($input == Py_None)
168         $1 = NULL;
169     else {
170         if (!PyString_Check($input)) {
171             PyErr_SetString(PyExc_TypeError, "not a string");
172             SWIG_fail;
173         }
174         value.data = PyString_AS_STRING($input);
175         value.len = PyString_GET_SIZE($input);
176         $1 = &value;
177     }
179 #endif
180 #ifdef SWIGPERL
181 %typemap(in) const svn_string_t * (svn_string_t value) {
182     if (SvOK($input)) {
183         value.data = SvPV($input, value.len);
184         $1 = &value;
185     }
186     else {
187         $1 = NULL;
188     }
190 #endif
191 #ifdef SWIGRUBY
192 %typemap(in) const svn_string_t * (svn_string_t value)
194   if (NIL_P($input)) {
195     $1 = NULL;
196   } else {
197     value.data = StringValuePtr($input);
198     value.len = RSTRING($input)->len;
199     $1 = &value;
200   }
202 #endif
204 /* when storing an svn_string_t* into a structure, we must allocate the
205    svn_string_t structure on the heap. */
206 #ifdef SWIGPYTHON
207 %typemap(memberin) const svn_string_t * {
208     $1 = svn_string_dup($input, _global_pool);
210 #endif
211 #ifdef SWIGPERL
212 %typemap(memberin) const svn_string_t * {
213     $1 = svn_string_dup($input, _global_pool);
215 #endif
216 #ifdef SWIGRUBY
217 %typemap(memberin) const svn_string_t * {
218     $1 = svn_string_dup($input, _global_pool);
220 #endif
222 #ifdef SWIGPYTHON
223 %typemap(out) svn_string_t * {
224     $result = PyString_FromStringAndSize($1->data, $1->len);
226 #endif
227 #ifdef SWIGPERL
228 %typemap(out) svn_string_t * {
229     $result = sv_2mortal(newSVpv($1->data, $1->len));
230     ++argvi;
232 #endif
233 #ifdef SWIGRUBY
234 %typemap(out) svn_string_t * {
235   if ($1) {
236     $result = rb_str_new($1->data, $1->len);
237   } else {
238     $result = Qnil;
239   }
241 #endif
243 /* -----------------------------------------------------------------------
244    define a way to return a 'const char *'
246 #ifdef SWIGPYTHON
247 %typemap(argout) const char **OUTPUT {
248     PyObject *s;
249     if (*$1 == NULL) {
250         Py_INCREF(Py_None);
251         s = Py_None;
252     }
253     else {
254         s = PyString_FromString(*$1);
255         if (s == NULL)
256             SWIG_fail;
257     }
258     %append_output(s);
260 #endif
262 #ifdef SWIGPERL
263 %typemap(argout) const char **OUTPUT {
264   if (*$1 == NULL) {
265     %append_output(&PL_sv_undef);
266   } else {
267     %append_output(sv_2mortal(newSVpv(*$1, 0)));
268   }
270 #endif
272 #ifdef SWIGRUBY
273 %typemap(argout) const char **OUTPUT
275   if (*$1) {
276     %append_output(rb_str_new2(*$1));
277   } else {
278     %append_output(Qnil);
279   }
281 #endif
283 /* svn_wc_get_ancestry() lacks a 'const' */
284 %apply const char **OUTPUT { const char **, char **url };