Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / share / swig / 1.3.26 / ocaml / std_complex.i
CommitLineData
920dae64
AT
1// -*- C++ -*-
2#ifndef SWIG_STD_COMPLEX_I_
3#define SWIG_STD_COMPLEX_I_
4
5#ifdef SWIG
6
7%{
8#include <complex>
9%}
10
11namespace std
12{
13 template <class T> class complex;
14
15 %define specialize_std_complex(T)
16
17 %typemap(in) complex<T> {
18 if (PyComplex_Check($input)) {
19 $1 = std::complex<T>(PyComplex_RealAsDouble($input),
20 PyComplex_ImagAsDouble($input));
21 } else if (PyFloat_Check($input)) {
22 $1 = std::complex<T>(PyFloat_AsDouble($input), 0);
23 } else if (PyInt_Check($input)) {
24 $1 = std::complex<T>(PyInt_AsLong($input), 0);
25 }
26 else {
27 PyErr_SetString(PyExc_TypeError,"Expected a complex");
28 SWIG_fail;
29 }
30 }
31
32 %typemap(in) const complex<T>& (std::complex<T> temp) {
33 if (PyComplex_Check($input)) {
34 temp = std::complex<T>(PyComplex_RealAsDouble($input),
35 PyComplex_ImagAsDouble($input));
36 $1 = &temp;
37 } else if (PyFloat_Check($input)) {
38 temp = std::complex<T>(PyFloat_AsDouble($input), 0);
39 $1 = &temp;
40 } else if (PyInt_Check($input)) {
41 temp = std::complex<T>(PyInt_AsLong($input), 0);
42 $1 = &temp;
43 } else {
44 PyErr_SetString(PyExc_TypeError,"Expected a complex");
45 SWIG_fail;
46 }
47 }
48
49 %typemap(out) complex<T> {
50 $result = PyComplex_FromDoubles($1.real(), $1.imag());
51 }
52
53 %typemap(out) const complex<T> & {
54 $result = PyComplex_FromDoubles($1->real(), $1->imag());
55 }
56
57 %enddef
58
59 specialize_std_complex(double);
60 specialize_std_complex(float);
61}
62
63#endif // SWIG
64
65#endif //SWIG_STD_COMPLEX_I_