CHANGES.current
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6434 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ddbf2915aa
commit
00d9972ee9
1 changed files with 121 additions and 0 deletions
|
|
@ -1,6 +1,127 @@
|
|||
Version 1.3.23 (in progress)
|
||||
============================
|
||||
|
||||
10/18/2004: mmatus
|
||||
- %features "director"/"nodirector" now work as expected.
|
||||
- General fixes in %feature to resolve function decl
|
||||
properly,
|
||||
|
||||
%feature("hello") foo();
|
||||
char foo() -> f() // was working
|
||||
char *foo() -> f().p // it wasn't
|
||||
|
||||
|
||||
- Template + specialization + default template args now is
|
||||
working, (don't confuse with template + default arg
|
||||
values, that was solved before), now this ugly case is
|
||||
working:
|
||||
|
||||
template <class T, class A = Alloc<T> >
|
||||
struct Vector
|
||||
{
|
||||
Vector(T a){}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Vector<double>
|
||||
{
|
||||
Vector(){}
|
||||
int foo() { return 0; }
|
||||
};
|
||||
|
||||
%template(V_c) Vector<char, Alloc<char> >;
|
||||
%template(V_i) Vector<int>; // picks Vector<int,Alloc<int> >
|
||||
%template(V_d) Vector<double>; // picks the specialization
|
||||
|
||||
this is needed for automatic STL support (later will
|
||||
be).
|
||||
|
||||
- Fix the template + typedef errors in test-suite, which
|
||||
probably will fix another group of strange template +
|
||||
namespaces + typedefs errors.
|
||||
|
||||
- %warnfilter is working better now, parser.y tries to use
|
||||
them when needed.
|
||||
|
||||
- **** New default type resolution method (stype.c) *****
|
||||
|
||||
It preserves the original mixed types, then it goes 'backward'
|
||||
first deleting the qualifier, then the inner types
|
||||
|
||||
typedef A *Aptr;
|
||||
const Aptr&;
|
||||
r.q(const).Aptr -> r.q(const).p.SWIGTYPE
|
||||
r.q(const).p.SWIGTYPE -> r.p.SWIGTYPE
|
||||
r.p.SWIGTYPE -> r.SWIGTYPE
|
||||
r.SWIGTYPE -> SWIGTYPE
|
||||
|
||||
|
||||
enum Hello {};
|
||||
const Hello& hi;
|
||||
r.q(const).Hello -> r.q(const).enum SWIGTYPE
|
||||
r.q(const).enum SWIGTYPE -> r.enum SWIGTYPE
|
||||
r.enum SWIGTYPE -> r.SWIGTYPE
|
||||
r.SWIGTYPE -> SWIGTYPE
|
||||
|
||||
int a[2][4];
|
||||
a(2).a(4).int -> a(ANY).a(ANY).SWIGTYPE
|
||||
a(ANY).a(ANY).SWIGTYPE -> a(ANY).a().SWIGTYPE
|
||||
a(ANY).a().SWIGTYPE -> a(ANY).p.SWIGTYPE
|
||||
a(ANY).p.SWIGTYPE -> a(ANY).SWIGTYPE
|
||||
a(ANY).SWIGTYPE -> a().SWIGTYPE
|
||||
a().SWIGTYPE -> p.SWIGTYPE
|
||||
p.SWIGTYPE -> SWIGTYPE
|
||||
|
||||
before it always stops after finding ref/pointer/enum/array/etc.
|
||||
|
||||
Now, then, you can define (use and apply) 'higher' typemaps such as:
|
||||
|
||||
%typemap(in) SWIGTYPE* const&
|
||||
%typemap(out) char FIXSIZE[ANY]
|
||||
%typemap(in) SWIGTYPE* const&
|
||||
%typemap(in) const enum SWIGTYPE&
|
||||
%typemap(in) SWIGTYPE[ANY][ANY]
|
||||
%typemap(in) const char (&)[ANY]
|
||||
|
||||
It is possible with this change that previous typemaps
|
||||
that were defined (but ignored), now will start to work.
|
||||
|
||||
Also, it is necessary check for the '%typemap(varin) SWIGTYPE[]',
|
||||
before it was usually not defined (but char[] was),
|
||||
and that can produce some inconsistencies.
|
||||
|
||||
*** POTENTIAL INCOMPATIBILITY ***
|
||||
|
||||
This change was needed for STL, since std::vector<enum Hello>
|
||||
std::vector<A*>, etc, will always generate methods that
|
||||
mix const references with the vector type.
|
||||
|
||||
Now that is working, all the std::container<T*>
|
||||
specialization will not be needed anymore, well, in
|
||||
theory.
|
||||
|
||||
In the practice, everythin is working as before until
|
||||
the proper mixed types are defined and the libraries
|
||||
simplified to use them.
|
||||
|
||||
- Change the behavior of extern "java"/"fortran"/"etc",
|
||||
now swig produces a warning, and use extern "C" instead.
|
||||
The warning can also be disable with the "-w 313" flag.
|
||||
(WARN_PARSE_UNDEFINED_EXTERN).
|
||||
|
||||
- SwigValueWrapper is now more selective (lang.cxx).
|
||||
|
||||
[Perl/Tcl]
|
||||
- Fix some typemaps (perl/tcl) to work properly with
|
||||
SwigValueWrapper. This was not a problem with
|
||||
SwigValueWrapper, but with the typemaps that now are
|
||||
safe to use with %apply.
|
||||
|
||||
[Python]
|
||||
- Fix %callbacks/%pythoncallback to work as before
|
||||
after the def args changes
|
||||
|
||||
|
||||
10/17/2004: arty
|
||||
[OCAML]
|
||||
- Tweak to enum typing for soundness in the presence of multiple
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue