From e058e1f42ff1395c5d357b5e4bea94804428dd78 Mon Sep 17 00:00:00 2001
From: Maciej Drwal
Date: Sat, 28 Jun 2008 23:26:18 +0000
Subject: [PATCH] Merged revisions
10498-10499,10503-10504,10506,10508,10511,10515-10516,10518-10519,10527,10530-10531,10536-10537,10539-10552,10558-10568,10574-10580,10582,10584,10588-10589,10594
via svnmerge from https://swig.svn.sourceforge.net/svnroot/swig/trunk
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
........
r10498 | talby | 2008-05-26 22:09:56 +0200 (Pn, 26 maj 2008) | 2 lines
run test cases in the Perl set by the --with-perl5 configure option.
........
r10499 | talby | 2008-05-26 23:04:06 +0200 (Pn, 26 maj 2008) | 3 lines
The perl5 minherit runtime test will work better if the classes are
actually built under SWIGPERL.
........
r10503 | wsfulton | 2008-05-28 11:44:37 +0200 (Śr, 28 maj 2008) | 1 line
Fix variable wrappers when using -proxy. Patch from Jan Jezabek
........
r10504 | bhy | 2008-05-28 19:27:48 +0200 (Śr, 28 maj 2008) | 2 lines
Fixed SF #1971977: typo in pycontainer.swg (related to -extranative option)
........
r10506 | wsfulton | 2008-05-29 02:45:28 +0200 (Cz, 29 maj 2008) | 1 line
Fix variable wrappers when using -noproxy
........
r10508 | bhy | 2008-05-30 15:53:33 +0200 (Pt, 30 maj 2008) | 1 line
Fixed SF #1976978, apply the macros for primitive types to std::wstring
........
r10511 | olly | 2008-05-30 18:11:27 +0200 (Pt, 30 maj 2008) | 4 lines
Fix typo in handling of /*@SWIG[...]*/ comments in the scanner. This just
meant we were only actually looking for /*@SWI at the start of the comment, so
was pretty harmless in practice.
........
r10515 | wsfulton | 2008-06-02 22:10:40 +0200 (Pn, 02 cze 2008) | 1 line
Fix samename testcase for c# and java
........
r10516 | wsfulton | 2008-06-02 22:15:39 +0200 (Pn, 02 cze 2008) | 1 line
Fix enums when using -noproxy
........
r10518 | bhy | 2008-06-07 13:20:07 +0200 (So, 07 cze 2008) | 4 lines
Added a test case for keyword renaming.
Now it works for Python in SWIG's -c++ mode,
but in C mode it doesn't work! (you can try with make keyword_rename.ctest)
........
r10519 | bhy | 2008-06-07 15:40:51 +0200 (So, 07 cze 2008) | 1 line
fixed keyword_rename.ctest tese case, caused by a mistake in Swig/naming.c
........
r10527 | mgossage | 2008-06-17 04:57:15 +0200 (Wt, 17 cze 2008) | 1 line
[lua] bugfix 1938142 (bool& and bool* support)
........
r10530 | wsfulton | 2008-06-19 22:02:13 +0200 (Cz, 19 cze 2008) | 1 line
Add R keyword support. Rename keywords for successful compilation of Java and C# code. More consistent keyword warnings across the different languages.
........
r10531 | wsfulton | 2008-06-19 23:15:48 +0200 (Cz, 19 cze 2008) | 1 line
add complete list of R reserved words
........
r10536 | wsfulton | 2008-06-21 13:35:33 +0200 (So, 21 cze 2008) | 1 line
better terminology for static types
........
r10537 | wsfulton | 2008-06-21 13:42:48 +0200 (So, 21 cze 2008) | 1 line
remove raise as keyword test- it conflicts with _raise in LIBCMT on windows
........
r10539 | wsfulton | 2008-06-21 17:21:29 +0200 (So, 21 cze 2008) | 1 line
Lua example warning removal fixes for vc++
........
r10540 | wsfulton | 2008-06-21 17:23:02 +0200 (So, 21 cze 2008) | 1 line
Remove some vc++ /W4 warnings
........
r10541 | wsfulton | 2008-06-21 18:04:55 +0200 (So, 21 cze 2008) | 1 line
minor vc++ /W4 warning fixes
........
r10542 | wsfulton | 2008-06-21 21:07:51 +0200 (So, 21 cze 2008) | 1 line
'byte' is already used in Ruby on windows, so use another keyword
........
r10543 | wsfulton | 2008-06-21 22:45:32 +0200 (So, 21 cze 2008) | 1 line
Fix crashing in the Ruby reject method in the STL wrappers
........
r10544 | wsfulton | 2008-06-21 22:48:28 +0200 (So, 21 cze 2008) | 1 line
Fix crashing in the Ruby reject method in the STL wrappers
........
r10545 | wsfulton | 2008-06-21 22:49:10 +0200 (So, 21 cze 2008) | 1 line
remove unnecessary variable int the char **STRING_ARRAY out typemap
........
r10546 | wsfulton | 2008-06-21 23:07:49 +0200 (So, 21 cze 2008) | 1 line
Fix Ruby C++ example dependencies in dsp files
........
r10547 | wsfulton | 2008-06-22 00:25:36 +0200 (N, 22 cze 2008) | 1 line
Fix unused parameter warnings in python when using gcc's -W -Wall options
........
r10548 | wsfulton | 2008-06-22 00:26:35 +0200 (N, 22 cze 2008) | 1 line
Fix virtual destructor
........
r10549 | wsfulton | 2008-06-22 01:25:20 +0200 (N, 22 cze 2008) | 1 line
various warning fixes
........
r10550 | wsfulton | 2008-06-22 02:09:11 +0200 (N, 22 cze 2008) | 1 line
Another fix for the JVM hanging on exit problem when using directors
........
r10551 | wsfulton | 2008-06-22 02:09:51 +0200 (N, 22 cze 2008) | 1 line
documentation sections update
........
r10552 | wsfulton | 2008-06-22 02:18:10 +0200 (N, 22 cze 2008) | 1 line
more docs on defining macros for the thread hanging problem
........
r10558 | wsfulton | 2008-06-22 23:30:20 +0200 (N, 22 cze 2008) | 1 line
fix unused parms in last commit for C code
........
r10559 | wsfulton | 2008-06-23 00:12:43 +0200 (Pn, 23 cze 2008) | 1 line
Suppress unused methods warning for VC++
........
r10560 | wsfulton | 2008-06-23 22:26:07 +0200 (Pn, 23 cze 2008) | 1 line
fix partialcheck-test-suite and parallel make for r, chicken, tcl and php
........
r10561 | wsfulton | 2008-06-23 22:39:41 +0200 (Pn, 23 cze 2008) | 1 line
correct message display when running the partialcheck-test-suite make target
........
r10562 | wsfulton | 2008-06-23 23:14:53 +0200 (Pn, 23 cze 2008) | 1 line
fix typo
........
r10563 | olly | 2008-06-23 23:23:54 +0200 (Pn, 23 cze 2008) | 3 lines
Fix bad use of Python API (untested, since I can't even compile this code on
x86-64!)
........
r10564 | olly | 2008-06-24 00:58:03 +0200 (Wt, 24 cze 2008) | 3 lines
[PHP] Fix segfault when wrapping a non-class function marked with
%newobject (testcase char_strings).
........
r10565 | olly | 2008-06-24 02:27:34 +0200 (Wt, 24 cze 2008) | 3 lines
[PHP] Fix assertion failure when handling %typemap(in,numinputs=0)
(testcase ignore_parameter).
........
r10566 | olly | 2008-06-24 02:33:08 +0200 (Wt, 24 cze 2008) | 2 lines
[PHP] Fix typemap_namespace.i to not try to copy a non-existent typemap.
........
r10567 | olly | 2008-06-24 02:41:07 +0200 (Wt, 24 cze 2008) | 3 lines
Clean up dead and unused code in SwigToPhpType(), and rename to
GetShadowReturnType().
........
r10568 | olly | 2008-06-24 02:42:29 +0200 (Wt, 24 cze 2008) | 2 lines
Fix cosmetic typo in string constant.
........
r10574 | wsfulton | 2008-06-24 22:10:28 +0200 (Wt, 24 cze 2008) | 1 line
zap last entry
........
r10575 | wsfulton | 2008-06-24 22:11:46 +0200 (Wt, 24 cze 2008) | 1 line
variable name changes to remove php keywords
........
r10576 | wsfulton | 2008-06-24 22:12:08 +0200 (Wt, 24 cze 2008) | 1 line
variable name hiding fix
........
r10577 | wsfulton | 2008-06-24 22:12:43 +0200 (Wt, 24 cze 2008) | 1 line
More info about numobjects added
........
r10578 | wsfulton | 2008-06-24 22:13:41 +0200 (Wt, 24 cze 2008) | 1 line
update for 1.3.36 release
........
r10579 | wsfulton | 2008-06-24 23:48:46 +0200 (Wt, 24 cze 2008) | 1 line
remove deprecated -c commandline option (runtime library generation)
........
r10580 | wsfulton | 2008-06-24 23:53:12 +0200 (Wt, 24 cze 2008) | 1 line
correct comment about deprecated option
........
r10582 | wsfulton | 2008-06-25 01:00:27 +0200 (Śr, 25 cze 2008) | 1 line
use rsync and ssh to upload releases to SourceForge as ftp no longer works
........
r10584 | wsfulton | 2008-06-25 01:24:48 +0200 (Śr, 25 cze 2008) | 1 line
correction for 1.3.36
........
r10588 | wsfulton | 2008-06-25 02:16:04 +0200 (Śr, 25 cze 2008) | 1 line
section update
........
r10589 | wsfulton | 2008-06-25 02:16:40 +0200 (Śr, 25 cze 2008) | 1 line
bump version to 1.3.37
........
r10594 | wsfulton | 2008-06-26 20:33:06 +0200 (Cz, 26 cze 2008) | 1 line
correct typo in first entry about %fragment
........
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-maciekd@10606 626c5289-ae23-0410-ae9c-e8d60b6d4f22
---
ANNOUNCE | 10 +-
CHANGES | 159 +++++++++++++++++-
CHANGES.current | 103 ------------
Doc/Manual/Contents.html | 3 +-
Doc/Manual/Java.html | 21 +++
Doc/Manual/SWIGPlus.html | 5 +-
Doc/Manual/Sections.html | 2 +-
Doc/Manual/Typemaps.html | 15 +-
Doc/Manual/Warnings.html | 2 +-
Examples/Makefile.in | 17 +-
Examples/guile/multimap/example.i | 4 +-
Examples/guile/multivalue/example.i | 6 +
Examples/lua/arrays/example.c | 2 +-
Examples/lua/embed2/embed2.c | 13 +-
Examples/lua/embed3/embed3.cpp | 14 +-
Examples/lua/owner/example.cxx | 4 +-
Examples/perl5/import/base.h | 2 +-
Examples/perl5/multiple_inheritance/example.h | 23 ++-
Examples/ruby/class/example.dsp | 4 +-
Examples/ruby/free_function/example.cxx | 2 +-
Examples/ruby/free_function/example.dsp | 4 +-
Examples/ruby/import/bar.dsp | 4 +-
Examples/ruby/import/base.dsp | 4 +-
Examples/ruby/import/foo.dsp | 4 +-
Examples/ruby/import/spam.dsp | 4 +-
Examples/ruby/mark_function/example.dsp | 4 +-
Examples/tcl/import/base.h | 2 +-
Examples/test-suite/apply_signed_char.i | 2 +
Examples/test-suite/bools.i | 2 +
Examples/test-suite/char_strings.i | 2 +-
Examples/test-suite/chicken/Makefile.in | 12 +-
Examples/test-suite/common.mk | 2 +
Examples/test-suite/constant_pointers.i | 6 +
Examples/test-suite/cpp_basic.i | 2 +
Examples/test-suite/csharp/Makefile.in | 4 +-
.../test-suite/csharp/char_strings_runme.cs | 2 +-
Examples/test-suite/enum_thorough.i | 2 +
Examples/test-suite/fvirtual.i | 4 +-
Examples/test-suite/guilescm/Makefile.in | 8 +-
Examples/test-suite/java/Makefile.in | 4 +-
.../test-suite/java/char_strings_runme.java | 2 +-
Examples/test-suite/java_typemaps_proxy.i | 2 +
Examples/test-suite/keyword_rename.i | 32 ++++
Examples/test-suite/li_std_string.i | 2 +-
Examples/test-suite/lua/li_typemaps_runme.lua | 40 +++++
Examples/test-suite/minherit.i | 2 +-
Examples/test-suite/octave/fvirtual_runme.m | 2 +-
.../test-suite/octave/li_std_string_runme.m | 2 +-
.../test-suite/perl5/li_std_string_runme.pl | 4 +-
Examples/test-suite/perl5/run-perl-test.pl | 2 +-
Examples/test-suite/php4/Makefile.in | 6 +-
Examples/test-suite/python/fvirtual_runme.py | 2 +-
.../test-suite/python/keyword_rename_runme.py | 4 +
.../test-suite/python/li_std_string_runme.py | 2 +-
Examples/test-suite/r/Makefile.in | 4 +-
.../test-suite/ruby/li_std_string_runme.rb | 2 +-
Examples/test-suite/samename.i | 13 +-
Examples/test-suite/template_int_const.i | 8 +-
Examples/test-suite/template_typedef_rec.i | 6 +-
Examples/test-suite/typemap_namespace.i | 2 +-
Lib/chicken/chickenkw.swg | 2 +-
Lib/csharp/csharphead.swg | 4 +-
Lib/csharp/csharpkw.swg | 2 +-
Lib/java/director.swg | 10 +-
Lib/java/javakw.swg | 2 +-
Lib/java/various.i | 2 +-
Lib/lua/luatypemaps.swg | 4 +-
Lib/lua/typemaps.i | 21 +++
Lib/ocaml/ocamlkw.swg | 2 +-
Lib/perl5/perlkw.swg | 4 +-
Lib/php4/php4kw.swg | 10 +-
Lib/pike/pikekw.swg | 2 +-
Lib/python/pycontainer.swg | 4 +-
Lib/python/pyiterators.swg | 6 +-
Lib/python/pythonkw.swg | 4 +-
Lib/r/r.swg | 2 +
Lib/r/rkw.swg | 32 ++++
Lib/ruby/rubycontainer.swg | 6 +-
Lib/ruby/rubykw.swg | 2 +-
Lib/swiglabels.swg | 6 +
Lib/typemaps/primtypes.swg | 1 +
README | 9 +-
Source/CParse/cscanner.c | 2 +-
Source/CParse/parser.y | 29 ++--
Source/CParse/templ.c | 4 +-
Source/DOH/hash.c | 31 ++--
Source/Modules/allegrocl.cxx | 32 ++--
Source/Modules/chicken.cxx | 13 +-
Source/Modules/csharp.cxx | 41 +++--
Source/Modules/guile.cxx | 2 +-
Source/Modules/java.cxx | 35 ++--
Source/Modules/lang.cxx | 61 +++----
Source/Modules/lua.cxx | 4 -
Source/Modules/main.cxx | 10 +-
Source/Modules/modula3.cxx | 4 +-
Source/Modules/php4.cxx | 93 +++++-----
Source/Modules/python.cxx | 1 -
Source/Modules/r.cxx | 17 +-
Source/Modules/ruby.cxx | 10 +-
Source/Preprocessor/cpp.c | 5 +-
Source/Swig/cwrap.c | 3 +-
Source/Swig/include.c | 3 +-
Source/Swig/misc.c | 23 ++-
Source/Swig/naming.c | 6 +-
Source/Swig/scanner.c | 4 +-
Source/Swig/typeobj.c | 3 +-
Source/Swig/typesys.c | 15 +-
TODO | 2 +-
Tools/WAD/Python/type.c | 2 +-
Tools/mkrelease.py | 8 +-
configure.in | 15 +-
111 files changed, 759 insertions(+), 484 deletions(-)
create mode 100644 Examples/test-suite/keyword_rename.i
create mode 100644 Examples/test-suite/lua/li_typemaps_runme.lua
create mode 100644 Examples/test-suite/python/keyword_rename_runme.py
create mode 100644 Lib/r/rkw.swg
diff --git a/ANNOUNCE b/ANNOUNCE
index 0fb688344..7c0e95e3f 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,10 +1,10 @@
-*** ANNOUNCE: SWIG 1.3.35 (7 April 2008) ***
+*** ANNOUNCE: SWIG 1.3.36 (24 June 2008) ***
http://www.swig.org
-We're pleased to announce SWIG-1.3.35, the latest installment in the
-SWIG development effort. SWIG-1.3.35 includes a number of bug fixes
+We're pleased to announce SWIG-1.3.36, the latest installment in the
+SWIG development effort. SWIG-1.3.36 includes a number of bug fixes
and large number of enhancements throughout.
What is SWIG?
@@ -24,11 +24,11 @@ Availability:
-------------
The release is available for download on Sourceforge at
- http://prdownloads.sourceforge.net/swig/swig-1.3.35.tar.gz
+ http://prdownloads.sourceforge.net/swig/swig-1.3.36.tar.gz
A Windows version is also available at
- http://prdownloads.sourceforge.net/swig/swigwin-1.3.35.zip
+ http://prdownloads.sourceforge.net/swig/swigwin-1.3.36.zip
Release numbers
---------------
diff --git a/CHANGES b/CHANGES
index fc3018a1d..782849c6f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,162 @@ SWIG (Simplified Wrapper and Interface Generator)
See CHANGES.current for current version.
+Version 1.3.36 (24 June 2008)
+=============================
+
+06/24/2008: wsfulton
+ Remove deprecated -c commandline option (runtime library generation).
+
+06/24/2008: olly
+ [PHP] Fix assertion failure when handling %typemap(in,numinputs=0)
+ (testcase ignore_parameter).
+
+06/24/2008: olly
+ [PHP] Fix segfault when wrapping a non-class function marked with
+ %newobject (testcase char_strings).
+
+06/22/2008: wsfulton
+ [Java] Add a way to use AttachCurrentThreadAsDaemon instead of AttachCurrentThread
+ in director code. Define the SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON macro, see
+ Lib/java/director.swg.
+
+06/21/2008: wsfulton
+ [Ruby] Fix crashing in the STL wrappers (reject! and delete_if methods)
+
+06/19/2008: wsfulton
+ [Java, C#] C# and Java keywords will be renamed instead of just issuing a warning
+ and then generating uncompileable code. Warning 314 gives the new name when a
+ keyword is found.
+
+06/19/2008: wsfulton
+ [R] Keyword handling added. R Keywords will be renamed as necessary.
+ Warning 314 gives the new name when a keyword is found.
+
+06/17/2008: mgossage
+ [Lua] Added missing support for bool& and bool*. Added runtest for li_typemaps testcase.
+ (Bug #1938142)
+
+06/07/2008: bhy
+ Added test case keyword_rename, then made the keyword renaming works properly
+ by fixing Swig_name_make() for a incomplete condition checking.
+
+06/02/2008: wsfulton
+ [Java, C#] Fix enum wrappers when using -noproxy.
+
+05/30/2008: bhy
+ Added std::wstring into Lib/typemaps/primtypes.swg, since it is also a primitive
+ type in SWIG - fixed SF #1976978.
+
+05/29/2008: wsfulton
+ [Java, C#] Fix variable wrappers when using -noproxy.
+
+05/29/2008: bhy
+ [Python] Fixed a typo of %#ifdef in Lib/python/pycontainer.swg, which is related
+ to -extranative SWIG option - SF #1971977.
+
+05/20/2008: wsfulton
+ New partialcheck makefile targets for partial testing of the test-suite. These
+ just invoke SWIG, ie no compilation and no runtime testing. It can be faster
+ when developing by just doing a directory diff of the files SWIG generates
+ against those from a previous run. Example usage from the top level directory:
+
+ make partialcheck-test-suite
+ make partialcheck-java-test-suite
+
+ This change also encompasses more flexibility in running the test-suite, eg
+ it is possible to prefix the command line which runs any target language test
+ with a tool. See the RUNTOOL, COMPILETOOL and SWIGTOOL targets in the common.mk
+ file and makefiles in the test-suite directory. For example it is possible to
+ run the runtime tests through valgrind using:
+
+ make check RUNTOOL="valgrind --leak-check=full"
+
+ or invoke SWIG under valgrind using:
+
+ make check SWIGTOOL="valgrind --tool=memcheck"
+
+05/19/2008: drjoe
+ [R] Fixed define that was breaking pre-2.7. Checked in
+ patch from Soren Sonnenburg that creates strings in
+ version independent way
+
+05/15/2008: wsfulton
+ [Java] Fix variable name clash in directors - SF #1963316 reported by Tristan.
+
+05/14/2008: wsfulton
+ Add an optimisation for functions that return objects by value, reducing
+ the number of copies of the object that are made. Implemented using an
+ optional attribute in the "out" typemap called "optimal". Details in
+ Typemaps.html.
+
+05/11/2008: olly
+ [PHP] Check for %feature("notabstract") when generating PHP5 class
+ wrapper.
+
+05/11/2008: wsfulton
+ Fix SF #1943608 - $self substitution in %contract, patch submitted by
+ Toon Verstraelen.
+
+05/09/2008: olly
+ [PHP] Fix char * typemaps to work when applied to signed char * and
+ unsigned char * (uncovered by testcase apply_strings).
+
+05/09/2008: wsfulton
+ Fix wrapping of char * member variables when using allprotected mode.
+ Bug reported by Warren Wang.
+
+05/09/2008: olly
+ [PHP] Fix bad PHP code generated when wrapping an enum in a
+ namespace (uncovered by testcase arrays_scope).
+
+05/09/2008: olly
+ [PHP] SWIG now runs the PHP testsuite using PHP5, not PHP4. PHP4
+ is essentially obsolete now, so we care much more about solid PHP5
+ support.
+
+05/07/2008: wsfulton
+ STL fixes when using %import rather than %include and the Solaris Workshop
+ compiler and the Roguewave STL.
+
+05/07/2008: wsfulton
+ Fix wrapping of overloaded protected methods when using allprotected mode.
+ Bug reported by Warren Wang.
+
+05/03/2008: wsfulton
+ Commit patch #1956607 to add -MT support from Richard Boulton.
+ This patch mirrors the gcc -MT option which allows one to change the default
+ Makefile target being generated when generating makefiles with the -M family
+ of options. For example:
+
+ $ swig -java -MM -MT overiddenname -c++ example.i
+ overiddenname: \
+ example.i \
+ example.h
+
+04/30/2008: mgossage
+ [Lua] Removed generation of _wrap_delete_XXXXX (wrappered destructor)
+ which was unused and causing warning with g++ -Wall.
+ Removed other unused warning in typemaps.i and other places.
+ Added Examples/lua/embed3, and run tests a few test cases.
+
+04/24/2008: olly
+ [Python] Fix generated code for IBM's C++ compiler on AIX (patch
+ from Goeran Uddeborg in SF#1928048).
+
+04/24/2008: olly
+ Rename BSIZE in Examples/test-suite/arrays_scope.i to BBSIZE to
+ avoid a clash with BSIZE defined by headers on AIX with Perl
+ (reported in SF#1928048).
+
+04/20/2008: wsfulton
+ Add the ability to wrap all protected members when using directors.
+ Previously only the virtual methods were available to the target language.
+ Now all protected members, (static and non-static variables, non-virtual methods
+ and static methods) are wrapped when using the allprotected mode. The allprotected
+ mode is turned on in the module declaration:
+
+ %module(directors="1", allprotected="1") modulename
+
Version 1.3.35 (7 April 2008)
=============================
@@ -12123,7 +12279,8 @@ Version 1.3.14 (August 12, 2002)
with helper functions even if they aren't used. To fix this,
a new fragment directive is available. For example:
- %fragment("type_helper","header") %{
+ (corrected typo in line below - 06/26/2008)
+ %fragment("type_header","header") %{
void some_helper_function() {
...
}
diff --git a/CHANGES.current b/CHANGES.current
index 27e9925d2..ef3fcca54 100644
--- a/CHANGES.current
+++ b/CHANGES.current
@@ -1,106 +1,3 @@
Version 1.3.36 (in progress)
=============================
-05/20/2008: wsfulton
- New partialcheck makefile targets for partial testing of the test-suite. These
- just invoke SWIG, ie no compilation and no runtime testing. It can be faster
- when developing by just doing a directory diff of the files SWIG generates
- against those from a previous run. Example usage from the top level directory:
-
- make partialcheck-test-suite
- make partialcheck-java-test-suite
-
- This change also encompasses more flexibility in running the test-suite, eg
- it is possible to prefix the command line which runs any target language test
- with a tool. See the RUNTOOL, COMPILETOOL and SWIGTOOL targets in the common.mk
- file and makefiles in the test-suite directory. For example it is possible to
- run the runtime tests through valgrind using:
-
- make check RUNTOOL="valgrind --leak-check=full"
-
- or invoke SWIG under valgrind using:
-
- make check SWIGTOOL="valgrind --tool=memcheck"
-
-05/19/2008: drjoe
- [R] Fixed define that was breaking pre-2.7. Checked in
- patch from Soren Sonnenburg that creates strings in
- version independent way
-
-05/15/2008: wsfulton
- [Java] Fix variable name clash in directors - SF #1963316 reported by Tristan.
-
-05/14/2008: wsfulton
- Add an optimisation for functions that return objects by value, reducing
- the number of copies of the object that are made. Implemented using an
- optional attribute in the "out" typemap called "optimal". Details in
- Typemaps.html.
-
-05/11/2008: olly
- [PHP] Check for %feature("notabstract") when generating PHP5 class
- wrapper.
-
-05/11/2008: wsfulton
- Fix SF #1943608 - $self substitution in %contract, patch submitted by
- Toon Verstraelen.
-
-05/09/2008: olly
- [PHP] Fix char * typemaps to work when applied to signed char * and
- unsigned char * (uncovered by testcase apply_strings).
-
-05/09/2008: wsfulton
- Fix wrapping of char * member variables when using allprotected mode.
- Bug reported by Warren Wang.
-
-05/09/2008: olly
- [PHP] Fix bad PHP code generated when wrapping an enum in a
- namespace (uncovered by testcase arrays_scope).
-
-05/09/2008: olly
- [PHP] SWIG now runs the PHP testsuite using PHP5, not PHP4. PHP4
- is essentially obsolete now, so we care much more about solid PHP5
- support.
-
-05/07/2008: wsfulton
- STL fixes when using %import rather than %include and the Solaris Workshop
- compiler and the Roguewave STL.
-
-05/07/2008: wsfulton
- Fix wrapping of overloaded protected methods when using allprotected mode.
- Bug reported by Warren Wang.
-
-05/03/2008: wsfulton
- Commit patch #1956607 to add -MT support from Richard Boulton.
- This patch mirrors the gcc -MT option which allows one to change the default
- Makefile target being generated when generating makefiles with the -M family
- of options. For example:
-
- $ swig -java -MM -MT overiddenname -c++ example.i
- overiddenname: \
- example.i \
- example.h
-
-04/30/2008: mgossage
- [Lua] Removed generation of _wrap_delete_XXXXX (wrappered destructor)
- which was unused and causing warning with g++ -Wall.
- Removed other unused warning in typemaps.i and other places.
- Added Examples/lua/embed3, and run tests a few test cases.
-
-04/24/2008: olly
- [Python] Fix generated code for IBM's C++ compiler on AIX (patch
- from Goeran Uddeborg in SF#1928048).
-
-04/24/2008: olly
- Rename BSIZE in Examples/test-suite/arrays_scope.i to BBSIZE to
- avoid a clash with BSIZE defined by headers on AIX with Perl
- (reported in SF#1928048).
-
-04/20/2008: wsfulton
- Add the ability to wrap all protected members when using directors.
- Previously only the virtual methods were available to the target language.
- Now all protected members, (static and non-static variables, non-virtual methods
- and static methods) are wrapped when using the allprotected mode. The allprotected
- mode is turned on in the module declaration:
-
- %module(directors="1", allprotected="1") modulename
-
diff --git a/Doc/Manual/Contents.html b/Doc/Manual/Contents.html
index 5c7a18eaf..c3197b9dc 100644
--- a/Doc/Manual/Contents.html
+++ b/Doc/Manual/Contents.html
@@ -380,7 +380,7 @@
Typemaps for multiple languages
Optimal code generation when returning by value
-Multi-argument typemaps
+Multi-argument typemaps
The run-time type checker
Accessing protected members
Common customization features
diff --git a/Doc/Manual/Java.html b/Doc/Manual/Java.html
index 88963caf5..164fc21e7 100644
--- a/Doc/Manual/Java.html
+++ b/Doc/Manual/Java.html
@@ -85,6 +85,7 @@
Director classes
Overhead and code bloat
Simple directors example
+Director threading issues
Accessing protected members
Common customization features
@@ -3450,6 +3451,26 @@ DirectorDerived::upcall_method() invoked.
+20.5.5 Director threading issues
+
+
+
+Depending on your operating system and version of Java and how you are using threads, you might find the JVM hangs on exit.
+There are a couple of solutions to try out. The preferred solution requires jdk-1.4 and later and uses AttachCurrentThreadAsDaemon instead of AttachCurrentThread whenever a call into the JVM is required. This can be enabled by defining the SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON macro when compiling the C++ wrapper code. For older JVMs define SWIG_JAVA_NO_DETACH_CURRENT_THREAD instead, to avoid the DetachCurrentThread call but this will result in a memory leak instead. For further details inspect the source code in the java/director.swg library file.
+
+
+
+Macros can be defined on the commandline when compiling your C++ code, or alternatively added to the C++ wrapper file as shown below:
+
+
+
+
+%insert("runtime") %{
+#define SWIG_JAVA_NO_DETACH_CURRENT_THREAD
+%}
+
+
+
20.6 Accessing protected members
diff --git a/Doc/Manual/SWIGPlus.html b/Doc/Manual/SWIGPlus.html
index faf0b254c..ef7487ff8 100644
--- a/Doc/Manual/SWIGPlus.html
+++ b/Doc/Manual/SWIGPlus.html
@@ -1153,8 +1153,9 @@ public:
-This is great for reducing the size of the wrappers, but the caveat is it does not work for the strongly typed languages
-which don't have optional arguments in the language, such as C# and Java.
+This is great for reducing the size of the wrappers, but the caveat is it does not work for the statically typed languages,
+such as C# and Java,
+which don't have optional arguments in the language,
Another restriction of this feature is that it cannot handle default arguments that are not public.
The following example illustrates this:
diff --git a/Doc/Manual/Sections.html b/Doc/Manual/Sections.html
index b7b4798e7..5406f44ea 100644
--- a/Doc/Manual/Sections.html
+++ b/Doc/Manual/Sections.html
@@ -6,7 +6,7 @@
SWIG-1.3 Development Documentation
-Last update : SWIG-1.3.36 (in progress)
+Last update : SWIG-1.3.37 (in progress)
Sections
diff --git a/Doc/Manual/Typemaps.html b/Doc/Manual/Typemaps.html
index e07f9f87e..8f3035dc8 100644
--- a/Doc/Manual/Typemaps.html
+++ b/Doc/Manual/Typemaps.html
@@ -65,7 +65,7 @@
Typemaps for multiple languages
Optimal code generation when returning by value
-Multi-argument typemaps
+Multi-argument typemaps
The run-time type checker
- Implementation
@@ -702,7 +702,7 @@ variables (parms). The purpose of these variables will be explained shortly.
code specifies the code used in the typemap.
-Usually this is C/C++ code, but in the strongly typed target languages, such as Java and C#, this can contain target language code for certain typemaps.
+Usually this is C/C++ code, but in the statically typed target languages, such as Java and C#, this can contain target language code for certain typemaps.
It can take any one of the following forms:
@@ -1933,7 +1933,7 @@ to implement customized conversions.
In addition, the "in" typemap allows the number of converted arguments to be
-specified. For example:
+specified. The numinputs attributes facilitates this. For example:
@@ -1946,7 +1946,12 @@ specified. For example:
-At this time, only zero or one arguments may be converted.
+At this time, only zero or one arguments may be converted.
+When numinputs is set to 0, the argument is effectively ignored and cannot be supplied from the target language.
+The argument is still required when making the C/C++ call and the above typemap
+shows the value used is instead obtained from a locally declared variable called temp.
+Usually numinputs is not specified, whereupon the default value is 1, that is, there is a one to one mapping of the number of arguments when used from the target language to the C/C++ call.
+Multi-argument typemaps provide a similar concept where the number of arguments mapped from the target language to C/C++ can be changed for more tha multiple adjacent C/C++ arguments.
@@ -2811,7 +2816,7 @@ optimal attribute usage in the out typemap at example.i:7.
However, it doesn't always get it right, for example when $1 is within some commented out code.
-10.9 Multi-argument typemaps
+10.9 Multi-argument typemaps
diff --git a/Doc/Manual/Warnings.html b/Doc/Manual/Warnings.html
index 39d5d3f01..0b3cb37e9 100644
--- a/Doc/Manual/Warnings.html
+++ b/Doc/Manual/Warnings.html
@@ -373,7 +373,7 @@ example.i(4): Syntax error in input.
117. Deprecated %new directive.
118. Deprecated %typemap(except).
119. Deprecated %typemap(ignore).
-120. Deprecated command line option (-c).
+120. Deprecated command line option (-runtime, -noruntime).
121. Deprecated %name directive.
diff --git a/Examples/Makefile.in b/Examples/Makefile.in
index 3edb75f8d..8b9928306 100644
--- a/Examples/Makefile.in
+++ b/Examples/Makefile.in
@@ -40,8 +40,9 @@ LIBCRYPT = @LIBCRYPT@
SYSLIBS = $(LIBM) $(LIBC) $(LIBCRYPT)
LIBPREFIX =
-# RUNTOOL is for use as with runtime tools, eg set it to valgrind
+# RUNTOOL is for use with runtime tools, eg set it to valgrind
RUNTOOL =
+# COMPILETOOL is a way to run the compiler under another tool, or more commonly just to stop the compiler executing
COMPILETOOL=
# X11 options
@@ -94,8 +95,6 @@ TK_OPTS = -ltk -ltcl @LIBS@
# Extra Tcl specific dynamic linking options
TCL_DLNK = @TCLDYNAMICLINKING@
-TCL_LDSHARED = @TCL_LDSHARED@
-TCL_CXXSHARED = @TCL_CXXSHARED@
TCL_SO = @TCL_SO@
# -----------------------------------------------------------
@@ -135,7 +134,7 @@ wish_cpp: $(SRCS)
tcl: $(SRCS)
$(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
$(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE)
- $(TCL_LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
+ $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
# -----------------------------------------------------------
# Build a Tcl7.5 dynamic loadable module for C++
@@ -144,7 +143,7 @@ tcl: $(SRCS)
tcl_cpp: $(SRCS)
$(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE)
- $(TCL_CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
+ $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
# -----------------------------------------------------------------
# Cleaning the Tcl examples
@@ -880,11 +879,11 @@ chicken_static_cpp: $(CXXSRCS) $(CHICKSRCS)
chicken:
$(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACE)
- $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ISRCS) -o $(TARGET)$(SO)
+ $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ISRCS) -o $(TARGET)$(SO)
chicken_cpp:
$(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACE)
- $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ICXXSRCS) $(CXXSRCS) -o $(TARGET)$(SO)
+ $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ICXXSRCS) $(CXXSRCS) -o $(TARGET)$(SO)
chicken_externalhdr:
$(SWIG) -chicken -external-runtime $(TARGET)
@@ -1078,11 +1077,11 @@ RRSRC = $(INTERFACE:.i=.R)
r: $(SRCS)
$(SWIG) -r $(SWIGOPT) $(INTERFACE)
- +( PKG_LIBS="$(SRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(ISRCS) )
+ +( PKG_LIBS="$(SRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(ISRCS) )
r_cpp: $(CXXSRCS)
$(SWIG) -c++ -r $(SWIGOPT) -o $(RCXXSRCS) $(INTERFACE)
- +( PKG_LIBS="$(CXXSRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(RCXXSRCS) )
+ +( PKG_LIBS="$(CXXSRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(RCXXSRCS) )
r_clean:
rm -f *_wrap* *~ .~*
diff --git a/Examples/guile/multimap/example.i b/Examples/guile/multimap/example.i
index a1cc0bb67..7337d1e9e 100644
--- a/Examples/guile/multimap/example.i
+++ b/Examples/guile/multimap/example.i
@@ -20,7 +20,7 @@ extern int gcd(int x, int y);
SCM *v;
if (!(SCM_NIMP($input) && SCM_VECTORP($input))) {
SWIG_exception(SWIG_ValueError, "Expecting a vector");
- return;
+ return 0;
}
$1 = SCM_LENGTH($input);
if ($1 == 0) {
@@ -32,7 +32,7 @@ extern int gcd(int x, int y);
if (!(SCM_NIMP(v[i]) && SCM_STRINGP(v[i]))) {
free($2);
SWIG_exception(SWIG_ValueError, "Vector items must be strings");
- return;
+ return 0;
}
$2[i] = SCM_CHARS(v[i]);
}
diff --git a/Examples/guile/multivalue/example.i b/Examples/guile/multivalue/example.i
index abc2a6fbc..135389487 100644
--- a/Examples/guile/multivalue/example.i
+++ b/Examples/guile/multivalue/example.i
@@ -2,6 +2,12 @@
%module example;
+%{
+void divide_l(int a, int b, int *quotient_p, int *remainder_p);
+void divide_v(int a, int b, int *quotient_p, int *remainder_p);
+void divide_mv(int a, int b, int *quotient_p, int *remainder_p);
+%}
+
/* Multiple values as lists. By default, if more than one value is to
be returned, a list of the values is created and returned; to switch
back to this behavior, use: */
diff --git a/Examples/lua/arrays/example.c b/Examples/lua/arrays/example.c
index 40ed12c79..56c7b19d9 100644
--- a/Examples/lua/arrays/example.c
+++ b/Examples/lua/arrays/example.c
@@ -16,7 +16,7 @@ void sort_int(int* arr, int len)
// ditto doubles
int compare_double(const void * a, const void * b)
{
- return ( *(double*)a - *(double*)b );
+ return (int)( *(double*)a - *(double*)b );
}
void sort_double(double* arr, int len)
diff --git a/Examples/lua/embed2/embed2.c b/Examples/lua/embed2/embed2.c
index 07b7a44d2..dac527eb4 100644
--- a/Examples/lua/embed2/embed2.c
+++ b/Examples/lua/embed2/embed2.c
@@ -11,6 +11,17 @@ We will be using the luaL_dostring()/lua_dostring() function to call into lua
*/
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
#include
#include
@@ -108,7 +119,7 @@ int call_va (lua_State *L,const char *func, const char *sig, ...) {
endwhile:
/* do the call */
- nres = strlen(sig); /* number of expected results */
+ nres = (int)strlen(sig); /* number of expected results */
if (lua_pcall(L, narg, nres, 0) != 0) /* do the call */
{
printf("error running function `%s': %s\n",func, lua_tostring(L, -1));
diff --git a/Examples/lua/embed3/embed3.cpp b/Examples/lua/embed3/embed3.cpp
index e42401cda..c2424f9af 100644
--- a/Examples/lua/embed3/embed3.cpp
+++ b/Examples/lua/embed3/embed3.cpp
@@ -5,6 +5,17 @@ passing C++ objects to this function.
*/
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
#include
#include
#include
@@ -70,9 +81,6 @@ int call_onEvent(lua_State *L, Event e) {
int main(int argc, char* argv[]) {
- int ok;
- int res;
- char str[80];
printf("[C++] Welcome to the simple embedded Lua example v3\n");
printf("[C++] We are in C++\n");
printf("[C++] opening a Lua state & loading the libraries\n");
diff --git a/Examples/lua/owner/example.cxx b/Examples/lua/owner/example.cxx
index 6e4091327..d6caeef15 100644
--- a/Examples/lua/owner/example.cxx
+++ b/Examples/lua/owner/example.cxx
@@ -54,14 +54,14 @@ void ShapeOwner::add(Shape* ptr) // this method takes ownership of the object
Shape* ShapeOwner::get(int idx) // this pointer is still owned by the class (assessor)
{
- if (idx<0 || idx>=shapes.size())
+ if (idx < 0 || idx >= static_cast(shapes.size()))
return NULL;
return shapes[idx];
}
Shape* ShapeOwner::remove(int idx) // this method returns memory which must be deleted
{
- if (idx<0 || idx>=shapes.size())
+ if (idx < 0 || idx >= static_cast(shapes.size()))
return NULL;
Shape* ptr=shapes[idx];
shapes.erase(shapes.begin()+idx);
diff --git a/Examples/perl5/import/base.h b/Examples/perl5/import/base.h
index be3cdef7d..5a266f68c 100644
--- a/Examples/perl5/import/base.h
+++ b/Examples/perl5/import/base.h
@@ -3,7 +3,7 @@
class Base {
public:
Base() { };
- ~Base() { };
+ virtual ~Base() { };
virtual void A() {
printf("I'm Base::A\n");
}
diff --git a/Examples/perl5/multiple_inheritance/example.h b/Examples/perl5/multiple_inheritance/example.h
index ce7dfe6a7..a8f544898 100644
--- a/Examples/perl5/multiple_inheritance/example.h
+++ b/Examples/perl5/multiple_inheritance/example.h
@@ -7,26 +7,25 @@ using namespace std;
class Bar
{
public:
- virtual void bar ()
- {
- cout << "bar" << endl;
- }
+ virtual void bar () {
+ cout << "bar" << endl;
+ }
+ virtual ~Bar() {}
};
class Foo
{
public:
- virtual void foo ()
- {
- cout << "foo" << endl;
- }
+ virtual void foo () {
+ cout << "foo" << endl;
+ }
+ virtual ~Foo() {}
};
class Foo_Bar : public Foo, public Bar
{
public:
- virtual void fooBar ()
- {
- cout << "foobar" << endl;
- }
+ virtual void fooBar () {
+ cout << "foobar" << endl;
+ }
};
diff --git a/Examples/ruby/class/example.dsp b/Examples/ruby/class/example.dsp
index 49c480575..9a26322ec 100644
--- a/Examples/ruby/class/example.dsp
+++ b/Examples/ruby/class/example.dsp
@@ -123,7 +123,7 @@ SOURCE=.\example.i
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -138,7 +138,7 @@ InputName=example
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/free_function/example.cxx b/Examples/ruby/free_function/example.cxx
index 9e0d24b1a..402a947e9 100644
--- a/Examples/ruby/free_function/example.cxx
+++ b/Examples/ruby/free_function/example.cxx
@@ -23,7 +23,7 @@ Zoo::~Zoo()
IterType iter = this->animals.begin();
IterType end = this->animals.end();
- for(iter; iter != end; ++iter)
+ for(; iter != end; ++iter)
{
Animal* animal = *iter;
delete animal;
diff --git a/Examples/ruby/free_function/example.dsp b/Examples/ruby/free_function/example.dsp
index 49c480575..9a26322ec 100644
--- a/Examples/ruby/free_function/example.dsp
+++ b/Examples/ruby/free_function/example.dsp
@@ -123,7 +123,7 @@ SOURCE=.\example.i
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -138,7 +138,7 @@ InputName=example
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/import/bar.dsp b/Examples/ruby/import/bar.dsp
index e897f8d5c..dd09ca021 100644
--- a/Examples/ruby/import/bar.dsp
+++ b/Examples/ruby/import/bar.dsp
@@ -115,7 +115,7 @@ SOURCE=.\bar.i
InputPath=.\bar.i
InputName=bar
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -130,7 +130,7 @@ InputName=bar
InputPath=.\bar.i
InputName=bar
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/import/base.dsp b/Examples/ruby/import/base.dsp
index 45d2fe2ea..2bd4fa243 100644
--- a/Examples/ruby/import/base.dsp
+++ b/Examples/ruby/import/base.dsp
@@ -115,7 +115,7 @@ SOURCE=.\base.i
InputPath=.\base.i
InputName=base
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -130,7 +130,7 @@ InputName=base
InputPath=.\base.i
InputName=base
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/import/foo.dsp b/Examples/ruby/import/foo.dsp
index 2dfba9d60..2a764bbd7 100644
--- a/Examples/ruby/import/foo.dsp
+++ b/Examples/ruby/import/foo.dsp
@@ -115,7 +115,7 @@ SOURCE=.\foo.i
InputPath=.\foo.i
InputName=foo
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -130,7 +130,7 @@ InputName=foo
InputPath=.\foo.i
InputName=foo
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/import/spam.dsp b/Examples/ruby/import/spam.dsp
index 0530b7303..d2d7158bb 100644
--- a/Examples/ruby/import/spam.dsp
+++ b/Examples/ruby/import/spam.dsp
@@ -115,7 +115,7 @@ SOURCE=.\spam.i
InputPath=.\spam.i
InputName=spam
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -130,7 +130,7 @@ InputName=spam
InputPath=.\spam.i
InputName=spam
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/ruby/mark_function/example.dsp b/Examples/ruby/mark_function/example.dsp
index 49c480575..9a26322ec 100644
--- a/Examples/ruby/mark_function/example.dsp
+++ b/Examples/ruby/mark_function/example.dsp
@@ -123,7 +123,7 @@ SOURCE=.\example.i
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
@@ -138,7 +138,7 @@ InputName=example
InputPath=.\example.i
InputName=example
-"$(InputName)_wrap.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+"$(InputName)_wrap.cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
echo In order to function correctly, please ensure the following environment variables are correctly set:
echo RUBY_INCLUDE: %RUBY_INCLUDE%
echo RUBY_LIB: %RUBY_LIB%
diff --git a/Examples/tcl/import/base.h b/Examples/tcl/import/base.h
index be3cdef7d..5a266f68c 100644
--- a/Examples/tcl/import/base.h
+++ b/Examples/tcl/import/base.h
@@ -3,7 +3,7 @@
class Base {
public:
Base() { };
- ~Base() { };
+ virtual ~Base() { };
virtual void A() {
printf("I'm Base::A\n");
}
diff --git a/Examples/test-suite/apply_signed_char.i b/Examples/test-suite/apply_signed_char.i
index ff1f1d83f..c0fa00cfe 100644
--- a/Examples/test-suite/apply_signed_char.i
+++ b/Examples/test-suite/apply_signed_char.i
@@ -31,5 +31,7 @@
const char memberconstchar;
virtual ~DirectorTest() {}
+ private:
+ DirectorTest& operator=(const DirectorTest &);
};
%}
diff --git a/Examples/test-suite/bools.i b/Examples/test-suite/bools.i
index 40e8989bd..7b94fcf88 100644
--- a/Examples/test-suite/bools.i
+++ b/Examples/test-suite/bools.i
@@ -57,6 +57,8 @@ struct BoolStructure {
m_rbool(m_bool2),
m_const_pbool(m_pbool),
m_const_rbool(m_rbool) {}
+private:
+ BoolStructure& operator=(const BoolStructure &);
};
%}
diff --git a/Examples/test-suite/char_strings.i b/Examples/test-suite/char_strings.i
index a91afaded..b06eba773 100644
--- a/Examples/test-suite/char_strings.i
+++ b/Examples/test-suite/char_strings.i
@@ -10,7 +10,7 @@ below.
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK_MSG) global_const_char; // Setting a const char * variable may leak memory.
%{
-#define OTHERLAND_MSG "Little message from the the safe world."
+#define OTHERLAND_MSG "Little message from the safe world."
#define CPLUSPLUS_MSG "A message from the deep dark world of C++, where anything is possible."
static char *global_str = NULL;
const int UINT_DIGITS = 10; // max unsigned int is 4294967295
diff --git a/Examples/test-suite/chicken/Makefile.in b/Examples/test-suite/chicken/Makefile.in
index 0ac37d16a..ef6d7056c 100644
--- a/Examples/test-suite/chicken/Makefile.in
+++ b/Examples/test-suite/chicken/Makefile.in
@@ -40,7 +40,7 @@ SWIGOPT += -nounit
$(setup)
+$(swig_and_compile_c)
$(run_testcase)
- +if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(PROXYSUFFIX) ]; then ( \
+ if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(PROXYSUFFIX) ]; then ( \
$(MAKE) $*.cproxy; ) \
fi;
@@ -54,7 +54,7 @@ SWIGOPT += -nounit
%.externaltest:
$(setup)
- $(swig_and_compile_external)
+ +$(swig_and_compile_external)
$(run_testcase)
# Runs the testcase. A testcase is only run if
@@ -69,21 +69,21 @@ run_testcase = \
%.cppproxy: SWIGOPT += -proxy
%.cppproxy: SCRIPTSUFFIX = $(PROXYSUFFIX)
%.cppproxy:
- echo "Checking testcase $* (with run test) under chicken with -proxy"
- $(swig_and_compile_cpp)
+ echo "$(ACTION)ing testcase $* (with run test) under chicken with -proxy"
+ +$(swig_and_compile_cpp)
$(run_testcase)
%.cproxy: SWIGOPT += -proxy
%.cproxy: SCRIPTSUFFIX = $(PROXYSUFFIX)
%.cproxy:
- echo "Checking testcase $* (with run test) under chicken with -proxy"
+ echo "$(ACTION)ing testcase $* (with run test) under chicken with -proxy"
+$(swig_and_compile_c)
$(run_testcase)
%.multiproxy: SWIGOPT += -proxy -noclosuses
%.multiproxy: SCRIPTSUFFIX = $(PROXYSUFFIX)
%.multiproxy:
- echo "Checking testcase $* (with run test) under chicken with -proxy"
+ echo "$(ACTION)ing testcase $* (with run test) under chicken with -proxy"
+$(swig_and_compile_multi_cpp)
$(run_testcase)
diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk
index 3607a4253..0a3a0858a 100644
--- a/Examples/test-suite/common.mk
+++ b/Examples/test-suite/common.mk
@@ -202,6 +202,7 @@ CPP_TEST_CASES += \
inherit_target_language \
inherit_void_arg \
inline_initializer \
+ keyword_rename \
kind \
langobj \
li_attribute \
@@ -422,6 +423,7 @@ C_TEST_CASES += \
immutable \
inctest \
integers \
+ keyword_rename \
lextype \
li_carrays \
li_cdata \
diff --git a/Examples/test-suite/constant_pointers.i b/Examples/test-suite/constant_pointers.i
index 367baf49c..5bd2fd533 100644
--- a/Examples/test-suite/constant_pointers.i
+++ b/Examples/test-suite/constant_pointers.i
@@ -46,6 +46,8 @@ public:
int* array_member1[ARRAY_SIZE];
ParametersTest* array_member2[ARRAY_SIZE];
MemberVariablesTest() : member3(NULL), member4(NULL) {}
+private:
+ MemberVariablesTest& operator=(const MemberVariablesTest&);
};
void foo(const int *const i) {}
@@ -69,6 +71,8 @@ public:
void ret6(int*& a) {}
int*& ret7() {return GlobalIntPtr;}
ReturnValuesTest() : int3(NULL) {}
+private:
+ ReturnValuesTest& operator=(const ReturnValuesTest&);
};
const int* globalRet1() {return &GlobalInt;}
@@ -100,6 +104,8 @@ int* const globalRet2() {return &GlobalInt;}
A* ap;
const A* cap;
Acptr acptr;
+ private:
+ B& operator=(const B&);
};
const B* bar(const B* b) {
diff --git a/Examples/test-suite/cpp_basic.i b/Examples/test-suite/cpp_basic.i
index becf84708..a247dd268 100644
--- a/Examples/test-suite/cpp_basic.i
+++ b/Examples/test-suite/cpp_basic.i
@@ -55,6 +55,8 @@ class Bar {
Foo *testFoo(int a, Foo *f) {
return new Foo(2 * a + (f ? f->num : 0) + fval.num);
}
+private:
+ Bar& operator=(const Bar&);
};
%}
diff --git a/Examples/test-suite/csharp/Makefile.in b/Examples/test-suite/csharp/Makefile.in
index 44a1b3675..5fd576ed8 100644
--- a/Examples/test-suite/csharp/Makefile.in
+++ b/Examples/test-suite/csharp/Makefile.in
@@ -51,9 +51,9 @@ intermediary_classname.customtest:
# Makes a directory for the testcase if it does not exist
setup = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
- echo "Checking testcase $* (with run test) under $(LANGUAGE)" ; \
+ echo "$(ACTION)ing testcase $* (with run test) under $(LANGUAGE)" ; \
else \
- echo "Checking testcase $* under $(LANGUAGE)" ; \
+ echo "$(ACTION)ing testcase $* under $(LANGUAGE)" ; \
fi; \
if [ ! -d $* ]; then \
mkdir $*; \
diff --git a/Examples/test-suite/csharp/char_strings_runme.cs b/Examples/test-suite/csharp/char_strings_runme.cs
index a1e878016..a8907fb16 100644
--- a/Examples/test-suite/csharp/char_strings_runme.cs
+++ b/Examples/test-suite/csharp/char_strings_runme.cs
@@ -5,7 +5,7 @@ using char_stringsNamespace;
public class char_strings_runme {
private static string CPLUSPLUS_MSG = "A message from the deep dark world of C++, where anything is possible.";
- private static string OTHERLAND_MSG = "Little message from the the safe world.";
+ private static string OTHERLAND_MSG = "Little message from the safe world.";
public static void Main() {
diff --git a/Examples/test-suite/enum_thorough.i b/Examples/test-suite/enum_thorough.i
index 4aa0613f2..31e3e2105 100644
--- a/Examples/test-suite/enum_thorough.i
+++ b/Examples/test-suite/enum_thorough.i
@@ -81,6 +81,8 @@ struct SpeedClass {
const colour myColour2;
speedtd1 mySpeedtd1;
SpeedClass() : myColour2(red), mySpeedtd1(slow) { }
+private:
+ SpeedClass& operator=(const SpeedClass&);
};
int speedTest0(int s) { return s; }
diff --git a/Examples/test-suite/fvirtual.i b/Examples/test-suite/fvirtual.i
index 074202bee..af189ed1f 100644
--- a/Examples/test-suite/fvirtual.i
+++ b/Examples/test-suite/fvirtual.i
@@ -10,11 +10,11 @@
virtual ~Node() {}
};
- class Switch : public Node {
+ class NodeSwitch : public Node {
public :
virtual int addChild( Node *child ) { return 2; } // This was hidden with -fvirtual
virtual int addChild( Node *child, bool value ) { return 3; }
- virtual ~Switch() {}
+ virtual ~NodeSwitch() {}
};
%}
diff --git a/Examples/test-suite/guilescm/Makefile.in b/Examples/test-suite/guilescm/Makefile.in
index 285426ee8..04de236db 100644
--- a/Examples/test-suite/guilescm/Makefile.in
+++ b/Examples/test-suite/guilescm/Makefile.in
@@ -21,9 +21,9 @@ run_testcase = \
setup = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
- echo "Checking testcase $* (with run test) under $(LANGUAGE) (with SCM API)" ; \
+ echo "$(ACTION)ing testcase $* (with run test) under $(LANGUAGE) (with SCM API)" ; \
else \
- echo "Checking testcase $* under $(LANGUAGE) (with SCM API)" ; \
+ echo "$(ACTION)ing testcase $* under $(LANGUAGE) (with SCM API)" ; \
fi;
swig_and_compile_multi_cpp = \
@@ -43,9 +43,9 @@ swig_and_compile_multi_cpp = \
# Same as setup and run_testcase, but without the SCRIPTPREFIX (so the runme comes from the guilescm directory)
local_setup = \
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
- echo "Checking testcase $* (with run test) under $(LANGUAGE) (with SCM API)" ; \
+ echo "$(ACTION)ing testcase $* (with run test) under $(LANGUAGE) (with SCM API)" ; \
else \
- echo "Checking testcase $* under $(LANGUAGE) (with SCM API)" ; \
+ echo "$(ACTION)ing testcase $* under $(LANGUAGE) (with SCM API)" ; \
fi;
local_run_testcase = \
diff --git a/Examples/test-suite/java/Makefile.in b/Examples/test-suite/java/Makefile.in
index 53816f6d0..ace8dee86 100644
--- a/Examples/test-suite/java/Makefile.in
+++ b/Examples/test-suite/java/Makefile.in
@@ -57,9 +57,9 @@ SWIGOPT += -package $*
# Makes a directory for the testcase if it does not exist
setup = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
- echo "Checking testcase $* (with run test) under $(LANGUAGE)" ; \
+ echo "$(ACTION)ing testcase $* (with run test) under $(LANGUAGE)" ; \
else \
- echo "Checking testcase $* under $(LANGUAGE)" ; \
+ echo "$(ACTION)ing testcase $* under $(LANGUAGE)" ; \
fi; \
if [ ! -d $* ]; then \
mkdir $*; \
diff --git a/Examples/test-suite/java/char_strings_runme.java b/Examples/test-suite/java/char_strings_runme.java
index 2e62080f5..2c71d3ea7 100644
--- a/Examples/test-suite/java/char_strings_runme.java
+++ b/Examples/test-suite/java/char_strings_runme.java
@@ -12,7 +12,7 @@ public class char_strings_runme {
}
private static String CPLUSPLUS_MSG = "A message from the deep dark world of C++, where anything is possible.";
- private static String OTHERLAND_MSG = "Little message from the the safe world.";
+ private static String OTHERLAND_MSG = "Little message from the safe world.";
public static void main(String argv[]) {
diff --git a/Examples/test-suite/java_typemaps_proxy.i b/Examples/test-suite/java_typemaps_proxy.i
index 5a1e61bb2..e315a36b5 100644
--- a/Examples/test-suite/java_typemaps_proxy.i
+++ b/Examples/test-suite/java_typemaps_proxy.i
@@ -119,6 +119,8 @@ public:
void const_member_method(const ConstWithout *p) const {}
const ConstWithout * const_var;
const ConstWithout * const var_const;
+private:
+ ConstWithout& operator=(const ConstWithout &);
};
const ConstWithout * global_constwithout = 0;
void global_method_constwithout(const ConstWithout *p) {}
diff --git a/Examples/test-suite/keyword_rename.i b/Examples/test-suite/keyword_rename.i
new file mode 100644
index 000000000..da9328868
--- /dev/null
+++ b/Examples/test-suite/keyword_rename.i
@@ -0,0 +1,32 @@
+/*
+ * Test reserved keyword renaming
+ */
+
+%module keyword_rename
+
+#pragma SWIG nowarn=SWIGWARN_PARSE_KEYWORD
+
+%inline %{
+
+#define KW(x, y) int x (int y) { return y; }
+
+/* Python keywords */
+KW(in, except)
+KW(except, in)
+KW(pass, in)
+
+/* Perl keywords */
+KW(tie, die)
+KW(use, next)
+
+/* Java keywords */
+KW(implements, native)
+KW(synchronized, final)
+
+/* C# Keywords */
+KW(string, out)
+struct sealed {int i;};
+
+%}
+
+
diff --git a/Examples/test-suite/li_std_string.i b/Examples/test-suite/li_std_string.i
index 8c2f1b857..2d0b7503d 100644
--- a/Examples/test-suite/li_std_string.i
+++ b/Examples/test-suite/li_std_string.i
@@ -129,7 +129,7 @@ public:
%}
%inline %{
- std::string empty() {
+ std::string stdstring_empty() {
return std::string();
}
diff --git a/Examples/test-suite/lua/li_typemaps_runme.lua b/Examples/test-suite/lua/li_typemaps_runme.lua
new file mode 100644
index 000000000..77aeb54e4
--- /dev/null
+++ b/Examples/test-suite/lua/li_typemaps_runme.lua
@@ -0,0 +1,40 @@
+require("import") -- the import fn
+import("li_typemaps") -- import code
+
+-- catch "undefined" global variables
+setmetatable(getfenv(),{__index=function (t,i) error("undefined global variable `"..i.."'",2) end})
+
+-- Check double INPUT typemaps
+assert(li_typemaps.in_double(22.22) == 22.22)
+assert(li_typemaps.inr_double(22.22) == 22.22)
+
+-- Check double OUTPUT typemaps
+assert(li_typemaps.out_double(22.22) == 22.22)
+assert(li_typemaps.outr_double(22.22) == 22.22)
+
+-- Check double INOUT typemaps
+assert(li_typemaps.inout_double(22.22) == 22.22)
+assert(li_typemaps.inoutr_double(22.22) == 22.22)
+
+-- check long long
+assert(li_typemaps.in_ulonglong(20)==20)
+assert(li_typemaps.inr_ulonglong(20)==20)
+assert(li_typemaps.out_ulonglong(20)==20)
+assert(li_typemaps.outr_ulonglong(20)==20)
+assert(li_typemaps.inout_ulonglong(20)==20)
+assert(li_typemaps.inoutr_ulonglong(20)==20)
+
+-- check bools
+assert(li_typemaps.in_bool(true)==true)
+assert(li_typemaps.inr_bool(false)==false)
+assert(li_typemaps.out_bool(true)==true)
+assert(li_typemaps.outr_bool(false)==false)
+assert(li_typemaps.inout_bool(true)==true)
+assert(li_typemaps.inoutr_bool(false)==false)
+
+-- the others
+a,b=li_typemaps.inoutr_int2(1,2)
+assert(a==1 and b==2)
+
+f,i=li_typemaps.out_foo(10)
+assert(f.a==10 and i==20)
diff --git a/Examples/test-suite/minherit.i b/Examples/test-suite/minherit.i
index aba299387..24092b6c6 100644
--- a/Examples/test-suite/minherit.i
+++ b/Examples/test-suite/minherit.i
@@ -6,7 +6,7 @@
%module(ruby_minherit="1") minherit
-#if defined(SWIGPYTHON) || defined(SWIGRUBY) || defined(SWIGOCAML) || defined(SWIGOCTAVE)
+#if defined(SWIGPYTHON) || defined(SWIGRUBY) || defined(SWIGOCAML) || defined(SWIGOCTAVE) || defined(SWIGPERL)
%inline %{
diff --git a/Examples/test-suite/octave/fvirtual_runme.m b/Examples/test-suite/octave/fvirtual_runme.m
index 06c6e7ccb..e755a559a 100644
--- a/Examples/test-suite/octave/fvirtual_runme.m
+++ b/Examples/test-suite/octave/fvirtual_runme.m
@@ -1,6 +1,6 @@
fvirtual
-sw = Switch();
+sw = NodeSwitch();
n = Node();
i = sw.addChild(n);
diff --git a/Examples/test-suite/octave/li_std_string_runme.m b/Examples/test-suite/octave/li_std_string_runme.m
index 1c24ac344..fa0e260e0 100644
--- a/Examples/test-suite/octave/li_std_string_runme.m
+++ b/Examples/test-suite/octave/li_std_string_runme.m
@@ -148,7 +148,7 @@ if (s != "hellohello")
endif
-if (li_std_string.empty() != "")
+if (li_std_string.stdstring_empty() != "")
error
endif
diff --git a/Examples/test-suite/perl5/li_std_string_runme.pl b/Examples/test-suite/perl5/li_std_string_runme.pl
index 0ee11bdc7..9ec7dd08c 100644
--- a/Examples/test-suite/perl5/li_std_string_runme.pl
+++ b/Examples/test-suite/perl5/li_std_string_runme.pl
@@ -98,7 +98,7 @@ SKIP: {
is($gen1->testl("9234567890121111113"), "9234567890121111114", "ulonglong big number");
-is(li_std_string::empty(), "", "empty");
+is(li_std_string::stdstring_empty(), "", "stdstring_empty");
is(li_std_string::c_empty(), "", "c_empty");
@@ -110,4 +110,4 @@ is(li_std_string::get_null(li_std_string::c_null()), undef, "c_empty");
is(li_std_string::get_null(li_std_string::c_empty()), "non-null", "c_empty");
-is(li_std_string::get_null(li_std_string::empty()), "non-null", "c_empty");
+is(li_std_string::get_null(li_std_string::stdstring_empty()), "non-null", "stdstring_empty");
diff --git a/Examples/test-suite/perl5/run-perl-test.pl b/Examples/test-suite/perl5/run-perl-test.pl
index f0e1b0288..106bf002b 100755
--- a/Examples/test-suite/perl5/run-perl-test.pl
+++ b/Examples/test-suite/perl5/run-perl-test.pl
@@ -7,7 +7,7 @@ use strict;
my $command = shift @ARGV;
-my $output = `perl $command 2>&1`;
+my $output = `$^X $command 2>&1`;
die "SWIG Perl test failed: \n\n$output\n"
if $?;
diff --git a/Examples/test-suite/php4/Makefile.in b/Examples/test-suite/php4/Makefile.in
index dbd239964..2e14ef9a2 100644
--- a/Examples/test-suite/php4/Makefile.in
+++ b/Examples/test-suite/php4/Makefile.in
@@ -42,17 +42,17 @@ missingtests: missingcpptests missingctests
%.cpptest:
$(setup)
+$(swig_and_compile_cpp)
- $(run_testcase)
+ +$(run_testcase)
%.ctest:
$(setup)
+$(swig_and_compile_c)
- $(run_testcase)
+ +$(run_testcase)
%.multicpptest:
$(setup)
+$(swig_and_compile_multi_cpp)
- $(run_testcase)
+ +$(run_testcase)
# Runs the testcase. A testcase is only run if
# a file is found which has _runme.php4 appended after the testcase name.
diff --git a/Examples/test-suite/python/fvirtual_runme.py b/Examples/test-suite/python/fvirtual_runme.py
index e06ab5b4f..ada3313de 100644
--- a/Examples/test-suite/python/fvirtual_runme.py
+++ b/Examples/test-suite/python/fvirtual_runme.py
@@ -1,6 +1,6 @@
from fvirtual import *
-sw = Switch()
+sw = NodeSwitch()
n = Node()
i = sw.addChild(n);
diff --git a/Examples/test-suite/python/keyword_rename_runme.py b/Examples/test-suite/python/keyword_rename_runme.py
new file mode 100644
index 000000000..5646ce7d6
--- /dev/null
+++ b/Examples/test-suite/python/keyword_rename_runme.py
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+import keyword_rename
+keyword_rename._in(1)
+keyword_rename._except(1)
diff --git a/Examples/test-suite/python/li_std_string_runme.py b/Examples/test-suite/python/li_std_string_runme.py
index ed79718d2..c0dae1e25 100644
--- a/Examples/test-suite/python/li_std_string_runme.py
+++ b/Examples/test-suite/python/li_std_string_runme.py
@@ -121,7 +121,7 @@ if s != "hellohello":
raise RuntimeError
-if li_std_string.empty() != "":
+if li_std_string.stdstring_empty() != "":
raise RuntimeError
diff --git a/Examples/test-suite/r/Makefile.in b/Examples/test-suite/r/Makefile.in
index 0a1b3567e..70dd62ec5 100644
--- a/Examples/test-suite/r/Makefile.in
+++ b/Examples/test-suite/r/Makefile.in
@@ -42,7 +42,7 @@ run_testcase = \
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PATH=.:"$$PATH" \
$(RUNTOOL) $(RUNR) $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ;) \
else \
- ($(RUNR) $(srcdir)/$(SCRIPTPREFIX)$*$(WRAPSUFFIX);) \
+ ($(RUNTOOL) $(RUNR) $(srcdir)/$(SCRIPTPREFIX)$*$(WRAPSUFFIX);) \
fi;
run_multitestcase = \
@@ -51,7 +51,7 @@ run_multitestcase = \
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PATH=.:"$$PATH" \
$(RUNTOOL) $(RUNR) $(srcdir)/$(SCRIPTPREFIX)$${f}$(SCRIPTSUFFIX) ;) \
else \
- ($(RUNR) $(srcdir)/$(SCRIPTPREFIX)$${f}$(WRAPSUFFIX);) \
+ ($(RUNTOOL) $(RUNR) $(srcdir)/$(SCRIPTPREFIX)$${f}$(WRAPSUFFIX);) \
fi; \
done
# Clean
diff --git a/Examples/test-suite/ruby/li_std_string_runme.rb b/Examples/test-suite/ruby/li_std_string_runme.rb
index f572573bc..dc85b5dab 100644
--- a/Examples/test-suite/ruby/li_std_string_runme.rb
+++ b/Examples/test-suite/ruby/li_std_string_runme.rb
@@ -124,7 +124,7 @@ if (s != "hellohello")
end
-if (empty() != "")
+if (stdstring_empty() != "")
raise RuntimeError
end
diff --git a/Examples/test-suite/samename.i b/Examples/test-suite/samename.i
index 1e9645e70..819cb4abd 100644
--- a/Examples/test-suite/samename.i
+++ b/Examples/test-suite/samename.i
@@ -1,6 +1,15 @@
%module samename
-%inline {
+#if !(defined(SWIGCSHARP) || defined(SWIGJAVA))
+class samename {
+ public:
+ void do_something() {
+ // ...
+ }
+};
+#endif
+
+%{
class samename {
public:
@@ -9,5 +18,5 @@ class samename {
}
};
-}
+%}
diff --git a/Examples/test-suite/template_int_const.i b/Examples/test-suite/template_int_const.i
index 37b1cf998..e69a53c4f 100644
--- a/Examples/test-suite/template_int_const.i
+++ b/Examples/test-suite/template_int_const.i
@@ -10,7 +10,7 @@
static const Polarization polarization = UnaryPolarization;
};
template
- struct Interface
+ struct Interface_
{
};
@@ -26,16 +26,16 @@
};
%}
-%template(Interface_UP) Interface;
+%template(Interface_UP) Interface_;
%template(Module_1) Module<1>;
%inline %{
struct ExtInterface1 :
- Interface // works
+ Interface_ // works
{
};
struct ExtInterface2 :
- Interface // doesn't work
+ Interface_ // doesn't work
{
};
struct ExtModule1 :
diff --git a/Examples/test-suite/template_typedef_rec.i b/Examples/test-suite/template_typedef_rec.i
index 83fe2104a..abdf11382 100644
--- a/Examples/test-suite/template_typedef_rec.i
+++ b/Examples/test-suite/template_typedef_rec.i
@@ -16,7 +16,7 @@ public:
template
-class ArrayIterator
+class ArrayIterator_
{
public:
typedef test_Array::intT intT;
@@ -38,8 +38,8 @@ class ArrayPrimitiveT
public:
typedef T ValueT;
typedef T valueT;
- typedef ArrayIterator Iterator;
- typedef ArrayIterator ConstIterator;
+ typedef ArrayIterator_ Iterator;
+ typedef ArrayIterator_ ConstIterator;
typedef ArrayReverseIterator ReverseIterator;
typedef ArrayReverseIterator ConstReverseIterator;
};
diff --git a/Examples/test-suite/typemap_namespace.i b/Examples/test-suite/typemap_namespace.i
index d30a4ddb1..5375c43b6 100644
--- a/Examples/test-suite/typemap_namespace.i
+++ b/Examples/test-suite/typemap_namespace.i
@@ -27,7 +27,7 @@ namespace Foo {
%typemap(javaout) Str1 * = char *;
#endif
%typemap(in) Str1 * = char *;
-#if !(defined(SWIGCSHARP) || defined(SWIGLUA))
+#if !(defined(SWIGCSHARP) || defined(SWIGLUA) || defined(SWIGPHP))
%typemap(freearg) Str1 * = char *;
#endif
%typemap(typecheck) Str1 * = char *;
diff --git a/Lib/chicken/chickenkw.swg b/Lib/chicken/chickenkw.swg
index f01faf14f..d2c26c74c 100644
--- a/Lib/chicken/chickenkw.swg
+++ b/Lib/chicken/chickenkw.swg
@@ -3,7 +3,7 @@
/* Warnings for certain CHICKEN keywords. From Section 7.1.1 of
Revised^5 Report on the Algorithmic Language Scheme */
-#define CHICKENKW(x) %namewarn("314:" #x " is a R^5RS syntatic keyword") #x
+#define CHICKENKW(x) %namewarn("314: '" #x "' is a R^5RS syntatic keyword") #x
CHICKENKW(else);
CHICKENKW(=>);
diff --git a/Lib/csharp/csharphead.swg b/Lib/csharp/csharphead.swg
index 7938dee04..ffff70372 100644
--- a/Lib/csharp/csharphead.swg
+++ b/Lib/csharp/csharphead.swg
@@ -73,7 +73,7 @@ static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = {
static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
- if (code >=0 && (size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
+ if ((size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
callback = SWIG_csharp_exceptions[code].callback;
}
callback(msg);
@@ -81,7 +81,7 @@ static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes
static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
- if (code >=0 && (size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) {
+ if ((size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) {
callback = SWIG_csharp_exceptions_argument[code].callback;
}
callback(msg, param_name);
diff --git a/Lib/csharp/csharpkw.swg b/Lib/csharp/csharpkw.swg
index c96042d2d..9a6d979f1 100644
--- a/Lib/csharp/csharpkw.swg
+++ b/Lib/csharp/csharpkw.swg
@@ -2,7 +2,7 @@
#define CSHARP_CSHARPKW_SWG_
/* Warnings for C# keywords */
-#define CSHARPKW(x) %namewarn("314:" #x " is a csharp keyword") #x
+#define CSHARPKW(x) %keywordwarn("'" `x` "' is a C# keyword, renaming to '_" `x` "'",rename="_%s") `x`
/*
from
diff --git a/Lib/java/director.swg b/Lib/java/director.swg
index bade80c9d..fa588671d 100644
--- a/Lib/java/director.swg
+++ b/Lib/java/director.swg
@@ -117,12 +117,18 @@ namespace Swig {
JNIEnv *jenv_;
public:
JNIEnvWrapper(const Director *director) : director_(director), jenv_(0) {
+#if defined(SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON)
+ // Attach a daemon thread to the JVM. Useful when the JVM should not wait for
+ // the thread to exit upon shutdown. Only for jdk-1.4 and later.
+ director_->swig_jvm_->AttachCurrentThreadAsDaemon((void **) &jenv_, NULL);
+#else
director_->swig_jvm_->AttachCurrentThread((void **) &jenv_, NULL);
+#endif
}
~JNIEnvWrapper() {
-// Some JVMs, eg JDK 1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call.
-// However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak.
#if !defined(SWIG_JAVA_NO_DETACH_CURRENT_THREAD)
+ // Some JVMs, eg jdk-1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call.
+ // However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak.
director_->swig_jvm_->DetachCurrentThread();
#endif
}
diff --git a/Lib/java/javakw.swg b/Lib/java/javakw.swg
index 9dcd97062..99cd54770 100644
--- a/Lib/java/javakw.swg
+++ b/Lib/java/javakw.swg
@@ -2,7 +2,7 @@
#define JAVA_JAVAKW_SWG_
/* Warnings for Java keywords */
-#define JAVAKW(x) %namewarn("314:" #x " is a java keyword") #x
+#define JAVAKW(x) %keywordwarn("'" `x` "' is a java keyword, renaming to '_"`x`"'",rename="_%s") `x`
/*
from
diff --git a/Lib/java/various.i b/Lib/java/various.i
index c53f08aa2..733b8fa79 100644
--- a/Lib/java/various.i
+++ b/Lib/java/various.i
@@ -60,7 +60,7 @@
#endif
}
-%typemap(out) char **STRING_ARRAY (char *s) {
+%typemap(out) char **STRING_ARRAY {
int i;
int len=0;
jstring temp_string;
diff --git a/Lib/lua/luatypemaps.swg b/Lib/lua/luatypemaps.swg
index 462d6a055..0941c9da1 100644
--- a/Lib/lua/luatypemaps.swg
+++ b/Lib/lua/luatypemaps.swg
@@ -73,7 +73,7 @@
%{$1 = (lua_toboolean(L, $input)!=0);%}
%typemap(out) bool
-%{ lua_pushboolean(L,(int)($1==true)); SWIG_arg++;%}
+%{ lua_pushboolean(L,(int)($1!=0)); SWIG_arg++;%}
// for const bool&, SWIG treats this as a const bool* so we must dereference it
%typemap(in,checkfn="lua_isboolean") const bool& (bool temp)
@@ -81,7 +81,7 @@
$1=&temp;%}
%typemap(out) const bool&
-%{ lua_pushboolean(L,(int)(*$1==true)); SWIG_arg++;%}
+%{ lua_pushboolean(L,(int)((*$1)!=0)); SWIG_arg++;%}
// strings (char* and char[])
%typemap(in,checkfn="lua_isstring") const char*, char*
diff --git a/Lib/lua/typemaps.i b/Lib/lua/typemaps.i
index e0adcf192..fa0c0d0e5 100644
--- a/Lib/lua/typemaps.i
+++ b/Lib/lua/typemaps.i
@@ -80,6 +80,22 @@ SWIG_NUMBER_TYPEMAP(long long); SWIG_NUMBER_TYPEMAP(unsigned long long); SWIG_NU
// note we dont do char, as a char* is probably a string not a ptr to a single char
+// similar for booleans
+%typemap(in,checkfn="lua_isboolean") bool *INPUT(bool temp), bool &INPUT(bool temp)
+%{ temp = (lua_toboolean(L,$input)!=0);
+ $1 = &temp; %}
+
+%typemap(in, numinputs=0) bool *OUTPUT (bool temp),bool &OUTPUT (bool temp)
+%{ $1 = &temp; %}
+
+%typemap(argout) bool *OUTPUT,bool &OUTPUT
+%{ lua_pushboolean(L, (int)((*$1)!=0)); SWIG_arg++;%}
+
+%typemap(in) bool *INOUT = bool *INPUT;
+%typemap(argout) bool *INOUT = bool *OUTPUT;
+%typemap(in) bool &INOUT = bool &INPUT;
+%typemap(argout) bool &INOUT = bool &OUTPUT;
+
/* -----------------------------------------------------------------------------
* Basic Array typemaps
* ----------------------------------------------------------------------------- */
@@ -320,6 +336,11 @@ for array handling
%typemap(freearg) (TYPE *INOUT,int)=(TYPE *INPUT,int);
// TODO out variable arrays (is there a standard form for such things?)
+
+// referencing so that (int *INPUT,int) and (int INPUT[],int) are the same
+%typemap(in) (TYPE INPUT[],int)=(TYPE *INPUT,int);
+%typemap(freearg) (TYPE INPUT[],int)=(TYPE *INPUT,int);
+
%enddef
// the following line of code
diff --git a/Lib/ocaml/ocamlkw.swg b/Lib/ocaml/ocamlkw.swg
index ba06f238e..9b9096e2b 100644
--- a/Lib/ocaml/ocamlkw.swg
+++ b/Lib/ocaml/ocamlkw.swg
@@ -2,7 +2,7 @@
#define OCAML_OCAMLKW_SWG_
/* Warnings for Ocaml keywords */
-#define OCAMLKW(x) %namewarn("314:" #x " is a ocaml keyword and it will properly renamed") #x
+#define OCAMLKW(x) %namewarn("314: '" #x "' is a ocaml keyword and it will properly renamed") #x
/*
from
diff --git a/Lib/perl5/perlkw.swg b/Lib/perl5/perlkw.swg
index 71a229c66..00648e0bf 100644
--- a/Lib/perl5/perlkw.swg
+++ b/Lib/perl5/perlkw.swg
@@ -1,6 +1,6 @@
/* Warnings for Perl keywords */
-#define PERLKW(x) %keywordwarn(`x` " is a perl keyword") `x`
-#define PERLBN(x) %builtinwarn(`x` " conflicts with a built-in name in perl") "::" `x`
+#define PERLKW(x) %keywordwarn("'" `x` "' is a perl keyword") `x`
+#define PERLBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in perl") "::" `x`
/*
diff --git a/Lib/php4/php4kw.swg b/Lib/php4/php4kw.swg
index 0d28994c5..a6b519445 100644
--- a/Lib/php4/php4kw.swg
+++ b/Lib/php4/php4kw.swg
@@ -8,15 +8,15 @@
* when used as class methods.
* ----------------------------------------------------------------------------- */
-#define PHPKW(x) %keywordwarn(`x` " is a php keyword, renamed as c_"`x`,sourcefmt="%(lower)s", rename="c_%s",fullname=1) `x`
+#define PHPKW(x) %keywordwarn("'" `x` "' is a php keyword, renamed as 'c_" `x` "'",sourcefmt="%(lower)s", rename="c_%s",fullname=1) `x`
%define PHPCN(x)
-%keywordwarn(`x` " is a php reserved class name, class renamed as c_"`x`,%$isclass,rename="c_%s") `x`;
-%keywordwarn(`x` " is a php reserved class name, constructor renamed as c_"`x`,%$isconstructor,rename="c_%s") `x`;
+%keywordwarn("'" `x` "' is a php reserved class name, class renamed as 'c_" `x` "'",%$isclass,rename="c_%s") `x`;
+%keywordwarn("'" `x` "' is a php reserved class name, constructor renamed as 'c_" `x` "'",%$isconstructor,rename="c_%s") `x`;
%enddef
-#define PHPBN1(x) %builtinwarn(`x` " conflicts with a built-in name in php",sourcefmt="%(lower)s",fullname=1) `x`
-#define PHPBN2(x) %builtinwarn(`x` " conflicts with a built-in name in php") "::" `x`
+#define PHPBN1(x) %builtinwarn("'" `x` "' conflicts with a built-in name in php",sourcefmt="%(lower)s",fullname=1) `x`
+#define PHPBN2(x) %builtinwarn("'" `x` "' conflicts with a built-in name in php") "::" `x`
/*
diff --git a/Lib/pike/pikekw.swg b/Lib/pike/pikekw.swg
index 85fd091a8..844b1f189 100644
--- a/Lib/pike/pikekw.swg
+++ b/Lib/pike/pikekw.swg
@@ -2,7 +2,7 @@
#define PIKE_PIKEKW_SWG_
/* Warnings for Pike keywords */
-#define PIKEKW(x) %namewarn("314:" #x " is a pike keyword") #x
+#define PIKEKW(x) %namewarn("314: '" #x "' is a pike keyword") #x
/*
from
diff --git a/Lib/python/pycontainer.swg b/Lib/python/pycontainer.swg
index 8f1db7ce1..ed0eb7f0b 100644
--- a/Lib/python/pycontainer.swg
+++ b/Lib/python/pycontainer.swg
@@ -738,12 +738,12 @@ namespace swig {
typedef typename sequence::const_iterator const_iterator;
static PyObject *from(const sequence& seq) {
-#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
+%#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
swig_type_info *desc = swig::type_info();
if (desc && desc->clientdata) {
return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
}
-#endif
+%#endif
size_type size = seq.size();
if (size <= (size_type)INT_MAX) {
PyObject *obj = PyTuple_New((int)size);
diff --git a/Lib/python/pyiterators.swg b/Lib/python/pyiterators.swg
index e2dfbc3f5..38f1791a9 100644
--- a/Lib/python/pyiterators.swg
+++ b/Lib/python/pyiterators.swg
@@ -38,18 +38,18 @@ namespace swig {
virtual PySwigIterator *incr(size_t n = 1) = 0;
// Backward iterator method, very common in C++, but not required in Python
- virtual PySwigIterator *decr(size_t n = 1)
+ virtual PySwigIterator *decr(size_t /*n*/ = 1)
{
throw stop_iteration();
}
// Random access iterator methods, but not required in Python
- virtual ptrdiff_t distance(const PySwigIterator &x) const
+ virtual ptrdiff_t distance(const PySwigIterator &/*x*/) const
{
throw std::invalid_argument("operation not supported");
}
- virtual bool equal (const PySwigIterator &x) const
+ virtual bool equal (const PySwigIterator &/*x*/) const
{
throw std::invalid_argument("operation not supported");
}
diff --git a/Lib/python/pythonkw.swg b/Lib/python/pythonkw.swg
index f57d34ce4..2ee233516 100644
--- a/Lib/python/pythonkw.swg
+++ b/Lib/python/pythonkw.swg
@@ -2,8 +2,8 @@
Warnings for Python keywords, built-in names and bad names.
*/
-#define PYTHONKW(x) %keywordwarn(`x` " is a python keyword, symbol will be renamed as '_" `x`"'", rename="_%s") `x`
-#define PYTHONBN(x) %builtinwarn(`x` " conflicts with a built-in name in python") "::"`x`
+#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword, renaming to '_" `x` "'", rename="_%s") `x`
+#define PYTHONBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in python") "::"`x`
/*
diff --git a/Lib/r/r.swg b/Lib/r/r.swg
index 3095529a0..0ab7e11a0 100644
--- a/Lib/r/r.swg
+++ b/Lib/r/r.swg
@@ -12,6 +12,8 @@
SWIGEXPORT void SWIG_init(void) {
%}
+%include
+
#define %Rruntime %insert("s")
#define SWIG_Object SEXP
diff --git a/Lib/r/rkw.swg b/Lib/r/rkw.swg
new file mode 100644
index 000000000..2c181faa0
--- /dev/null
+++ b/Lib/r/rkw.swg
@@ -0,0 +1,32 @@
+/*
+ Warnings for R keywords, built-in names and bad names.
+*/
+
+#define RKW(x) %keywordwarn("'" `x` "' is a R keyword, renaming to '_" `x`"'", rename="_%s") `x`
+
+/*
+ Warnings for R reserved words taken from
+ http://cran.r-project.org/doc/manuals/R-lang.html#Reserved-words
+*/
+
+RKW(if);
+RKW(else);
+RKW(repeat);
+RKW(while);
+RKW(function);
+RKW(for);
+RKW(in);
+RKW(next);
+RKW(break);
+RKW(TRUE);
+RKW(FALSE);
+RKW(NULL);
+RKW(Inf);
+RKW(NaN);
+RKW(NA);
+RKW(NA_integer_);
+RKW(NA_real_);
+RKW(NA_complex_);
+RKW(NA_character_);
+
+#undef RKW
diff --git a/Lib/ruby/rubycontainer.swg b/Lib/ruby/rubycontainer.swg
index e3cae5778..919695ec2 100644
--- a/Lib/ruby/rubycontainer.swg
+++ b/Lib/ruby/rubycontainer.swg
@@ -691,10 +691,12 @@ namespace swig
for ( ; i != e; )
{
VALUE r = swig::from< Sequence::value_type >(*i);
- if ( RTEST( rb_yield(r) ) )
+ if ( RTEST( rb_yield(r) ) ) {
$self->erase(i++);
- else
+ e = self->end();
+ } else {
++i;
+ }
}
return self;
diff --git a/Lib/ruby/rubykw.swg b/Lib/ruby/rubykw.swg
index fec47baff..194687b95 100644
--- a/Lib/ruby/rubykw.swg
+++ b/Lib/ruby/rubykw.swg
@@ -2,7 +2,7 @@
#define RUBY_RUBYKW_SWG_
/* Warnings for Ruby keywords */
-#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword, and it will renamed as 'C_"`x`"'",rename="C_%s",fullname=1) `x`
+#define RUBYKW(x) %keywordwarn("'" `x` "' is a ruby keyword, renaming to 'C_" `x` "'",rename="C_%s",fullname=1) `x`
/*
diff --git a/Lib/swiglabels.swg b/Lib/swiglabels.swg
index 09de6c969..b943afb47 100644
--- a/Lib/swiglabels.swg
+++ b/Lib/swiglabels.swg
@@ -40,6 +40,12 @@
# endif
#endif
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
#ifndef SWIGUNUSEDPARM
# ifdef __cplusplus
# define SWIGUNUSEDPARM(p)
diff --git a/Lib/typemaps/primtypes.swg b/Lib/typemaps/primtypes.swg
index c59aa1d1e..42728e5fe 100644
--- a/Lib/typemaps/primtypes.swg
+++ b/Lib/typemaps/primtypes.swg
@@ -283,6 +283,7 @@ _apply_macro(Macro, ptrdiff_t , Arg2);
_apply_macro(Macro, std::size_t, Arg2);
_apply_macro(Macro, std::ptrdiff_t, Arg2);
_apply_macro(Macro, std::string, Arg2);
+_apply_macro(Macro, std::wstring, Arg2);
_apply_macro(Macro, std::complex, Arg2);
_apply_macro(Macro, std::complex, Arg2);
%enddef
diff --git a/README b/README
index 61550e558..2898130b0 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
SWIG (Simplified Wrapper and Interface Generator)
-Version: 1.3.35 (7 April 2008)
+Version: 1.3.36 (24 June 2008)
Tagline: SWIG is a compiler that integrates C and C++ with languages
including Perl, Python, Tcl, Ruby, PHP, Java, Ocaml, Lua,
@@ -91,6 +91,13 @@ A SWIG FAQ and other hints can be found on the SWIG Wiki:
What's New?
===========
+SWIG-1.3.36 summary:
+- Enhancement to directors to wrap all protected members
+- Optimisation feature for objects returned by value
+- A few bugs fixes in the PHP, Java, Ruby, R, C#, Python, Lua and
+ Perl modules
+- Other minor generic bug fixes
+
SWIG-1.3.35 summary:
- Octave language module added
- Bug fixes in Python, Lua, Java, C#, Perl modules
diff --git a/Source/CParse/cscanner.c b/Source/CParse/cscanner.c
index 2a0d341b5..032c71f7e 100644
--- a/Source/CParse/cscanner.c
+++ b/Source/CParse/cscanner.c
@@ -423,7 +423,7 @@ int yylook(void) {
{
String *cmt = Scanner_text(scan);
char *loc = Char(cmt);
- if ((strncmp(loc,"/*@SWIG@",6) == 0) && (loc[Len(cmt)-3] == '@')) {
+ if ((strncmp(loc,"/*@SWIG",7) == 0) && (loc[Len(cmt)-3] == '@')) {
scanner_locator(cmt);
}
}
diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y
index 4fe8b47ed..58e0c0c41 100644
--- a/Source/CParse/parser.y
+++ b/Source/CParse/parser.y
@@ -331,7 +331,9 @@ static void add_symbols(Node *n) {
Delete(prefix);
}
- if (0 && !Getattr(n,"parentNode") && class_level) set_parentNode(n,class_decl[class_level - 1]);
+ /*
+ if (!Getattr(n,"parentNode") && class_level) set_parentNode(n,class_decl[class_level - 1]);
+ */
Setattr(n,"ismember","1");
}
}
@@ -4109,10 +4111,11 @@ cpp_destructor_decl : NOT idtemplate LPAREN parms RPAREN cpp_end {
/* Check for template names. If the class is a template
and the constructor is missing the template part, we
add it */
- if (Classprefix && (c = strchr(Char(Classprefix),'<'))) {
- if (!Strchr($3,'<')) {
- $3 = NewStringf("%s%s",$3,c);
- }
+ if (Classprefix) {
+ c = strchr(Char(Classprefix),'<');
+ if (c && !Strchr($3,'<')) {
+ $3 = NewStringf("%s%s",$3,c);
+ }
}
Setattr($$,"storage","virtual");
name = NewStringf("%s",$3);
@@ -4428,12 +4431,8 @@ parms : rawparms {
;
rawparms : parm ptail {
- if (1) {
- set_nextSibling($1,$2);
- $$ = $1;
- } else {
- $$ = $2;
- }
+ set_nextSibling($1,$2);
+ $$ = $1;
}
| empty { $$ = 0; }
;
@@ -4486,12 +4485,8 @@ valparms : rawvalparms {
;
rawvalparms : valparm valptail {
- if (1) {
- set_nextSibling($1,$2);
- $$ = $1;
- } else {
- $$ = $2;
- }
+ set_nextSibling($1,$2);
+ $$ = $1;
}
| empty { $$ = 0; }
;
diff --git a/Source/CParse/templ.c b/Source/CParse/templ.c
index a1f0c8e08..8142125a7 100644
--- a/Source/CParse/templ.c
+++ b/Source/CParse/templ.c
@@ -281,13 +281,13 @@ int Swig_cparse_template_expand(Node *n, String *rname, ParmList *tparms, Symtab
Delete(ptargs);
}
- if (0) {
+ /*
Parm *p = tparms;
while (p) {
Printf(stdout, "tparm: '%s' '%s' '%s'\n", Getattr(p, "name"), Getattr(p, "type"), Getattr(p, "value"));
p = nextSibling(p);
}
- }
+ */
/* Printf(stdout,"targs = '%s'\n", templateargs);
Printf(stdout,"rname = '%s'\n", rname);
diff --git a/Source/DOH/hash.c b/Source/DOH/hash.c
index ccb94314a..62aef10f2 100644
--- a/Source/DOH/hash.c
+++ b/Source/DOH/hash.c
@@ -112,12 +112,11 @@ static void DelHash(DOH *ho) {
int i;
for (i = 0; i < h->hashsize; i++) {
- if ((n = h->hashtable[i])) {
- while (n) {
- next = n->next;
- DelNode(n);
- n = next;
- }
+ n = h->hashtable[i];
+ while (n) {
+ next = n->next;
+ DelNode(n);
+ n = next;
}
}
DohFree(h->hashtable);
@@ -138,12 +137,11 @@ static void Hash_clear(DOH *ho) {
int i;
for (i = 0; i < h->hashsize; i++) {
- if ((n = h->hashtable[i])) {
- while (n) {
- next = n->next;
- DelNode(n);
- n = next;
- }
+ n = h->hashtable[i];
+ while (n) {
+ next = n->next;
+ DelNode(n);
+ n = next;
}
h->hashtable[i] = 0;
}
@@ -454,11 +452,10 @@ static DOH *CopyHash(DOH *ho) {
nho = DohObjMalloc(&DohHashType, nh);
for (i = 0; i < h->hashsize; i++) {
- if ((n = h->hashtable[i])) {
- while (n) {
- Hash_setattr(nho, n->key, n->object);
- n = n->next;
- }
+ n = h->hashtable[i];
+ while (n) {
+ Hash_setattr(nho, n->key, n->object);
+ n = n->next;
}
}
return nho;
diff --git a/Source/Modules/allegrocl.cxx b/Source/Modules/allegrocl.cxx
index 561997276..a968e506c 100644
--- a/Source/Modules/allegrocl.cxx
+++ b/Source/Modules/allegrocl.cxx
@@ -2271,7 +2271,7 @@ int ALLEGROCL::emit_dispatch_defun(Node *n) {
return SWIG_OK;
}
-int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
+int ALLEGROCL::emit_defun(Node *n, File *fcl) {
#ifdef ALLEGROCL_WRAP_DEBUG
Printf(stderr, "emit_defun: ENTER... ");
#endif
@@ -2307,27 +2307,27 @@ int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
if (Generate_Wrapper) {
String *extra_parms = id_converter_arguments(n)->noname_str();
if (Getattr(n, "sym:overloaded"))
- Printf(f_cl, "(swig-defmethod (\"%s\" \"%s\"%s)\n", funcname, mangled_name, extra_parms);
+ Printf(fcl, "(swig-defmethod (\"%s\" \"%s\"%s)\n", funcname, mangled_name, extra_parms);
else
- Printf(f_cl, "(swig-defun (\"%s\" \"%s\"%s)\n", funcname, mangled_name, extra_parms);
+ Printf(fcl, "(swig-defun (\"%s\" \"%s\"%s)\n", funcname, mangled_name, extra_parms);
Delete(extra_parms);
}
// Just C
else {
- Printf(f_cl, "(swig-defun (\"%s\" \"%s\")\n", funcname, Generate_Wrapper ? mangled_name : funcname);
+ Printf(fcl, "(swig-defun (\"%s\" \"%s\")\n", funcname, Generate_Wrapper ? mangled_name : funcname);
}
//////////////////////////////////////
// Lisp foreign call parameter list //
//////////////////////////////////////
- Printf(f_cl, " (");
+ Printf(fcl, " (");
/* Special cases */
if (ParmList_len(pl) == 0) {
- Printf(f_cl, ":void");
+ Printf(fcl, ":void");
/* } else if (any_varargs(pl)) {
- Printf(f_cl, "#| varargs |#");
+ Printf(fcl, "#| varargs |#");
varargs=1; */
} else {
String *largs = NewString("");
@@ -2337,7 +2337,7 @@ int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
SwigType *argtype = Swig_cparse_type(Getattr(p, "tmap:ctype"));
if (!first) {
- Printf(f_cl, "\n ");
+ Printf(fcl, "\n ");
}
if (SwigType_isvarargs(argtype)) {
@@ -2393,7 +2393,7 @@ int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
// if this parameter has been removed from the C/++ wrapper
// it shouldn't be in the lisp wrapper either.
if (!checkAttribute(p, "tmap:in:numinputs", "0")) {
- Printf(f_cl, "(%s %s %s %s %s)",
+ Printf(fcl, "(%s %s %s %s %s)",
// parms in the ff wrapper, but not in the lisp wrapper.
(checkAttribute(p, "tmap:lin:numinputs", "0") ? ":p-" : ":p+"), argname, dispatchtype, ffitype, lisptype);
@@ -2479,12 +2479,12 @@ int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
Replaceall(wrap->code, "$ldestructor", ldestructor);
Delete(ldestructor);
- Printf(f_cl, ")\n"); /* finish arg list */
+ Printf(fcl, ")\n"); /* finish arg list */
/////////////////////////////////////////////////////
// Lisp foreign call return type and optimizations //
/////////////////////////////////////////////////////
- Printf(f_cl, " (:returning (%s %s)", compose_foreign_type(result_type), get_lisp_type(Getattr(n, "type"), "result"));
+ Printf(fcl, " (:returning (%s %s)", compose_foreign_type(result_type), get_lisp_type(Getattr(n, "type"), "result"));
for (Iterator option = First(n); option.item; option = Next(option)) {
if (Strncmp("feature:ffargs:", option.key, 15))
@@ -2494,12 +2494,12 @@ int ALLEGROCL::emit_defun(Node *n, File *f_cl) {
Replaceall(option_name, "_", "-");
// TODO: varargs vs call-direct ?
- Printf(f_cl, "\n %s %s", option_name, option_val);
+ Printf(fcl, "\n %s %s", option_name, option_val);
Delete(option_name);
}
- Printf(f_cl, ")\n %s)\n\n", wrap->code);
+ Printf(fcl, ")\n %s)\n\n", wrap->code);
// Wrapper_print(wrap, stderr);
Delete(result_type);
@@ -2935,11 +2935,9 @@ int ALLEGROCL::classHandler(Node *n) {
#endif
if (Generate_Wrapper)
- return cppClassHandler(n);
+ return cppClassHandler(n);
else
- return cClassHandler(n);
-
- return SWIG_OK;
+ return cClassHandler(n);
}
int ALLEGROCL::cClassHandler(Node *n) {
diff --git a/Source/Modules/chicken.cxx b/Source/Modules/chicken.cxx
index a76e09945..2298d2939 100644
--- a/Source/Modules/chicken.cxx
+++ b/Source/Modules/chicken.cxx
@@ -329,7 +329,6 @@ int CHICKEN::functionWrapper(Node *n) {
Parm *p;
int i;
String *wname;
- String *source;
Wrapper *f;
String *mangle = NewString("");
String *get_pointers;
@@ -398,8 +397,6 @@ int CHICKEN::functionWrapper(Node *n) {
SwigType *pt = Getattr(p, "type");
String *ln = Getattr(p, "lname");
- source = NewStringf("scm%d", i + 1);
-
Printf(f->def, ", C_word scm%d", i + 1);
Printf(declfunc, ",C_word");
@@ -407,6 +404,7 @@ int CHICKEN::functionWrapper(Node *n) {
if ((tm = Getattr(p, "tmap:in"))) {
String *parse = Getattr(p, "tmap:in:parse");
if (!parse) {
+ String *source = NewStringf("scm%d", i + 1);
Replaceall(tm, "$source", source);
Replaceall(tm, "$target", ln);
Replaceall(tm, "$input", source);
@@ -445,20 +443,15 @@ int CHICKEN::functionWrapper(Node *n) {
}
}
}
-
- } else {
+ Delete(source);
}
-
p = Getattr(p, "tmap:in:next");
continue;
} else {
Swig_warning(WARN_TYPEMAP_IN_UNDEF, input_file, line_number, "Unable to use type %s as a function argument.\n", SwigType_str(pt, 0));
break;
}
-
- Delete(source);
- p = nextSibling(p);
}
/* finish argument marshalling */
@@ -1510,7 +1503,7 @@ int CHICKEN::validIdentifier(String *s) {
/* ------------------------------------------------------------
* closNameMapping()
* Maps the identifier from C++ to the CLOS based on command
- * line paramaters and such.
+ * line parameters and such.
* If class_name = "" that means the mapping is for a function or
* variable not attached to any class.
* ------------------------------------------------------------ */
diff --git a/Source/Modules/csharp.cxx b/Source/Modules/csharp.cxx
index df4677e26..7ea10170a 100644
--- a/Source/Modules/csharp.cxx
+++ b/Source/Modules/csharp.cxx
@@ -1073,7 +1073,9 @@ public:
global_variable_flag = false;
generate_property_declaration_flag = false;
- Printf(module_class_code, "\n }\n\n");
+ if (proxy_flag) {
+ Printf(module_class_code, "\n }\n\n");
+ }
return ret;
}
@@ -1924,7 +1926,7 @@ public:
Swig_warning(WARN_CSHARP_TYPEMAP_CSWTYPE_UNDEF, input_file, line_number, "No cstype typemap defined for %s\n", SwigType_str(t, 0));
}
- if (proxy_flag && wrapping_member_flag && !enum_constant_flag) {
+ if (wrapping_member_flag && !enum_constant_flag) {
// Properties
setter_flag = (Cmp(Getattr(n, "sym:name"), Swig_name_set(Swig_name_member(proxy_class_name, variable_name))) == 0);
if (setter_flag)
@@ -2107,7 +2109,7 @@ public:
Swig_warning(WARN_CSHARP_TYPEMAP_CSOUT_UNDEF, input_file, line_number, "No csout typemap defined for %s\n", SwigType_str(t, 0));
}
- if (proxy_flag && wrapping_member_flag && !enum_constant_flag) {
+ if (wrapping_member_flag && !enum_constant_flag) {
// Properties
if (generate_property_declaration_flag) { // Ensure the declaration is generated just once should the property contain both a set and get
// Get the C# variable type - obtained differently depending on whether a setter is required.
@@ -2541,6 +2543,7 @@ public:
num_arguments = emit_num_arguments(l);
num_required = emit_num_required(l);
+ bool global_or_member_variable = global_variable_flag || (wrapping_member_flag && !enum_constant_flag);
int gencomma = 0;
/* Output each parameter */
@@ -2567,7 +2570,7 @@ public:
if (gencomma)
Printf(imcall, ", ");
- String *arg = makeParameterName(n, p, i, setter_flag);
+ String *arg = makeParameterName(n, p, i, global_or_member_variable);
// Use typemaps to transform type used in C# wrapper function (in proxy class) to type used in PInvoke function (in intermediary class)
if ((tm = Getattr(p, "tmap:csin"))) {
@@ -2755,7 +2758,7 @@ public:
value = Getattr(n, "enumvalue") ? Copy(Getattr(n, "enumvalue")) : Copy(Getattr(n, "enumvalueex"));
} else {
// Get the enumvalue from a PINVOKE call
- if (!getCurrentClass() || !cparse_cplusplus) {
+ if (!getCurrentClass() || !cparse_cplusplus || !proxy_flag) {
// Strange hack to change the name
Setattr(n, "name", Getattr(n, "value")); /* for wrapping of enums in a namespace when emit_action is used */
constantWrapper(n);
@@ -2877,7 +2880,7 @@ public:
* n - Node
* p - parameter node
* arg_num - parameter argument number
- * setter - set this flag when wrapping member variables
+ * setter - set this flag when wrapping variables
* Return:
* arg - a unique parameter name
* ----------------------------------------------------------------------------- */
@@ -2886,20 +2889,22 @@ public:
String *arg = 0;
String *pn = Getattr(p, "name");
- if (setter) {
+
+ // Use C parameter name unless it is a duplicate or an empty parameter name
+ int count = 0;
+ ParmList *plist = Getattr(n, "parms");
+ while (plist) {
+ if ((Cmp(pn, Getattr(plist, "name")) == 0))
+ count++;
+ plist = nextSibling(plist);
+ }
+ String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
+ arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
+
+ if (setter && Cmp(arg, "self") != 0) {
// Note that in C# properties, the input variable name is always called 'value'
+ Delete(arg);
arg = NewString("value");
- } else {
- // Use C parameter name unless it is a duplicate or an empty parameter name
- int count = 0;
- ParmList *plist = Getattr(n, "parms");
- while (plist) {
- if ((Cmp(pn, Getattr(plist, "name")) == 0))
- count++;
- plist = nextSibling(plist);
- }
- String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
- arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
}
return arg;
diff --git a/Source/Modules/guile.cxx b/Source/Modules/guile.cxx
index 2390e8ad6..f5f080034 100644
--- a/Source/Modules/guile.cxx
+++ b/Source/Modules/guile.cxx
@@ -1649,7 +1649,7 @@ public:
/* ------------------------------------------------------------
* goopsNameMapping()
* Maps the identifier from C++ to the GOOPS based * on command
- * line paramaters and such.
+ * line parameters and such.
* If class_name = "" that means the mapping is for a function or
* variable not attached to any class.
* ------------------------------------------------------------ */
diff --git a/Source/Modules/java.cxx b/Source/Modules/java.cxx
index 5660b4885..b92fccdfb 100644
--- a/Source/Modules/java.cxx
+++ b/Source/Modules/java.cxx
@@ -1932,7 +1932,7 @@ public:
Swig_warning(WARN_JAVA_TYPEMAP_JSTYPE_UNDEF, input_file, line_number, "No jstype typemap defined for %s\n", SwigType_str(t, 0));
}
- if (proxy_flag && wrapping_member_flag && !enum_constant_flag) {
+ if (wrapping_member_flag && !enum_constant_flag) {
// For wrapping member variables (Javabean setter)
setter_flag = (Cmp(Getattr(n, "sym:name"), Swig_name_set(Swig_name_member(proxy_class_name, variable_name))) == 0);
}
@@ -2463,6 +2463,7 @@ public:
num_arguments = emit_num_arguments(l);
num_required = emit_num_required(l);
+ bool global_or_member_variable = global_variable_flag || (wrapping_member_flag && !enum_constant_flag);
int gencomma = 0;
/* Output each parameter */
@@ -2487,7 +2488,7 @@ public:
if (gencomma)
Printf(imcall, ", ");
- String *arg = makeParameterName(n, p, i, setter_flag);
+ String *arg = makeParameterName(n, p, i, global_or_member_variable);
// Use typemaps to transform type used in Java wrapper function (in proxy class) to type used in JNI function (in intermediary class)
if ((tm = Getattr(p, "tmap:javain"))) {
@@ -2632,7 +2633,7 @@ public:
value = Getattr(n, "enumvalue") ? Copy(Getattr(n, "enumvalue")) : Copy(Getattr(n, "enumvalueex"));
} else {
// Get the enumvalue from a JNI call
- if (!getCurrentClass() || !cparse_cplusplus) {
+ if (!getCurrentClass() || !cparse_cplusplus || !proxy_flag) {
// Strange hack to change the name
Setattr(n, "name", Getattr(n, "value")); /* for wrapping of enums in a namespace when emit_action is used */
constantWrapper(n);
@@ -2759,7 +2760,7 @@ public:
* n - Node
* p - parameter node
* arg_num - parameter argument number
- * setter - set this flag when wrapping member variables
+ * setter - set this flag when wrapping variables
* Return:
* arg - a unique parameter name
* ----------------------------------------------------------------------------- */
@@ -2768,21 +2769,23 @@ public:
String *arg = 0;
String *pn = Getattr(p, "name");
- if (setter) {
+
+ // Use C parameter name unless it is a duplicate or an empty parameter name
+ int count = 0;
+ ParmList *plist = Getattr(n, "parms");
+ while (plist) {
+ if ((Cmp(pn, Getattr(plist, "name")) == 0))
+ count++;
+ plist = nextSibling(plist);
+ }
+ String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
+ arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
+
+ if (setter && Cmp(arg, "self") != 0) {
// Note that for setters the parameter name is always set but sometimes includes C++
// scope resolution, so we need to strip off the scope resolution to make a valid name.
+ Delete(arg);
arg = NewString("value"); //Swig_scopename_last(pn);
- } else {
- // Use C parameter name unless it is a duplicate or an empty parameter name
- int count = 0;
- ParmList *plist = Getattr(n, "parms");
- while (plist) {
- if ((Cmp(pn, Getattr(plist, "name")) == 0))
- count++;
- plist = nextSibling(plist);
- }
- String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
- arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
}
return arg;
diff --git a/Source/Modules/lang.cxx b/Source/Modules/lang.cxx
index 4a7bf8813..6718903d0 100644
--- a/Source/Modules/lang.cxx
+++ b/Source/Modules/lang.cxx
@@ -1097,38 +1097,33 @@ int Language::globalfunctionHandler(Node *n) {
String *name = Getattr(n, "name");
String *symname = Getattr(n, "sym:name");
SwigType *type = Getattr(n, "type");
- String *storage = Getattr(n, "storage");
ParmList *parms = Getattr(n, "parms");
- if (0 && (Cmp(storage, "static") == 0)) {
- Swig_restore(n);
- return SWIG_NOWRAP; /* Can't wrap static functions */
- } else {
- /* Check for callback mode */
- String *cb = GetFlagAttr(n, "feature:callback");
- if (cb) {
- String *cbname = Getattr(n, "feature:callback:name");
- if (!cbname) {
- cbname = NewStringf(cb, symname);
- Setattr(n, "feature:callback:name", cbname);
- }
-
- callbackfunctionHandler(n);
- if (Cmp(cbname, symname) == 0) {
- Delete(cbname);
- Swig_restore(n);
- return SWIG_NOWRAP;
- }
- Delete(cbname);
+ /* Check for callback mode */
+ String *cb = GetFlagAttr(n, "feature:callback");
+ if (cb) {
+ String *cbname = Getattr(n, "feature:callback:name");
+ if (!cbname) {
+ cbname = NewStringf(cb, symname);
+ Setattr(n, "feature:callback:name", cbname);
}
- Setattr(n, "parms", nonvoid_parms(parms));
- String *call = Swig_cfunction_call(name, parms);
- String *cres = Swig_cresult(type, "result", call);
- Setattr(n, "wrap:action", cres);
- Delete(cres);
- Delete(call);
- functionWrapper(n);
+
+ callbackfunctionHandler(n);
+ if (Cmp(cbname, symname) == 0) {
+ Delete(cbname);
+ Swig_restore(n);
+ return SWIG_NOWRAP;
+ }
+ Delete(cbname);
}
+ Setattr(n, "parms", nonvoid_parms(parms));
+ String *call = Swig_cfunction_call(name, parms);
+ String *cres = Swig_cresult(type, "result", call);
+ Setattr(n, "wrap:action", cres);
+ Delete(cres);
+ Delete(call);
+ functionWrapper(n);
+
Swig_restore(n);
return SWIG_OK;
}
@@ -1376,9 +1371,6 @@ int Language::variableHandler(Node *n) {
* ---------------------------------------------------------------------- */
int Language::globalvariableHandler(Node *n) {
- String *storage = Getattr(n, "storage");
- if (0 && (Cmp(storage, "static") == 0))
- return SWIG_NOWRAP;
variableWrapper(n);
return SWIG_OK;
}
@@ -2108,8 +2100,8 @@ int Language::classDirector(Node *n) {
String *using_protected_members_code = NewString("");
for (ni = Getattr(n, "firstChild"); ni; ni = nextSibling(ni)) {
Node *nodeType = Getattr(ni, "nodeType");
- bool cdecl = (Cmp(nodeType, "cdecl") == 0);
- if (cdecl && !GetFlag(ni, "feature:ignore")) {
+ bool cdeclaration = (Cmp(nodeType, "cdecl") == 0);
+ if (cdeclaration && !GetFlag(ni, "feature:ignore")) {
if (is_non_virtual_protected_access(ni)) {
Node *overloaded = Getattr(ni, "sym:overloaded");
// emit the using base::member statement (but only once if the method is overloaded)
@@ -3391,7 +3383,8 @@ int Language::is_assignable(Node *n) {
SwigType *ftd = SwigType_typedef_resolve_all(type);
SwigType *td = SwigType_strip_qualifiers(ftd);
if (SwigType_type(td) == T_USER) {
- if ((cn = Swig_symbol_clookup(td, 0))) {
+ cn = Swig_symbol_clookup(td, 0);
+ if (cn) {
if ((Strcmp(nodeType(cn), "class") == 0)) {
if (Getattr(cn, "allocate:noassign")) {
SetFlag(n, "feature:immutable");
diff --git a/Source/Modules/lua.cxx b/Source/Modules/lua.cxx
index f46c9e809..6113da960 100644
--- a/Source/Modules/lua.cxx
+++ b/Source/Modules/lua.cxx
@@ -490,8 +490,6 @@ public:
Swig_warning(WARN_TYPEMAP_IN_UNDEF, input_file, line_number, "Unable to use type %s as a function argument.\n", SwigType_str(pt, 0));
break;
}
-
- p = nextSibling(p);
}
// add all argcheck code
@@ -1101,7 +1099,6 @@ public:
virtual int staticmemberfunctionHandler(Node *n) {
current = STATIC_FUNC;
return Language::staticmemberfunctionHandler(n);
- current = NO_CPP;
}
/* ------------------------------------------------------------
@@ -1123,7 +1120,6 @@ public:
// REPORT("staticmembervariableHandler",n);
current = STATIC_VAR;
return Language::staticmembervariableHandler(n);
- current = NO_CPP;
}
/* ---------------------------------------------------------------------
diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx
index 3453f5de2..901ee812e 100644
--- a/Source/Modules/main.cxx
+++ b/Source/Modules/main.cxx
@@ -33,7 +33,7 @@ int GenerateDefault = 1; // Generate default constructors
int Verbose = 0;
int AddExtern = 0;
int NoExcept = 0;
-int SwigRuntime = 0; // 0 = no option, 1 = -c or -runtime, 2 = -noruntime
+int SwigRuntime = 0; // 0 = no option, 1 = -runtime, 2 = -noruntime
/* Suppress warning messages for private inheritance, preprocessor evaluation etc...
WARN_PP_EVALUATION 202
@@ -491,13 +491,13 @@ void SWIG_getoptions(int argc, char *argv[]) {
Wrapper_compact_print_mode_set(1);
Wrapper_virtual_elimination_mode_set(1);
Swig_mark_arg(i);
- } else if (strcmp(argv[i], "-runtime") == 0) {
+ } else if (strcmp(argv[i], "-runtime") == 0) { // Used to also accept -c. removed in swig-1.3.36
Swig_mark_arg(i);
- Swig_warning(WARN_DEPRECATED_OPTC, "SWIG", 1, "-c, -runtime, -noruntime command line options are deprecated.\n");
+ Swig_warning(WARN_DEPRECATED_OPTC, "SWIG", 1, "-runtime, -noruntime command line options are deprecated.\n");
SwigRuntime = 1;
- } else if ((strcmp(argv[i], "-c") == 0) || (strcmp(argv[i], "-noruntime") == 0)) {
+ } else if (strcmp(argv[i], "-noruntime") == 0) {
Swig_mark_arg(i);
- Swig_warning(WARN_DEPRECATED_OPTC, "SWIG", 1, "-c, -runtime, -noruntime command line options are deprecated.\n");
+ Swig_warning(WARN_DEPRECATED_OPTC, "SWIG", 1, "-runtime, -noruntime command line options are deprecated.\n");
SwigRuntime = 2;
} else if (strcmp(argv[i], "-external-runtime") == 0) {
external_runtime = 1;
diff --git a/Source/Modules/modula3.cxx b/Source/Modules/modula3.cxx
index 99d28e167..6cb24d39a 100644
--- a/Source/Modules/modula3.cxx
+++ b/Source/Modules/modula3.cxx
@@ -472,9 +472,9 @@ MODULA3():
cap = true;
} else {
if (cap) {
- m3sym[i] = toupper(c);
+ m3sym[i] = (char)toupper(c);
} else {
- m3sym[i] = tolower(c);
+ m3sym[i] = (char)tolower(c);
}
cap = false;
}
diff --git a/Source/Modules/php4.cxx b/Source/Modules/php4.cxx
index cfe948e3f..42d71e79a 100644
--- a/Source/Modules/php4.cxx
+++ b/Source/Modules/php4.cxx
@@ -150,45 +150,44 @@ void SwigPHP_emit_resource_registrations() {
ki = First(zend_types);
if (ki.key)
Printf(s_oinit, "\n/* Register resource destructors for pointer types */\n");
- while (ki.key)
- if (1 /* is pointer type */ ) {
- DOH *key = ki.key;
- Node *class_node = ki.item;
- String *human_name = key;
+ while (ki.key) {
+ DOH *key = ki.key;
+ Node *class_node = ki.item;
+ String *human_name = key;
- // Write out destructor function header
- Printf(s_wrappers, "/* NEW Destructor style */\nstatic ZEND_RSRC_DTOR_FUNC(_wrap_destroy%s) {\n", key);
+ // Write out destructor function header
+ Printf(s_wrappers, "/* NEW Destructor style */\nstatic ZEND_RSRC_DTOR_FUNC(_wrap_destroy%s) {\n", key);
- // write out body
- if ((class_node != NOTCLASS)) {
- String *destructor = Getattr(class_node, "destructor");
- human_name = Getattr(class_node, "sym:name");
- if (!human_name)
- human_name = Getattr(class_node, "name");
- // Do we have a known destructor for this type?
- if (destructor) {
- Printf(s_wrappers, " %s(rsrc, SWIGTYPE%s->name TSRMLS_CC);\n", destructor, key);
- } else {
- Printf(s_wrappers, " /* No destructor for class %s */\n", human_name);
- }
+ // write out body
+ if ((class_node != NOTCLASS)) {
+ String *destructor = Getattr(class_node, "destructor");
+ human_name = Getattr(class_node, "sym:name");
+ if (!human_name)
+ human_name = Getattr(class_node, "name");
+ // Do we have a known destructor for this type?
+ if (destructor) {
+ Printf(s_wrappers, " %s(rsrc, SWIGTYPE%s->name TSRMLS_CC);\n", destructor, key);
} else {
- Printf(s_wrappers, " /* No destructor for simple type %s */\n", key);
+ Printf(s_wrappers, " /* No destructor for class %s */\n", human_name);
}
-
- // close function
- Printf(s_wrappers, "}\n");
-
- // declare le_swig_ to store php registration
- Printf(s_vdecl, "static int le_swig_%s=0; /* handle for %s */\n", key, human_name);
-
- // register with php
- Printf(s_oinit, "le_swig_%s=zend_register_list_destructors_ex" "(_wrap_destroy%s,NULL,(char *)(SWIGTYPE%s->name),module_number);\n", key, key, key);
-
- // store php type in class struct
- Printf(s_oinit, "SWIG_TypeClientData(SWIGTYPE%s,&le_swig_%s);\n", key, key);
-
- ki = Next(ki);
+ } else {
+ Printf(s_wrappers, " /* No destructor for simple type %s */\n", key);
}
+
+ // close function
+ Printf(s_wrappers, "}\n");
+
+ // declare le_swig_ to store php registration
+ Printf(s_vdecl, "static int le_swig_%s=0; /* handle for %s */\n", key, human_name);
+
+ // register with php
+ Printf(s_oinit, "le_swig_%s=zend_register_list_destructors_ex" "(_wrap_destroy%s,NULL,(char *)(SWIGTYPE%s->name),module_number);\n", key, key, key);
+
+ // store php type in class struct
+ Printf(s_oinit, "SWIG_TypeClientData(SWIGTYPE%s,&le_swig_%s);\n", key, key);
+
+ ki = Next(ki);
+ }
}
class PHP:public Language {
@@ -1195,7 +1194,7 @@ public:
if (native_constructor == NATIVE_CONSTRUCTOR) {
Printf(f->code, "add_property_zval(this_ptr,\"" SWIG_PTR "\",_cPtr);\n");
} else {
- String *shadowrettype = SwigToPhpType(n, true);
+ String *shadowrettype = GetShadowReturnType(n);
Printf(f->code, "object_init_ex(return_value,ptr_ce_swig_%s);\n", shadowrettype);
Delete(shadowrettype);
Printf(f->code, "add_property_zval(return_value,\"" SWIG_PTR "\",_cPtr);\n");
@@ -1440,6 +1439,10 @@ public:
if (wrapperType == memberfn)
p = nextSibling(p);
while (p) {
+ if (GetInt(p, "tmap:in:numinputs") == 0) {
+ p = nextSibling(p);
+ continue;
+ }
assert(0 <= argno && argno < max_num_of_arguments);
String *&pname = arg_names[argno];
const char *pname_cstr = GetChar(p, "name");
@@ -1750,7 +1753,8 @@ public:
}
Printf(output, "\n");
- if (wrapperType == memberfn || newobject) {
+ // If it's a member function or a class constructor...
+ if (wrapperType == memberfn || (newobject && current_class)) {
Printf(output, "\tfunction %s(%s) {\n", methodname, args);
// We don't need this code if the wrapped class has a copy ctor
// since the flat function new_CLASSNAME will handle it for us.
@@ -2555,20 +2559,9 @@ public:
return SWIG_OK;
}
-
- String * SwigToPhpType(Node *n, int shadow_flag) {
- String *ptype = 0;
+ String * GetShadowReturnType(Node *n) {
SwigType *t = Getattr(n, "type");
- if (shadow_flag) {
- ptype = PhpTypeFromTypemap((char *) "pstype", n, (char *) "");
- }
- if (!ptype) {
- ptype = PhpTypeFromTypemap((char *) "ptype", n, (char *) "");
- }
-
- if (ptype) return ptype;
-
/* Map type here */
switch (SwigType_type(t)) {
case T_CHAR:
@@ -2589,7 +2582,7 @@ public:
case T_POINTER:
case T_REFERENCE:
case T_USER:
- if (shadow_flag && is_shadow(t)) {
+ if (is_shadow(t)) {
return NewString(Char(is_shadow(t)));
}
break;
@@ -2597,7 +2590,7 @@ public:
/* TODO */
break;
default:
- Printf(stderr, "SwigToPhpType: unhandled data type: %s\n", SwigType_str(t, 0));
+ Printf(stderr, "GetShadowReturnType: unhandled data type: %s\n", SwigType_str(t, 0));
break;
}
diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
index bfdec0d76..f0e335c37 100644
--- a/Source/Modules/python.cxx
+++ b/Source/Modules/python.cxx
@@ -1773,7 +1773,6 @@ public:
Swig_warning(WARN_TYPEMAP_IN_UNDEF, input_file, line_number, "Unable to use type %s as a function argument.\n", SwigType_str(pt, 0));
break;
}
- p = nextSibling(p);
}
/* finish argument marshalling */
diff --git a/Source/Modules/r.cxx b/Source/Modules/r.cxx
index 989136a9d..49d3ecc89 100644
--- a/Source/Modules/r.cxx
+++ b/Source/Modules/r.cxx
@@ -57,11 +57,13 @@ static String * getRTypeName(SwigType *t, int *outCount = NULL) {
Insert(tmp, 0, retName);
return tmp;
+ /*
if(count)
return(b);
Delete(b);
return(NewString(""));
+ */
}
#if 0
@@ -104,7 +106,7 @@ static String * getRType(Node *n) {
Now handles arrays, i.e. struct A[2]
****************/
-static String *getRClassName(String *retType, int addRef = 1, int upRef=0) {
+static String *getRClassName(String *retType, int /*addRef*/ = 1, int upRef=0) {
String *tmp = NewString("");
SwigType *resolved = SwigType_typedef_resolve_all(retType);
char *retName = Char(SwigType_manglestr(resolved));
@@ -115,6 +117,7 @@ static String *getRClassName(String *retType, int addRef = 1, int upRef=0) {
}
return tmp;
+/*
#if 1
List *l = SwigType_split(retType);
int n = Len(l);
@@ -160,6 +163,7 @@ static String *getRClassName(String *retType, int addRef = 1, int upRef=0) {
#endif
return tmp;
+*/
}
/*********************
@@ -1841,6 +1845,9 @@ int R::functionWrapper(Node *n) {
String *name = Getattr(p,"name");
String *lname = Getattr(p,"lname");
+ // R keyword renaming
+ if (name && Swig_name_warning(p, 0, name, 0))
+ name = 0;
/* If we have a :: in the parameter name because we are accessing a static member of a class, say, then
we need to remove that prefix. */
@@ -2027,14 +2034,18 @@ int R::functionWrapper(Node *n) {
Replaceall(tm,"$owner", "R_SWIG_EXTERNAL");
}
- if(0 && addCopyParam) {
+#if 0
+ if(addCopyParam) {
Printf(f->code, "if(LOGICAL(s_swig_copy)[0]) {\n");
Printf(f->code, "/* Deal with returning a reference. */\nr_ans = R_NilValue;\n");
Printf(f->code, "}\n else {\n");
}
+#endif
Printf(f->code, "%s\n", tm);
- if(0 && addCopyParam)
+#if 0
+ if(addCopyParam)
Printf(f->code, "}\n"); /* end of if(s_swig_copy) ... else { ... } */
+#endif
} else {
Swig_warning(WARN_TYPEMAP_OUT_UNDEF, input_file, line_number,
diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx
index a57571bb8..ad448d34e 100644
--- a/Source/Modules/ruby.cxx
+++ b/Source/Modules/ruby.cxx
@@ -448,7 +448,7 @@ private:
parent_name = Copy( Getattr(mod, "name") );
if ( parent_name )
{
- (Char(parent_name))[0] = toupper((Char(parent_name))[0]);
+ (Char(parent_name))[0] = (char)toupper((Char(parent_name))[0]);
}
}
if ( parent_name )
@@ -1194,7 +1194,7 @@ public:
while (m.item) {
if (Len(m.item) > 0) {
String *cap = NewString(m.item);
- (Char(cap))[0] = toupper((Char(cap))[0]);
+ (Char(cap))[0] = (char)toupper((Char(cap))[0]);
if (last != 0) {
Append(module, "::");
}
@@ -1206,7 +1206,7 @@ public:
if (feature == 0) {
feature = Copy(last);
}
- (Char(last))[0] = toupper((Char(last))[0]);
+ (Char(last))[0] = (char)toupper((Char(last))[0]);
modvar = NewStringf("m%s", last);
Delete(modules);
}
@@ -2219,7 +2219,7 @@ public:
return name;
if (islower(name[0])) {
- name[0] = toupper(name[0]);
+ name[0] = (char)toupper(name[0]);
Swig_warning(WARN_RUBY_WRONG_NAME, input_file, line_number, "Wrong %s name (corrected to `%s')\n", reason, name);
return name;
}
@@ -2545,7 +2545,7 @@ public:
String *name = Copy(symname);
char *cname = Char(name);
if (cname)
- cname[0] = toupper(cname[0]);
+ cname[0] = (char)toupper(cname[0]);
Printv(director_prot_ctor_code,
"if ( $comparison ) { /* subclassed */\n",
" $director_new \n",
diff --git a/Source/Preprocessor/cpp.c b/Source/Preprocessor/cpp.c
index 560d12998..c04f95f00 100644
--- a/Source/Preprocessor/cpp.c
+++ b/Source/Preprocessor/cpp.c
@@ -36,6 +36,7 @@ static int error_as_warning = 0; /* Understand the cpp #error directive as a spe
/* Test a character to see if it valid in an identifier (after the first letter) */
#define isidchar(c) ((isalnum(c)) || (c == '_') || (c == '$'))
+DOH *Preprocessor_replace(DOH *);
/* Skip whitespace */
static void skip_whitespace(String *s, String *out) {
@@ -698,7 +699,6 @@ static String *get_options(String *str) {
static String *expand_macro(String *name, List *args) {
String *ns;
DOH *symbols, *macro, *margs, *mvalue, *temp, *tempa, *e;
- DOH *Preprocessor_replace(DOH *);
int i, l;
int isvarargs = 0;
@@ -935,7 +935,6 @@ static String *expand_macro(String *name, List *args) {
List *evaluate_args(List *x) {
Iterator i;
- String *Preprocessor_replace(String *);
List *nl = NewList();
for (i = First(x); i.item; i = Next(i)) {
@@ -1795,7 +1794,7 @@ String *Preprocessor_parse(String *s) {
for (i = 0; i < 6;) {
c = Getc(s);
Putc(c, value);
- statement[i++] = c;
+ statement[i++] = (char)c;
if (strncmp(statement, ed, i) && strncmp(statement, df, i))
break;
}
diff --git a/Source/Swig/cwrap.c b/Source/Swig/cwrap.c
index 2fc444290..18920ecc2 100644
--- a/Source/Swig/cwrap.c
+++ b/Source/Swig/cwrap.c
@@ -513,7 +513,8 @@ String *Swig_cppconstructor_base_call(String_or_char *name, ParmList *parms, int
pname = Swig_cparm_name(p, i);
i++;
} else {
- if ((pname = Getattr(p, "value")))
+ pname = Getattr(p, "value");
+ if (pname)
pname = Copy(pname);
else
pname = Copy(Getattr(p, "name"));
diff --git a/Source/Swig/include.c b/Source/Swig/include.c
index 25ea0683f..3f47be15b 100644
--- a/Source/Swig/include.c
+++ b/Source/Swig/include.c
@@ -352,7 +352,8 @@ char *Swig_file_filename(const String_or_char *filename) {
char *c;
strcpy(tmp, Char(filename));
- if ((c = strrchr(tmp, *delim)))
+ c = strrchr(tmp, *delim);
+ if (c)
return c + 1;
else
return tmp;
diff --git a/Source/Swig/misc.c b/Source/Swig/misc.c
index 04691b595..d29250517 100644
--- a/Source/Swig/misc.c
+++ b/Source/Swig/misc.c
@@ -614,7 +614,8 @@ void Swig_scopename_split(String *s, String **rprefix, String **rlast) {
*rlast = Copy(s);
}
- if ((co = strstr(cc, "operator "))) {
+ co = strstr(cc, "operator ");
+ if (co) {
if (co == cc) {
*rprefix = 0;
*rlast = Copy(s);
@@ -664,7 +665,9 @@ String *Swig_scopename_prefix(String *s) {
char *co = 0;
if (!strstr(c, "::"))
return 0;
- if ((co = strstr(cc, "operator "))) {
+ co = strstr(cc, "operator ");
+
+ if (co) {
if (co == cc) {
return 0;
} else {
@@ -715,7 +718,8 @@ String *Swig_scopename_last(String *s) {
if (!strstr(c, "::"))
return NewString(s);
- if ((co = strstr(cc, "operator "))) {
+ co = strstr(cc, "operator ");
+ if (co) {
return NewString(co);
}
@@ -756,7 +760,9 @@ String *Swig_scopename_first(String *s) {
char *co = 0;
if (!strstr(c, "::"))
return 0;
- if ((co = strstr(c, "operator "))) {
+
+ co = strstr(c, "operator ");
+ if (co) {
if (co == c) {
return 0;
}
@@ -804,7 +810,9 @@ String *Swig_scopename_suffix(String *s) {
char *co = 0;
if (!strstr(c, "::"))
return 0;
- if ((co = strstr(c, "operator "))) {
+
+ co = strstr(c, "operator ");
+ if (co) {
if (co == c)
return 0;
}
@@ -842,8 +850,9 @@ String *Swig_scopename_suffix(String *s) {
int Swig_scopename_check(String *s) {
char *c = Char(s);
- char *co = 0;
- if ((co = strstr(c, "operator "))) {
+ char *co = strstr(c, "operator ");
+
+ if (co) {
if (co == c)
return 0;
}
diff --git a/Source/Swig/naming.c b/Source/Swig/naming.c
index 519e5b59e..f34a24612 100644
--- a/Source/Swig/naming.c
+++ b/Source/Swig/naming.c
@@ -482,7 +482,8 @@ DOH *Swig_name_object_get(Hash *namehash, String *prefix, String *name, SwigType
Delete(t_name);
}
/* A template-based class lookup */
- if (0 && !rn && SwigType_istemplate(prefix)) {
+ /*
+ if (!rn && SwigType_istemplate(prefix)) {
String *t_prefix = SwigType_templateprefix(prefix);
if (Strcmp(t_prefix, prefix) != 0) {
String *t_name = SwigType_templateprefix(name);
@@ -491,6 +492,7 @@ DOH *Swig_name_object_get(Hash *namehash, String *prefix, String *name, SwigType
}
Delete(t_prefix);
}
+ */
}
/* A wildcard-based class lookup */
if (!rn) {
@@ -1477,7 +1479,7 @@ String *Swig_name_make(Node *n, String *prefix, String_or_char *cname, SwigType
}
- if (rename_hash || rename_list) {
+ if (rename_hash || rename_list || namewarn_hash || namewarn_list) {
Hash *rn = Swig_name_object_get(Swig_name_rename_hash(), prefix, name, decl);
if (!rn || !Swig_name_match_nameobj(rn, n)) {
rn = Swig_name_nameobj_lget(Swig_name_rename_list(), n, prefix, name, decl);
diff --git a/Source/Swig/scanner.c b/Source/Swig/scanner.c
index e8b1b5f46..06e78db37 100644
--- a/Source/Swig/scanner.c
+++ b/Source/Swig/scanner.c
@@ -200,7 +200,7 @@ static char nextchar(Scanner * s) {
if ((nc == '\n') && (!s->freeze_line))
s->line++;
Putc(nc,s->text);
- return nc;
+ return (char)nc;
}
/* -----------------------------------------------------------------------------
@@ -349,7 +349,7 @@ static void get_escape(Scanner *s) {
} else {
char tmp[3];
tmp[0] = '\\';
- tmp[1] = c;
+ tmp[1] = (char)c;
tmp[2] = 0;
Delitem(s->text, DOH_END);
Append(s->text, tmp);
diff --git a/Source/Swig/typeobj.c b/Source/Swig/typeobj.c
index f234839fe..18d1b2304 100644
--- a/Source/Swig/typeobj.c
+++ b/Source/Swig/typeobj.c
@@ -937,7 +937,8 @@ String *SwigType_templateargs(const SwigType *t) {
int SwigType_istemplate(const SwigType *t) {
char *ct = Char(t);
- if ((ct = strstr(ct, "<(")) && (strstr(ct + 2, ")>")))
+ ct = strstr(ct, "<(");
+ if (ct && (strstr(ct + 2, ")>")))
return 1;
return 0;
}
diff --git a/Source/Swig/typesys.c b/Source/Swig/typesys.c
index fdf37ece1..ae6ab3dc8 100644
--- a/Source/Swig/typesys.c
+++ b/Source/Swig/typesys.c
@@ -108,6 +108,8 @@ static Hash *typedef_resolve_cache = 0;
static Hash *typedef_all_cache = 0;
static Hash *typedef_qualified_cache = 0;
+static Typetab *SwigType_find_scope(Typetab *s, String *nameprefix);
+
/* common attribute keys, to avoid calling find_key all the times */
/*
@@ -162,7 +164,6 @@ void SwigType_typesystem_init() {
* ----------------------------------------------------------------------------- */
int SwigType_typedef(SwigType *type, String_or_char *name) {
- Typetab *SwigType_find_scope(Typetab *, String *s);
if (Getattr(current_typetab, name))
return -1; /* Already defined */
if (Strcmp(type, name) == 0) { /* Can't typedef a name to itself */
@@ -409,7 +410,7 @@ void SwigType_print_scope(Typetab *t) {
}
}
-Typetab *SwigType_find_scope(Typetab *s, String *nameprefix) {
+static Typetab *SwigType_find_scope(Typetab *s, String *nameprefix) {
Typetab *ss;
String *nnameprefix = 0;
static int check_parent = 1;
@@ -1311,7 +1312,8 @@ SwigType *SwigType_alttype(SwigType *t, int local_tmap) {
SwigType *ftd = SwigType_typedef_resolve_all(t);
td = SwigType_strip_qualifiers(ftd);
Delete(ftd);
- if ((n = Swig_symbol_clookup(td, 0))) {
+ n = Swig_symbol_clookup(td, 0);
+ if (n) {
if (GetFlag(n, "feature:valuewrapper")) {
use_wrapper = 1;
} else {
@@ -1334,7 +1336,8 @@ SwigType *SwigType_alttype(SwigType *t, int local_tmap) {
Delete(ftd);
if (SwigType_type(td) == T_USER) {
use_wrapper = 1;
- if ((n = Swig_symbol_clookup(td, 0))) {
+ n = Swig_symbol_clookup(td, 0);
+ if (n) {
if ((Checkattr(n, "nodeType", "class")
&& !Getattr(n, "allocate:noassign")
&& (Getattr(n, "allocate:default_constructor")))
@@ -1795,13 +1798,15 @@ void SwigType_inherit_equiv(File *out) {
String *lprefix = SwigType_lstr(prefix, 0);
Hash *subhash = Getattr(sub, bk.key);
String *convcode = Getattr(subhash, "convcode");
- Printf(out, "static void *%s(void *x, int *newmemory) {", convname);
if (convcode) {
+ char *newmemoryused = Strstr(convcode, "newmemory"); /* see if newmemory parameter is used in order to avoid unused parameter warnings */
String *fn = Copy(convcode);
Replaceall(fn, "$from", "x");
+ Printf(out, "static void *%s(void *x, int *%s) {", convname, newmemoryused ? "newmemory" : "SWIGUNUSEDPARM(newmemory)");
Printf(out, "%s", fn);
} else {
String *cast = Getattr(subhash, "cast");
+ Printf(out, "static void *%s(void *x, int *SWIGUNUSEDPARM(newmemory)) {", convname);
Printf(out, "\n return (void *)((%s) ", lkey);
if (cast)
Printf(out, "%s", cast);
diff --git a/TODO b/TODO
index d764d1d20..103185d23 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
SWIG TO-DO
-Release: SWIG-1.3.35
+Release: SWIG-1.3.36
-----------------------------------------------------------------------------
diff --git a/Tools/WAD/Python/type.c b/Tools/WAD/Python/type.c
index 5236c1c64..7d8248e0b 100644
--- a/Tools/WAD/Python/type.c
+++ b/Tools/WAD/Python/type.c
@@ -62,7 +62,7 @@ new_wadobject(WadFrame *f, int count) {
/* release a wad object */
static void
wadobject_dealloc(wadobject *self) {
- PyMem_DEL(self);
+ PyObject_Del(self);
}
static char message[65536];
diff --git a/Tools/mkrelease.py b/Tools/mkrelease.py
index 574720dab..d7927f8e6 100755
--- a/Tools/mkrelease.py
+++ b/Tools/mkrelease.py
@@ -21,8 +21,8 @@ except:
print "where version should be 1.3.x and username is your SF username"
sys.exit(1)
-print "Looking for wput"
-os.system("which wput") and failed("wput not installed/found. Please install.")
+print "Looking for rsync"
+os.system("which rsync") and failed("rsync not installed/found. Please install.")
print "Making source tarball"
os.system("python ./mkdist.py " + version) and failed("")
@@ -31,8 +31,8 @@ print "Build Windows package"
os.system("./mkwindows.sh " + version) and failed("")
print "Uploading to Sourceforge"
-os.system("wput --verbose --binary swig-" + version + ".tar.gz ftp://anonymous:" + username + "@users.sourceforge.net@upload.sourceforge.net/incoming/") and failed("")
-os.system("wput --verbose --binary swigwin-" + version + ".zip ftp://anonymous:" + username + "@users.sourceforge.net@upload.sourceforge.net/incoming/") and failed("")
+os.system("rsync --archive --verbose -P --times -e ssh swig-" + version + ".tar.gz " + username + "@frs.sourceforge.net:uploads/") and failed("")
+os.system("rsync --archive --verbose -P --times -e ssh swigwin-" + version + ".zip " + username + "@frs.sourceforge.net:uploads/") and failed("")
os.system("svn copy -m \"rel-" + version + "\" https://swig.svn.sourceforge.net/svnroot/swig/trunk https://swig.svn.sourceforge.net/svnroot/swig/tags/rel-" + version + "/")
diff --git a/configure.in b/configure.in
index 82d83a4f0..13c3c6bc9 100644
--- a/configure.in
+++ b/configure.in
@@ -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],[1.3.36],[http://www.swig.org])
+AC_INIT([swig],[1.3.37],[http://www.swig.org])
AC_PREREQ(2.58)
AC_CONFIG_SRCDIR([Source/Swig/swig.h])
AC_CONFIG_AUX_DIR([Tools/config])
@@ -254,18 +254,6 @@ case $host in
*) MZSCHEME_SO=.so;;
esac
-AC_SUBST(TCL_LDSHARED)
-case $host in
- *-*-darwin*) TCL_LDSHARED="gcc -dynamiclib -flat_namespace -undefined suppress";;
- *) TCL_LDSHARED=$LDSHARED;;
-esac
-
-AC_SUBST(TCL_CXXSHARED)
-case $host in
- *-*-darwin*) TCL_CXXSHARED="g++ -dynamiclib -flat_namespace -undefined suppress";;
- *) TCL_CXXSHARED=$TRYLINKINGWITHCXX;;
-esac
-
AC_SUBST(LUA_SO)
case $host in
*-*-darwin*) LUA_SO=.so;;
@@ -545,6 +533,7 @@ fi
# Cygwin (Windows) needs the library for dynamic linking
case $host in
*-*-cygwin* | *-*-mingw*) TCLDYNAMICLINKING="$TCLLIB";;
+*-*-darwin*) TCLDYNAMICLINKING="-dynamiclib -flat_namespace -undefined suppress";;
*)TCLDYNAMICLINKING="";;
esac
fi