diff options
author | David Nadlinger <code@klickverbot.at> | 2010-11-18 00:24:02 +0000 |
---|---|---|
committer | David Nadlinger <code@klickverbot.at> | 2010-11-18 00:24:02 +0000 |
commit | 03aefbc6e95d094a6de231e1f5264c0946e209a3 (patch) | |
tree | 94dff73a4aa3c27366f29f36712bde78317c5776 /Examples/test-suite/d/member_pointer_runme.1.d | |
parent | a355d2d46af56c655816c37f24bb59fa6bade43f (diff) | |
download | swig-03aefbc6e95d094a6de231e1f5264c0946e209a3.tar.gz |
Added support for the D programming languge.
It is still a bit rough around some edges, particularly with regard to multi-threading and operator overloading, and there are some documentation bits missing, but it should be fine for basic use.
The test-suite should build and run fine with the current versions of DMD, LDC and Tango (at least) on Linux x86_64 and Mac OS X 10.6.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12299 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/test-suite/d/member_pointer_runme.1.d')
-rw-r--r-- | Examples/test-suite/d/member_pointer_runme.1.d | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Examples/test-suite/d/member_pointer_runme.1.d b/Examples/test-suite/d/member_pointer_runme.1.d new file mode 100644 index 000000000..c1f8d33b8 --- /dev/null +++ b/Examples/test-suite/d/member_pointer_runme.1.d @@ -0,0 +1,43 @@ +module member_pointer_runme; + +import Float = tango.text.convert.Float; +import member_pointer.member_pointer; +import member_pointer.Square; +import member_pointer.SWIGTYPE_m_Shape__f_void__double; + +void main() { + auto s = new Square(10); + + // Do some calculations + auto area_pt = areapt(); + auto perim_pt = perimeterpt(); + check("Square area ", 100.0, do_op(s, area_pt)); + check("Square perim", 40.0, do_op(s, perim_pt)); + + SWIGTYPE_m_Shape__f_void__double memberPtr = null; + memberPtr = areavar; + memberPtr = perimetervar; + + // Try the variables + check("Square area ", 100.0, do_op(s, areavar)); + check("Square perim", 40.0, do_op(s, perimetervar)); + + // Modify one of the variables + areavar = perim_pt; + check("Square perimeter", 40.0, do_op(s,areavar)); + + // Try the constants + memberPtr = AREAPT; + memberPtr = PERIMPT; + memberPtr = NULLPT; + + check("Square area", 100.0, do_op(s, AREAPT)); + check("Square perim", 40.0, do_op(s, PERIMPT)); +} + +void check(char[] what, double expected, double actual) { + if (expected != actual) { + throw new Exception("Failed: " ~ what ~ ": expected " + ~ Float.toString(expected) ~ ", but got " ~ Float.toString(actual)); + } +} |