Version 1.3.34 (27 February 2008)
=================================

02/13/2008: wsfulton
            [R] Fix wrapping of global function pointer variables.

02/13/2008: wsfulton
            Add new special variables for use within %exception:
              $wrapname - language specific wrapper name
              $overname - if a method is overloaded this contains the extra mangling used on 
                          the overloaded method
              $decl     - the fully qualified C/C++ declaration of the method being wrapped 
                          without the return type
              $fulldecl - the fully qualified C/C++ declaration of the method being wrapped 
                          including the return type

02/12/2008: drjoe
            [R] Now setting S4 flag in SWIG created objects.  This
            fixes R-SWIG for 2.6 and warning for 2.6 failure has been removed.

02/11/2008: mgossage
            [Lua] Added a patch by Torsten Landschoff to fix the unary minus issue
            Ran 'astyle --style=kr -2' across lua.cxx to neaten it up

02/10/2008: wsfulton
            Bump SWIG_RUNTIME_VERSION to 4. This is because of the recently introduced API 
            change in the conversion functions, ie change in definition of swig_converter_func.
            Anyone calling SWIG_TypeCast must pass in a valid value for the new additional
            (third) parameter and then handle the newly created memory if the returned value
            is set to SWIG_CAST_NEW_MEMORY else a memory leak will ensue.

02/09/2008: wsfulton
            [Python] Experimental shared_ptr typemaps added. Usage is the same as the recently
            added Java and C# shared_ptr typemaps. Two macros are available, although these
            may well change in a future version:

            For base classes or classes not in an inheritance chain:
              SWIG_SHARED_PTR(PROXYCLASS, TYPE)
            For derived classes:
              SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE)

            The PROXYCLASS is the name of the proxy class, but is only required for Java/C#.
            Example usage:

              %include "boost_shared_ptr.i"

              SWIG_SHARED_PTR(Klass, Space::Klass)
              SWIG_SHARED_PTR_DERIVED(KlassDerived, Space::Klass, Space::KlassDerived)

              namespace Space {
                struct Klass { ... };
                struct KlassDerived : Klass { ... };
              }

            Further details to follow in future documentation, but the following features
            should be noted:

            - Not restricted to boost::shared_ptr, eg std::tr1::shared_ptr can also be used.
            - Available typemap groups:
              (a) Typemaps for shared_ptr passed by value, reference, pointer and pointer 
                  reference.
            - (b) Typemaps for passing by raw value, raw pointer, raw reference, raw pointer
                  reference. 
            - The code being wrapped does not even have to use shared_ptr, SWIG can use
              shared_ptr as the underlying storage mechanism instead of a raw pointer due to 
              the typemaps in group (b) above.
            - No array support as shared_ptr does not support arrays.
            - This works quite differently to the usual SWIG smart pointer support when
              operator-> is parsed by SWIG:
              - An additional smart pointer class is not generated reducing code bloat in
                the wrappers.
              - Using smart pointers and raw pointers can be mixed seamlessly.
              - Missing constructors for the smart pointers is no longer a problem and so
                separate factory type functions do not have to be written and wrapped.
              - The implicit C++ shared_ptr< derived class > to shared_ptr< base class >
                cast also works in the target language. This negates the necessity to write
                an explicit helper cast function providing the upcast which would need
                calling prior to passing a derived class to a method taking a shared_ptr to
                a base class.

02/09/2008: wsfulton
            [Python] Add support for overriding the class registration function via a new
            "smartptr" feature. This is a very low level of customisation most users
            would never need to know. The feature will typically be used for intrusive 
            smart pointers along with additional typemaps. Example usage of the feature:

              %feature("smartptr", noblock=1) Foo { boost::shared_ptr< Foo > }
              class Foo {};

            The generated Foo_swigregister function will then register boost::shared < Foo >
            (SWIGTYPE_p_boost__shared_ptrTFoo_t instead of SWIGTYPE_p_Foo) as the underlying
            type for instantiations of Foo.

02/09/2008: wsfulton
            Features now supports the optional 'noblock' attribute for all usage of %feature. 
            When specified, the { } braces are removed from the feature code. This is identical
            in behaviour to usage of 'noblock' in typemaps and is used when the preprocessor
            is required to operate on the code in the feature and the enclosing { } braces
            are not required. Example:

              #define FOO foo
              %feature("smartptr", noblock="1") { FOO::bar }

            The preprocessor then reduces this as if this had been used instead:

              %feature("smartptr") "foo::bar"

