import source from 1.3.40
[external/swig.git] / Lib / python / file.i
1 /* -----------------------------------------------------------------------------
2  * See the LICENSE file for information on copyright, usage and redistribution
3  * of SWIG, and the README file for authors - http://www.swig.org/release.html.
4  *
5  * file.i
6  *
7  * Typemaps for FILE*
8  * From the ideas of Luigi Ballabio
9  * ----------------------------------------------------------------------------- */
10
11 %types(FILE *);
12
13 /* defining basic methods */
14 %fragment("SWIG_AsValFilePtr","header") {
15 SWIGINTERN int
16 SWIG_AsValFilePtr(PyObject *obj, FILE **val) {
17   static swig_type_info* desc = 0;
18   void *vptr = 0;
19   if (!desc) desc = SWIG_TypeQuery("FILE *");
20   if ((SWIG_ConvertPtr(obj, &vptr, desc, 0)) == SWIG_OK) {
21     if (val) *val = (FILE *)vptr;
22     return SWIG_OK;
23   }
24 %#if PY_VERSION_HEX < 0x03000000
25   if (PyFile_Check(obj)) {
26     if (val) *val =  PyFile_AsFile(obj);
27     return SWIG_OK;
28   }
29 %#endif
30   return SWIG_TypeError;
31 }
32 }
33
34
35 %fragment("SWIG_AsFilePtr","header",fragment="SWIG_AsValFilePtr") {
36 SWIGINTERNINLINE FILE*
37 SWIG_AsFilePtr(PyObject *obj) {
38   FILE *val = 0;
39   SWIG_AsValFilePtr(obj, &val);
40   return val;
41 }
42 }
43
44 /* defining the typemaps */
45 %typemaps_asval(%checkcode(POINTER), SWIG_AsValFilePtr, "SWIG_AsValFilePtr", FILE*);