From e484bb1721bc7d123774876eea1d34eeb9da1173 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Mon, 2 Jan 2006 11:43:32 +0000 Subject: [PATCH] add the java example git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8183 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Examples/Makefile.in | 5 +++-- SWIG/Examples/perl5/check.list | 1 + SWIG/Examples/perl5/java/Example.java | 29 +++++++++++++++++++++++++++ SWIG/Examples/perl5/java/Makefile | 28 ++++++++++++++++++++++++++ SWIG/Examples/perl5/java/example.i | 18 +++++++++++++++++ SWIG/Examples/perl5/java/runme.pl | 26 ++++++++++++++++++++++++ 6 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 SWIG/Examples/perl5/java/Example.java create mode 100644 SWIG/Examples/perl5/java/Makefile create mode 100644 SWIG/Examples/perl5/java/example.i create mode 100644 SWIG/Examples/perl5/java/runme.pl diff --git a/SWIG/Examples/Makefile.in b/SWIG/Examples/Makefile.in index 27a7efd7e..8d4da3dfc 100644 --- a/SWIG/Examples/Makefile.in +++ b/SWIG/Examples/Makefile.in @@ -163,6 +163,7 @@ PERL5_INCLUDE= @PERL5EXT@ # Extra Perl specific dynamic linking options PERL5_DLNK = @PERL5DYNAMICLINKING@ PERL5_CCFLAGS = @PERL5CCFLAGS@ +PERL5_EXP = -Dexplicit= # ---------------------------------------------------------------- # Build a Perl5 dynamically loadable module (C) @@ -179,7 +180,7 @@ perl5: $(SRCS) perl5_cpp: $(SRCS) $(SWIG) -perl5 -c++ $(SWIGOPT) $(INTERFACE) - $(CXX) -c $(CCSHARED) $(CFLAGS) -Dexplicit= $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE) + $(CXX) -c $(CCSHARED) $(CFLAGS) $(PERL5_EXP) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE) $(CXXSHARED) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) # ---------------------------------------------------------------- @@ -201,7 +202,7 @@ perl5_static: $(SRCS) perl5_static_cpp: $(SRCS) $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) $(INTERFACE) - $(CXX) $(CFLAGS) -Dexplicit= $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) + $(CXX) $(CFLAGS) $(PERL5_EXP) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) # ----------------------------------------------------------------- # Cleaning the Perl5 examples diff --git a/SWIG/Examples/perl5/check.list b/SWIG/Examples/perl5/check.list index c7225183a..04907694c 100644 --- a/SWIG/Examples/perl5/check.list +++ b/SWIG/Examples/perl5/check.list @@ -12,3 +12,4 @@ reference simple value variables +java diff --git a/SWIG/Examples/perl5/java/Example.java b/SWIG/Examples/perl5/java/Example.java new file mode 100644 index 000000000..91ddb1ac5 --- /dev/null +++ b/SWIG/Examples/perl5/java/Example.java @@ -0,0 +1,29 @@ +public class Example { + public int mPublicInt; + + public Example() { + mPublicInt = 0; + } + + public Example(int IntVal) { + mPublicInt = IntVal; + } + + + public int Add(int a, int b) { + return (a+b); + } + + public float Add(float a, float b) { + return (a+b); + } + + public String Add(String a, String b) { + return (a+b); + } + + public Example Add(Example a, Example b) { + return new Example(a.mPublicInt + b.mPublicInt); + } +} + diff --git a/SWIG/Examples/perl5/java/Makefile b/SWIG/Examples/perl5/java/Makefile new file mode 100644 index 000000000..eb581d9a7 --- /dev/null +++ b/SWIG/Examples/perl5/java/Makefile @@ -0,0 +1,28 @@ +CXX = gcj +TOP = ../.. +SWIG = $(TOP)/../preinst-swig +CXXSRCS = +TARGET = example +INTERFACE = example.i +LIBS = -lm + +all:: Example.class + $(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ + TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' CXX="gcj" CFLAGS="-fPIC" \ + CXXSHARED="gcj -fPIC -shared Example.class" PERL5_CCFLAGS='' PERL5_EXP='' perl5_cpp + + +clean:: + $(MAKE) -f $(TOP)/Makefile perl5_clean + rm -f *.class Example.h + +check: all + +run: + perl runme.pl + +Example.class: Example.java + gcj -v || exit 0 + gcj -fPIC -C -c -g Example.java + gcjh Example + diff --git a/SWIG/Examples/perl5/java/example.i b/SWIG/Examples/perl5/java/example.i new file mode 100644 index 000000000..b67201ee5 --- /dev/null +++ b/SWIG/Examples/perl5/java/example.i @@ -0,0 +1,18 @@ +%module example + +%{ +#undef STATIC +%} +%include +%include +%{ +#undef TRUE +#define TRUE 1 +%} + +%{ +#include "Example.h" +%} + + +%include Example.h diff --git a/SWIG/Examples/perl5/java/runme.pl b/SWIG/Examples/perl5/java/runme.pl new file mode 100644 index 000000000..59a141d2a --- /dev/null +++ b/SWIG/Examples/perl5/java/runme.pl @@ -0,0 +1,26 @@ +use example; + +example::JvCreateJavaVM(undef); +example::JvAttachCurrentThread(undef, undef); + +$e1 = new example::Example(1); +print $e1->{mPublicInt},"\n"; + +$e2 = new example::Example(2); +print $e2->{mPublicInt},"\n"; + +$i = $e1->Add(1,2); +print $i,"\n"; + +$d = $e2->Add(1.0,2.0); +print $d,"\n"; + +$d = $e2->Add("1","2"); +print $d,"\n"; + +$e3 = $e1->Add($e1,$e2); +print $e3->{mPublicInt},"\n"; + + + +example::JvDetachCurrentThread()