File: itk.swg

package info (click to toggle)
insighttoolkit 3.20.1%2Bgit20120521-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 80,652 kB
  • sloc: cpp: 458,133; ansic: 196,223; fortran: 28,000; python: 3,839; tcl: 1,811; sh: 1,184; java: 583; makefile: 430; csh: 220; perl: 193; xml: 20
file content (105 lines) | stat: -rw-r--r-- 3,055 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* This is an itk-specific typemap used by CableSwig.  
 *   -- Charl P. Botha <cpbotha AT ieee.org>
 */

// Exception support. May be conditionally turned off by defining
// NO_EXCEPTIONS.
#ifndef NO_EXCEPTIONS

%include exception.i

#ifdef SWIGPYTHON

// check if exception is an 'index out of range' exception. If so, throw a python IndexError.
// It allow to use itk objects with __getitem__ method like standard python list
// for example, to format a size object of dim=3 in [1, 2, 3] we can use
// s = "[%s]" % ", ".join(map(str, sizeObject))
// or to get a real python list object
// l = list(sizeObject)
%typemap(throws) std::exception {
   if ( strstr(const_cast<char*>(_e.what()), ": index out of range") == NULL ) {
       SWIG_exception(SWIG_RuntimeError, const_cast<char*>(_e.what()));
   }
   else {
       PyErr_SetString(PyExc_IndexError, const_cast<char*>(_e.what()));
       return NULL;
   }
}
   
#else  // SWIGPYTHON

/* A "throws" attribute with the "std::exception" type is added synthetically
 * to each method node by CableSwig.cxx.  When gcc_xml starts passing through
 * correct throws types, this typemap could be optionally extended to
 * account for more different types.  For now this is sufficient though.
 */
 
%typemap(throws) std::exception {
   SWIG_exception(SWIG_RuntimeError, const_cast<char*>(_e.what()));
}

#endif // SWIGPYTHON

#endif // NO_EXCEPTIONS




#ifdef SWIGPYTHON

/* ------------------------------------------------------------
 * PyObject *  - Just pass straight through unmodified
 * This is default behaviour for python.swg, but Cable passes
 * a PyObject * through as a "p._object", so we redo the typemap
 * ------------------------------------------------------------ */
  
%typemap(in)   p._object "$1 = $input;";
%typemap(out)  p._object "$result = $1;";


// a implementation of %extend in cableswig would also be great to move back __getitem__ method 
// added in some files in this one


// basic type pointers typemap

%typemap(out) unsigned char &, const unsigned char &
  {$result = SWIG_FromUnsignedChar( *$1 );}

%typemap(out)  signed char &, const signed char &
  {$result = SWIG_FromSignedChar( *$1 );}

%typemap(out)  unsigned short &, const unsigned short &
  {$result = SWIG_FromUnsignedShort( *$1 );}

%typemap(out)  signed short &, const signed short &
  {$result = SWIG_FromShort( *$1 );}

%typemap(out)  unsigned int &, const unsigned int &, signed int &, const signed int &
  {$result = SWIG_FromInt( *$1 );}

%typemap(out)  signed long &, const signed long &, unsigned long &, const unsigned long &
  {$result = SWIG_FromLong( *$1 );}

%typemap(out) float &, const float &, double &, const double &
  {$result = SWIG_FromDouble( *$1 );}

#endif // SWIGPYTHON




%include std_string.i

/* disabling this c linkage warning on windows is now handled in ConfigureWrapping.cmake
TODO: If that disablement works, delete this block entirely.

%{
#ifdef _WIN32
#pragma warning ( disable : 4190 )
#pragma warning ( disable : 4049 )
#pragma warning ( disable : 4101 )
#endif
%}

*/