aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchetto <simon.marchetto@scilab-enterprises.com>2014-03-11 10:24:09 +0100
committerSimon Marchetto <simon.marchetto@scilab-enterprises.com>2014-03-11 10:24:09 +0100
commit013b9f9769b8564281255d675f253873c4e42d6f (patch)
tree36d711baed5f91e4bb800211ea177b52503e266e
parenta84c78e411beca22211d60aa2389e699f644018b (diff)
parent3fcbb40af94f9209c2da4f806db45ef24ad8408b (diff)
downloadswig-013b9f9769b8564281255d675f253873c4e42d6f.tar.gz
Merge branch 'master' into gsoc2012-scilab
-rw-r--r--ANNOUNCE8
-rw-r--r--CCache/ccache.h2
-rw-r--r--CCache/util.c2
-rw-r--r--CHANGES142
-rw-r--r--CHANGES.current130
-rw-r--r--Doc/Manual/Java.html2
-rw-r--r--Doc/Manual/SWIG.html2
-rw-r--r--Doc/Manual/Sections.html6
-rw-r--r--Examples/Makefile.in26
-rw-r--r--Examples/android/extend/src/org/swig/extendexample/SwigExtend.java2
-rw-r--r--Examples/csharp/extend/runme.cs2
-rw-r--r--Examples/d/extend/d1/runme.d2
-rw-r--r--Examples/d/extend/d2/runme.d2
-rw-r--r--Examples/go/extend/runme.go2
-rw-r--r--Examples/java/extend/runme.java2
-rw-r--r--Examples/test-suite/common.mk1
-rw-r--r--Examples/test-suite/li_windows.i6
-rw-r--r--Examples/test-suite/naturalvar_more.i53
-rw-r--r--Examples/test-suite/typemap_qualifier_strip.i4
-rw-r--r--Lib/go/go.swg2
-rw-r--r--Lib/java/various.i2
-rw-r--r--Lib/perl5/Makefile.in18
-rw-r--r--Lib/python/Makefile.in18
-rw-r--r--Lib/r/r.swg9
-rw-r--r--Lib/tcl/Makefile.in19
-rw-r--r--Makefile.in2
-rw-r--r--README2
-rw-r--r--RELEASENOTES4
-rw-r--r--Source/Makefile.am2
-rw-r--r--Source/Modules/lang.cxx21
-rw-r--r--Source/Modules/php.cxx4
-rw-r--r--Source/Modules/python.cxx2
-rw-r--r--Source/Modules/swigmod.h6
-rw-r--r--Tools/config/ac_compile_warnings.m42
-rwxr-xr-xTools/mkrelease.py2
-rw-r--r--configure.ac77
36 files changed, 285 insertions, 303 deletions
diff --git a/ANNOUNCE b/ANNOUNCE
index 1c3297a5c..90cc9ba24 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,8 +1,8 @@
-*** ANNOUNCE: SWIG 2.0.10 (in progress) ***
+*** ANNOUNCE: SWIG 3.0.0 (in progress) ***
http://www.swig.org
-We're pleased to announce SWIG-2.0.10, the latest SWIG release.
+We're pleased to announce SWIG-3.0.0, the latest SWIG release.
What is SWIG?
=============
@@ -21,11 +21,11 @@ Availability
============
The release is available for download on Sourceforge at
- http://prdownloads.sourceforge.net/swig/swig-2.0.10.tar.gz
+ http://prdownloads.sourceforge.net/swig/swig-3.0.0.tar.gz
A Windows version is also available at
- http://prdownloads.sourceforge.net/swig/swigwin-2.0.10.zip
+ http://prdownloads.sourceforge.net/swig/swigwin-3.0.0.zip
Please report problems with this release to the swig-devel mailing list,
details at http://www.swig.org/mail.html.
diff --git a/CCache/ccache.h b/CCache/ccache.h
index 3c3e22311..dcbb03f0c 100644
--- a/CCache/ccache.h
+++ b/CCache/ccache.h
@@ -200,6 +200,8 @@ typedef int (*COMPAR_FN_T)(const void *, const void *);
/* mkstemp() on some versions of cygwin don't handle binary files, so
override */
+/* Seems okay in Cygwin 1.7.0
#ifdef __CYGWIN__
#undef HAVE_MKSTEMP
#endif
+*/
diff --git a/CCache/util.c b/CCache/util.c
index bba232492..66f9823b9 100644
--- a/CCache/util.c
+++ b/CCache/util.c
@@ -82,7 +82,7 @@ void copy_fd(int fd_in, int fd_out)
#ifndef HAVE_MKSTEMP
/* cheap and nasty mkstemp replacement */
-static int mkstemp(char *template)
+int mkstemp(char *template)
{
mktemp(template);
return open(template, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
diff --git a/CHANGES b/CHANGES
index 488bf7286..4cc222901 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,144 @@ SWIG (Simplified Wrapper and Interface Generator)
See the CHANGES.current file for changes in the current version.
See the RELEASENOTES file for a summary of changes in each release.
+
+Version 2.0.11 (15 Sep 2013)
+============================
+
+2013-09-15: wsfulton
+ [R] Fix attempt to free a non-heap object in OUTPUT typemaps for:
+ unsigned short *OUTPUT
+ unsigned long *OUTPUT
+ signed long long *OUTPUT
+ char *OUTPUT
+ signed char*OUTPUT
+ unsigned char*OUTPUT
+
+2013-09-12: wsfulton
+ [Lua] Pull Git patch #62.
+ 1) Static members and static functions inside class can be accessed as
+ ModuleName.ClassName.FunctionName (MemberName respectively). Old way such as
+ ModuleName.ClassName_FunctionName still works.
+ 2) Same goes for enums inside classes: ModuleName.ClassName.EnumValue1 etc.
+
+2013-09-12: wsfulton
+ [UTL] Infinity is now by default an acceptable value for type 'float'. This fix makes
+ the handling of type 'float' and 'double' the same. The implementation requires the
+ C99 isfinite() macro, or otherwise some platform dependent equivalents, to be available.
+
+ Users requiring the old behaviour of not accepting infinity, can define a 'check' typemap
+ wherever a float is used, such as:
+
+ %typemap(check,fragment="<float.h>") float, const float & %{
+ if ($1 < -FLT_MAX || $1 > FLT_MAX) {
+ SWIG_exception_fail(SWIG_TypeError, "Overflow in type float");
+ }
+ %}
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+2013-08-30: wsfulton
+ [Lua] Pull Git patch #81: Include Lua error locus in SWIG error messages.
+ This is standard information in Lua error messages, and makes it much
+ easier to find bugs.
+
+2013-08-29: wsfulton
+ Pull Git patch #75: Handle UTF-8 files with BOM at beginning of file. Was giving an
+ 'Illegal token' syntax error.
+
+2013-08-29: wsfulton
+ [C#] Pull Git patch #77: Allow exporting std::map using non-default comparison function.
+
+2013-08-28: wsfulton
+ [Python] %implicitconv is improved for overloaded functions. Like in C++, the methods
+ with the actual types are considered before trying implicit conversions. Example:
+
+ %implicitconv A;
+ struct A {
+ A(int i);
+ };
+ class CCC {
+ public:
+ int xx(int i) { return 11; }
+ int xx(const A& i) { return 22; }
+ };
+
+ The following python code:
+
+ CCC().xx(-1)
+
+ will now return 11 instead of 22 - the implicit conversion is not done.
+
+2013-08-23: olly
+ [Python] Fix clang++ warning in generated wrapper code.
+
+2013-08-16: wsfulton
+ [Python] %implicitconv will now accept None where the implicit conversion takes a C/C++ pointer.
+ Problem highlighted by Bo Peng. Closes SF patch #230.
+
+2013-08-07: wsfulton
+ [Python] SF Patch #326 from Kris Thielemans - Remove SwigPyObject_print and SwigPyObject_str and
+ make the generated wrapper use the default python implementations, which will fall back to repr
+ (for -builtin option).
+
+ Advantages:
+ - it avoids the swig user having to jump through hoops to get print to work as expected when
+ redefining repr/str slots.
+ - typing the name of a variable on the python prompt now prints the result of a (possibly redefined)
+ repr, without the swig user having to do any extra work.
+ - when redefining repr, the swig user doesn't necessarily have to redefine str as it will call the
+ redefined repr
+ - the behaviour is exactly the same as without the -builtin option while requiring no extra work
+ by the user (aside from adding the %feature("python:slot...) statements of course)
+
+ Disadvantage:
+ - default str() will give different (but clearer?) output on swigged classes
+
+2013-07-30: wsfulton
+ [Python, Ruby] Fix #64 #65: Missing code in std::multimap wrappers. Previously an instantiation
+ of a std::map was erroneously required in addition to an instantiation of std::multimap with the
+ same template parameters to prevent compilation errors for the wrappers of a std::multimap.
+
+2013-07-14: joequant
+ [R] Change types file to allow for SEXP return values
+
+2013-07-05: wsfulton
+ [Python] Add %pythonbegin directive which works like %pythoncode, except the specified code is
+ added at the beginning of the generated .py file. This is primarily needed for importing from
+ __future__ statements required to be at the very beginning of the file. Example:
+
+ %pythonbegin %{
+ from __future__ import print_function
+ print("Loading", "Whizz", "Bang", sep=' ... ')
+ %}
+
+2013-07-01: wsfulton
+ [Python] Apply SF patch #340 - Uninitialized variable fix in SWIG_Python_NonDynamicSetAttr
+ when using -builtin.
+
+2013-07-01: wsfulton
+ [Python, Ruby, Ocaml] Apply SF patch #341 - fix a const_cast in generated code that was generating
+ a <:: digraph when using the unary scope operator (::) (global scope) in a template type.
+
+2013-07-01: wsfulton
+ [Python] Add SF patch #342 from Christian Delbaere to fix some director classes crashing on
+ object deletion when using -builtin. Fixes SF bug #1301.
+
+2013-06-11: wsfulton
+ [Python] Add SWIG_PYTHON_INTERPRETER_NO_DEBUG macro which can be defined to use the Release version
+ of the Python interpreter in Debug builds of the wrappers. The Visual Studio .dsp example
+ files have been modified to use this so that Debug builds will now work without having
+ to install or build a Debug build of the interpreter.
+
+2013-06-07: wsfulton
+ [Ruby] Git issue #52. Fix regression with missing rb_complex_new function for Ruby
+ versions prior to 1.9 using std::complex wrappers if just using std::complex as an output type.
+ Also fix the Complex helper functions external visibility (to static by default).
+
+2013-06-04: olly
+ [PHP] Fix SWIG_ZTS_ConvertResourcePtr() not to dereference NULL
+ if the type lookup fails.
+
Version 2.0.10 (27 May 2013)
============================
@@ -3165,8 +3303,8 @@ Version 1.3.36 (24 June 2008)
Makefile target being generated when generating makefiles with the -M family
of options. For example:
- $ swig -java -MM -MT overiddenname -c++ example.i
- overiddenname: \
+ $ swig -java -MM -MT overriddenname -c++ example.i
+ overriddenname: \
example.i \
example.h
diff --git a/CHANGES.current b/CHANGES.current
index b2f007a92..edd39af31 100644
--- a/CHANGES.current
+++ b/CHANGES.current
@@ -2,131 +2,13 @@ Below are the changes for the current release.
See the CHANGES file for changes in older releases.
See the RELEASENOTES file for a summary of changes in each release.
-Version 2.0.11 (in progress)
+Version 3.0.0 (in progress)
============================
-2013-09-12: wsfulton
- [Lua] Pull Git patch #62.
- 1) Static members and static functions inside class can be accessed as
- ModuleName.ClassName.FunctionName (MemberName respectively). Old way such as
- ModuleName.ClassName_FunctionName still works.
- 2) Same goes for enums inside classes: ModuleName.ClassName.EnumValue1 etc.
+2013-10-04: wsfulton
+ Fix %naturalvar not having any affect on templated classes instantiated with an
+ enum as the template parameter type. Problem reported by Vadim Zeitlin.
-2013-09-12: wsfulton
- [UTL] Infinity is now by default an acceptable value for type 'float'. This fix makes
- the handling of type 'float' and 'double' the same. The implementation requires the
- C99 isfinite() macro, or otherwise some platform dependent equivalents, to be available.
-
- Users requiring the old behaviour of not accepting infinity, can define a 'check' typemap
- wherever a float is used, such as:
-
- %typemap(check,fragment="<float.h>") float, const float & %{
- if ($1 < -FLT_MAX || $1 > FLT_MAX) {
- SWIG_exception_fail(SWIG_TypeError, "Overflow in type float");
- }
- %}
-
- *** POTENTIAL INCOMPATIBILITY ***
-
-2013-08-30: wsfulton
- [Lua] Pull Git patch #81: Include Lua error locus in SWIG error messages.
- This is standard information in Lua error messages, and makes it much
- easier to find bugs.
-
-2013-08-29: wsfulton
- Pull Git patch #75: Handle UTF-8 files with BOM at beginning of file. Was giving an
- 'Illegal token' syntax error.
-
-2013-08-29: wsfulton
- [C#] Pull Git patch #77: Allow exporting std::map using non-default comparison function.
-
-2013-08-28: wsfulton
- [Python] %implicitconv is improved for overloaded functions. Like in C++, the methods
- with the actual types are considered before trying implicit conversions. Example:
-
- %implicitconv A;
- struct A {
- A(int i);
- };
- class CCC {
- public:
- int xx(int i) { return 11; }
- int xx(const A& i) { return 22; }
- };
-
- The following python code:
-
- CCC().xx(-1)
-
- will now return 11 instead of 22 - the implicit conversion is not done.
-
-2013-08-23: olly
- [Python] Fix clang++ warning in generated wrapper code.
-
-2013-08-16: wsfulton
- [Python] %implicitconv will now accept None where the implicit conversion takes a C/C++ pointer.
- Problem highlighted by Bo Peng. Closes SF patch #230.
-
-2013-08-07: wsfulton
- [Python] SF Patch #326 from Kris Thielemans - Remove SwigPyObject_print and SwigPyObject_str and
- make the generated wrapper use the default python implementations, which will fall back to repr
- (for -builtin option).
-
- Advantages:
- - it avoids the swig user having to jump through hoops to get print to work as expected when
- redefining repr/str slots.
- - typing the name of a variable on the python prompt now prints the result of a (possibly redefined)
- repr, without the swig user having to do any extra work.
- - when redefining repr, the swig user doesn't necessarily have to redefine str as it will call the
- redefined repr
- - the behaviour is exactly the same as without the -builtin option while requiring no extra work
- by the user (aside from adding the %feature("python:slot...) statements of course)
-
- Disadvantage:
- - default str() will give different (but clearer?) output on swigged classes
-
-2013-07-30: wsfulton
- [Python, Ruby] Fix #64 #65: Missing code in std::multimap wrappers. Previously an instantiation
- of a std::map was erroneously required in addition to an instantiation of std::multimap with the
- same template parameters to prevent compilation errors for the wrappers of a std::multimap.
-
-2013-07-14: joequant
- [R] Change types file to allow for SEXP return values
-
-2013-07-05: wsfulton
- [Python] Add %pythonbegin directive which works like %pythoncode, except the specified code is
- added at the beginning of the generated .py file. This is primarily needed for importing from
- __future__ statements required to be at the very beginning of the file. Example:
-
- %pythonbegin %{
- from __future__ import print_function
- print("Loading", "Whizz", "Bang", sep=' ... ')
- %}
-
-2013-07-01: wsfulton
- [Python] Apply SF patch #340 - Uninitialized variable fix in SWIG_Python_NonDynamicSetAttr
- when using -builtin.
-
-2013-07-01: wsfulton
- [Python, Ruby, Ocaml] Apply SF patch #341 - fix a const_cast in generated code that was generating
- a <:: digraph when using the unary scope operator (::) (global scope) in a template type.
-
-2013-07-01: wsfulton
- [Python] Add SF patch #342 from Christian Delbaere to fix some director classes crashing on
- object deletion when using -builtin. Fixes SF bug #1301.
-
-2013-06-11: wsfulton
- [Python] Add SWIG_PYTHON_INTERPRETER_NO_DEBUG macro which can be defined to use the Release version
- of the Python interpreter in Debug builds of the wrappers. The Visual Studio .dsp example
- files have been modified to use this so that Debug builds will now work without having
- to install or build a Debug build of the interpreter.
-
-2013-06-07: wsfulton
- [Ruby] Git issue #52. Fix regression with missing rb_complex_new function for Ruby
- versions prior to 1.9 using std::complex wrappers if just using std::complex as an output type.
- Also fix the Complex helper functions external visibility (to static by default).
-
-2013-06-04: olly
- [PHP] Fix SWIG_ZTS_ConvertResourcePtr() not to dereference NULL
- if the type lookup fails.
+2013-09-20: wsfulton
+ [Java] Fix a memory leak for the java char **STRING_ARRAY typemaps.
diff --git a/Doc/Manual/Java.html b/Doc/Manual/Java.html
index 0024d602a..f3d8a1684 100644
--- a/Doc/Manual/Java.html
+++ b/Doc/Manual/Java.html
@@ -7886,7 +7886,7 @@ where it is possible to step from Java code into a JNI method within one environ
<p>
Alternatively, debugging can involve placing debug printout statements in the JNI layer using the <tt>%exception</tt> directive.
See the <a href="Customization.html#Customization_exception_special_variables">special variables for %exception</a> section.
-Many of the default typemaps can also be overidden and modified for adding in extra logging/debug display information.
+Many of the default typemaps can also be overridden and modified for adding in extra logging/debug display information.
</p>
<p>
diff --git a/Doc/Manual/SWIG.html b/Doc/Manual/SWIG.html
index 25dc899de..f9ea5b2ef 100644
--- a/Doc/Manual/SWIG.html
+++ b/Doc/Manual/SWIG.html
@@ -258,7 +258,7 @@ this option the default output directory is the path to the input file.
If <tt>-o</tt> and
<tt>-outcurrentdir</tt> are used together, <tt>-outcurrentdir</tt> is effectively ignored
as the output directory for the language files is the same directory as the
-generated C/C++ file if not overidden with <tt>-outdir</tt>.
+generated C/C++ file if not overridden with <tt>-outdir</tt>.
</p>
<H3><a name="SWIG_nn5"></a>5.1.3 Comments</H3>
diff --git a/Doc/Manual/Sections.html b/Doc/Manual/Sections.html
index 9e4a3dd17..195111424 100644
--- a/Doc/Manual/Sections.html
+++ b/Doc/Manual/Sections.html
@@ -1,12 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<title>SWIG-2.0 Documentation</title>
+<title>SWIG-3.0 Documentation</title>
</head>
<body bgcolor="#ffffff">
-<H1><a name="Sections"></a>SWIG-2.0 Documentation</H1>
+<H1><a name="Sections"></a>SWIG-3.0 Documentation</H1>
-Last update : SWIG-2.0.10 (in progress)
+Last update : SWIG-3.0.0 (in progress)
<H2>Sections</H2>
diff --git a/Examples/Makefile.in b/Examples/Makefile.in
index 32293db30..324cffebb 100644
--- a/Examples/Makefile.in
+++ b/Examples/Makefile.in
@@ -51,11 +51,6 @@ RUNPIPE=
RUNME = runme
-# X11 options
-
-XLIB = @XLIBSW@
-XINCLUDE = @XINCLUDES@
-
IWRAP = $(INTERFACE:.i=_wrap.i)
ISRCS = $(IWRAP:.i=.c)
ICXXSRCS = $(IWRAP:.i=.cxx)
@@ -136,7 +131,6 @@ TCL_SCRIPT = $(RUNME).tcl
# Build a new version of the tclsh shell
# -----------------------------------------------------------
-
tclsh: $(SRCS)
$(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACEPATH)
$(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \
@@ -148,21 +142,6 @@ tclsh_cpp: $(SRCS)
$(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET)
# -----------------------------------------------------------
-# Build a new copy of wish
-# -----------------------------------------------------------
-
-wish: $(SRCS)
- $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACEPATH)
- $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \
- $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
-
-
-wish_cpp: $(SRCS)
- $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACEPATH)
- $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \
- $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
-
-# -----------------------------------------------------------
# Build a Tcl dynamic loadable module (you might need to tweak this)
# -----------------------------------------------------------
@@ -913,6 +892,7 @@ RUBY_INCLUDE= @RUBYINCLUDE@
RUBY_LIB = @RUBYLIB@
RUBY_DLNK = @RUBYDYNAMICLINKING@
RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS)
+RUBY_SO = @RUBYSO@
RUBY = @RUBY@
RUBY_SCRIPT = $(RUNME).rb
@@ -924,7 +904,7 @@ RUBY_SCRIPT = $(RUNME).rb
ruby: $(SRCS)
$(SWIG) -ruby $(SWIGOPT) $(INTERFACEPATH)
$(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(RUBY_INCLUDE)
- $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
+ $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO)
# -----------------------------------------------------------------
# Build a C++ dynamically loadable module
@@ -933,7 +913,7 @@ ruby: $(SRCS)
ruby_cpp: $(SRCS)
$(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACEPATH)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE)
- $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
+ $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO)
# -----------------------------------------------------------------
# Build statically linked Ruby interpreter
diff --git a/Examples/android/extend/src/org/swig/extendexample/SwigExtend.java b/Examples/android/extend/src/org/swig/extendexample/SwigExtend.java
index a343dfebc..b88d36082 100644
--- a/Examples/android/extend/src/org/swig/extendexample/SwigExtend.java
+++ b/Examples/android/extend/src/org/swig/extendexample/SwigExtend.java
@@ -96,7 +96,7 @@ public class SwigExtend extends Activity
// methods of all these instances are treated the same. For items 0, 1, and
// 2, all methods resolve in C++. For item 3, our CEO, getTitle calls
// getPosition which resolves in Java. The call to getPosition is
- // slightly different, however, because of the overidden getPosition() call, since
+ // slightly different, however, because of the overridden getPosition() call, since
// now the object reference has been "laundered" by passing through
// EmployeeList as an Employee*. Previously, Java resolved the call
// immediately in CEO, but now Java thinks the object is an instance of
diff --git a/Examples/csharp/extend/runme.cs b/Examples/csharp/extend/runme.cs
index 825dcdbca..92313aa5e 100644
--- a/Examples/csharp/extend/runme.cs
+++ b/Examples/csharp/extend/runme.cs
@@ -45,7 +45,7 @@ public class runme
// methods of all these instances are treated the same. For items 0, 1, and
// 2, all methods resolve in C++. For item 3, our CEO, getTitle calls
// getPosition which resolves in C#. The call to getPosition is
- // slightly different, however, because of the overidden getPosition() call, since
+ // slightly different, however, because of the overridden getPosition() call, since
// now the object reference has been "laundered" by passing through
// EmployeeList as an Employee*. Previously, C# resolved the call
// immediately in CEO, but now C# thinks the object is an instance of
diff --git a/Examples/d/extend/d1/runme.d b/Examples/d/extend/d1/runme.d
index 96501d1a4..058432096 100644
--- a/Examples/d/extend/d1/runme.d
+++ b/Examples/d/extend/d1/runme.d
@@ -46,7 +46,7 @@ void main() {
// methods of all these instances are treated the same. For items 0, 1, and
// 2, all methods resolve in C++. For item 3, our CEO, getTitle calls
// getPosition which resolves in D. The call to getPosition is
- // slightly different, however, because of the overidden getPosition() call, since
+ // slightly different, however, because of the overridden getPosition() call, since
// now the object reference has been "laundered" by passing through
// EmployeeList as an Employee*. Previously, D resolved the call
// immediately in CEO, but now D thinks the object is an instance of
diff --git a/Examples/d/extend/d2/runme.d b/Examples/d/extend/d2/runme.d
index 1ea6dfd21..cccdf463b 100644
--- a/Examples/d/extend/d2/runme.d
+++ b/Examples/d/extend/d2/runme.d
@@ -46,7 +46,7 @@ void main() {
// methods of all these instances are treated the same. For items 0, 1, and
// 2, all methods resolve in C++. For item 3, our CEO, getTitle calls
// getPosition which resolves in D. The call to getPosition is
- // slightly different, however, because of the overidden getPosition() call, since
+ // slightly different, however, because of the overridden getPosition() call, since
// now the object reference has been "laundered" by passing through
// EmployeeList as an Employee*. Previously, D resolved the call
// immediately in CEO, but now D thinks the object is an instance of
diff --git a/Examples/go/extend/runme.go b/Examples/go/extend/runme.go
index 8fdfd0a6c..770e27802 100644
--- a/Examples/go/extend/runme.go
+++ b/Examples/go/extend/runme.go
@@ -42,7 +42,7 @@ func main() {
// treated the same. For items 0, 1, and 2, all methods
// resolve in C++. For item 3, our CEO, GetTitle calls
// GetPosition which resolves in Go. The call to GetPosition
- // is slightly different, however, because of the overidden
+ // is slightly different, however, because of the overridden
// GetPosition() call, since now the object reference has been
// "laundered" by passing through EmployeeList as an
// Employee*. Previously, Go resolved the call immediately in
diff --git a/Examples/java/extend/runme.java b/Examples/java/extend/runme.java
index 629bb14a6..f1ec1ea06 100644
--- a/Examples/java/extend/runme.java
+++ b/Examples/java/extend/runme.java
@@ -55,7 +55,7 @@ public class runme {
// methods of all these instances are treated the same. For items 0, 1, and
// 2, all methods resolve in C++. For item 3, our CEO, getTitle calls
// getPosition which resolves in Java. The call to getPosition is
- // slightly different, however, because of the overidden getPosition() call, since
+ // slightly different, however, because of the overridden getPosition() call, since
// now the object reference has been "laundered" by passing through
// EmployeeList as an Employee*. Previously, Java resolved the call
// immediately in CEO, but now Java thinks the object is an instance of
diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk
index 6165f8024..7801d9903 100644
--- a/Examples/test-suite/common.mk
+++ b/Examples/test-suite/common.mk
@@ -274,6 +274,7 @@ CPP_TEST_CASES += \
nspace \
nspace_extend \
naturalvar \
+ naturalvar_more \
nested_class \
nested_comment \
nested_workaround \
diff --git a/Examples/test-suite/li_windows.i b/Examples/test-suite/li_windows.i
index 26f96cc3b..c99ffe4ca 100644
--- a/Examples/test-suite/li_windows.i
+++ b/Examples/test-suite/li_windows.i
@@ -4,6 +4,12 @@
%{
#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+ // Fix Tcl.h and Windows.h cat and mouse over definition of VOID
+ #if defined(_TCL) && defined(__CYGWIN__)
+ #ifdef VOID
+ #undef VOID
+ #endif
+ #endif
#include <windows.h>
#else
// Use equivalent types for non-windows systems
diff --git a/Examples/test-suite/naturalvar_more.i b/Examples/test-suite/naturalvar_more.i
new file mode 100644
index 000000000..aebb6b23e
--- /dev/null
+++ b/Examples/test-suite/naturalvar_more.i
@@ -0,0 +1,53 @@
+%module naturalvar_more
+
+// The instantiation of a template using an enum in the template parameter was not picking up %naturalvar.
+
+// These typemaps will be used if %naturalvar is not working
+%typemap(out) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_out_typemap_"
+%typemap(varout) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_varout_typemap_"
+%typemap(out) Hidden *hidden "_should_not_use_this_out_typemap_"
+%typemap(varout) Hidden *hidden "_should_not_use_this_varout_typemap_"
+
+%naturalvar T<Space::E>;
+%naturalvar Hidden;
+
+%inline %{
+template <typename X> struct T {};
+struct K {};
+struct Hidden;
+namespace Ace {
+ int glob;
+}
+%}
+%{
+struct Hidden {};
+namespace Ace {
+ template<typename> struct NoIdea {};
+}
+%}
+
+%inline %{
+namespace Space {
+ enum E { E1, E2, E3 };
+}
+%}
+
+%template(TE) T<Space::E>;
+
+%include <std_string.i>
+%include <std_vector.i>
+%template(VectorString) std::vector<std::string>;
+
+%inline {
+using namespace Space;
+struct S {
+ T<E> te;
+ const T<E> const_te;
+ const std::vector<std::string>::value_type const_string_member; // check this resolves to std::string which has a naturalvar
+ std::vector<std::string>::value_type string_member; // check this resolves to std::string which has a naturalvar
+ Hidden hidden;
+ Ace::NoIdea<Hidden> noidea;
+ S() : const_te(), const_string_member("initial string value") {}
+};
+}
+
diff --git a/Examples/test-suite/typemap_qualifier_strip.i b/Examples/test-suite/typemap_qualifier_strip.i
index d91a7b109..9b9f24cd8 100644
--- a/Examples/test-suite/typemap_qualifier_strip.i
+++ b/Examples/test-suite/typemap_qualifier_strip.i
@@ -1,5 +1,9 @@
%module typemap_qualifier_strip
+%typemap(freearg) int *ptr ""
+%typemap(freearg) int *const ptrConst ""
+%typemap(freearg) int const* constPtr ""
+
%typemap(in) int *ptr {
int temp = 1234;
$1 = &temp;
diff --git a/Lib/go/go.swg b/Lib/go/go.swg
index cc3beef7d..b00533fa3 100644
--- a/Lib/go/go.swg
+++ b/Lib/go/go.swg
@@ -431,7 +431,7 @@
%}
/* Typecheck typemaps. The purpose of these is merely to issue a
- warning for overloaded C++ functions * that cannot be overloaded in
+ warning for overloaded C++ functions that cannot be overloaded in
Go as more than one C++ type maps to a single Go type. */
%typecheck(SWIG_TYPECHECK_BOOL) /* Go bool */
diff --git a/Lib/java/various.i b/Lib/java/various.i
index f589bf714..7ba7a5eb3 100644
--- a/Lib/java/various.i
+++ b/Lib/java/various.i
@@ -52,7 +52,7 @@
%typemap(freearg) char **STRING_ARRAY {
int i;
- for (i=0; i<size$argnum-1; i++)
+ for (i=0; i<size$argnum; i++)
#ifdef __cplusplus
delete[] $1[i];
delete[] $1;
diff --git a/Lib/perl5/Makefile.in b/Lib/perl5/Makefile.in
index dde01894d..f11ad2bdf 100644
--- a/Lib/perl5/Makefile.in
+++ b/Lib/perl5/Makefile.in
@@ -47,7 +47,7 @@ SWIGOPT = -perl5
SWIGCC = $(CC)
# SWIG Library files. Uncomment this to staticly rebuild Perl
-#SWIGLIB = -static -lperlmain.i
+#SWIGLIBS = -static -lperlmain.i
# Rules for creating .o files from source.
@@ -69,33 +69,21 @@ BUILD = @LDSHARED@
#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \
-L/usr/local/lib -lg++ -lstdc++ -lgcc
-# X11 installation (possibly needed if using Perl-Tk)
-
-XLIB = @XLIBSW@
-XINCLUDE = @XINCLUDES@
-
# Perl installation
PERL_INCLUDE = -I@PERL5EXT@
PERL_LIB = -L@PERL5EXT@ -lperl
PERL_FLAGS = -Dbool=char -Dexplicit=
-# Tcl installation. If using Tk you might need this
-
-TCL_INCLUDE = @TCLINCLUDE@
-TCL_LIB = @TCLLIB@
-
# Build libraries (needed for static builds)
LIBM = @LIBM@
LIBC = @LIBC@
SYSLIBS = $(LIBM) $(LIBC) @LIBS@
-# Build options (uncomment only one these)
+# Build options
-#TK_LIB = $(TCL_LIB) -ltcl -ltk $(XLIB)
BUILD_LIBS = $(LIBS) # Dynamic loading
-#BUILD_LIBS = $(PERL_LIB) $(TK_LIB) $(LIBS) $(SYSLIBS) # Static linking
# Compilation rules for non-SWIG components
@@ -123,7 +111,7 @@ $(WRAPOBJ) : $(WRAPFILE)
$(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(PERL_INCLUDE) $(PERL_FLAGS) $(WRAPFILE)
$(WRAPFILE) : $(INTERFACE)
- $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIB) $(INTERFACE)
+ $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE)
$(TARGET): $(WRAPOBJ) $(ALLOBJS)
$(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET)
diff --git a/Lib/python/Makefile.in b/Lib/python/Makefile.in
index 3243b3df4..71effea70 100644
--- a/Lib/python/Makefile.in
+++ b/Lib/python/Makefile.in
@@ -47,7 +47,7 @@ SWIGOPT = -python
SWIGCC = $(CC)
# SWIG Library files. Uncomment if rebuilding the Python interpreter
-#SWIGLIB = -lembed.i
+#SWIGLIBS = -lembed.i
# Rules for creating .o files from source.
@@ -69,32 +69,20 @@ BUILD = @LDSHARED@
#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \
-L/usr/local/lib -lg++ -lstdc++ -lgcc
-# X11 installation (needed if rebuilding Python + tkinter)
-
-XLIB = @XLIBSW@
-XINCLUDE = @XINCLUDES@
-
# Python installation
PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@
PY_LIB = @PYLIB@
-# Tcl installation. Needed if rebuilding Python with tkinter.
-
-TCL_INCLUDE = @TCLINCLUDE@
-TCL_LIB = @TCLLIB@
-
# Build libraries (needed for static builds)
LIBM = @LIBM@
LIBC = @LIBC@
SYSLIBS = $(LIBM) $(LIBC) @LIBS@
-# Build options (uncomment only one these)
+# Build options
-#TKINTER = $(TCL_LIB) -ltk -ltcl $(XLIB)
BUILD_LIBS = $(LIBS) # Dynamic loading
-#BUILD_LIBS = $(PY_LIB) @PYLINK@ $(TKINTER) $(LIBS) $(SYSLIBS)
# Compilation rules for non-SWIG components
@@ -122,7 +110,7 @@ $(WRAPOBJ) : $(WRAPFILE)
$(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(PY_INCLUDE)
$(WRAPFILE) : $(INTERFACE)
- $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIB) $(INTERFACE)
+ $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE)
$(TARGET): $(WRAPOBJ) $(ALLOBJS)
$(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET)
diff --git a/Lib/r/r.swg b/Lib/r/r.swg
index be42ff3a1..126611d61 100644
--- a/Lib/r/r.swg
+++ b/Lib/r/r.swg
@@ -114,12 +114,19 @@ signed int *OUTPUT,
unsigned int *OUTPUT,
short *OUTPUT,
signed short *OUTPUT,
+unsigned short *OUTPUT,
long *OUTPUT,
signed long *OUTPUT,
+unsigned long *OUTPUT,
long long *OUTPUT,
+signed long long *OUTPUT,
unsigned long long *OUTPUT,
float *OUTPUT,
-double *OUTPUT {}
+double *OUTPUT,
+char *OUTPUT,
+signed char *OUTPUT,
+unsigned char *OUTPUT
+{}
diff --git a/Lib/tcl/Makefile.in b/Lib/tcl/Makefile.in
index 523349bb5..2ab0f7b01 100644
--- a/Lib/tcl/Makefile.in
+++ b/Lib/tcl/Makefile.in
@@ -1,5 +1,5 @@
# ---------------------------------------------------------------
-# SWIG Tcl/Tk Makefile
+# SWIG Tcl Makefile
#
# This file can be used to build various Tcl extensions with SWIG.
# By default this file is set up for dynamic loading, but it can
@@ -48,9 +48,8 @@ SWIG = $(exec_prefix)/bin/swig
SWIGOPT = -tcl # use -tcl8 for Tcl 8.0
SWIGCC = $(CC)
-# SWIG Library files. Uncomment one of these for rebuilding tclsh or wish
-#SWIGLIB = -ltclsh.i
-#SWIGLIB = -lwish.i
+# SWIG Library files. Uncomment if rebuilding tclsh
+#SWIGLIBS = -ltclsh.i
# Rules for creating .o files from source.
@@ -72,12 +71,7 @@ BUILD = @LDSHARED@
#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \
-L/usr/local/lib -lg++ -lstdc++ -lgcc
-# X11 installation (needed to rebuild Tk extensions)
-
-XLIB = @XLIBSW@
-XINCLUDE = @XINCLUDES@
-
-# Tcl installation (where is Tcl/Tk located)
+# Tcl installation (where is Tcl located)
TCL_INCLUDE = @TCLINCLUDE@
TCL_LIB = @TCLLIB@
@@ -88,11 +82,10 @@ LIBM = @LIBM@
LIBC = @LIBC@
SYSLIBS = $(LIBM) $(LIBC) @LIBS@
-# Build options (uncomment only one these)
+# Build options (uncomment only one of these)
BUILD_LIBS = $(LIBS) # Dynamic loading
#BUILD_LIBS = $(TCL_LIB) -ltcl $(LIBS) $(SYSLIBS) # tclsh
-#BUILD_LIBS = $(TCL_LIB) -ltk -ltcl $(XLIB) $(LIBS) $(SYSLIBS) # wish
# Compilation rules for non-SWIG components
@@ -120,7 +113,7 @@ $(WRAPOBJ) : $(WRAPFILE)
$(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(TCL_INCLUDE)
$(WRAPFILE) : $(INTERFACE)
- $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIB) $(INTERFACE)
+ $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE)
$(TARGET): $(WRAPOBJ) $(ALLOBJS)
$(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET)
diff --git a/Makefile.in b/Makefile.in
index 13c18a6bc..29e3e8419 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -441,7 +441,7 @@ maintainer-clean:
$(srcdir)/Lib/swigwarn.swg: $(srcdir)/Source/Include/swigwarn.h
mkdir -p Lib
echo "/* SWIG warning codes */" > $@
- cat $? | grep "^#define WARN\|/\*.*\*/\|^[ \t]*$$" | sed 's/^#define \(WARN.*[0-9]\+\)\(.*\)$$/%define SWIG\1 %enddef\2/' >> $@
+ cat $? | grep "^#define WARN\|/\*.*\*/\|^[ \t]*$$" | sed 's/^#define \(WARN.*[0-9][0-9]*\)\(.*\)$$/%define SWIG\1 %enddef\2/' >> $@
#####################################################################
# TARGETS: install & friends
diff --git a/README b/README
index 444643a0d..b6080a4fd 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
SWIG (Simplified Wrapper and Interface Generator)
-Version: 2.0.10 (in progress)
+Version: 3.0.0 (in progress)
Tagline: SWIG is a compiler that integrates C and C++ with languages
including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua,
diff --git a/RELEASENOTES b/RELEASENOTES
index 49eacf28a..720dc9d34 100644
--- a/RELEASENOTES
+++ b/RELEASENOTES
@@ -4,6 +4,10 @@ and CHANGES files.
Release Notes
=============
+SWIG-2.0.11 summary:
+- Minor bug fixes and enhancements mostly in Python, but also
+ C#, Lua, Ocaml, Octave, Perl, PHP, Python, R, Ruby, Tcl.
+
SWIG-2.0.10 summary:
- Ruby 1.9 support is now complete.
- Add support for Guile 2.0 and Guile 1.6 support (GH interface) has
diff --git a/Source/Makefile.am b/Source/Makefile.am
index cc0ef7cc3..f0b53411a 100644
--- a/Source/Makefile.am
+++ b/Source/Makefile.am
@@ -141,8 +141,6 @@ beautify-file:
test -n "$(INDENTFILE)" || (echo INDENTFILE not defined && exit 1;)
test -e $(INDENTFILE) || (echo File does not exist: $(INDENTFILE) && exit 1;)
cp $(INDENTFILE) $(INDENTBAKSDIR)/$(INDENTFILE);
- unix2dos $(INDENTFILE)
- dos2unix $(INDENTFILE)
indent -kr --honour-newlines --line-length160 --indent-level2 --braces-on-func-def-line --leave-optional-blank-lines $(SWIGTYPEDEFS) $(INDENTFILE) -o $(INDENTFILE).tmp;
cat $(INDENTFILE).tmp | sed -e 's/const const /const /' > $(INDENTFILE);
rm $(INDENTFILE).tmp;
diff --git a/Source/Modules/lang.cxx b/Source/Modules/lang.cxx
index eb7d49480..a62084499 100644
--- a/Source/Modules/lang.cxx
+++ b/Source/Modules/lang.cxx
@@ -467,9 +467,9 @@ void swig_pragma(char *lang, char *name, char *value) {
}
/* --------------------------------------------------------------------------
- * use_naturalvar_mode()
+ * Language::use_naturalvar_mode()
* -------------------------------------------------------------------------- */
-int use_naturalvar_mode(Node *n) {
+int Language::use_naturalvar_mode(Node *n) const {
if (Getattr(n, "unnamed"))
return 0;
int nvar = naturalvar_mode || GetFlag(n, "feature:naturalvar");
@@ -478,12 +478,16 @@ int use_naturalvar_mode(Node *n) {
SwigType *ty = Getattr(n, "type");
SwigType *fullty = SwigType_typedef_resolve_all(ty);
if (SwigType_isclass(fullty)) {
- Node *m = Copy(n);
SwigType *tys = SwigType_strip_qualifiers(fullty);
- Swig_features_get(Swig_cparse_features(), 0, tys, 0, m);
- nvar = GetFlag(m, "feature:naturalvar");
+ if (!CPlusPlus) {
+ Replaceall(tys, "struct ", "");
+ Replaceall(tys, "union ", "");
+ Replaceall(tys, "class ", "");
+ }
+ Node *typenode = Swig_symbol_clookup(tys, 0);
+ if (typenode)
+ nvar = GetFlag(typenode, "feature:naturalvar");
Delete(tys);
- Delete(m);
}
Delete(fullty);
}
@@ -1441,6 +1445,7 @@ int Language::membervariableHandler(Node *n) {
tm = Swig_typemap_lookup("memberin", nin, target, 0);
Delete(nin);
}
+
int flags = Extend | SmartPointer | use_naturalvar_mode(n);
if (isNonVirtualProtectedAccess(n))
flags = flags | CWRAP_ALL_PROTECTED_ACCESS;
@@ -2513,7 +2518,7 @@ int Language::classHandler(Node *n) {
Setattr(m, "parentNode", n);
/*
* There is a bug that needs fixing still...
- * This area of code is creating methods which have not been overidden in a derived class (director methods that are protected in the base)
+ * This area of code is creating methods which have not been overridden in a derived class (director methods that are protected in the base)
* If the method is overloaded, then Swig_overload_dispatch() incorrectly generates a call to the base wrapper, _wrap_xxx method
* See director_protected_overloaded.i - Possibly sym:overname needs correcting here.
Printf(stdout, "new method: %s::%s(%s)\n", Getattr(parentNode(m), "name"), Getattr(m, "name"), ParmList_str_defaultargs(Getattr(m, "parms")));
@@ -3091,7 +3096,7 @@ Node *Language::symbolLookup(String *s, const_String_or_char_ptr scope) {
* Tries to locate a class from a type definition
* ----------------------------------------------------------------------------- */
-Node *Language::classLookup(const SwigType *s) {
+Node *Language::classLookup(const SwigType *s) const {
Node *n = 0;
/* Look in hash of cached values */
diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx
index 3cae48383..652bd1e63 100644
--- a/Source/Modules/php.cxx
+++ b/Source/Modules/php.cxx
@@ -2606,8 +2606,8 @@ done:
/* wrap complex arguments to zvals */
Printv(w->code, wrap_args, NIL);
- Append(w->code, "call_user_function(EG(function_table), (zval**)&swig_self, &funcname,\n");
- Printf(w->code, " %s, %d, args TSRMLS_CC);\n", Swig_cresult_name(), idx);
+ Append(w->code, "call_user_function(EG(function_table), (zval**)&swig_self, &funcname,");
+ Printf(w->code, " %s, %d, args TSRMLS_CC);\n", Swig_cresult_name(), idx);
if (tm) {
Printv(w->code, Str(tm), "\n", NIL);
diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
index 94802e06d..98f6cac09 100644
--- a/Source/Modules/python.cxx
+++ b/Source/Modules/python.cxx
@@ -3728,7 +3728,7 @@ public:
if (builtin)
builtin_pre_decl(n);
- /* Overide the shadow file so we can capture its methods */
+ /* Override the shadow file so we can capture its methods */
f_shadow = NewString("");
// Set up type check for director class constructor
diff --git a/Source/Modules/swigmod.h b/Source/Modules/swigmod.h
index b3722af40..4fcf013eb 100644
--- a/Source/Modules/swigmod.h
+++ b/Source/Modules/swigmod.h
@@ -215,7 +215,7 @@ public:
virtual int addSymbol(const String *s, const Node *n, const_String_or_char_ptr scope = ""); /* Add symbol */
virtual void dumpSymbols();
virtual Node *symbolLookup(String *s, const_String_or_char_ptr scope = ""); /* Symbol lookup */
- virtual Node *classLookup(const SwigType *s); /* Class lookup */
+ virtual Node *classLookup(const SwigType *s) const; /* Class lookup */
virtual Node *enumLookup(SwigType *s); /* Enum lookup */
virtual int abstractClassTest(Node *n); /* Is class really abstract? */
virtual int is_assignable(Node *n); /* Is variable assignable? */
@@ -300,6 +300,9 @@ protected:
This does not include protected virtual methods as they are turned on with the dirprot option. */
bool isNonVirtualProtectedAccess(Node *n) const;
+ /* Identify if a wrapped global or member variable n should use the naturalvar feature */
+ int use_naturalvar_mode(Node *n) const;
+
/* Director subclass comparison test */
String *none_comparison;
@@ -380,7 +383,6 @@ int is_protected(Node *n);
int is_member_director(Node *parentnode, Node *member);
int is_member_director(Node *member);
int is_non_virtual_protected_access(Node *n); /* Check if the non-virtual protected members are required (for directors) */
-int use_naturalvar_mode(Node *n);
void Wrapper_virtual_elimination_mode_set(int);
void Wrapper_fast_dispatch_mode_set(int);
diff --git a/Tools/config/ac_compile_warnings.m4 b/Tools/config/ac_compile_warnings.m4
index 4c030ea59..7e4239a3c 100644
--- a/Tools/config/ac_compile_warnings.m4
+++ b/Tools/config/ac_compile_warnings.m4
@@ -4,7 +4,7 @@ dnl Set the maximum warning verbosity according to C and C++ compiler used.
dnl Currently supports g++ and gcc.
dnl
dnl The compiler options are always added CFLAGS and CXXFLAGS even if
-dnl these are overidden at configure time. Removing the maximum warning
+dnl these are overridden at configure time. Removing the maximum warning
dnl flags can be removed with --without-maximum-compile-warnings. For example:
dnl
dnl ./configure --without-maximum-compile-warnings CFLAGS= CXXFLAGS=
diff --git a/Tools/mkrelease.py b/Tools/mkrelease.py
index 9eceba07e..0623fe786 100755
--- a/Tools/mkrelease.py
+++ b/Tools/mkrelease.py
@@ -45,4 +45,4 @@ os.system("rsync --archive --verbose -P --times -e ssh " + "swigwin-" + version
print "Finished"
-print "Now log in to SourceForge and set the operating systems applicable to the newly uploaded tarball and zip file. Also remember to do a 'git push'."
+print "Now log in to SourceForge and set the operating systems applicable to the newly uploaded tarball and zip file. Also remember to do a 'git push --tags'."
diff --git a/configure.ac b/configure.ac
index 9c01f1b85..ce8d62cec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl The macros which aren't shipped with the autotools are stored in the
dnl Tools/config directory in .m4 files.
-AC_INIT([swig],[2.0.11],[http://www.swig.org])
+AC_INIT([swig],[3.0.0],[http://www.swig.org])
dnl NB: When this requirement is increased to 2.60 or later, AC_PROG_SED
dnl definition below can be removed
@@ -418,80 +418,9 @@ else AC_MSG_ERROR([proper usage is --with-libc=STRING])
fi])
#--------------------------------------------------------------------
-# Locate the X11 header files and the X11 library archive. Try
-# the ac_path_x macro first, but if it doesn't find the X stuff
-# (e.g. because there's no xmkmf program) then check through
-# a list of possible directories. Under some conditions the
-# autoconf macro will return an include directory that contains
-# no include files, so double-check its result just to be safe.
+# Target languages
#--------------------------------------------------------------------
-AC_PATH_X
-not_really_there=""
-if test "$no_x" = ""; then
- if test "$x_includes" = ""; then
- AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
- else
- if test ! -r $x_includes/X11/Intrinsic.h; then
- not_really_there="yes"
- fi
- fi
-fi
-if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
- AC_MSG_CHECKING(for X11 header files)
- XINCLUDES="# no special path needed"
- AC_TRY_CPP([#include <X11/Intrinsic.h>], , XINCLUDES="")
- if test -z "$XINCLUDES"; then
- dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/include/X11R4 /usr/X11R5/include /usr/include/X11R5 /usr/openwin/include /usr/X11/include /usr/sww/include /usr/X11R6/include /usr/include/X11R6"
- for i in $dirs ; do
- if test -r $i/X11/Intrinsic.h; then
- XINCLUDES=" -I$i"
- break
- fi
- done
- fi
- AC_MSG_RESULT($XINCLUDES)
-else
- if test "$x_includes" != ""; then
- XINCLUDES=-I$x_includes
- else
- XINCLUDES="# no special path needed"
- fi
-fi
-if test -z "$XINCLUDES"; then
- AC_MSG_RESULT(couldn't find any!)
- XINCLUDES="# no include files found"
-fi
-
-if test "$no_x" = yes; then
- AC_MSG_CHECKING(for X11 libraries)
- XLIBSW=
- dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/lib/X11R4 /usr/X11R5/lib /usr/lib/X11R5 /usr/X11R6/lib /usr/lib/X11R6 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
- for i in $dirs ; do
- if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
- AC_MSG_RESULT($i)
- XLIBSW="-L$i -lX11"
- break
- fi
- done
-else
- if test "$x_libraries" = ""; then
- XLIBSW=-lX11
- else
- XLIBSW="-L$x_libraries -lX11"
- fi
-fi
-if test -z "$XLIBSW" ; then
- AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
-fi
-if test -z "$XLIBSW" ; then
- AC_MSG_RESULT(couldn't find any! Using -lX11.)
- XLIBSW=-lX11
-fi
-
-AC_SUBST(XINCLUDES)
-AC_SUBST(XLIBSW)
-
AC_ARG_WITH(alllang, AS_HELP_STRING([--without-alllang], [Disable all languages]), with_alllang="$withval")
#--------------------------------------------------------------------
@@ -1476,6 +1405,7 @@ if test -n "$RUBY"; then
esac
RUBYCCDLFLAGS=`($RUBY -rrbconfig -e 'print Config::CONFIG[["CCDLFLAGS"]]') 2>/dev/null`
+ RUBYSO=.`($RUBY -rrbconfig -e 'print Config::CONFIG[["DLEXT"]]') 2>/dev/null`
else
AC_MSG_RESULT(could not figure out how to run ruby)
RUBYINCLUDE="-I/usr/local/lib/ruby/1.4/arch"
@@ -1493,6 +1423,7 @@ AC_SUBST(RUBYINCLUDE)
AC_SUBST(RUBYLIB)
AC_SUBST(RUBYLINK)
AC_SUBST(RUBYCCDLFLAGS)
+AC_SUBST(RUBYSO)
AC_SUBST(RUBYDYNAMICLINKING)
#-------------------------------------------------------------------------