diff options
Diffstat (limited to 'Examples/java')
-rw-r--r-- | Examples/java/class/example.cxx | 10 | ||||
-rw-r--r-- | Examples/java/class/example.h | 25 | ||||
-rw-r--r-- | Examples/java/class/example.i | 1 | ||||
-rw-r--r-- | Examples/java/class/index.html | 49 | ||||
-rw-r--r-- | Examples/java/template/index.html | 2 |
5 files changed, 23 insertions, 64 deletions
diff --git a/Examples/java/class/example.cxx b/Examples/java/class/example.cxx index 1e8e203dd..046304519 100644 --- a/Examples/java/class/example.cxx +++ b/Examples/java/class/example.cxx @@ -1,4 +1,4 @@ -/* File : example.c */ +/* File : example.cxx */ #include "example.h" #define M_PI 3.14159265358979323846 @@ -11,18 +11,18 @@ void Shape::move(double dx, double dy) { int Shape::nshapes = 0; -double Circle::area(void) { +double Circle::area() { return M_PI*radius*radius; } -double Circle::perimeter(void) { +double Circle::perimeter() { return 2*M_PI*radius; } -double Square::area(void) { +double Square::area() { return width*width; } -double Square::perimeter(void) { +double Square::perimeter() { return 4*width; } diff --git a/Examples/java/class/example.h b/Examples/java/class/example.h index 46d901361..0dff185b2 100644 --- a/Examples/java/class/example.h +++ b/Examples/java/class/example.h @@ -7,11 +7,11 @@ public: } virtual ~Shape() { nshapes--; - }; - double x, y; + } + double x, y; void move(double dx, double dy); - virtual double area(void) = 0; - virtual double perimeter(void) = 0; + virtual double area() = 0; + virtual double perimeter() = 0; static int nshapes; }; @@ -19,21 +19,16 @@ class Circle : public Shape { private: double radius; public: - Circle(double r) : radius(r) { }; - virtual double area(void); - virtual double perimeter(void); + Circle(double r) : radius(r) { } + virtual double area(); + virtual double perimeter(); }; class Square : public Shape { private: double width; public: - Square(double w) : width(w) { }; - virtual double area(void); - virtual double perimeter(void); + Square(double w) : width(w) { } + virtual double area(); + virtual double perimeter(); }; - - - - - diff --git a/Examples/java/class/example.i b/Examples/java/class/example.i index 75700b305..fbdf7249f 100644 --- a/Examples/java/class/example.i +++ b/Examples/java/class/example.i @@ -7,4 +7,3 @@ /* Let's just grab the original header file here */ %include "example.h" - diff --git a/Examples/java/class/index.html b/Examples/java/class/index.html index cf9130c62..b0a5e221d 100644 --- a/Examples/java/class/index.html +++ b/Examples/java/class/index.html @@ -32,8 +32,8 @@ public: } virtual ~Shape() { nshapes--; - }; - double x, y; + } + double x, y; void move(double dx, double dy); virtual double area() = 0; virtual double perimeter() = 0; @@ -44,7 +44,7 @@ class Circle : public Shape { private: double radius; public: - Circle(double r) : radius(r) { }; + Circle(double r) : radius(r) { } virtual double area(); virtual double perimeter(); }; @@ -53,7 +53,7 @@ class Square : public Shape { private: double width; public: - Square(double w) : width(w) { }; + Square(double w) : width(w) { } virtual double area(); virtual double perimeter(); }; @@ -146,50 +146,15 @@ Shape.setNshapes(13); // Set a static data member <ul> <li>This high-level interface using proxy classes is not the only way to handle C++ code. -A low level interface using c functions to access member variables and member functions is the alternative SWIG -approach. This entails passing around the c pointer or c++ 'this' pointer and as such it is not difficult to crash the JVM. +A low level interface using C functions to access member variables and member functions is the alternative SWIG +approach. This entails passing around the C pointer or C++ 'this' pointer and as such it is not difficult to crash the JVM. The abstraction of the underlying pointer by the java proxy classes far better fits the java programming paradigm. <p> -<li>SWIG *does* know how to properly perform upcasting of objects in an inheritance +<li>SWIG <b>does</b> know how to properly perform upcasting of objects in an inheritance hierarchy (including multiple inheritance). However Java classes can only derive from one base class so multiple inheritance is not implemented. Java classes can implement more than one interface so there is scope for improvement in the future. -<p> -<li>A wide variety of C++ features are not currently supported by SWIG. Here is the -short and incomplete list: - -<p> -<ul> -<li>Overloaded methods and functions. SWIG wrappers don't know how to resolve name -conflicts so you must give an alternative name to any overloaded method name using the -%name directive like this: - -<blockquote> -<pre> -void foo(int a); -%name(foo2) void foo(double a, double b); -</pre> -</blockquote> - -<p> -<li>Overloaded operators. Not supported at all. The only workaround for this is -to write a helper function. For example: - -<blockquote> -<pre> -%inline %{ - Vector *vector_add(Vector *a, Vector *b) { - ... whatever ... - } -%} -</pre> -</blockquote> - -<p> -<li>Namespaces. Not supported at all. Won't be supported until SWIG2.0 (if at all). - -</ul> </ul> <hr> diff --git a/Examples/java/template/index.html b/Examples/java/template/index.html index f4408e568..31dba6d8e 100644 --- a/Examples/java/template/index.html +++ b/Examples/java/template/index.html @@ -16,7 +16,7 @@ This example illustrates how C++ templates can be used from Java using SWIG. <h2>The C++ Code</h2> -Lets take a templated function and a templated class as follows: +Let's take a templated function and a templated class as follows: <blockquote> <pre> |