diff --git a/Examples/test-suite/apply_signed_char.i b/Examples/test-suite/apply_signed_char.i new file mode 100644 index 000000000..ff1f1d83f --- /dev/null +++ b/Examples/test-suite/apply_signed_char.i @@ -0,0 +1,35 @@ +/* Test %apply for char */ + +%module(directors="1") apply_signed_char + +%warnfilter(SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR) DirectorTest; + +%apply signed char {char, const char}; +%apply const signed char & {const char &}; + +%inline %{ + char CharValFunction(char number) { return number; } + const char CCharValFunction(const char number) { return number; } + const char & CCharRefFunction(const char & number) { return number; } + char globalchar = -109; + const char globalconstchar = -110; +%} + +// Director test +%feature("director"); + +%inline %{ + struct DirectorTest { + + DirectorTest() : memberchar(-111), memberconstchar(-112) {} + + virtual char CharValFunction(char number) { return number; } + virtual const char CCharValFunction(const char number) { return number; } + virtual const char & CCharRefFunction(const char & number) { return number; } + + char memberchar; + const char memberconstchar; + + virtual ~DirectorTest() {} + }; +%} diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 04c94a542..fa4888f65 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -75,6 +75,7 @@ CPP_TEST_CASES += \ aggregate \ allowexcept \ anonymous_bitfield \ + apply_signed_char \ apply_strings \ argout \ array_member \ diff --git a/Examples/test-suite/java/apply_signed_char_runme.java b/Examples/test-suite/java/apply_signed_char_runme.java new file mode 100644 index 000000000..531558e00 --- /dev/null +++ b/Examples/test-suite/java/apply_signed_char_runme.java @@ -0,0 +1,36 @@ +import apply_signed_char.*; + +public class apply_signed_char_runme { + + static { + try { + System.loadLibrary("apply_signed_char"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) { + byte smallnum = -127; + if (apply_signed_char.CharValFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + if (apply_signed_char.CCharValFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + if (apply_signed_char.CCharRefFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + + apply_signed_char.setGlobalchar(smallnum); + if (apply_signed_char.getGlobalchar() != smallnum) throw new RuntimeException("failed"); + if (apply_signed_char.getGlobalconstchar() != -110) throw new RuntimeException("failed"); + + DirectorTest d = new DirectorTest(); + if (d.CharValFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + if (d.CCharValFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + if (d.CCharRefFunction(smallnum) != smallnum) throw new RuntimeException("failed"); + + d.setMemberchar(smallnum); + if (d.getMemberchar() != smallnum) throw new RuntimeException("failed"); + if (d.getMemberconstchar() != -112) throw new RuntimeException("failed"); + + } +} + +