Merge branch 'vadz-csharp-complex'
* vadz-csharp-complex:
Add header to std_complex.i
Fix linkage problems in C# std::complex wrappers
C# std::complex wrappers marshalling by value
C# std::complex wrappers SwigValueWrapper fix
Use %naturalvar for C# std::complex wrappers
Allow avoiding generation of unwanted std::complex<T> typemaps
Also apply csvar{in,out} typemaps to std::complex references
Add std_complex.i for C# too
Extend C# complex support to member variables of this type
Add support for std::complex<> to C#
Use new unified Mono mcs compiler if available under Unix
This commit is contained in:
commit
2ec156fb7f
8 changed files with 150 additions and 3 deletions
|
|
@ -34,6 +34,11 @@
|
|||
return b;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ComplexPair
|
||||
{
|
||||
std::complex<double> z1, z2;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ top_srcdir = ../@top_srcdir@
|
|||
top_builddir = ../@top_builddir@
|
||||
|
||||
CPP_TEST_CASES = \
|
||||
complextest \
|
||||
csharp_attributes \
|
||||
csharp_swig2_compatibility \
|
||||
csharp_exceptions \
|
||||
|
|
@ -40,6 +41,7 @@ CSHARPFLAGSSPECIAL =
|
|||
|
||||
# Custom tests - tests with additional commandline options
|
||||
intermediary_classname.cpptest: SWIGOPT += -dllimport intermediary_classname
|
||||
complextest.cpptest: CSHARPFLAGSSPECIAL = -r:System.Numerics.dll
|
||||
csharp_lib_arrays.cpptest: CSHARPFLAGSSPECIAL = -unsafe
|
||||
csharp_swig2_compatibility.cpptest: SWIGOPT += -DSWIG2_CSHARP
|
||||
|
||||
|
|
|
|||
34
Examples/test-suite/csharp/complextest_runme.cs
Normal file
34
Examples/test-suite/csharp/complextest_runme.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// This is the complex runtime testcase. It checks that the C++ std::complex type works.
|
||||
// It requires .NET 4.0 as the previous versions didn't have System.Numerics.Complex type.
|
||||
|
||||
using System;
|
||||
using System.Numerics;
|
||||
|
||||
using complextestNamespace;
|
||||
|
||||
public class complextest_runme {
|
||||
|
||||
public static void Main() {
|
||||
var a = new Complex(-1, 2);
|
||||
if ( complextest.Conj(a) != Complex.Conjugate(a) )
|
||||
throw new Exception("std::complex<double> test failed");
|
||||
|
||||
if ( complextest.Conjf(a) != Complex.Conjugate(a) )
|
||||
throw new Exception("std::complex<float> test failed");
|
||||
|
||||
var vec = new VectorStdCplx();
|
||||
vec.Add(new Complex(1, 2));
|
||||
vec.Add(new Complex(2, 3));
|
||||
vec.Add(new Complex(4, 3));
|
||||
vec.Add(new Complex(1, 0));
|
||||
|
||||
if ( complextest.Copy_h(vec).Count != 2 )
|
||||
throw new Exception("vector<complex> test failed");
|
||||
|
||||
var p = new ComplexPair();
|
||||
p.z1 = new Complex(0, 1);
|
||||
p.z2 = new Complex(0, -1);
|
||||
if ( Complex.Conjugate(p.z2) != p.z1 )
|
||||
throw new Exception("vector<complex> test failed");
|
||||
}
|
||||
}
|
||||
|
|
@ -15,3 +15,9 @@ try:
|
|||
complextest.Copy_h(v)
|
||||
except:
|
||||
pass
|
||||
|
||||
p = complextest.ComplexPair()
|
||||
p.z1 = complex(0, 1)
|
||||
p.z2 = complex(0, -1)
|
||||
if complextest.Conj(p.z2) != p.z1:
|
||||
raise RuntimeError, "bad complex mapping"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue