diff options
author | Dave Beazley <dave-swig@dabeaz.com> | 2003-03-23 20:38:05 +0000 |
---|---|---|
committer | Dave Beazley <dave-swig@dabeaz.com> | 2003-03-23 20:38:05 +0000 |
commit | 95c1e3276cf04d41917ce83453cc94a826bc13e9 (patch) | |
tree | 633adce639830975f5275ff2413942cb664f7370 /CHANGES | |
parent | 3851e222d0f93460886764541b6def8379645de4 (diff) | |
download | swig-95c1e3276cf04d41917ce83453cc94a826bc13e9.tar.gz |
*** empty log message ***
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4619 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 578 |
1 files changed, 577 insertions, 1 deletions
@@ -1,12 +1,588 @@ SWIG (Simplified Wrapper and Interface Generator) -Version 1.3.18 (In progress) +Version 1.3.19 (in progress) ============================ Due to the size of the CHANGES file, please add change entries to the file CHANGES.current. It will be merged into this file before release. -- Dave +Version 1.3.18 (March 23, 2003) +=============================== + +03/21/2003: beazley + Fixed two problems with the %extend directive, overloading, and + template expansion. See the 'template_extend_overload' and + 'template_extend_overload_2' tests in Examples/test-suite for + details. + +03/20/2003: cheetah (William Fulton) + [C#] Added some typemaps as suggested by Andreas Schoerk for handling + parameters that are passed as pointers or by reference. These have + been put in typemaps.i. + +03/20/2003: beazley + Fixed a C++ scoping bug related to code like this: + + class Foo { + public: + int Foo::bar(); + }; + + Previously, SWIG just tossed out the Foo::bar() declaration. Now, + the declaration is wrapped provided that the prefix is exactly the + same as the current scope (including any enclosing namespaces). + Reported by Bruce Lowery. + +03/20/2003: beazley + Incorporated [ 696516 ] Enabling exception processing for data member access. + In some compilers, attribute access can generate exceptions. However, + SWIG ordinarily assumes that no exceptions will be raised. To disable this, + use the %feature("allowexcept"). For example: + + %feature("allowexcept") Foo::x; + ... + class Foo { + public: + int x; /* Exception handling enabled */ + ... + }; + + Patch contributed by Yakov Markovitch. + +03/20/2003: beazley + Incorporated Patch. [ 701860 ] Improve Performance (python proxies). + Gives a performance boost to proxy class code and the management of the + .this and .thisown attributes. Contributed by Mike Romberg. + +03/19/2003: cheetah (William Fulton) + [C# and Java] Added missing vararg support. + +03/18/2003: mrose (Mark Rose) + Removed code related to tagging individual methods for directors. + The concept of having directors for some but not all virtual methods + of a class is deeply flawed. The %feature("nodirector") tag is also + gone. + + Directors are off by default. To enable them for a class, issue + %feature("director") classname; which will create director methods + for every virtual method in the hierarchy of the class. + +03/17/2003: beazley + Fixed a subtle problem with passing arguments of type function. For + example: + + int foo(int x(int, int)); + + or + + typedef int binop_t(int, int); + int foo(binop_t x); + + In old versions, this would produce code that wouldn't compile. Now, + SWIG merely adds an extra pointer, making these declarations the same + as: + + int foo(int (*x)(int, int)); + + typedef int binop_t(int, int); + int foo(binop_t *x); + + Reported by Garth Bushell. + +03/17/2003: mrose (Mark Rose) + Fixed the return statement for director base class calls that have no + return value. + +03/15/2003: beazley + Fixed a problem with const smart-pointer wrapping. For example: + + class Foo { + public: + int x; + void bar() const; + void spam(); + }; + + class Blah { + ... + const Foo *operator->(); + ... + }; + + In this case, only "x" and "bar" are visible from Blah (since application + of spam violates constness). Moreover, access to "x" is read-only. + +03/15/2003: mrose (Mark Rose) + Cleaned up two signed versus unsigned comparisons in python/std_vector.i. + +03/15/2003: cheetah (William Fulton) + [C#] Global variables are wrapped using properties instead of get and set methods. + Member variable wrapping bug fixes, for example wrapping pointers work now. + Typemaps are used for all variable wrapping to generate the property code. + +03/13/2003: mrose (Mark Rose) + Fixed a bug in the virtual method unrolling for directors. + The order of unrolling is now from base to derived, to ensure + that the most derived implementation of a director method is + found. + + Director methods for pure virtual methods now throw + DIRECTOR_PURE_VIRTUAL_EXCEPTION if _up is set. + +03/12/2003: cheetah (William Fulton) + [C#] Polymorphism fix: virtual functions now use the appropriate + keyword in the C# proxy class, virtual or override. + Some 'using System;' statement fixes needed by the Mono compiler. + +03/11/2003: beazley + Fixed subtle bug in the application of SwigValueWrapper<> to + template classes with default constructors. Reported by + Bruce Lowery. + +03/11/2003: beazley + The $descriptor(type) variable is now expanded in code supplied to + %extend. This is useful for certain kinds of advanced wrapping + (especially container classes). + +03/11/2003: luigi + Support for std::map. + (a) Integration with scripting language (a la std::vector) for + Python, Ruby, MzScheme, and Guile; + (b) Simple wrapper for other languages + +03/10/2003: beazley + Fixed problem with escape sequences in string and character constants. SWIG + wasn't parsing certain octal codes correctly. + +03/07/2003: beazley + Fixed a variety of subtle preprocessor problems reported by + Sebastien Recio. + + (a) Empty preprocessor values no longer generate "bad constant + value" errors. For example: + + #define FOO + #define FOO BAR + + (b) Macro names can now span multiple lines (technically valid, + although questionable practice). For example: + + #define A_LONG_MACRO_\ + NAME 42 + + (c) Whitespace is no longer required before certain macro values. + For example: + + #define FOO"Hello" + #define BAR\ + "Hello" + +03/07/2003: ljohnson (Lyle Johnson) + [Ruby] Added missing long long and unsigned long long typemaps + in the Lib/ruby/typemaps.i library file. + +03/07/2003: mrose (Mark Rose) + Added Examples/python/callback to demostrate how directors can + be used to implement callbacks in Python + Added Examples/python/extend to demonstrate virtual method + calls from C++ to Python (really the same as the callback + example, just a different context). + Added four tests for very basic director functionality. These + have runtime tests under python. + The Python module now emits #define SWIG_DIRECTORS near the + top of the output file if directors are enabled. This is useful + for disabling parts of tests in target languages that don't + support directors. + +03/06/2003: mrose (Mark Rose) + Added a section to Doc/Manual/Python.html on cross language + polymorphism (directors). + +03/06/2003: mrose (Mark Rose) + The short-lived "-fdirectors" command line option has been + removed. To enable directors, instead use the extended %module + directive as follows: + + %module(directors="1") modulename + +03/06/2003: cheetah (William Fulton) + The long long typemaps have been rewritten so that they can be more + easily used with non ISO compilers, like Visual C++. For example + if you are wrapping the Windows 64 bit type __int64 the long long + typemaps can be used with %apply: + + %apply long long { __int64 }; + __int64 value1(__int64 x); + + __int64 will now appear in the generated code instead of long long. + +03/06/2003: beazley + *** DEVELOPER CHANGE *** + Swig module mutation has been changed slightly. When a language + class method wants to save node attributes, it now uses one of the + following functions: + + Swig_require() + Swig_save() + + The first argument to these functions is a namespace in which + saved attributes are placed. For example,this code + + Node *n; + Swig_save("cDeclaration",n,"type","parms","name",NIL); + + saves the attributes as "cDeclaration:type", "cDeclaration:parms", + and so forth. If necessary, a language module can refer to + old values by using this special namespace qualifier. + + In addition to this, a special attribute "view" contains the name + of the last namespace used to save attributes. In the above + example, "view" would have the value "cDeclaration". The value + of "cDeclaration:view" would have the previous view and so forth. + + Swig_restore(n) restores a node to the state before the last + Swig_require() or Swig_save() call. + + Note: This change makes it easier for language modules to refer + to old values of attributes. + + +03/06/2003: mrose (Mark Rose) + Merged the cross-language polymorphism patch. When enabled, C++ + "proxy" classes (called directors) are generated for each specified + C++ class. Directors pass method calls from C++ to Python, similar + to the way the usual proxy (shadow) classes pass method calls from + Python to C++. Together, these two types of proxies allow C++ + classes that are extended in Python to behave just like ordinary + C++ classes and be used in C++ like native objects. + + This feature is still very experimental and is disabled by default. + To enable director support, specify '-fdirectors' on the SWIG command + line or in the SWIG_FEATURES environment variable. In the interface + file, add %feature("director") to generate directors for all classes + that have virtual methods. + + See http://stm.lbl.gov/~tm2/swig/ProxyDoc.html for more details. + + +03/03/2003: beazley + Fixed a small glitch in typemap local variable replacement. If you had + a typemap like this: + + %typemap(in) type ($1_type temp) { + ... + temp = ...; + ... + } + + and no occurrence of "$1_type" appeared in the body, then the local + variable type wouldn't be substituted. + +03/03/2003: cheetah (William Fulton) + [C#] New version of the CSharp module which is typemap based. + It also uses ECMA C# and no longer uses Microsoft Visual C++.NET + glue. This means that it will work on non-Windows platforms. + Contributed by Neil Cawse. + +02/27/2003: beazley + Fixed [ 653548 ] error parsing casting operator definition. + SWIG now ignores casting operators declared outside of a class. + For example: + + inline A::operator char *() { ... } + + Bug reported by Martin Casado. + +02/27/2003: beazley + Added support for anonymous bit-fields. For example: + + struct Foo { + int x : 4; + int : 4; + int y : 8; + }; + + Anonymous bit-fields are ignored by SWIG. Problem + reported by Franz Höpfinger. + +02/26/2003: cheetah (William Fulton) + [Java] Better typemaps in the Examples/java/typemap example and also + fixes subtle bug when using the StringBuffer typemaps more than once. + +02/26/2003: beazley + Fixed [ 642112 ] Constants char bug. + +02/26/2003: beazley + Fixed [ 675337 ] Partial template specialization not entirely working. + There was a subtle problem related to the naming and ordering of + template partial specialization arguments. Matching worked okay, + the resulting templates weren't expanded correctly. + +02/25/2003: beazley + Fixed problem with parsing (and generating code) for + references to arrays. For example: + + int foo(int (&x)[10]); + +02/25/2003: beazley + Fixed [ 635347 ] Compilation warning from libpy.c. + Reported by Daniel L. Rall. + +02/25/2003: beazley + Fixed a subtle problem with virtual method implementation + checking and typedef. + + typedef int *intptr; + + struct A { + virtual int *foo() = 0; + }; + struct B : public A { + virtual intptr foo() { }; + }; + + SWIG was treating these declarations as different even though + they are the same (via typedef). + +02/25/2003: ljohnson (Lyle Johnson) + [Ruby] Added range checking for the NUM2USHRT macro, per [ 675353 ]. + +02/24/2003: beazley + Fixed a subtle problem with the code that determined if a class is abstract + and can be instantiated. If you had classes like this: + + struct A { + virtual int foo(int) = 0; + }; + struct B : virtual A { + virtual int foo(int); + }; + + struct C : virtual A { + }; + + /* Note order of base classes */ + struct D : B, C { }; /* Ok */ + struct E : C, B { }; /* Broken */ + + then SWIG determined that it could instantiate D(), but not E(). + This inconsistency arose from the depth-first search of the + inheritance hierarchy to locate the implementations of virtual + methods. This problem should now be fixed---SWIG will attempt + to locate any valid implementation of a virtual method by + traversing over the entire hierarchy. + +02/22/2003: cheetah (William Fulton) + [Java] Fix for using enum typemaps. The Java final static variable type + can be set using the jstype typemap, enabling enums to be mapped to + something other than int. Bug reported by Heiner Petith. + +02/21/2003: songyanf (Tiger) + Added CSharp (C#) module prototype + i.e. csharp.cxx & csharp.h at Source/Modules/. + They are for test usage only now and need improvement. + The interface also need to be modified. + + *** NEW FEATURE *** + +02/20/2003: songyanf (Tiger) + Fixed problem with typedef with -fvirtual. + Similar as beazley's modification today. + +02/20/2003: beazley + Added support for gcc-style variadic preprocessor macros. + Patch [ 623258 ] GCC-style vararg macro support. + Contributed by Joe Mason. + +02/20/2003: beazley + Fixed [ 605162 ] Typemap local variables. + Reported by Lyle Johnson. + +02/20/2003: beazley + Fixed problem with abstract classes and typedef. For example: + + class Foo { + public: + virtual void foo(int x) = 0; + }; + + typedef int Integer; + class Bar : public Foo { + public: + virtual void foo(Integer x); + }; + + SWIG was getting confused about the latter method---making Bar + abstract. Reported by Marcelo Matus. + +02/19/2003: cheetah (William Fulton) + [Java] %javaconst(flag) can also be used on enums as well as constants. + This feature enables true Java compiler constants so that they can be + used in Java switch statements. Thanks to Heiner Petith for patches. + +02/19/2003: songyanf (Tiger) + Modified -fcompact feature to deal with PP lines + +02/18/2003: beazley + Fixed [ 689040 ] Missing return value in std_vector.i. + Reported by Robert H. de Vries. + +02/18/2003: beazley + Fixed a few evil scoping problems with templates, namespaces, and the + %extend directive. Problem reported by Luigi Ballabio. + + +02/18/2003: cheetah (William Fulton) + [Ruby] Improved support for Visual C++ and other native Windows compilers. + It is no longer necessary to specify "/EXPORT:Init_<module>", where <module> is the + swig module name when linking using these native Windows compilers. + +02/15/2003: songyanf (Tiger) + Added -fvirtual option. + Reduce the lines and size of the wrapper file + by omitting redifined virtual function in children classes. + + Modified -compact option to -fcompact option + + Added -small option. + -small = -fvirtual -fcompact + And it can be extended by future feature options, + which are used to reduce wrapper file szie. + + Added SWIG_FEATURES environment variable check. + To dynamically set the feature options such as -fcompact & -fvirtual + *** NEW FEATURE *** + +02/13/2003: lenz + Updated Doc/Manual/Perl5.html to talk about C++ compile problems + configure.in now checks for PERL5_CCFLAGS + Runtime/Makefile.in and Example/Makefile.in now use PERL5_CCFLAGS + Added Lib/perl5/noembed.h which contains all the known macro conflicts + +02/12/2003: beazley + Fixed [ 685410 ] C++ Explicit template instantiation causes SWIG to exit. + Fixes a syntax error with declarations similar to this: + + template class std::vector<int>; + + SWIG now ignores the instantiation and generates a warning message. + We might do more later. Reported by Thomas Williamson. + +02/11/2003: cheetah (William Fulton) + Rewrote bool typemaps to remove performance warning for compiling generated code + under Visual C++. + +02/11/2003: cheetah (William Fulton) + Fix for wrapping reference variables (const non-primitive and all non-const types) + for example: + int& i; + Class& c; + const Class& c; + +02/11/2003: beazley + Fixed more very subtle preprocessor corner cases related to recursive + macro expansion. For example: + + #define cat(x,y) x ## y + + cat(cat(1,2),3) // Produces: cat(1,2)3 + + #define xcat(x,y) cat(x,y) + + xcat(xcat(1,2),3) // Produces 123 + + See K&R, 2nd Ed. p. 231. + +02/10/2003: cheetah (William Fulton) + Fixed [ 683882 ] - patch submitted by F. Postma for SWIG to compile on HP-UX. + +02/10/2003: beazley + Fixed subtle preprocessor argument expansion bug. Reported by Marcelo Matus. + +02/10/2003: songyanf + Added -compact option. + Reduce the lines and size of the wrapper file + by omitting comments and combining short lines. + *** NEW FEATURE *** + +02/07/2003: beazley + Fixed [ 651355 ] Syntax error with cstring.i + Reported by Omri Barel. + +02/07/2003: beazley + Fixed [ 663632 ] incompatibility with standard cpp. + This is a refinement that fixes this problem: + + // Some macro with an argument + #define FOO(x) x + + int FOO; /* Not a macro---no arguments */ + +02/05/2003: beazley + Fixed [ 675491 ] parse error with global namespace qualification. + Submitted by Jeremy Yallop. + +02/04/2003: beazley + Fixed bug in varargs processing introduced by the numinputs typemap parameter. + +01/08/2003: ttn + [xml] Fix string-replacement ordering buglet. + Thanks to Gary Herron. + +12/23/2002: cheetah (William Fulton) + Further build changes: + - The SWIG executable is now built using a single Makefile. + - This makefile is generated by Automake (Source/Makefile.am). + - Dependency tracking and tags support are in this makefile. + - Automake 1.7.2 and Autoconf 2.54 minimum versions are needed to build SWIG from CVS. + - Running ./autogen.sh now installs Autoconf/Automake support files into + Tools/config and these files are no longer stored in CVS. + - Bug fixes in 'make install' for systems using .exe executable extension and + ./configure --with-release-suffix=whatever + +12/16/2002: cheetah (William Fulton) + More build changes: + - Autoconf's AC_CANONICAL_HOST replaces proprietary approach for detecting build host. + - Autoconf support files moved to Tools/config. + +12/16/2002: cheetah (William Fulton) + Modifications to run on MacOS, submitted by Bernard Desgraupes. + Mainly ensuring generated files are output in the appropriate directory for + some modules. + +12/11/2002: cheetah (William Fulton) + Various build modifications and bug fixes: + - Simplification of version string. Use autoconf's PACKAGE_VERSION instead. + - Build time removed from SWIG version. + - Using standard autoconf config header generation. + - Updated old autoconf macros as reported by autoupdate. + - Removed $prefix in autoconf from search paths as autoconf won't expand them. + - Subtle bug fix where 'make prefix=/somewhere; make clean; make prefix=/somwhere/else' + produced an executable using the incorrect library directories. + - Added -ldflags commandline option for MzScheme, Ocaml, Pike and PHP. + - Fixed reporting of compiler used when using -version commandline option. + - SWIG web address added to -version commandline option. + +12/11/2002: beazley + Minor fix to Tcl dynamic cast typemaps. Reported by + Kristopher Blom. + +12/10/2002: beazley + Fixed subtle template argument replace bug. Reported by + Chris Flatley. + +12/10/2002: beazley + Reverted CHANGES 09/03/2002, preprocessor argument evaluation. Arguments + are not evaluated during collection, K&R, p. 230. + +12/06/2002: beazley + Fixed [ 649022 ] Compilation problems with KAI/KCC + +12/02/2002: beazley + SWIG 'rel-1-3' CVS branch merged back into the main branch. + + Version 1.3.17 (November 22, 2002) ================================== 11/19/2002: beazley |