02/01/2008: olly
	    [Python] Fix format string bug (SF#1882220).

01/31/2008: wsfulton
            Additions to the %types directive. Now the conversion / casting code can be
            overridden to some custom code in the %types directive, like so:

              %types(fromtype = totype) %{
                ... code to convert fromtype to totype and return ...
              %}

            The special variable $from will be replaced by the name of the parameter of the
            type being converted from. The code must return the totype cast to void *. Example:

              class Time;
              class Date;
              Date &Time::dateFromTime();

              %types(Time = Date) %{
                Time *t = (Time *)$from;
                Date &d = t->dateFromTime();
                return (void *) &d;
              %}

            resulting in the conversion / casting code looking something like:

              static void *_p_TimeTo_p_Date(void *x) {
                Time *t = (Time *)x;
                Date &d = t->dateFromTime();
                return (void *) &d;
              }

            This is advanced usage, please use only if you understand the runtime type system.

01/30/2008: mgossage
	    Small update to documentation in Typemaps.html, to warn about use of local 
	    variables in typemaps for multiple types.

01/25/2008: wsfulton
	    [Java] Fix bug reported by Kevin Mills in ARRAYSOFCLASSES typemaps where any
            changes made to an array element passed from Java to C are not reflected back
            into Java.

01/24/2008: mgossage
	    More updates to the configure script for detecting lua.
	    Also looks in /usr/include/lua*
	    Also changed typemaps.i not to check for NULL before freeing a pointer

01/21/2008: wsfulton
	    [Python] For STL containers, SWIG no longer attempts to convert from one
            STL container to another, eg from std::vector<int> to std::vector<double>
            or std::list<int> to std::vector<int> or even std::vector<Foo> to
            std::vector<Bar> as it previously did. In fact SWIG no longer attempts to
            convert any SWIG wrapped C++ proxy class that is also a Python sequence,
            whereas previously it would. Any non-SWIG Python sequence will still be
            accepted wherever an STL container is accepted. Overloaded methods using
            containers should be faster.

01/18/2008: wsfulton
	    [C#] Add 'directorinattributes' and 'directoroutattributes' typemap attributes
            for the imtype typemap. These should contain C# attributes which will
            be generated into the C# director delegate methods.

01/18/2008: olly
	    Fix handling of byte value 255 in input files on platforms where
	    char is signed (it was getting mapped to EOF).  Fixes SF#1518219.

01/16/2008: wsfulton
	    Fix template member variables wrapped by a smart pointer. Bug reported 
            by Robert Lupton.

01/14/2008: mgossage
	    Substantial changes to configure script for detecting lua.
	      Code can now link to liblua.a, liblua50.a or liblua51.a
	      It's also a lot neater now.

12/16/2007: wsfulton
	    [Perl] Backed out #1798728 - numbers can be passed to functions taking char *

12/16/2007: wsfulton
	    Fix #1832613 - Templates and some typedefs involving pointers or function pointers

12/12/2007: wsfulton
	    [Java] Fix #1632625 - Compilation errors on Visual C++ 6 when using directors.

12/12/2007: wsfulton
	    [Perl] Fix #1798728 - numbers can be passed to functions taking char *.

12/12/2007: wsfulton
	    Fix #1819847 %template with just one default template parameter 

              template<typename T = int> class Foo {...};
              %template(FooDefault) Foo<>;

12/12/2007: mgossage
	    [Lua] Small correction on Lua.html

12/09/2007: wsfulton
	    Apply patch #1838248 from Monty Taylor for vpath builds of SWIG.

12/08/2007: wsfulton
	    [Lua] Fixes to remove gcc-4.2 warnings

12/06/2007: wsfulton
	    Fix #1734415 - template template parameters with default arguments such as:

              template<typename t_item, template<typename> class t_alloc = pfc::alloc_fast >
                class list_t : public list_impl_t<t_item,pfc::array_t<t_item,t_alloc> > { ... };

12/04/2007: mgossage
	    [lua] Fix a bug in the class hierachy code, where the methods were not propagated, 
	    if the name ordering was in a certain order.
	    Added new example programs (dual, embed) and runtime tests for test-suite.

11/30/2007: wsfulton
	    Fix using statements using a base class method where the methods were overloaded.
            Depending on the order of the using statements and method declarations, these
            were previously generating uncompileable wrappers, eg:

              struct Derived : Base {
                virtual void funk();
                using Base::funk;
              };