From f5bdd056f704e53a3cf8525dd8becc5926db45a5 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Thu, 9 Aug 2007 23:47:13 +0000 Subject: [PATCH] Remove obscure mpointer example and replace with member_pointer.i testcase and runtime examples git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9887 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Examples/java/check.list | 1 - Examples/java/mpointer/Makefile | 18 ---- Examples/java/mpointer/example.cxx | 48 --------- Examples/java/mpointer/example.h | 50 --------- Examples/java/mpointer/example.i | 16 --- Examples/java/mpointer/main.java | 61 ----------- Examples/perl5/check.list | 1 - Examples/perl5/mpointer/Makefile | 20 ---- Examples/perl5/mpointer/example.cxx | 48 --------- Examples/perl5/mpointer/example.h | 50 --------- Examples/perl5/mpointer/example.i | 16 --- Examples/perl5/mpointer/runme.pl | 51 --------- Examples/python/check.list | 1 - Examples/python/mpointer/Makefile | 21 ---- Examples/python/mpointer/example.cxx | 48 --------- Examples/python/mpointer/example.h | 50 --------- Examples/python/mpointer/example.i | 16 --- Examples/python/mpointer/runme.py | 51 --------- Examples/ruby/check.list | 1 - Examples/ruby/mpointer/Makefile | 20 ---- Examples/ruby/mpointer/example.cxx | 48 --------- Examples/ruby/mpointer/example.h | 47 -------- Examples/ruby/mpointer/example.i | 15 --- Examples/ruby/mpointer/runme.rb | 48 --------- Examples/tcl/check.list | 1 - Examples/tcl/mpointer/Makefile | 19 ---- Examples/tcl/mpointer/example.cxx | 48 --------- Examples/tcl/mpointer/example.h | 50 --------- Examples/tcl/mpointer/example.i | 16 --- Examples/tcl/mpointer/runme.tcl | 49 --------- Examples/test-suite/common.mk | 1 + .../test-suite/csharp/member_pointer_runme.cs | 47 ++++++++ .../test-suite/java/member_pointer_runme.java | 58 ++++++++++ Examples/test-suite/member_pointer.i | 101 ++++++++++++++++++ .../test-suite/perl5/member_pointer_runme.pl | 47 ++++++++ .../test-suite/python/member_pointer_runme.py | 43 ++++++++ .../test-suite/ruby/member_pointer_runme.rb | 54 ++++++++++ .../test-suite/tcl/member_pointer_runme.tcl | 46 ++++++++ 38 files changed, 397 insertions(+), 929 deletions(-) delete mode 100644 Examples/java/mpointer/Makefile delete mode 100644 Examples/java/mpointer/example.cxx delete mode 100644 Examples/java/mpointer/example.h delete mode 100644 Examples/java/mpointer/example.i delete mode 100644 Examples/java/mpointer/main.java delete mode 100644 Examples/perl5/mpointer/Makefile delete mode 100644 Examples/perl5/mpointer/example.cxx delete mode 100644 Examples/perl5/mpointer/example.h delete mode 100644 Examples/perl5/mpointer/example.i delete mode 100644 Examples/perl5/mpointer/runme.pl delete mode 100644 Examples/python/mpointer/Makefile delete mode 100644 Examples/python/mpointer/example.cxx delete mode 100644 Examples/python/mpointer/example.h delete mode 100644 Examples/python/mpointer/example.i delete mode 100644 Examples/python/mpointer/runme.py delete mode 100644 Examples/ruby/mpointer/Makefile delete mode 100644 Examples/ruby/mpointer/example.cxx delete mode 100644 Examples/ruby/mpointer/example.h delete mode 100644 Examples/ruby/mpointer/example.i delete mode 100644 Examples/ruby/mpointer/runme.rb delete mode 100644 Examples/tcl/mpointer/Makefile delete mode 100644 Examples/tcl/mpointer/example.cxx delete mode 100644 Examples/tcl/mpointer/example.h delete mode 100644 Examples/tcl/mpointer/example.i delete mode 100644 Examples/tcl/mpointer/runme.tcl create mode 100644 Examples/test-suite/csharp/member_pointer_runme.cs create mode 100644 Examples/test-suite/java/member_pointer_runme.java create mode 100644 Examples/test-suite/member_pointer.i create mode 100644 Examples/test-suite/perl5/member_pointer_runme.pl create mode 100644 Examples/test-suite/python/member_pointer_runme.py create mode 100644 Examples/test-suite/ruby/member_pointer_runme.rb create mode 100644 Examples/test-suite/tcl/member_pointer_runme.tcl diff --git a/Examples/java/check.list b/Examples/java/check.list index 4a50f4861..9728342f2 100644 --- a/Examples/java/check.list +++ b/Examples/java/check.list @@ -5,7 +5,6 @@ constants enum extend funcptr -mpointer multimap native pointer diff --git a/Examples/java/mpointer/Makefile b/Examples/java/mpointer/Makefile deleted file mode 100644 index 14c301703..000000000 --- a/Examples/java/mpointer/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -TOP = ../.. -SWIG = $(TOP)/../preinst-swig -CXXSRCS = example.cxx -TARGET = example -INTERFACE = example.i -SWIGOPT = - -all:: java - -java:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' java_cpp - javac *.java - -clean:: - $(MAKE) -f $(TOP)/Makefile java_clean - -check: all diff --git a/Examples/java/mpointer/example.cxx b/Examples/java/mpointer/example.cxx deleted file mode 100644 index 80d95f618..000000000 --- a/Examples/java/mpointer/example.cxx +++ /dev/null @@ -1,48 +0,0 @@ -/* File : example.c */ - -#include "example.h" -#include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -/* Move the shape to a new location */ -void Shape::move(double dx, double dy) { - x += dx; - y += dy; -} - -int Shape::nshapes = 0; - -double Circle::area(void) { - return M_PI*radius*radius; -} - -double Circle::perimeter(void) { - return 2*M_PI*radius; -} - -double Square::area(void) { - return width*width; -} - -double Square::perimeter(void) { - return 4*width; -} - -double do_op(Shape *s, double (Shape::*m)(void)) { - return (s->*m)(); -} - -double (Shape::*areapt())(void) { - return &Shape::area; -} - -double (Shape::*perimeterpt())(void) { - return &Shape::perimeter; -} - -/* Member pointer variables */ -double (Shape::*areavar)(void) = &Shape::area; -double (Shape::*perimetervar)(void) = &Shape::perimeter; - diff --git a/Examples/java/mpointer/example.h b/Examples/java/mpointer/example.h deleted file mode 100644 index 110fe91c1..000000000 --- a/Examples/java/mpointer/example.h +++ /dev/null @@ -1,50 +0,0 @@ -/* File : example.h */ - -class Shape { -public: - Shape() { - nshapes++; - } - virtual ~Shape() { - nshapes--; - }; - double x, y; - double *z; - - void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; - static int nshapes; -}; - -class Circle : public Shape { -private: - double radius; -public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -class Square : public Shape { -private: - double width; -public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -extern double do_op(Shape *s, double (Shape::*m)(void)); - -/* Functions that return member pointers */ - -extern double (Shape::*areapt())(void); -extern double (Shape::*perimeterpt())(void); - -/* Global variables that are member pointers */ -extern double (Shape::*areavar)(void); -extern double (Shape::*perimetervar)(void); - - - diff --git a/Examples/java/mpointer/example.i b/Examples/java/mpointer/example.i deleted file mode 100644 index 238792be8..000000000 --- a/Examples/java/mpointer/example.i +++ /dev/null @@ -1,16 +0,0 @@ -/* File : example.i */ -%module example - -%{ -#include "example.h" -%} - -/* Let's just grab the original header file here */ -%include "example.h" - -/* Some constants */ - -%constant double (Shape::*AREAPT)(void) = &Shape::area; -%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; -%constant double (Shape::*NULLPT)(void) = 0; - diff --git a/Examples/java/mpointer/main.java b/Examples/java/mpointer/main.java deleted file mode 100644 index ab6cdf159..000000000 --- a/Examples/java/mpointer/main.java +++ /dev/null @@ -1,61 +0,0 @@ -// Example using pointers to member functions - -public class main { - static { - try { - System.loadLibrary("example"); - } 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[]) - { - // Get the pointers - - SWIGTYPE_m_Shape__f_void__double area_pt = example.areapt(); - SWIGTYPE_m_Shape__f_void__double perim_pt = example.perimeterpt(); - - System.out.println( "area_pt =" + area_pt ); - System.out.println( "perim_pt = " + perim_pt ); - - // Create some objects - - Circle c = new Circle(4); - Square s = new Square(10); - - // Do some calculations - - System.out.println( "Circle area = " + example.do_op(c,area_pt) ); - System.out.println( "Circle perim = " + example.do_op(c,perim_pt) ); - System.out.println( "Square area = " + example.do_op(s,area_pt) ); - System.out.println( "Square perim = " + example.do_op(s,perim_pt) ); - - System.out.println( "areavar = " + example.getAreavar() ); - System.out.println( "perimetervar = " + example.getPerimetervar() ); - - // Try the variables - System.out.println( "Circle area = " + example.do_op(c,example.getAreavar()) ); - System.out.println( "Circle perim = " + example.do_op(c,example.getPerimetervar()) ); - System.out.println( "Square area = " + example.do_op(s,example.getAreavar()) ); - System.out.println( "Square perim = " + example.do_op(s,example.getPerimetervar()) ); - - // Modify one of the variables - example.setAreavar(perim_pt); - - System.out.println( "Circle perimeter = " + example.do_op(c,example.getAreavar()) ); - - // Try the constants - - System.out.println( "example.AREAPT =" + example.AREAPT ); - System.out.println( "example.PERIMPT=" + example.PERIMPT ); - System.out.println( "example.NULLPT =" + example.NULLPT ); - - System.out.println( "Circle area = " + example.do_op(c,example.AREAPT) ); - System.out.println( "Circle perim = " + example.do_op(c,example.PERIMPT) ); - System.out.println( "Square area = " + example.do_op(s,example.AREAPT) ); - System.out.println( "Square perim = " + example.do_op(s,example.PERIMPT) ); - - } -} diff --git a/Examples/perl5/check.list b/Examples/perl5/check.list index b33c1cc60..e15f02e18 100644 --- a/Examples/perl5/check.list +++ b/Examples/perl5/check.list @@ -5,7 +5,6 @@ constants2 funcptr import java -mpointer multimap multiple_inheritance pointer diff --git a/Examples/perl5/mpointer/Makefile b/Examples/perl5/mpointer/Makefile deleted file mode 100644 index ee8836329..000000000 --- a/Examples/perl5/mpointer/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -TOP = ../.. -SWIG = $(TOP)/../preinst-swig -CXXSRCS = example.cxx -TARGET = example -INTERFACE = example.i -LIBS = -lm -SWIGOPT = - -all:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' perl5_cpp - -static:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - SWIGOPT='$(SWIGOPT)' TARGET='myperl' INTERFACE='$(INTERFACE)' perl5_cpp_static - -clean:: - $(MAKE) -f $(TOP)/Makefile perl5_clean - -check: all diff --git a/Examples/perl5/mpointer/example.cxx b/Examples/perl5/mpointer/example.cxx deleted file mode 100644 index 80d95f618..000000000 --- a/Examples/perl5/mpointer/example.cxx +++ /dev/null @@ -1,48 +0,0 @@ -/* File : example.c */ - -#include "example.h" -#include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -/* Move the shape to a new location */ -void Shape::move(double dx, double dy) { - x += dx; - y += dy; -} - -int Shape::nshapes = 0; - -double Circle::area(void) { - return M_PI*radius*radius; -} - -double Circle::perimeter(void) { - return 2*M_PI*radius; -} - -double Square::area(void) { - return width*width; -} - -double Square::perimeter(void) { - return 4*width; -} - -double do_op(Shape *s, double (Shape::*m)(void)) { - return (s->*m)(); -} - -double (Shape::*areapt())(void) { - return &Shape::area; -} - -double (Shape::*perimeterpt())(void) { - return &Shape::perimeter; -} - -/* Member pointer variables */ -double (Shape::*areavar)(void) = &Shape::area; -double (Shape::*perimetervar)(void) = &Shape::perimeter; - diff --git a/Examples/perl5/mpointer/example.h b/Examples/perl5/mpointer/example.h deleted file mode 100644 index 110fe91c1..000000000 --- a/Examples/perl5/mpointer/example.h +++ /dev/null @@ -1,50 +0,0 @@ -/* File : example.h */ - -class Shape { -public: - Shape() { - nshapes++; - } - virtual ~Shape() { - nshapes--; - }; - double x, y; - double *z; - - void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; - static int nshapes; -}; - -class Circle : public Shape { -private: - double radius; -public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -class Square : public Shape { -private: - double width; -public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -extern double do_op(Shape *s, double (Shape::*m)(void)); - -/* Functions that return member pointers */ - -extern double (Shape::*areapt())(void); -extern double (Shape::*perimeterpt())(void); - -/* Global variables that are member pointers */ -extern double (Shape::*areavar)(void); -extern double (Shape::*perimetervar)(void); - - - diff --git a/Examples/perl5/mpointer/example.i b/Examples/perl5/mpointer/example.i deleted file mode 100644 index 238792be8..000000000 --- a/Examples/perl5/mpointer/example.i +++ /dev/null @@ -1,16 +0,0 @@ -/* File : example.i */ -%module example - -%{ -#include "example.h" -%} - -/* Let's just grab the original header file here */ -%include "example.h" - -/* Some constants */ - -%constant double (Shape::*AREAPT)(void) = &Shape::area; -%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; -%constant double (Shape::*NULLPT)(void) = 0; - diff --git a/Examples/perl5/mpointer/runme.pl b/Examples/perl5/mpointer/runme.pl deleted file mode 100644 index 8f5b19d94..000000000 --- a/Examples/perl5/mpointer/runme.pl +++ /dev/null @@ -1,51 +0,0 @@ -# Example using pointers to member functions - -use example; - -# Get the pointers - -$area_pt = example::areapt(); -$perim_pt = example::perimeterpt(); - -print "area_pt =", $area_pt, "\n"; -print "perim_pt = ", $perim_pt, "\n"; - -# Create some objects - -$c = new example::Circle(4); -$s = new example::Square(10); - -# Do some calculations - -print "Circle area = ", example::do_op($c,$area_pt), "\n"; -print "Circle perim = ", example::do_op($c,$perim_pt), "\n"; -print "Square area = ", example::do_op($s,$area_pt), "\n"; -print "Square perim = ", example::do_op($s,$perim_pt), "\n"; - -print "areavar =", $example::areavar, "\n"; -print "perimetervar =", $example::perimetervar, "\n"; - -# Try the variables -print "Circle area = ", example::do_op($c,$example::areavar), "\n"; -print "Circle perim = ", example::do_op($c,$example::perimetervar), "\n"; -print "Square area = ", example::do_op($s,$example::areavar), "\n"; -print "Square perim = ", example::do_op($s,$example::perimetervar), "\n"; - -# Modify one of the variables -$example::areavar = $perim_pt; - -print "Circle perimeter = ", example::do_op($c,$example::areavar), "\n"; - -# Try the constants - -print "example.AREAPT =", $example::AREAPT, "\n"; -print "example.PERIMPT=", $example::PERIMPT, "\n"; -print "example.NULLPT =", $example::NULLPT, "\n"; - -print "Circle area = ", example::do_op($c,$example::AREAPT), "\n"; -print "Circle perim = ", example::do_op($c,$example::PERIMPT), "\n"; -print "Square area = ", example::do_op($s,$example::AREAPT), "\n"; -print "Square perim = ", example::do_op($s,$example::PERIMPT), "\n"; - - - diff --git a/Examples/python/check.list b/Examples/python/check.list index 6786cd291..0b1645642 100644 --- a/Examples/python/check.list +++ b/Examples/python/check.list @@ -15,7 +15,6 @@ import import_template java #libffi -mpointer multimap operator pointer diff --git a/Examples/python/mpointer/Makefile b/Examples/python/mpointer/Makefile deleted file mode 100644 index 58d139643..000000000 --- a/Examples/python/mpointer/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -TOP = ../.. -SWIG = $(TOP)/../preinst-swig -CXXSRCS = example.cxx -TARGET = example -INTERFACE = example.i -LIBS = -lm -SWIGOPT = - -all:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' python_cpp - -static:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - SWIGOPT='$(SWIGOPT)' TARGET='mypython' INTERFACE='$(INTERFACE)' python_cpp_static - -clean:: - $(MAKE) -f $(TOP)/Makefile python_clean - rm -f $(TARGET).py - -check: all diff --git a/Examples/python/mpointer/example.cxx b/Examples/python/mpointer/example.cxx deleted file mode 100644 index 80d95f618..000000000 --- a/Examples/python/mpointer/example.cxx +++ /dev/null @@ -1,48 +0,0 @@ -/* File : example.c */ - -#include "example.h" -#include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -/* Move the shape to a new location */ -void Shape::move(double dx, double dy) { - x += dx; - y += dy; -} - -int Shape::nshapes = 0; - -double Circle::area(void) { - return M_PI*radius*radius; -} - -double Circle::perimeter(void) { - return 2*M_PI*radius; -} - -double Square::area(void) { - return width*width; -} - -double Square::perimeter(void) { - return 4*width; -} - -double do_op(Shape *s, double (Shape::*m)(void)) { - return (s->*m)(); -} - -double (Shape::*areapt())(void) { - return &Shape::area; -} - -double (Shape::*perimeterpt())(void) { - return &Shape::perimeter; -} - -/* Member pointer variables */ -double (Shape::*areavar)(void) = &Shape::area; -double (Shape::*perimetervar)(void) = &Shape::perimeter; - diff --git a/Examples/python/mpointer/example.h b/Examples/python/mpointer/example.h deleted file mode 100644 index 110fe91c1..000000000 --- a/Examples/python/mpointer/example.h +++ /dev/null @@ -1,50 +0,0 @@ -/* File : example.h */ - -class Shape { -public: - Shape() { - nshapes++; - } - virtual ~Shape() { - nshapes--; - }; - double x, y; - double *z; - - void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; - static int nshapes; -}; - -class Circle : public Shape { -private: - double radius; -public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -class Square : public Shape { -private: - double width; -public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -extern double do_op(Shape *s, double (Shape::*m)(void)); - -/* Functions that return member pointers */ - -extern double (Shape::*areapt())(void); -extern double (Shape::*perimeterpt())(void); - -/* Global variables that are member pointers */ -extern double (Shape::*areavar)(void); -extern double (Shape::*perimetervar)(void); - - - diff --git a/Examples/python/mpointer/example.i b/Examples/python/mpointer/example.i deleted file mode 100644 index 238792be8..000000000 --- a/Examples/python/mpointer/example.i +++ /dev/null @@ -1,16 +0,0 @@ -/* File : example.i */ -%module example - -%{ -#include "example.h" -%} - -/* Let's just grab the original header file here */ -%include "example.h" - -/* Some constants */ - -%constant double (Shape::*AREAPT)(void) = &Shape::area; -%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; -%constant double (Shape::*NULLPT)(void) = 0; - diff --git a/Examples/python/mpointer/runme.py b/Examples/python/mpointer/runme.py deleted file mode 100644 index 0d20093aa..000000000 --- a/Examples/python/mpointer/runme.py +++ /dev/null @@ -1,51 +0,0 @@ -# Example using pointers to member functions - -import example - -# Get the pointers - -area_pt = example.areapt() -perim_pt = example.perimeterpt() - -print "area_pt =", area_pt -print "perim_pt = ", perim_pt - -# Create some objects - -c = example.Circle(4) -s = example.Square(10) - -# Do some calculations - -print "Circle area = ", example.do_op(c,area_pt) -print "Circle perim = ", example.do_op(c,perim_pt) -print "Square area = ", example.do_op(s,area_pt) -print "Square perim = ", example.do_op(s,perim_pt) - -print "cvar.areavar =", example.cvar.areavar -print "cvar.perimetervar =", example.cvar.perimetervar - -# Try the variables -print "Circle area = ", example.do_op(c,example.cvar.areavar) -print "Circle perim = ", example.do_op(c,example.cvar.perimetervar) -print "Square area = ", example.do_op(s,example.cvar.areavar) -print "Square perim = ", example.do_op(s,example.cvar.perimetervar) - -# Modify one of the variables -example.cvar.areavar = perim_pt - -print "Circle perimeter = ", example.do_op(c,example.cvar.areavar) - -# Try the constants - -print "example.AREAPT =", example.AREAPT -print "example.PERIMPT=", example.PERIMPT -print "example.NULLPT =", example.NULLPT - -print "Circle area = ", example.do_op(c,example.AREAPT) -print "Circle perim = ", example.do_op(c,example.PERIMPT) -print "Square area = ", example.do_op(s,example.AREAPT) -print "Square perim = ", example.do_op(s,example.PERIMPT) - - - diff --git a/Examples/ruby/check.list b/Examples/ruby/check.list index 8d0a3f9de..131dcbb33 100644 --- a/Examples/ruby/check.list +++ b/Examples/ruby/check.list @@ -11,7 +11,6 @@ import import_template java mark_function -mpointer multimap operator overloading diff --git a/Examples/ruby/mpointer/Makefile b/Examples/ruby/mpointer/Makefile deleted file mode 100644 index 2a8eb7b56..000000000 --- a/Examples/ruby/mpointer/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -TOP = ../.. -SWIG = $(TOP)/../preinst-swig -CXXSRCS = example.cxx -TARGET = example -INTERFACE = example.i -LIBS = -lm -SWIGOPT = - -all:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' ruby_cpp - -static:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - TARGET='myruby' INTERFACE='$(INTERFACE)' ruby_cpp_static - -clean:: - $(MAKE) -f $(TOP)/Makefile ruby_clean - -check: all diff --git a/Examples/ruby/mpointer/example.cxx b/Examples/ruby/mpointer/example.cxx deleted file mode 100644 index 80d95f618..000000000 --- a/Examples/ruby/mpointer/example.cxx +++ /dev/null @@ -1,48 +0,0 @@ -/* File : example.c */ - -#include "example.h" -#include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -/* Move the shape to a new location */ -void Shape::move(double dx, double dy) { - x += dx; - y += dy; -} - -int Shape::nshapes = 0; - -double Circle::area(void) { - return M_PI*radius*radius; -} - -double Circle::perimeter(void) { - return 2*M_PI*radius; -} - -double Square::area(void) { - return width*width; -} - -double Square::perimeter(void) { - return 4*width; -} - -double do_op(Shape *s, double (Shape::*m)(void)) { - return (s->*m)(); -} - -double (Shape::*areapt())(void) { - return &Shape::area; -} - -double (Shape::*perimeterpt())(void) { - return &Shape::perimeter; -} - -/* Member pointer variables */ -double (Shape::*areavar)(void) = &Shape::area; -double (Shape::*perimetervar)(void) = &Shape::perimeter; - diff --git a/Examples/ruby/mpointer/example.h b/Examples/ruby/mpointer/example.h deleted file mode 100644 index b90e14353..000000000 --- a/Examples/ruby/mpointer/example.h +++ /dev/null @@ -1,47 +0,0 @@ -/* File : example.h */ - -class Shape { -public: - Shape() { - nshapes++; - } - virtual ~Shape() { - nshapes--; - }; - double x, y; - double *z; - - void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; - static int nshapes; -}; - -class Circle : public Shape { -private: - double radius; -public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -class Square : public Shape { -private: - double width; -public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -extern double do_op(Shape *s, double (Shape::*m)(void)); - -/* Functions that return member pointers */ - -extern double (Shape::*areapt())(void); -extern double (Shape::*perimeterpt())(void); - -/* Global variables that are member pointers */ -extern double (Shape::*areavar)(void); -extern double (Shape::*perimetervar)(void); diff --git a/Examples/ruby/mpointer/example.i b/Examples/ruby/mpointer/example.i deleted file mode 100644 index 253a224dc..000000000 --- a/Examples/ruby/mpointer/example.i +++ /dev/null @@ -1,15 +0,0 @@ -/* File : example.i */ -%module example - -%{ -#include "example.h" -%} - -/* Let's just grab the original header file here */ -%include "example.h" - -/* Some constants */ - -%constant double (Shape::*AREAPT)(void) = &Shape::area; -%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; -%constant double (Shape::*NULLPT)(void) = 0; diff --git a/Examples/ruby/mpointer/runme.rb b/Examples/ruby/mpointer/runme.rb deleted file mode 100644 index e11aa68cb..000000000 --- a/Examples/ruby/mpointer/runme.rb +++ /dev/null @@ -1,48 +0,0 @@ -# Example using pointers to member functions - -require 'example' - -# Get the pointers - -area_pt = Example::areapt -perim_pt = Example::perimeterpt - -puts "area_pt = #{area_pt}" -puts "perim_pt = #{perim_pt}" - -# Create some objects - -c = Example::Circle.new(4) -s = Example::Square.new(10) - -# Do some calculations - -puts "Circle area = #{Example::do_op(c, area_pt)}" -puts "Circle perim = #{Example::do_op(c, perim_pt)}" -puts "Square area = #{Example::do_op(s, area_pt)}" -puts "Square perim = #{Example::do_op(s, perim_pt)}" - -puts "areavar = #{Example::areavar}" -puts "perimetervar = #{Example::perimetervar}" - -# Try the variables -puts "Circle area = #{Example::do_op(c, Example::areavar)}" -puts "Circle perim = #{Example::do_op(c, Example::perimetervar)}" -puts "Square area = #{Example::do_op(s, Example::areavar)}" -puts "Square perim = #{Example::do_op(s, Example::perimetervar)}" - -# Modify one of the variables -Example::areavar = perim_pt - -puts "Circle perimeter = #{Example::do_op(c, Example::areavar)}" - -# Try the constants - -puts "Example::AREAPT = #{Example::AREAPT}" -puts "Example::PERIMPT= #{Example::PERIMPT}" -puts "Example::NULLPT = #{Example::NULLPT}" - -puts "Circle area = #{Example::do_op(c, Example::AREAPT)}" -puts "Circle perim = #{Example::do_op(c, Example::PERIMPT)}" -puts "Square area = #{Example::do_op(s, Example::AREAPT)}" -puts "Square perim = #{Example::do_op(s, Example::PERIMPT)}" diff --git a/Examples/tcl/check.list b/Examples/tcl/check.list index a4d48453a..9f7e1b11e 100644 --- a/Examples/tcl/check.list +++ b/Examples/tcl/check.list @@ -6,7 +6,6 @@ enum funcptr import java -mpointer multimap operator pointer diff --git a/Examples/tcl/mpointer/Makefile b/Examples/tcl/mpointer/Makefile deleted file mode 100644 index c01283c20..000000000 --- a/Examples/tcl/mpointer/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -TOP = ../.. -SWIG = $(TOP)/../preinst-swig -CXXSRCS = example.cxx -TARGET = example -INTERFACE = example.i -LIBS = -lm - -all:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' tcl_cpp - -static:: - $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ - TARGET='mytclsh' INTERFACE='$(INTERFACE)' tclsh_cpp_static - -clean:: - $(MAKE) -f $(TOP)/Makefile tcl_clean - -check: all diff --git a/Examples/tcl/mpointer/example.cxx b/Examples/tcl/mpointer/example.cxx deleted file mode 100644 index 80d95f618..000000000 --- a/Examples/tcl/mpointer/example.cxx +++ /dev/null @@ -1,48 +0,0 @@ -/* File : example.c */ - -#include "example.h" -#include -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -/* Move the shape to a new location */ -void Shape::move(double dx, double dy) { - x += dx; - y += dy; -} - -int Shape::nshapes = 0; - -double Circle::area(void) { - return M_PI*radius*radius; -} - -double Circle::perimeter(void) { - return 2*M_PI*radius; -} - -double Square::area(void) { - return width*width; -} - -double Square::perimeter(void) { - return 4*width; -} - -double do_op(Shape *s, double (Shape::*m)(void)) { - return (s->*m)(); -} - -double (Shape::*areapt())(void) { - return &Shape::area; -} - -double (Shape::*perimeterpt())(void) { - return &Shape::perimeter; -} - -/* Member pointer variables */ -double (Shape::*areavar)(void) = &Shape::area; -double (Shape::*perimetervar)(void) = &Shape::perimeter; - diff --git a/Examples/tcl/mpointer/example.h b/Examples/tcl/mpointer/example.h deleted file mode 100644 index 110fe91c1..000000000 --- a/Examples/tcl/mpointer/example.h +++ /dev/null @@ -1,50 +0,0 @@ -/* File : example.h */ - -class Shape { -public: - Shape() { - nshapes++; - } - virtual ~Shape() { - nshapes--; - }; - double x, y; - double *z; - - void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; - static int nshapes; -}; - -class Circle : public Shape { -private: - double radius; -public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -class Square : public Shape { -private: - double width; -public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); -}; - -extern double do_op(Shape *s, double (Shape::*m)(void)); - -/* Functions that return member pointers */ - -extern double (Shape::*areapt())(void); -extern double (Shape::*perimeterpt())(void); - -/* Global variables that are member pointers */ -extern double (Shape::*areavar)(void); -extern double (Shape::*perimetervar)(void); - - - diff --git a/Examples/tcl/mpointer/example.i b/Examples/tcl/mpointer/example.i deleted file mode 100644 index 238792be8..000000000 --- a/Examples/tcl/mpointer/example.i +++ /dev/null @@ -1,16 +0,0 @@ -/* File : example.i */ -%module example - -%{ -#include "example.h" -%} - -/* Let's just grab the original header file here */ -%include "example.h" - -/* Some constants */ - -%constant double (Shape::*AREAPT)(void) = &Shape::area; -%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; -%constant double (Shape::*NULLPT)(void) = 0; - diff --git a/Examples/tcl/mpointer/runme.tcl b/Examples/tcl/mpointer/runme.tcl deleted file mode 100644 index 5eefad89f..000000000 --- a/Examples/tcl/mpointer/runme.tcl +++ /dev/null @@ -1,49 +0,0 @@ -# Example using pointers to member functions - -catch { load ./example[info sharedlibextension] example} - -# Get the pointers - -set area_pt [ areapt ] -set perim_pt [ perimeterpt ] - -puts "area_pt = $area_pt" -puts "perim_pt = $perim_pt" - -# Create some objects - -set c [Circle -args 4] -set s [Square -args 10] - -# Do some calculations - -puts "Circle area = [do_op $c $area_pt]" -puts "Circle perim = [do_op $c $perim_pt]" -puts "Square area = [do_op $s $area_pt]" -puts "Square perim = [do_op $s $perim_pt]" - -puts "areavar = $areavar"; -puts "perimetervar = $perimetervar"; - -# Try the variables -puts "Circle area = [do_op $c $areavar]" -puts "Circle perim = [do_op $c $perimetervar]" -puts "Square area = [do_op $s $areavar]" -puts "Square perim = [do_op $s $perimetervar]" - -# Modify one of the variables -set areavar $perim_pt - -puts "Circle perimeter = [do_op $c $areavar]" - -# Try the constants - -puts "example.AREAPT = $AREAPT" -puts "example.PERIMPT= $PERIMPT" -puts "example.NULLPT = $NULLPT" - -puts "Circle area = [do_op $c $AREAPT]" -puts "Circle perim = [do_op $c $PERIMPT]" -puts "Square area = [do_op $s $AREAPT]" -puts "Square perim = [do_op $s $PERIMPT]" - diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 4fd475ca1..312e5443c 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -183,6 +183,7 @@ CPP_TEST_CASES += \ li_typemaps \ li_windows \ long_long_apply \ + member_pointer \ member_template \ minherit \ minherit2 \ diff --git a/Examples/test-suite/csharp/member_pointer_runme.cs b/Examples/test-suite/csharp/member_pointer_runme.cs new file mode 100644 index 000000000..ad324d474 --- /dev/null +++ b/Examples/test-suite/csharp/member_pointer_runme.cs @@ -0,0 +1,47 @@ +using System; +using member_pointerNamespace; + +public class runme { + public static SWIGTYPE_m_Shape__f_void__double memberPtr = null; + static void Main() { + // Get the pointers + + SWIGTYPE_m_Shape__f_void__double area_pt = member_pointer.areapt(); + SWIGTYPE_m_Shape__f_void__double perim_pt = member_pointer.perimeterpt(); + + // Create some objects + + Square s = new Square(10); + + // Do some calculations + + check( "Square area ", 100.0, member_pointer.do_op(s,area_pt) ); + check( "Square perim", 40.0, member_pointer.do_op(s,perim_pt) ); + + memberPtr = member_pointer.areavar; + memberPtr = member_pointer.perimetervar; + + // Try the variables + check( "Square area ", 100.0, member_pointer.do_op(s,member_pointer.areavar) ); + check( "Square perim", 40.0, member_pointer.do_op(s,member_pointer.perimetervar) ); + + // Modify one of the variables + member_pointer.areavar = perim_pt; + + check( "Square perimeter", 40.0, member_pointer.do_op(s,member_pointer.areavar) ); + + // Try the constants + + memberPtr = member_pointer.AREAPT; + memberPtr = member_pointer.PERIMPT; + memberPtr = member_pointer.NULLPT; + + check( "Square area ", 100.0, member_pointer.do_op(s,member_pointer.AREAPT) ); + check( "Square perim", 40.0, member_pointer.do_op(s,member_pointer.PERIMPT) ); + + } + private static void check(string what, double expected, double actual) { + if (expected != actual) + throw new ApplicationException("Failed: " + what + " Expected: " + expected + " Actual: " + actual); + } +} diff --git a/Examples/test-suite/java/member_pointer_runme.java b/Examples/test-suite/java/member_pointer_runme.java new file mode 100644 index 000000000..f8dcfbcb8 --- /dev/null +++ b/Examples/test-suite/java/member_pointer_runme.java @@ -0,0 +1,58 @@ +import member_pointer.*; + +public class member_pointer_runme { + + static { + try { + System.loadLibrary("member_pointer"); + } 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 SWIGTYPE_m_Shape__f_void__double memberPtr = null; + + public static void main(String argv[]) { + // Get the pointers + + SWIGTYPE_m_Shape__f_void__double area_pt = member_pointer.areapt(); + SWIGTYPE_m_Shape__f_void__double perim_pt = member_pointer.perimeterpt(); + + // Create some objects + + Square s = new Square(10); + + // Do some calculations + + check( "Square area ", 100.0, member_pointer.do_op(s,area_pt) ); + check( "Square perim", 40.0, member_pointer.do_op(s,perim_pt) ); + + memberPtr = member_pointer.getAreavar(); + memberPtr = member_pointer.getPerimetervar(); + + // Try the variables + check( "Square area ", 100.0, member_pointer.do_op(s,member_pointer.getAreavar()) ); + check( "Square perim", 40.0, member_pointer.do_op(s,member_pointer.getPerimetervar()) ); + + // Modify one of the variables + member_pointer.setAreavar(perim_pt); + + check( "Square perimeter", 40.0, member_pointer.do_op(s,member_pointer.getAreavar()) ); + + // Try the constants + + memberPtr = member_pointer.AREAPT; + memberPtr = member_pointer.PERIMPT; + memberPtr = member_pointer.NULLPT; + + check( "Square area ", 100.0, member_pointer.do_op(s,member_pointer.AREAPT) ); + check( "Square perim", 40.0, member_pointer.do_op(s,member_pointer.PERIMPT) ); + + } + + private static void check(String what, double expected, double actual) { + if (expected != actual) + throw new RuntimeException("Failed: " + what + " Expected: " + expected + " Actual: " + actual); + } +} diff --git a/Examples/test-suite/member_pointer.i b/Examples/test-suite/member_pointer.i new file mode 100644 index 000000000..e3ba5943f --- /dev/null +++ b/Examples/test-suite/member_pointer.i @@ -0,0 +1,101 @@ +%module member_pointer + +%inline %{ +class Shape { +public: + Shape() { + nshapes++; + } + virtual ~Shape() { + nshapes--; + }; + double x, y; + double *z; + + void move(double dx, double dy); + virtual double area(void) = 0; + virtual double perimeter(void) = 0; + static int nshapes; +}; + +class Circle : public Shape { +private: + double radius; +public: + Circle(double r) : radius(r) { }; + virtual double area(void); + virtual double perimeter(void); +}; + +class Square : public Shape { +private: + double width; +public: + Square(double w) : width(w) { }; + virtual double area(void); + virtual double perimeter(void); +}; + +extern double do_op(Shape *s, double (Shape::*m)(void)); + +/* Functions that return member pointers */ + +extern double (Shape::*areapt())(void); +extern double (Shape::*perimeterpt())(void); + +/* Global variables that are member pointers */ +extern double (Shape::*areavar)(void); +extern double (Shape::*perimetervar)(void); + +%} + +%{ +# define M_PI 3.14159265358979323846 + +/* Move the shape to a new location */ +void Shape::move(double dx, double dy) { + x += dx; + y += dy; +} + +int Shape::nshapes = 0; + +double Circle::area(void) { + return M_PI*radius*radius; +} + +double Circle::perimeter(void) { + return 2*M_PI*radius; +} + +double Square::area(void) { + return width*width; +} + +double Square::perimeter(void) { + return 4*width; +} + +double do_op(Shape *s, double (Shape::*m)(void)) { + return (s->*m)(); +} + +double (Shape::*areapt())(void) { + return &Shape::area; +} + +double (Shape::*perimeterpt())(void) { + return &Shape::perimeter; +} + +/* Member pointer variables */ +double (Shape::*areavar)(void) = &Shape::area; +double (Shape::*perimetervar)(void) = &Shape::perimeter; +%} + + +/* Some constants */ +%constant double (Shape::*AREAPT)(void) = &Shape::area; +%constant double (Shape::*PERIMPT)(void) = &Shape::perimeter; +%constant double (Shape::*NULLPT)(void) = 0; + diff --git a/Examples/test-suite/perl5/member_pointer_runme.pl b/Examples/test-suite/perl5/member_pointer_runme.pl new file mode 100644 index 000000000..993b1a2f4 --- /dev/null +++ b/Examples/test-suite/perl5/member_pointer_runme.pl @@ -0,0 +1,47 @@ + +# member_pointer using pointers to member functions + +use member_pointer; + +sub check($;$;$) { + my($what, $expected, $actual) = @_; + if ($expected != $actual) { + die ("Failed: $what Expected: $expected Actual: $actual"); + } +} + +# Get the pointers + +$area_pt = member_pointer::areapt(); +$perim_pt = member_pointer::perimeterpt(); + +# Create some objects + +$s = new member_pointer::Square(10); + +# Do some calculations + +check "Square area ", 100.0, member_pointer::do_op($s,$area_pt); +check "Square perim", 40.0, member_pointer::do_op($s,$perim_pt); + +$memberPtr = $member_pointer::areavar; +$memberPtr = $member_pointer::perimetervar; + +# Try the variables +check "Square area ", 100.0, member_pointer::do_op($s,$member_pointer::areavar); +check "Square perim", 40.0, member_pointer::do_op($s,$member_pointer::perimetervar); + +# Modify one of the variables +$member_pointer::areavar = $perim_pt; + +check "Square perimeter", 40.0, member_pointer::do_op($s,$member_pointer::areavar); + +# Try the constants + +$memberPtr = $member_pointer::AREAPT; +$memberPtr = $member_pointer::PERIMPT; +$memberPtr = $member_pointer::NULLPT; + +check "Square area ", 100.0, member_pointer::do_op($s,$member_pointer::AREAPT); +check "Square perim", 40.0, member_pointer::do_op($s,$member_pointer::PERIMPT); + diff --git a/Examples/test-suite/python/member_pointer_runme.py b/Examples/test-suite/python/member_pointer_runme.py new file mode 100644 index 000000000..27e7a483d --- /dev/null +++ b/Examples/test-suite/python/member_pointer_runme.py @@ -0,0 +1,43 @@ +# Example using pointers to member functions + +from member_pointer import * + +def check(what, expected, actual): + if expected != actual: + raise RuntimeError ("Failed: " , what , " Expected: " , expected , " Actual: " , actual) + +# Get the pointers + +area_pt = areapt() +perim_pt = perimeterpt() + +# Create some objects + +s = Square(10) + +# Do some calculations + +check ("Square area ", 100.0, do_op(s,area_pt)) +check ("Square perim", 40.0, do_op(s,perim_pt)) + +memberPtr = cvar.areavar +memberPtr = cvar.perimetervar + +# Try the variables +check ("Square area ", 100.0, do_op(s,cvar.areavar)) +check ("Square perim", 40.0, do_op(s,cvar.perimetervar)) + +# Modify one of the variables +cvar.areavar = perim_pt + +check ("Square perimeter", 40.0, do_op(s,cvar.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)) + diff --git a/Examples/test-suite/ruby/member_pointer_runme.rb b/Examples/test-suite/ruby/member_pointer_runme.rb new file mode 100644 index 000000000..eca6f0df8 --- /dev/null +++ b/Examples/test-suite/ruby/member_pointer_runme.rb @@ -0,0 +1,54 @@ +#!/usr/bin/env ruby +# +# Example using pointers to member functions +# +# +# + +require 'swig_assert' + +require 'member_pointer' + +include Member_pointer + +def check(what, expected, actual) + if not expected == actual + raise RuntimeError, "Failed: #{what} Expected: #{expected} Actual: #{actual}" + end +end + +# Get the pointers + +area_pt = Member_pointer::areapt +perim_pt = Member_pointer::perimeterpt + +# Create some objects + +s = Member_pointer::Square.new(10) + +# Do some calculations + +check "Square area ", 100.0, Member_pointer::do_op(s, area_pt) +check "Square perim", 40.0, Member_pointer::do_op(s, perim_pt) + +memberPtr = Member_pointer::areavar +memberPtr = Member_pointer::perimetervar + +# Try the variables +check "Square area ", 100.0, Member_pointer::do_op(s, Member_pointer::areavar) +check "Square perim", 40.0, Member_pointer::do_op(s, Member_pointer::perimetervar) + +# Modify one of the variables +Member_pointer::areavar = perim_pt + +check "Square perimeter", 40.0, Member_pointer::do_op(s, Member_pointer::areavar) + +# Try the constants + +memberPtr = Member_pointer::AREAPT +memberPtr = Member_pointer::PERIMPT +memberPtr = Member_pointer::NULLPT + +check "Square area ", 100.0, Member_pointer::do_op(s, Member_pointer::AREAPT) +check "Square perim", 40.0, Member_pointer::do_op(s, Member_pointer::PERIMPT) + diff --git a/Examples/test-suite/tcl/member_pointer_runme.tcl b/Examples/test-suite/tcl/member_pointer_runme.tcl new file mode 100644 index 000000000..e4d099163 --- /dev/null +++ b/Examples/test-suite/tcl/member_pointer_runme.tcl @@ -0,0 +1,46 @@ +# Example using pointers to member functions + +if [ catch { load ./member_pointer[info sharedlibextension] member_pointer} err_msg ] { + puts stderr "Could not load shared object:\n$err_msg" +} + +proc check {what expected actual} { + if {$expected != $actual } { + error "Failed: $what , Expected: $expected , Actual: $actual" + } +} +# Get the pointers + +set area_pt [ areapt ] +set perim_pt [ perimeterpt ] + +# Create some objects + +set s [Square -args 10] + +# Do some calculations + +check "Square area " 100.0 [do_op $s $area_pt] +check "Square perim" 40.0 [do_op $s $perim_pt] + +set memberPtr $areavar +set 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 +set areavar $perim_pt + +check "Square perimeter" 40.0 [do_op $s $areavar] + +# Try the constants + +set memberPtr $AREAPT +set memberPtr $PERIMPT +set memberPtr $NULLPT + +check "Square area " 100.0 [do_op $s $AREAPT] +check "Square perim" 40.0 [do_op $s $PERIMPT] +