Add special variable imfuncname expansion for C# and D

Same functionality as Java
This commit is contained in:
William S Fulton 2022-05-30 19:43:04 +01:00
commit 954f29b032
7 changed files with 79 additions and 0 deletions

View file

@ -107,6 +107,22 @@ public class TestThread {
Console.Error.WriteLine("Test failed (thread " + threadId + "): " + e.Message);
Failed = true;
}
// $imfuncname substitution
ProxyA pa = new ProxyA();
if (pa.imfuncname_test() != 123)
throw new ApplicationException("imfuncname_test is not 123");
if (ProxyA.imfuncname_static_test() != 234)
throw new ApplicationException("imfuncname_test is not 234");
if (csharp_typemaps.imfuncname_global_test() != 345)
throw new ApplicationException("imfuncname_test is not 345");
pa.variab = 1000;
if (pa.variab != 1000 + 111 + 222)
throw new ApplicationException("pa.variab is not 1333");
csharp_typemaps.global_variab = 1000;
if (csharp_typemaps.global_variab != 1000 + 333 + 444)
throw new ApplicationException("csharp_typemaps.variab is not 1777");
}
}

View file

@ -136,3 +136,42 @@ namespace Glob {
bool MVar::svar = false;
%}
// $imfuncname substitution
%typemap(csout) int imfuncname_test {
return $modulePINVOKE.$imfuncname(swigCPtr) + 123;
}
%typemap(csout) int imfuncname_static_test {
return $modulePINVOKE.$imfuncname() + 234;
}
%typemap(csout) int imfuncname_global_test {
return $modulePINVOKE.$imfuncname() + 345;
}
%typemap(csvarout, excode=SWIGEXCODE2) int variab %{
get {
int ret = $modulePINVOKE.$imfuncname(swigCPtr) + 222;$excode
return ret;
} %}
%typemap(csvarin, excode=SWIGEXCODE2) int variab %{
set {
$modulePINVOKE.$imfuncname(swigCPtr, value + 111);$excode
} %}
%typemap(csvarout, excode=SWIGEXCODE2) int global_variab %{
get {
int ret = $modulePINVOKE.$imfuncname() + 333;$excode
return ret;
} %}
%typemap(csvarin, excode=SWIGEXCODE2) int global_variab %{
set {
$modulePINVOKE.$imfuncname(value + 444);$excode
} %}
%inline %{
struct ProxyA {
int imfuncname_test() { return 0; }
static int imfuncname_static_test() { return 0; }
int variab;
};
int imfuncname_global_test() { return 0; }
int global_variab;
%}