Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/swig4.0/csharp/ |
Upload File : |
/* ----------------------------------------------------------------------------- * std_complex.i * * Typemaps for handling std::complex<float> and std::complex<double> as a .NET * System.Numerics.Complex type. Requires .NET 4 minimum. * ----------------------------------------------------------------------------- */ %{ #include <complex> %} %fragment("SwigSystemNumericsComplex", "header") { extern "C" { // Identical to the layout of System.Numerics.Complex, but does assume that it is // LayoutKind.Sequential on the managed side struct SwigSystemNumericsComplex { double real; double imag; }; } SWIGINTERN SwigSystemNumericsComplex SwigCreateSystemNumericsComplex(double real, double imag) { SwigSystemNumericsComplex cpx; cpx.real = real; cpx.imag = imag; return cpx; } } namespace std { %naturalvar complex; template<typename T> class complex { public: complex(T re = T(), T im = T()); }; } %define SWIG_COMPLEX_TYPEMAPS(T) %typemap(ctype, fragment="SwigSystemNumericsComplex") std::complex<T>, const std::complex<T> & "SwigSystemNumericsComplex" %typemap(imtype) std::complex<T>, const std::complex<T> & "System.Numerics.Complex" %typemap(cstype) std::complex<T>, const std::complex<T> & "System.Numerics.Complex" %typemap(in) std::complex<T> %{$1 = std::complex< double >($input.real, $input.imag);%} %typemap(in) const std::complex<T> &($*1_ltype temp) %{temp = std::complex< T >((T)$input.real, (T)$input.imag); $1 = &temp;%} %typemap(out, null="SwigCreateSystemNumericsComplex(0.0, 0.0)") std::complex<T> %{$result = SwigCreateSystemNumericsComplex($1.real(), $1.imag());%} %typemap(out, null="SwigCreateSystemNumericsComplex(0.0, 0.0)") const std::complex<T> & %{$result = SwigCreateSystemNumericsComplex($1->real(), $1->imag());%} %typemap(cstype) std::complex<T>, const std::complex<T> & "System.Numerics.Complex" %typemap(csin) std::complex<T>, const std::complex<T> & "$csinput" %typemap(csout, excode=SWIGEXCODE) std::complex<T>, const std::complex<T> & { System.Numerics.Complex ret = $imcall;$excode return ret; } %typemap(csvarin, excode=SWIGEXCODE2) const std::complex<T> & %{ set { $imcall;$excode } %} %typemap(csvarout, excode=SWIGEXCODE2) const std::complex<T> & %{ get { System.Numerics.Complex ret = $imcall;$excode return ret; } %} %template() std::complex<T>; %enddef // By default, typemaps for both std::complex<double> and std::complex<float> // are defined, but one of them can be disabled by predefining the // corresponding symbol before including this file. #ifndef SWIG_NO_STD_COMPLEX_DOUBLE SWIG_COMPLEX_TYPEMAPS(double) #endif #ifndef SWIG_NO_STD_COMPLEX_FLOAT SWIG_COMPLEX_TYPEMAPS(float) #endif