*** empty log message ***
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4146 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
9b3f0ae9b0
commit
5de5df3262
16 changed files with 237 additions and 500 deletions
234
CHANGES
234
CHANGES
|
|
@ -10,13 +10,245 @@ to the language modules take place, starting from the stable release
|
|||
Eventually this branch will be merged back to the trunk of the CVS
|
||||
tree (maybe).
|
||||
|
||||
Version 1.3.17 (In progress)
|
||||
Version 1.3.18 (In progress)
|
||||
============================
|
||||
|
||||
Due to the size of the CHANGES file, please add change entries to the
|
||||
file CHANGES.current. It will be merged into this file before
|
||||
release. -- Dave
|
||||
|
||||
Version 1.3.17 (November 22, 2002)
|
||||
==================================
|
||||
11/19/2002: beazley
|
||||
Fixed [ 613922 ] preprocessor errors with HAVE_LONG_LONG.
|
||||
|
||||
11/19/2002: beazley
|
||||
Fixed [ 615480 ] mzscheme SWIG_MustGetPtr_.
|
||||
|
||||
11/19/2002: beazley
|
||||
Fixed [ 635119 ] SWIG_croak causes compiler warning.
|
||||
|
||||
11/16/2002: cheetah (William Fulton)
|
||||
[Java] Added typemaps for pointers to class members.
|
||||
|
||||
11/15/2002: cheetah (William Fulton)
|
||||
[Java] Bug fix: Overloaded C++ functions which cannot be overloaded in Java
|
||||
once again issue a warning.
|
||||
|
||||
11/14/2002: cheetah (William Fulton)
|
||||
[Java] Handling of NULL pointers is improved. A java null object will now
|
||||
be translated to and from a NULL C/C++ pointer by default. Previously when
|
||||
wrapping:
|
||||
|
||||
class SomeClass {...};
|
||||
void foo(SomeClass *s);
|
||||
|
||||
and it was called from Java with null:
|
||||
|
||||
modulename.foo(null)
|
||||
|
||||
a Java NullPointerException was thrown. Extra typemaps had to be written in
|
||||
order to obtain a NULL pointer to pass to functions like this one. Now the
|
||||
default wrapping will detect 'null' and translate it into a NULL pointer.
|
||||
Also if a function returns a NULL pointer, eg:
|
||||
|
||||
SomeClass *bar() { return NULL; }
|
||||
|
||||
Then this used to be wrapped with a SomeClass proxy class holding a NULL
|
||||
pointer. Now null is returned instead. These changes are subtle but useful.
|
||||
The original behaviour can be obtained by using the original typemaps:
|
||||
|
||||
%typemap(javaout) SWIGTYPE {
|
||||
return new $&javaclassname($jnicall, true);
|
||||
}
|
||||
%typemap(javaout) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] {
|
||||
return new $javaclassname($jnicall, $owner);
|
||||
}
|
||||
%typemap(javagetcptr) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] %{
|
||||
protected static long getCPtr($javaclassname obj) {
|
||||
return obj.swigCPtr;
|
||||
}
|
||||
%}
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
|
||||
11/12/2002: beazley
|
||||
Fixed problem with abstract methods and signatures. For example:
|
||||
|
||||
class abstract_foo {
|
||||
public:
|
||||
virtual int meth(int meth_param) = 0;
|
||||
};
|
||||
|
||||
|
||||
class abstract_bar : public abstract_foo {
|
||||
public:
|
||||
int meth(int meth_param_1, int meth_param_2) { return 0; }
|
||||
};
|
||||
|
||||
In this case, abstract_bar is still abstract.
|
||||
|
||||
Fixes [ 628438 ] Derived abstract class not abstract.
|
||||
Reported and patched by Scott Michel.
|
||||
|
||||
11/11/2002: beazley
|
||||
Fixed a matching problem with typemaps and array dimensions. For example, if you
|
||||
had this:
|
||||
|
||||
typedef char blah[20];
|
||||
|
||||
and a typemap:
|
||||
|
||||
%typemap() char [ANY] {
|
||||
... $1_dim0 ...
|
||||
}
|
||||
|
||||
then $1_dim* variables weren't be expanded properly. It should work now.
|
||||
Problem reported by Pankaj Kumar Goel.
|
||||
|
||||
11/07/2002: mkoeppe
|
||||
Added an experimental new module that dumps SWIG's parse
|
||||
tree as (Common) Lisp s-expressions. The module is
|
||||
invoked with SWIG's -sexp command-line switch. The output
|
||||
can be read into Common Lisp. There is (prototype)
|
||||
example Lisp code that generates Foreign Function Interface
|
||||
definitions for use with Kevin Rosenberg's UFFI.
|
||||
|
||||
*** EXPERIMENTAL NEW FEATURE ***
|
||||
|
||||
11/07/2002: mkoeppe
|
||||
Removed duplicate declaration of "cpp_template_decl" in
|
||||
parser.y; bison 1.75 complained.
|
||||
|
||||
11/06/2002: cheetah (William Fulton)
|
||||
[Java] Default primitive array handling has changed like arrays of classes.
|
||||
C primitive arrays are no longer wrapped by a Java array but with a pointer
|
||||
(type wrapper class). Again the changes have been made for efficiency reasons.
|
||||
The original typemaps have been moved into arrays_java.i, so the original
|
||||
behaviour can be obtained merely including this file:
|
||||
|
||||
%include "arrays_java.i"
|
||||
|
||||
The array support functions are no longer generated by default. They are only
|
||||
generated when including this file, thus this often unused code is only
|
||||
generated when specifically requiring this type of array support.
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
11/05/2002: ljohnson (Lyle Johnson)
|
||||
[Ruby] Added support for nested module declarations (as was
|
||||
previously added for the Perl module). So a %module directive
|
||||
of the form:
|
||||
|
||||
%module "Outer::Inner::Foo"
|
||||
|
||||
will nest everything as (in Ruby code):
|
||||
|
||||
module Outer
|
||||
module Inner
|
||||
module Foo
|
||||
# stuff goes here
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
11/05/2002: mkoeppe
|
||||
[MzScheme] Add an argument (-declaremodule) that generates
|
||||
code to correctly declare a primitive module extension.
|
||||
Patch submitted by Bruce Butterfield.
|
||||
|
||||
11/02/2002: cheetah (William Fulton)
|
||||
[Java] Added patch submitted by Michael Cahill to remove unused parameter
|
||||
warnings for the jenv and cls parameters. This patch also also allows one
|
||||
to use "void" in the jni typemap for any type without code being generated
|
||||
attempting to return a value.
|
||||
|
||||
10/29/2002: cheetah (William Fulton)
|
||||
[Java] Array handling is different. Arrays of classes are no longer wrapped
|
||||
with proxy arrays, eg wrapping
|
||||
|
||||
class X {...};
|
||||
X foo[10];
|
||||
|
||||
used to be wrapped with these Java getters and setters:
|
||||
|
||||
public static void setFoo(X[] value) {...}
|
||||
public static X[] getFoo() {...}
|
||||
|
||||
This approach is very inefficient as the entire array is copied numerous
|
||||
times on each invocation of the getter or setter. These arrays are now
|
||||
wrapped with a pointer so it is only possible to access the first array element
|
||||
using a proxy class:
|
||||
|
||||
public static void setFoo(X value) {...}
|
||||
public static X getFoo() {...}
|
||||
|
||||
Arrays of enums have also been similarly changed. This behaviour is now like the
|
||||
other SWIG language's implementation and the array library should be used to
|
||||
access the other elements. The original behaviour can be achieved using the
|
||||
macros and typemaps in arrays_java.i, for example:
|
||||
|
||||
%include "arrays_java.i"
|
||||
JAVA_ARRAYSOFCLASSES(X)
|
||||
class X {...};
|
||||
X foo[10];
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
10/29/2002: cheetah (William Fulton)
|
||||
[Java] Two new typemaps javain and javaout for generating the proxy class
|
||||
and type wrapper class method calls to the JNI class. The new typemaps are
|
||||
really used for transforming the jstype (used in proxy class and type wrapper
|
||||
classes) to the jtype (used in the JNI class) and visa versa. A javain typemap
|
||||
is required whenever an in typemap is written and similarly javaout for an out
|
||||
typemap. An example is probably best to show them working:
|
||||
|
||||
%typemap(javain) Class "Class.getCPtr($javainput)"
|
||||
%typemap(javain) unsigned short "$javainput"
|
||||
%typemap(javaout) Class * {
|
||||
return new Class($jnicall, $owner);
|
||||
}
|
||||
|
||||
%inline %{
|
||||
class Class {};
|
||||
Class * bar(Class cls, unsigned short ush) { return new Class(); };
|
||||
%}
|
||||
|
||||
The generated proxy code is then:
|
||||
|
||||
public static Class bar(Class cls, int ush) {
|
||||
return new Class(exampleJNI.bar(Class.getCPtr(cls), ush), false);
|
||||
}
|
||||
|
||||
|
||||
Some new special variables have been introduced in order to use these typemaps.
|
||||
Here $javainput has been replaced by 'cls' and 'ush'. $jnicall has been replaced by
|
||||
the native method call, 'exampleJNI.bar(...)' and $owner has been replaced by 'false'.
|
||||
$javainput is analogous to the $input special variable. It is replaced by the parameter name.
|
||||
$jnicall is analogous to $action in %exception. It is replaced by the call to the native
|
||||
method in the JNI class.
|
||||
$owner is replaced by either true if %newobject has been used otherwise false.
|
||||
|
||||
The java.swg file contains default javain and javout typemaps which will produce the same code
|
||||
as previously. This change is only of concern to those who have written their own typemaps as
|
||||
you will then most likely have to write your own javain and javaout typemaps.
|
||||
|
||||
The javaout typemap also makes it possible to use a Java downcast to be used on abstract
|
||||
proxy base classes. See the Java documentation on dynamic_cast.
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
10/24/2002: ttn
|
||||
[Methodology] Upgaded to libtool 1.4.3, presumably w/ better
|
||||
support for newish platforms (like MacOS X).
|
||||
|
||||
10/21/2002: ttn
|
||||
Fixed Runtime/Makefile.in bug -- thanks to Richard Calmbach.
|
||||
|
||||
10/18/2002: ttn
|
||||
Fixed typo in doh.h -- thanks to Max Horn.
|
||||
|
||||
Version 1.3.16 (October 14, 2002)
|
||||
=================================
|
||||
|
||||
|
|
|
|||
234
CHANGES.current
234
CHANGES.current
|
|
@ -1,232 +1,6 @@
|
|||
Version 1.3.17 (November 22, 2002)
|
||||
==================================
|
||||
11/19/2002: beazley
|
||||
Fixed [ 613922 ] preprocessor errors with HAVE_LONG_LONG.
|
||||
|
||||
11/19/2002: beazley
|
||||
Fixed [ 615480 ] mzscheme SWIG_MustGetPtr_.
|
||||
|
||||
11/19/2002: beazley
|
||||
Fixed [ 635119 ] SWIG_croak causes compiler warning.
|
||||
|
||||
11/16/2002: cheetah (William Fulton)
|
||||
[Java] Added typemaps for pointers to class members.
|
||||
|
||||
11/15/2002: cheetah (William Fulton)
|
||||
[Java] Bug fix: Overloaded C++ functions which cannot be overloaded in Java
|
||||
once again issue a warning.
|
||||
|
||||
11/14/2002: cheetah (William Fulton)
|
||||
[Java] Handling of NULL pointers is improved. A java null object will now
|
||||
be translated to and from a NULL C/C++ pointer by default. Previously when
|
||||
wrapping:
|
||||
|
||||
class SomeClass {...};
|
||||
void foo(SomeClass *s);
|
||||
|
||||
and it was called from Java with null:
|
||||
|
||||
modulename.foo(null)
|
||||
|
||||
a Java NullPointerException was thrown. Extra typemaps had to be written in
|
||||
order to obtain a NULL pointer to pass to functions like this one. Now the
|
||||
default wrapping will detect 'null' and translate it into a NULL pointer.
|
||||
Also if a function returns a NULL pointer, eg:
|
||||
|
||||
SomeClass *bar() { return NULL; }
|
||||
|
||||
Then this used to be wrapped with a SomeClass proxy class holding a NULL
|
||||
pointer. Now null is returned instead. These changes are subtle but useful.
|
||||
The original behaviour can be obtained by using the original typemaps:
|
||||
|
||||
%typemap(javaout) SWIGTYPE {
|
||||
return new $&javaclassname($jnicall, true);
|
||||
}
|
||||
%typemap(javaout) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] {
|
||||
return new $javaclassname($jnicall, $owner);
|
||||
}
|
||||
%typemap(javagetcptr) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] %{
|
||||
protected static long getCPtr($javaclassname obj) {
|
||||
return obj.swigCPtr;
|
||||
}
|
||||
%}
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
|
||||
11/12/2002: beazley
|
||||
Fixed problem with abstract methods and signatures. For example:
|
||||
|
||||
class abstract_foo {
|
||||
public:
|
||||
virtual int meth(int meth_param) = 0;
|
||||
};
|
||||
Version 1.3.18 (In progress)
|
||||
============================
|
||||
12/02/2002: beazley
|
||||
SWIG 'rel-1-3' CVS branch merged back into the main branch.
|
||||
|
||||
|
||||
class abstract_bar : public abstract_foo {
|
||||
public:
|
||||
int meth(int meth_param_1, int meth_param_2) { return 0; }
|
||||
};
|
||||
|
||||
In this case, abstract_bar is still abstract.
|
||||
|
||||
Fixes [ 628438 ] Derived abstract class not abstract.
|
||||
Reported and patched by Scott Michel.
|
||||
|
||||
11/11/2002: beazley
|
||||
Fixed a matching problem with typemaps and array dimensions. For example, if you
|
||||
had this:
|
||||
|
||||
typedef char blah[20];
|
||||
|
||||
and a typemap:
|
||||
|
||||
%typemap() char [ANY] {
|
||||
... $1_dim0 ...
|
||||
}
|
||||
|
||||
then $1_dim* variables weren't be expanded properly. It should work now.
|
||||
Problem reported by Pankaj Kumar Goel.
|
||||
|
||||
11/07/2002: mkoeppe
|
||||
Added an experimental new module that dumps SWIG's parse
|
||||
tree as (Common) Lisp s-expressions. The module is
|
||||
invoked with SWIG's -sexp command-line switch. The output
|
||||
can be read into Common Lisp. There is (prototype)
|
||||
example Lisp code that generates Foreign Function Interface
|
||||
definitions for use with Kevin Rosenberg's UFFI.
|
||||
|
||||
*** EXPERIMENTAL NEW FEATURE ***
|
||||
|
||||
11/07/2002: mkoeppe
|
||||
Removed duplicate declaration of "cpp_template_decl" in
|
||||
parser.y; bison 1.75 complained.
|
||||
|
||||
11/06/2002: cheetah (William Fulton)
|
||||
[Java] Default primitive array handling has changed like arrays of classes.
|
||||
C primitive arrays are no longer wrapped by a Java array but with a pointer
|
||||
(type wrapper class). Again the changes have been made for efficiency reasons.
|
||||
The original typemaps have been moved into arrays_java.i, so the original
|
||||
behaviour can be obtained merely including this file:
|
||||
|
||||
%include "arrays_java.i"
|
||||
|
||||
The array support functions are no longer generated by default. They are only
|
||||
generated when including this file, thus this often unused code is only
|
||||
generated when specifically requiring this type of array support.
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
11/05/2002: ljohnson (Lyle Johnson)
|
||||
[Ruby] Added support for nested module declarations (as was
|
||||
previously added for the Perl module). So a %module directive
|
||||
of the form:
|
||||
|
||||
%module "Outer::Inner::Foo"
|
||||
|
||||
will nest everything as (in Ruby code):
|
||||
|
||||
module Outer
|
||||
module Inner
|
||||
module Foo
|
||||
# stuff goes here
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
11/05/2002: mkoeppe
|
||||
[MzScheme] Add an argument (-declaremodule) that generates
|
||||
code to correctly declare a primitive module extension.
|
||||
Patch submitted by Bruce Butterfield.
|
||||
|
||||
11/02/2002: cheetah (William Fulton)
|
||||
[Java] Added patch submitted by Michael Cahill to remove unused parameter
|
||||
warnings for the jenv and cls parameters. This patch also also allows one
|
||||
to use "void" in the jni typemap for any type without code being generated
|
||||
attempting to return a value.
|
||||
|
||||
10/29/2002: cheetah (William Fulton)
|
||||
[Java] Array handling is different. Arrays of classes are no longer wrapped
|
||||
with proxy arrays, eg wrapping
|
||||
|
||||
class X {...};
|
||||
X foo[10];
|
||||
|
||||
used to be wrapped with these Java getters and setters:
|
||||
|
||||
public static void setFoo(X[] value) {...}
|
||||
public static X[] getFoo() {...}
|
||||
|
||||
This approach is very inefficient as the entire array is copied numerous
|
||||
times on each invocation of the getter or setter. These arrays are now
|
||||
wrapped with a pointer so it is only possible to access the first array element
|
||||
using a proxy class:
|
||||
|
||||
public static void setFoo(X value) {...}
|
||||
public static X getFoo() {...}
|
||||
|
||||
Arrays of enums have also been similarly changed. This behaviour is now like the
|
||||
other SWIG language's implementation and the array library should be used to
|
||||
access the other elements. The original behaviour can be achieved using the
|
||||
macros and typemaps in arrays_java.i, for example:
|
||||
|
||||
%include "arrays_java.i"
|
||||
JAVA_ARRAYSOFCLASSES(X)
|
||||
class X {...};
|
||||
X foo[10];
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
10/29/2002: cheetah (William Fulton)
|
||||
[Java] Two new typemaps javain and javaout for generating the proxy class
|
||||
and type wrapper class method calls to the JNI class. The new typemaps are
|
||||
really used for transforming the jstype (used in proxy class and type wrapper
|
||||
classes) to the jtype (used in the JNI class) and visa versa. A javain typemap
|
||||
is required whenever an in typemap is written and similarly javaout for an out
|
||||
typemap. An example is probably best to show them working:
|
||||
|
||||
%typemap(javain) Class "Class.getCPtr($javainput)"
|
||||
%typemap(javain) unsigned short "$javainput"
|
||||
%typemap(javaout) Class * {
|
||||
return new Class($jnicall, $owner);
|
||||
}
|
||||
|
||||
%inline %{
|
||||
class Class {};
|
||||
Class * bar(Class cls, unsigned short ush) { return new Class(); };
|
||||
%}
|
||||
|
||||
The generated proxy code is then:
|
||||
|
||||
public static Class bar(Class cls, int ush) {
|
||||
return new Class(exampleJNI.bar(Class.getCPtr(cls), ush), false);
|
||||
}
|
||||
|
||||
|
||||
Some new special variables have been introduced in order to use these typemaps.
|
||||
Here $javainput has been replaced by 'cls' and 'ush'. $jnicall has been replaced by
|
||||
the native method call, 'exampleJNI.bar(...)' and $owner has been replaced by 'false'.
|
||||
$javainput is analogous to the $input special variable. It is replaced by the parameter name.
|
||||
$jnicall is analogous to $action in %exception. It is replaced by the call to the native
|
||||
method in the JNI class.
|
||||
$owner is replaced by either true if %newobject has been used otherwise false.
|
||||
|
||||
The java.swg file contains default javain and javout typemaps which will produce the same code
|
||||
as previously. This change is only of concern to those who have written their own typemaps as
|
||||
you will then most likely have to write your own javain and javaout typemaps.
|
||||
|
||||
The javaout typemap also makes it possible to use a Java downcast to be used on abstract
|
||||
proxy base classes. See the Java documentation on dynamic_cast.
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY FOR JAVA MODULE ***
|
||||
|
||||
10/24/2002: ttn
|
||||
[Methodology] Upgaded to libtool 1.4.3, presumably w/ better
|
||||
support for newish platforms (like MacOS X).
|
||||
|
||||
10/21/2002: ttn
|
||||
Fixed Runtime/Makefile.in bug -- thanks to Richard Calmbach.
|
||||
|
||||
10/18/2002: ttn
|
||||
Fixed typo in doh.h -- thanks to Max Horn.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
TARGETS = java_cpp $(JAR)
|
||||
JAR = cpptest.jar
|
||||
|
||||
include ../common.mk
|
||||
|
||||
PACKAGE = cpptest
|
||||
SWIGOPT = -o cpptest_wrap.c -package $(PACKAGE) -shadow $(INCLUDE)
|
||||
SRCS =
|
||||
TARGET = libcpptest
|
||||
INTERFACE = ../interface/cpptest.i
|
||||
JAR_FILES = cpptestJava.java cpptest.java cpptest_base.java cpptest_empty.java
|
||||
|
||||
clean::
|
||||
rm -f *_wrap* *.o *~ .~* core *.so *.sl so_locations
|
||||
rm -f $(JAR_FILES) $(JAR)
|
||||
rm -rf class
|
||||
|
||||
PYTHON = jpython
|
||||
|
||||
TESTS = $(wildcard ../test_repo/*.py)
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
TARGETS = python_cpp
|
||||
|
||||
include ../common.mk
|
||||
|
||||
SWIGOPT = -o cpptest_wrap.c -shadow $(INCLUDE)
|
||||
SRCS =
|
||||
TARGET = cpptestc
|
||||
INTERFACE = ../interface/cpptest.i
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *_wrap* *.py *.pyc *.o *~ .~* core *.so *.sl so_locations
|
||||
|
||||
PYTHON = python
|
||||
|
||||
TESTS = $(wildcard ../test_repo/*.py)
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
// Copyright (C) 2000 Tal Shalif
|
||||
|
||||
class cpptest_base
|
||||
{
|
||||
MyString str;
|
||||
public:
|
||||
cpptest_base(const MyString &s) : str(s) {}
|
||||
const MyString &get() const {return str;}
|
||||
void set(const MyString &s) {str = s;}
|
||||
};
|
||||
|
||||
class cpptest_empty
|
||||
{
|
||||
public:
|
||||
cpptest_empty() {}
|
||||
};
|
||||
|
||||
class cpptest : public cpptest_base
|
||||
{
|
||||
MyString str;
|
||||
cpptest_base base;
|
||||
public:
|
||||
cpptest(const MyString &s) : cpptest_base(s), base(s) {}
|
||||
int getInt() const {return 1;}
|
||||
const char *getString() const {return "string";}
|
||||
const char *getMyString(const MyString &s) const {return s.c_str();}
|
||||
cpptest &getObject() {return *this;}
|
||||
cpptest &getObject2(const char *s) {return *this;}
|
||||
cpptest &getObject3(const MyString &s) {return *this;}
|
||||
cpptest_base &outBaseClass() {return *this;}
|
||||
const MyString &inBaseClass(const cpptest_base &e) {return e.get();}
|
||||
};
|
||||
|
||||
// cpptest.H ends here
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
TOP =../..
|
||||
|
||||
all:: $(TARGETS)
|
||||
|
||||
include $(TOP)/Makefile
|
||||
|
||||
SWIG = $(TOP)/../swig
|
||||
|
||||
ISRCS = $(notdir $(INTERFACE:.i=_wrap.c))
|
||||
|
||||
$(JAR): $(JAR_FILES)
|
||||
rm -rf class
|
||||
mkdir class
|
||||
javac -d class $(JAR_FILES)
|
||||
cd class && jar cvf ../$@ *
|
||||
|
||||
INCLUDE = -I$(TOP)/../Lib -I../class -I../typemaps -I$(TOP)/../Lib
|
||||
|
||||
check:: all
|
||||
bad_status="" ; \
|
||||
for i in $(TESTS); do \
|
||||
LD_LIBRARY_PATH=. PYTHONPATH=. CLASSPATH=./$(JAR) ; \
|
||||
( $(PYTHON) $$i && echo "$$i: PASSED" ) || echo "$$i: FAILED"; \
|
||||
done
|
||||
|
||||
.PHONY: check
|
||||
|
||||
# common.mk ends here
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
// -*-c++-*-
|
||||
// Copyright (C) 2000 Tal Shalif
|
||||
|
||||
/* File : cpptest.i */
|
||||
#ifdef SWIGJAVA
|
||||
%module cpptestJava
|
||||
#else
|
||||
%module cpptest
|
||||
#endif
|
||||
|
||||
%include MyString_typemap.i
|
||||
|
||||
%{
|
||||
#define MyString string
|
||||
#include <string>
|
||||
#include "cpptest.H"
|
||||
%}
|
||||
|
||||
%include "cpptest.H"
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
%pragma(java) module="
|
||||
static {
|
||||
System.loadLibrary(\"cpptest\");
|
||||
}";
|
||||
#endif
|
||||
|
||||
// cpptest.i ends here
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
# The path hack is by ttn, who doesn't really grok Python...
|
||||
|
||||
import sys
|
||||
# print '(1) sys.path = ', sys.path
|
||||
a = ['@ROOT_DIR@/Examples/C++/Python']
|
||||
a.extend (sys.path)
|
||||
sys.path = a
|
||||
# print '(2) sys.path = ', sys.path
|
||||
|
||||
from cpptest import *
|
||||
#import sys
|
||||
import types
|
||||
|
||||
# test_conf.py ends here
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest_empty()
|
||||
if not type(obj) is types.InstanceType:
|
||||
raise "failed"
|
||||
|
||||
# constructor.py ends here
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest("MyString")
|
||||
if not type(obj) is types.InstanceType:
|
||||
raise "failed"
|
||||
|
||||
# constructor_user_type.py ends here
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj1 = cpptest("obj1")
|
||||
obj2 = cpptest_base("obj2")
|
||||
res1 = obj1.inBaseClass(obj1)
|
||||
res2 = obj1.inBaseClass(obj2)
|
||||
|
||||
if res1 != "obj1" or res2 != "obj2":
|
||||
raise "failed"
|
||||
|
||||
# inheritence_map_to_base_class.py ends here
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest("")
|
||||
obj2 = obj.getObject()
|
||||
obj3 = obj.getObject2("string")
|
||||
if not type(obj2) is types.InstanceType or not type(obj3) is types.InstanceType:
|
||||
raise "failed"
|
||||
|
||||
# object_method.py ends here
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest("")
|
||||
obj2 = obj.getObject3("MyString")
|
||||
if not type(obj2) is types.InstanceType:
|
||||
raise "failed"
|
||||
|
||||
# object_method_user_type.py ends here
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest("")
|
||||
if not type(obj.getInt()) is types.IntType:
|
||||
raise "failed"
|
||||
if not type(obj.getString()) is types.StringType:
|
||||
raise "failed"
|
||||
|
||||
# primitive_method.py ends here
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# Copyright (C) 2000 Tal Shalif
|
||||
|
||||
execfile('../test_conf.py')
|
||||
obj = cpptest("")
|
||||
|
||||
res = obj.getMyString("string")
|
||||
if not type(res) is types.StringType or not "string" == res:
|
||||
raise "failed"
|
||||
|
||||
# primitive_method_user_type.py ends here
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
/*
|
||||
* typemaps for standard C++ string
|
||||
* Copyright (C) 2000 Tal Shalif <tal@slt.atr.co.jp>
|
||||
*/
|
||||
/* what type to use in java source code */
|
||||
%typemap(java,jtype) const MyString & {String}
|
||||
|
||||
/* what is the corresponding jni type */
|
||||
%typemap(java,jni) const MyString & {jstring}
|
||||
|
||||
/* how to convert the c++ type to the java type */
|
||||
%typemap(java,out) const MyString & {
|
||||
$target = JCALL(NewStringUTF, jenv) $source->c_str());
|
||||
}
|
||||
|
||||
/* how to convert java type to requested c++ type */
|
||||
%typemap(java,in) const MyString & {
|
||||
$target = NULL;
|
||||
if($source != NULL) {
|
||||
/* get the String from the StringBuffer */
|
||||
char *p = (char *)jenv->GetStringUTFChars($source, 0);
|
||||
$target = new string(p);
|
||||
/* free(p); HdH assuming string constructor makes a copy */
|
||||
JCALL(ReleaseStringUTFChars, jenv) $source, p);
|
||||
}
|
||||
}
|
||||
/* free resource once finished using */
|
||||
%typemap(java,freearg) const MyString & {
|
||||
delete $target;
|
||||
}
|
||||
|
||||
%typemap(java,jtype) MyString & = const MyString &;
|
||||
%typemap(java,jni) MyString & = const MyString &;
|
||||
%typemap(java,in) MyString & = const MyString &;
|
||||
%typemap(java,out) MyString & = const MyString &;
|
||||
%typemap(java,freearg) MyString & = const MyString &;
|
||||
|
||||
|
||||
%typemap(python,in) const MyString & {
|
||||
if (PyString_Check ($source))
|
||||
{
|
||||
$target = new string((char *)PyString_AsString($source));
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError, "not a string");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
%typemap(python,out) const MyString & {
|
||||
$target = PyString_FromString($source->c_str());
|
||||
}
|
||||
%typemap (python, freearg) const MyString & {
|
||||
delete $source;
|
||||
}
|
||||
|
||||
%typemap(python,in) MyString & = const MyString &;
|
||||
%typemap(python,out) MyString & = const MyString &;
|
||||
%typemap(python,freearg) MyString & = const MyString &;
|
||||
|
||||
/* MyString_typemap.i ends here */
|
||||
Loading…
Add table
Add a link
Reference in a new issue