/tags/rel-2.0.1/CHANGES
#! | 1564 lines | 1204 code | 360 blank | 0 comment | 0 complexity | dec027db63b0209494d920f1340fc100 MD5 | raw file
1SWIG (Simplified Wrapper and Interface Generator) 2 3See the CHANGES.current file for changes in the current version. 4See the RELEASENOTES file for a summary of changes in each release. 5 6Version 2.0.0 (2 June 2010) 7=========================== 8 92010-06-02: wsfulton 10 [C#] Fix SWIG_STD_VECTOR_ENHANCED macro used in std::vector to work with 11 types containing commas, for example: 12 13 SWIG_STD_VECTOR_ENHANCED(std::pair< double, std::string >) 14 152010-06-01: wsfulton 16 Add in std_shared_ptr.i for wrapping std::shared_ptr. Requires the %shared_ptr 17 macro like in the boost_shared_ptr.i library. std::tr1::shared_ptr can also be 18 wrapped if the following macro is defined: 19 20 #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 21 %include <std_shared_ptr.i> 22 23 shared_ptr is also documented in Library.html now. 24 252010-05-27: wsfulton 26 Add the ability for $typemap special variable macros to call other $typemap 27 special variable macros, for example: 28 29 %typemap(cstype) CC "CC" 30 %typemap(cstype) BB "$typemap(cstype, CC)" 31 %typemap(cstype) AA "$typemap(cstype, BB)" 32 void hah(AA aa); 33 34 This also fixes C# std::vector containers of shared_ptr and %shared_ptr. 35 36 Also added diagnostics for $typemap with -debug-tmsearch, for example, the 37 above displays additional diagnostic lines starting "Containing: ": 38 39 example.i:34: Searching for a suitable 'cstype' typemap for: AA aa 40 Looking for: AA aa 41 Looking for: AA 42 Using: %typemap(cstype) AA 43 Containing: $typemap(cstype, BB) 44 example.i:31: Searching for a suitable 'cstype' typemap for: BB 45 Looking for: BB 46 Using: %typemap(cstype) BB 47 Containing: $typemap(cstype, CC) 48 example.i:29: Searching for a suitable 'cstype' typemap for: CC 49 Looking for: CC 50 Using: %typemap(cstype) CC 51 522010-05-26: olly 53 Fix %attribute2ref not to produce a syntax error if the last 54 argument (AccessorMethod) is omitted. Patch from David Piepgras 55 in SF#2235756. 56 572010-05-26: olly 58 [PHP] When using %throws or %catches, SWIG-generated PHP5 wrappers 59 now throw PHP Exception objects instead of giving a PHP error of 60 type E_ERROR. 61 62 This change shouldn't cause incompatibility issues, since you can't 63 set an error handler for E_ERROR, so previously PHP would just exit 64 which also happens for unhandled exceptions. The benefit is you can 65 now catch them if you want to. 66 67 Fixes SF#2545578 and SF#2955522. 68 692010-05-25: olly 70 [PHP] Add missing directorin typemap for const std::string &. 71 Fixes SF#3006404 reported by t-Legiaw. 72 732010-05-23: wsfulton 74 [C#] Fix #2957375 - SWIGStringHelper and SWIGExceptionHelper not always being 75 initialized before use in .NET 4 as the classes were not marked beforefieldinit. 76 A static constructor has been added to the intermediary class like this: 77 78 %pragma(csharp) imclasscode=%{ 79 static $imclassname() { 80 } 81 %} 82 83 If you had added your own custom static constructor to the intermediary class in 84 the same way as above, you will have to modify your approach to use static variable 85 initialization or define SWIG_CSHARP_NO_IMCLASS_STATIC_CONSTRUCTOR - See csharphead.swg. 86 87 *** POTENTIAL INCOMPATIBILITY *** 88 892010-05-23: wsfulton 90 Fix #2408232. Improve shared_ptr and intrusive_ptr wrappers for classes in an 91 inheritance hierarchy. No special treatment is needed for derived classes. 92 The proxy class also no longer needs to be specified, it is automatically 93 deduced. The following macros are deprecated: 94 SWIG_SHARED_PTR(PROXYCLASS, TYPE) 95 SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) 96 and have been replaced by 97 %shared_ptr(TYPE) 98 Similarly for intrusive_ptr wrappers, the following macro is deprecated: 99 SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE) 100 SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) 101 and have been replaced by 102 %intrusive_ptr(TYPE) 103 1042010-05-21: olly 105 [PHP] Stop generating a bogus line of code in certain constructors. 106 This was mostly harmless, but caused a PHP notice to be issued, if 107 enabled (SF#2985684). 108 1092010-05-18: wsfulton 110 [Java] Fix member pointers on 64 bit platforms. 111 1122010-05-14: wsfulton 113 Fix wrapping of C++ enum boolean values reported by Torsten Landschoff: 114 typedef enum { PLAY = true, STOP = false } play_state; 115 1162010-05-14: olly 117 [PHP] Fix wrapping of global variables which was producing 118 uncompilable code in some cases. 119 1202010-05-12: drjoe 121 [R] Add two more changes from Wil Nolan. Get garbage 122 collection to work. Implement newfree 123 1242010-05-09: drjoe 125 Fix bug reported by Wil Nolan change creation of string so 126 that R 2.7.0+ can use char hashes 127 1282010-05-07: wsfulton 129 Apply patch #2955146 from Sergey Satskiy to fix expressions containing divide by 130 operator in constructor initialization lists. 131 1322010-05-05: wsfulton 133 [R] Memory leak fix handling const std::string & inputs, reported by Will Nolan. 134 1352010-05-01: wsfulton 136 Typemap matching enhancement for non-default typemaps. Previously all 137 qualifiers were stripped in one step, now they are stripped one at a time 138 starting with the left most qualifier. For example, int const*const 139 is first stripped to int *const then int *. 140 141 *** POTENTIAL INCOMPATIBILITY *** 142 1432010-04-25: bhy 144 [Python] Fix #2985655 - broken constructor renaming. 145 1462010-04-14: wsfulton 147 Typemap fragments are now official and documented in Typemaps.html. 148 1492010-04-09: wsfulton 150 [Ruby] Fix #2048064 and #2408020. 151 Apply Ubuntu patch to fix Ruby and std::vector wrappers with -minherit. 152 https://bugs.launchpad.net/ubuntu/+source/swig1.3/+bug/522874 153 1542010-04-09: wsfulton 155 [Mzscheme] Apply Ubuntu patch to fix std::map wrappers: 156 https://bugs.launchpad.net/ubuntu/+source/swig1.3/+bug/203876 157 1582010-04-09: wsfulton 159 [Python] Apply patch #2952374 - fix directors and the -nortti option. 160 1612010-04-09: wsfulton 162 [Lua] Fix #2887254 and #2946032 - SWIG_Lua_typename using wrong stack index. 163 1642010-04-03: wsfulton 165 [Python] Fix exceptions being thrown with the -threads option based on patch from Arto Vuori. 166 Fixes bug #2818499. 167 1682010-04-03: wsfulton 169 Fix Makefile targets: distclean and maintainer-clean 170 1712010-04-02: wsfulton 172 [Lua] Fix char pointers, wchar_t pointers and char arrays so that nil can be passed as a 173 valid value. Bug reported by Gedalia Pasternak. 174 1752010-04-01: wsfulton 176 Numerous subtle typemap matching rule fixes when using the default type. The typemap 177 matching rules are to take a type and find the best default typemap (SWIGTYPE, SWIGTYPE* etc), 178 then look for the next best match by reducing the chosen default type. The type deduction 179 now follows C++ class template partial specialization matching rules. 180 181 Below are the set of changes made showing the default type deduction 182 along with the old reduced type and the new version of the reduced type: 183 184 SWIGTYPE const &[ANY] 185 new: SWIGTYPE const &[] 186 old: SWIGTYPE (&)[ANY] 187 188 SWIGTYPE *const [ANY] 189 new: SWIGTYPE const [ANY] 190 old: SWIGTYPE *[ANY] 191 192 SWIGTYPE const *const [ANY] 193 new: SWIGTYPE *const [ANY] 194 old: SWIGTYPE const *[ANY] 195 196 SWIGTYPE const *const & 197 new: SWIGTYPE *const & 198 old: SWIGTYPE const *& 199 200 SWIGTYPE *const * 201 new: SWIGTYPE const * 202 old: SWIGTYPE ** 203 204 SWIGTYPE *const & 205 new: SWIGTYPE const & 206 old: SWIGTYPE *& 207 208 Additionally, a const SWIGTYPE lookup is used now for any constant type. Some examples, where 209 T is some reduced type, eg int, struct Foo: 210 211 T const 212 new: SWIGTYPE const 213 old: SWIGTYPE 214 215 T *const 216 new: SWIGTYPE *const 217 old: SWIGTYPE * 218 219 T const[] 220 new: SWIGTYPE const[] 221 old: SWIGTYPE[] 222 223 enum T const 224 new: enum SWIGTYPE const 225 old: enum SWIGTYPE 226 227 T (*const )[] 228 new: SWIGTYPE (*const )[] 229 old: SWIGTYPE (*)[] 230 231 Reminder: the typemap matching rules can now be seen for any types being wrapped by using 232 either the -debug-tmsearch or -debug-tmused options. 233 234 In practice this leads to some subtle matching rule changes and the majority of users 235 won't notice any changes, except in the prime area of motivation for this change: Improve 236 STL containers of const pointers and passing const pointers by reference. This is fixed 237 because many of the STL containers use a type 'T const&' as parameters and when T is 238 a const pointer, for example, 'K const*', then the full type is 'K const*const&'. This 239 means that the 'SWIGTYPE *const&' typemaps now match when T is either a non-const or 240 const pointer. Furthermore, some target languages incorrectly had 'SWIGTYPE *&' typemaps 241 when these should have been 'SWIGTYPE *const&'. These have been corrected (Java, C#, Lua, PHP). 242 243 *** POTENTIAL INCOMPATIBILITY *** 244 2452010-03-13: wsfulton 246 [Java] Some very old deprecated pragma warnings are now errors. 247 2482010-03-13: wsfulton 249 Improve handling of file names and directories containing double/multiple path separators. 250 2512010-03-10: mutandiz (Mikel Bancroft) 252 [allegrocl] Use fully qualified symbol name of cl::identity in emit_defun(). 253 2542010-03-06: wsfulton 255 [Java] The intermediary JNI class modifiers are now public by default meaning these 256 intermediary low level functions are now accessible by default from outside any package 257 used. The proxy class pointer constructor and getCPtr() methods are also now public. 258 These are needed in order for the nspace option to work without any other mods. 259 The previous default of protected access can be restored using: 260 261 SWIG_JAVABODY_METHODS(protected, protected, SWIGTYPE) 262 %pragma(java) jniclassclassmodifiers = "class" 263 2642010-03-06: wsfulton 265 [C#] Added the nspace feature for C#. Documentation for the nspace feature is now available. 266 2672010-03-04: wsfulton 268 Added the nspace feature. This adds some improved namespace support. Currently only Java 269 is supported for target languages, where C++ namespaces are automatically translated into 270 Java packages. The feature only applies to classes,struct,unions and enums declared within 271 a namespace. Methods and variables declared in namespaces still effectively have their 272 namespaces flattened. Example usage: 273 274 %feature(nspace) Outer::Inner1::Color; 275 %feature(nspace) Outer::Inner2::Color; 276 277 namespace Outer { 278 namespace Inner1 { 279 struct Color { 280 ... 281 }; 282 } 283 namespace Inner2 { 284 struct Color { 285 ... 286 }; 287 } 288 } 289 290 For Java, the -package option is also required when using the nspace feature. Say 291 we use -package com.myco, the two classes can then be accessed as follows from Java: 292 293 com.myco.Outer.Inner1.Color and com.myco.Outer.Inner2.Color. 294 2952010-02-27: wsfulton 296 [Python] Remove -dirvtable from the optimizations included by -O as it this option 297 currently leads to memory leaks as reported by Johan Blake. 298 2992010-02-27: wsfulton 300 License code changes: SWIG Source is GPL-v3 and library code license is now clearer 301 and is provided under a very permissive license. See http://www.swig.org/legal.html. 302 3032010-02-13: wsfulton 304 [Ruby] A few fixes for compiling under ruby-1.9.x including patch from 'Nibble'. 305 3062010-02-13: wsfulton 307 [Ruby] Apply patch from Patrick Bennett to fix RARRAY_LEN and RARRAY_PTR usage for Ruby 1.9.x 308 used in various STL wrappers. 309 3102010-02-13: wsfulton 311 [C#, Java] Fix incorrect multiply defined symbol name error when an enum item 312 and class name have the same name, as reported by Nathan Krieger. Example: 313 314 class Vector {}; 315 namespace Text { 316 enum Preference { Vector }; 317 } 318 319 This also fixes other incorrect corner case target language symbol name clashes. 320 3212010-02-11: wsfulton 322 Add the -debug-lsymbols option for displaying the target language layer symbols. 323 3242010-02-09: wsfulton 325 Fix -MM and -MMD options on Windows. They were not omitting files in the SWIG library as 326 they should be. 327 3282010-02-08: wsfulton 329 Fix #1807329 - When Makefile dependencies are being generated using the -M family of options 330 on Windows, the file paths have been corrected to use single backslashes rather than double 331 backslashes as path separators. 332 3332010-02-06: wsfulton 334 Fix #2918902 - language specific files not being generated in correct directory on 335 Windows when using forward slashes for -o, for example: 336 swig -python -c++ -o subdirectory/theinterface_wrap.cpp subdirectory/theinterface.i 337 3382010-02-05: wsfulton 339 Fix #2894405 - assertion when using -xmlout. 340 3412010-01-28: wsfulton 342 Fix typemap matching bug when a templated type has a typemap both specialized and not 343 specialized. For example: 344 345 template<typename T> struct XX { ... }; 346 %typemap(in) const XX & "..." 347 %typemap(in) const XX< int > & "..." 348 349 resulted in the 2nd typemap being applied for all T in XX< T >. 350 3512010-01-22: wsfulton 352 Fix #2933129 - typemaps not being found when the unary scope operator (::) is used to denote 353 global scope, the typemap is now used in situations like this: 354 355 struct X {}; 356 %typemap(in) const X & "..." 357 void m(const ::X &); 358 359 and this: 360 361 struct X {}; 362 %typemap(in) const ::X & "..." 363 void m(const X &); 364 3652010-01-20: wsfulton 366 Fix some unary scope operator (::) denoting global scope problems in the types generated 367 into the C++ layer. Previously the unary scope operator was dropped in the generated code 368 if the type had any sort of qualifier, for example when using pointers, references, like 369 ::foo*, ::foo&, bar< ::foo* >. 370 3712010-01-13: olly 372 [PHP] Add datetime to the list of PHP predefined classes (patch 373 from David Fletcher in SF#2931042). 374 3752010-01-11: wsfulton 376 Slight change to warning, error and diagnostic reporting. The warning number is no 377 longer shown within brackets. This is to help default parsing of warning messages by 378 other tools, vim on Unix in particular. 379 380 Example original display using -Fstandard: 381 example.i:20: Warning(401): Nothing known about base class 'B'. Ignored. 382 New display: 383 example.i:20: Warning 401: Nothing known about base class 'B'. Ignored. 384 385 Also subtle fix to -Fmicrosoft format adding in missing space. Example original display: 386 example.i(20): Warning(401): Nothing known about base class 'Base'. Ignored. 387 New display: 388 example.i(20) : Warning 401: Nothing known about base class 'Base'. Ignored. 389 3902010-01-10: wsfulton 391 Fix a few inconsistencies in reporting of file/line numberings including modifying 392 the overload warnings 509, 512, 516, 474, 475 to now be two line warnings. 393 3942010-01-10: wsfulton 395 Modify -debug-tags output to use standard file name/line reporting so that editors 396 can easily navigate to the appropriate lines. 397 Was typically: 398 . top . include . include (/usr/share/swig/temp/trunk/Lib/swig.swg:312) 399 . top . include . include . include (/usr/share/swig/temp/trunk/Lib/swigwarnings.swg:39) 400 now: 401 /usr/share/swig/temp/trunk/Lib/swig.swg:312: . top . include . include 402 /usr/share/swig/temp/trunk/Lib/swigwarnings.swg:39: . top . include . include . include 403 4042010-01-03: wsfulton 405 Fix missing file/line numbers for typemap warnings and in output from the 406 -debug-tmsearch/-debug-tmused options. 407 4082010-01-03: wsfulton 409 Add typemaps used debugging option (-debug-tmused). When used each line displays 410 the typemap used for each type for which code is being generated including the file 411 and line number related to the type. This is effectively a condensed form of the 412 -debug-tmsearch option. Documented in Typemaps.html. 413 4142009-12-23: wsfulton 415 Fix for %javaexception and directors so that all the appropriate throws clauses 416 are generated. Problem reported by Peter Greenwood. 417 4182009-12-20: wsfulton 419 Add -debug-tmsearch option for debugging the typemap pattern matching rules. 420 Documented in Typemaps.html. 421 4222009-12-12: wsfulton 423 [Octave] Remove the -api option and use the new OCTAVE_API_VERSION_NUMBER 424 macro provided in the octave headers for determining the api version instead. 425 4262009-12-04: olly 427 [Ruby] Improve support for Ruby 1.9 under GCC. Addresses part of 428 SF#2859614. 429 4302009-12-04: olly 431 Fix handling of modulo operator (%) in constant expressions 432 (SF#2818562). 433 4342009-12-04: olly 435 [PHP] "empty" is a reserved word in PHP, so rename empty() method 436 on STL classes to "is_empty()" (previously this was automatically 437 renamed to "c_empty()"). 438 *** POTENTIAL INCOMPATIBILITY *** 439 4402009-12-03: olly 441 [PHP] Add typemaps for long long and unsigned long long, and for 442 pointer to method. 443 4442009-12-02: olly 445 [PHP] Fix warning and rename of reserved class name to be case 446 insensitive. 447 4482009-12-01: wsfulton 449 Revert support for %extend and memberin typemaps added in swig-1.3.39. The 450 memberin typemaps are ignored again for member variables within a %extend block. 451 Documentation inconsistency reported by Torsten Landschoff. 452 4532009-11-29: wsfulton 454 [Java, C#] Fix generated quoting when using %javaconst(1)/%csconst(1) for 455 static const char member variables. 456 457 %javaconst(1) A; 458 %csconst(1) A; 459 struct X { 460 static const char A = 'A'; 461 }; 462 4632009-11-26: wsfulton 464 [Java, C#] Fix %javaconst(1)/%csconst(1) for static const member variables to 465 use the actual constant value if it is specified, rather than the C++ code to 466 access the member. 467 468 %javaconst(1) EN; 469 %csconst(1) EN; 470 struct X { 471 static const int EN = 2; 472 }; 473 4742009-11-23: wsfulton 475 C++ nested typedef classes can now be handled too, for example: 476 struct Outer { 477 typedef Foo { } FooTypedef1, FooTypedef2; 478 }; 479 4802009-11-18: wsfulton 481 The wrappers for C nested structs are now generated in the same order as declared 482 in the parsed code. 483 4842009-11-18: wsfulton 485 Fix #491476 - multiple declarations of nested structs, for example: 486 struct Outer { 487 struct { 488 int val; 489 } inner1, inner2, *inner3, inner4[1]; 490 } outer; 491 4922009-11-17: wsfulton 493 Fix parsing of enum declaration and initialization, for example: 494 495 enum ABC { 496 a, 497 b, 498 c 499 } A = a, *pC = &C, array[3] = {a, b, c}; 500 5012009-11-17: wsfulton 502 Fix parsing of struct declaration and initialization, for example: 503 504 struct S { 505 int x; 506 } instance = { 10 }; 507 5082009-11-15: wsfulton 509 Fix #1960977 - Syntax error parsing derived nested class declaration and member 510 variable instance. 511 5122009-11-14: wsfulton 513 Fix #2310483 - function pointer typedef within extern "C" block. 514 5152009-11-13: wsfulton 516 Fix usage of nested template classes within templated classes so that compileable code 517 is generated. 518 5192009-11-13: olly 520 [php] Fix place where class prefix (as specified with -prefix) 521 wasn't being used. Patch from gverbruggen in SF#2892647. 522 5232009-11-12: wsfulton 524 Fix usage of nested template classes so that compileable code is generated - the nested 525 template class is now treated like a normal nested classes, that is, as an opaque type 526 unless the nestedworkaround feature is used. 527 5282009-11-12: wsfulton 529 Replace SWIGWARN_PARSE_NESTED_CLASS with SWIGWARN_PARSE_NAMED_NESTED_CLASS and 530 SWIGWARN_PARSE_UNNAMED_NESTED_CLASS for named and unnamed nested classes respectively. 531 532 Named nested class ignored warnings can now be suppressed by name using %warnfilter, eg: 533 534 %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::Inner; 535 536 but clearly unnamed nested classes cannot and the global suppression is still required, eg: 537 538 #pragma SWIG nowarn=SWIGWARN_PARSE_UNNAMED_NESTED_CLASS 539 5402009-11-11: wsfulton 541 Added the nestedworkaround feature as a way to use the full functionality of a nested class 542 (C++ mode only). It removes the nested class from SWIG's type information so it is as if SWIG 543 had never parsed the nested class. The documented nested class workarounds using a global 544 fake class stopped working when SWIG treated the nested class as an opaque pointer, and 545 this feature reverts this behaviour. The documentation has been updated with details of how 546 to use and implement it, see the "Nested classes" section in SWIGPlus.html. 547 5482009-11-11: wsfulton 549 There were a number of C++ cases where nested classes/structs/unions were being handled 550 as if C code was being parsed which would oftentimes lead to uncompileable code as an 551 attempt was made to wrap the nested structs like it is documented for C code. Now all 552 nested structs/classes/unions are ignored in C++ mode, as was always documented. However, 553 there is an improvement as usage of nested structs/classes/unions is now always treated 554 as an opaque type by default, resulting in generated code that should always compile. 555 556 *** POTENTIAL INCOMPATIBILITY *** 557 5582009-11-09: drjoe 559 Fix R for -fcompact and add std_map.i 560 5612009-11-08: wsfulton 562 Fix inconsistency for nested structs/unions/classes. Uncompileable code was being 563 generated when inner struct and union declarations were used as types within the 564 inner struct. The inner struct/union is now treated as a forward declaration making the 565 behaviour the same as an inner class. (C++ code), eg: 566 567 struct Outer { 568 struct InnerStruct { int x; }; 569 InnerStruct* getInnerStruct(); 570 }; 571 5722009-11-08: wsfulton 573 Ignored nested class/struct warnings now display the name of the ignored class/struct. 574 5752009-11-07: wsfulton 576 Bug #1514681 - Fix nested template classes within a namespace generated uncompileable 577 code and introduced strange side effects to other wrapper code especially code 578 after the nested template class. Note that nested template classes are still ignored. 579 5802009-11-07: wsfulton 581 Add new debug options: 582 -debug-symtabs - Display symbol tables information 583 -debug-symbols - Display target language symbols in the symbol tables 584 -debug-csymbols - Display C symbols in the symbol tables 585 5862009-11-03: wsfulton 587 Fix some usage of unary scope operator (::) denoting global scope, for example: 588 589 namespace AA { /* ... */ } 590 using namespace ::AA; 591 592 and bug #1816802 - SwigValueWrapper should be used: 593 594 struct CC { 595 CC(int); // no default constructor 596 }; 597 ::CC x(); 598 599 and in template parameter specializations: 600 601 struct S {}; 602 template <typename T> struct X { void a() {}; }; 603 template <> struct X<S> { void b() {}; }; 604 %template(MyTConcrete) X< ::S >; 605 606 plus probably some other corner case usage of ::. 607 6082009-11-02: olly 609 [Python] Fix potential memory leak in initialisation code for the 610 generated module. 611 6122009-10-23: wsfulton 613 Fix seg fault when using a named nested template instantiation using %template(name) 614 within a class. A warning that these are not supported is now issued plus processing 615 continues as if no name was given. 616 6172009-10-20: wsfulton 618 [Python] Fix std::vector<const T*>. This would previously compile, but not run correctly. 619 6202009-10-20: wsfulton 621 Fixed previously fairly poor template partial specialization and explicit 622 specialization support. Numerous bugs in this area have been fixed including: 623 624 - Template argument deduction implemented for template type arguments, eg this now 625 works: 626 template<typename T> class X {}; 627 template<typename T> class X<T *> {}; 628 %template(X1) X<const int *>; // Chooses T * specialization 629 630 and more complex cases with multiple parameters and a mix of template argument 631 deduction and explicitly specialised parameters, eg: 632 template <typename T1, typename T2> struct TwoParm { void a() {} }; 633 template <typename T1> struct TwoParm<T1 *, int *> { void e() {} }; 634 %template(E) TwoParm<int **, int *>; 635 636 Note that the primary template must now be in scope, like in C++, when 637 an explicit or partial specialization is instantiated with %template. 638 639 *** POTENTIAL INCOMPATIBILITY *** 640 6412009-09-14: wsfulton 642 [C#] Add %csattributes for adding C# attributes to enum values, see docs for example. 643 6442009-09-11: wsfulton 645 Fix memmove regression in cdata.i as reported by Adriaan Renting. 646 6472009-09-07: wsfulton 648 Fix constant expressions containing <= or >=. 649 6502009-09-02: wsfulton 651 The following operators in constant expressions now result in type bool for C++ 652 wrappers and remain as type int for C wrappers, as per each standard: 653 654 && || == != < > <= >= (Actually the last 4 are still broken). For example: 655 656 #define A 10 657 #define B 10 658 #define A_EQ_B A == B // now wrapped as type bool for C++ 659 #define A_AND_B A && B // now wrapped as type bool for C++ 660 6612009-09-02: wsfulton 662 Fix #2845746. true and false are now recognised keywords (only when wrapping C++). 663 Constants such as the following are now wrapped (as type bool): 664 #define FOO true 665 #define BAR FOO && false 666 667Version 1.3.40 (18 August 2009) 668=============================== 669 6702009-08-17: olly 671 [Perl] Add "#undef do_exec" to our clean up of Perl global 672 namespace pollution. 673 6742009-08-17: olly 675 [PHP] Fix to wrap a resource returned by __get() in a PHP object (SF#2549217). 676 6772009-08-17: wsfulton 678 Fix #2797485 After doing a 'make clean', install fails if yodl2man or yodl2html 679 is not available. 680 6812009-08-16: wsfulton 682 [Octave] Caught exceptions display the type of the C++ exception instead of the 683 generic "c++-side threw an exception" message. 684 6852009-08-16: wsfulton 686 [Java] When %catches is used, fix so that any classes specified in the "throws" 687 attribute of the "throws" typemap are generated into the Java method's throws clause. 688 6892009-08-16: wsfulton 690 [C#] Fix exception handling when %catches is used, reported by Juan Manuel Alvarez. 691 6922009-08-15: wsfulton 693 Fix %template seg fault on some cases of overloading the templated method. 694 Bug reported by Jan Kupec. 695 6962009-08-15: wsfulton 697 [Ruby] Add numerous missing wrapped methods for std::vector<bool> specialization 698 as reported by Youssef Jones. 699 7002009-08-14: wsfulton 701 [Perl] Add SWIG_ConvertPtrAndOwn() method into the runtime for smart pointer 702 memory ownership control. shared_ptr support still to be added. Patch from 703 David Fletcher. 704 7052009-08-14: olly 706 [PHP] PHP5 now wraps static member variables as documented. 707 7082009-08-14: olly 709 [PHP] Update the PHP "class" example to work with PHP5 and use 710 modern wrapping features. 711 7122009-08-13: wsfulton 713 [PHP] std::vector wrappers overhaul. They no longer require the 714 specialize_std_vector() macro. Added wrappers for capacity() and reserve(). 715 7162009-08-13: wsfulton 717 [PHP] Add const reference typemaps. const reference primitive types are 718 now passed by value rather than pointer like the other target languages. 719 Fixes SF#2524029. 720 7212009-08-08: wsfulton 722 [Python] More user friendly AttributeError is raised when there are 723 no constructors generated for the proxy class in the event that the 724 class is abstract - the error message is now 725 "No constructor defined - class is abstract" whereas if there are no 726 public constructors for any other reason and the class is not abstract, 727 the message remains 728 "No constructor defined". 729 [tcl] Similarly for tcl when using -itcl. 730 7312009-08-04: olly 732 [PHP] Fix generated code to work with PHP 5.3. 733 7342009-08-04: vmiklos 735 [PHP] Various mathematical functions (which would conflict 736 with the built-in PHP ones) are now automatically handled by 737 adding a 'c_' prefix. 738 7392009-08-03: wsfulton 740 [C#] The std::vector<T> implementation is improved and now uses $typemap such 741 that the proxy class for T no longer has to be specified in some macros 742 for correct C# compilation; the following macros are deprecated, where 743 CSTYPE was the C# type for the C++ class CTYPE: 744 745 SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(CSTYPE, CTYPE) 746 usage should be removed altogether 747 748 SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE) 749 should be replaced with: 750 SWIG_STD_VECTOR_ENHANCED(CTYPE) 751 752 Some more details in csharp/std_vector.i 753 754 *** POTENTIAL INCOMPATIBILITY *** 755 7562009-07-31: olly 757 [Python] Fix indentation so that we give a useful error if the 758 module can't be loaded. Patch from Gaetan Lehmann in SF#2829853. 759 7602009-07-29: wsfulton 761 Add $typemap(method, typelist) special variable macro. This allows 762 the contents of a typemap to be inserted within another typemap. 763 Fully documented in Typemaps.html. 764 7652009-07-29: vmiklos 766 [PHP] Static member variables are now prefixed with the 767 class name. This allows static member variables with the 768 same name in different classes. 769 7702009-07-29: olly 771 [Python] Add missing locks to std::map wrappers. Patch from 772 Paul Hampson in SF#2813836. 773 7742009-07-29: olly 775 [PHP] Fix memory leak in PHP OUTPUT typemaps. Reported by Hitoshi 776 Amano in SF#2826322. 777 7782009-07-29: olly 779 [PHP] Fix memory leak in PHP resource destructor for classes 780 without a destructor and non-class types. Patch from Hitoshi Amano 781 in SF#2825303. 782 7832009-07-28: olly 784 [PHP] Update warnings about clashes between identifiers and PHP 785 keywords and automatic renaming to work with the PHP5 class 786 wrappers. Fixes SF#1613679. 787 7882009-07-28: vmiklos 789 [PHP] If a member function is not public but it has a base 790 which is public, then now a warning is issued and the member 791 function will be public, as PHP requires this. 792 7932009-07-21: vmiklos 794 [PHP] Director support added. 795 7962009-07-15: olly 797 [Perl] Don't specify Perl prototype "()" for a constructor with a 798 different name to the class, as such constructors can still take 799 parameters. 800 8012009-07-12: xavier98 802 [Octave] Add support for Octave 3.2 API 803 8042009-07-05: olly 805 [PHP] Update the list of PHP keywords - "cfunction" is no longer a 806 keyword in PHP5 and PHP 5.3 added "goto", "namespace", "__DIR__", 807 and "__NAMESPACE__". 808 8092009-07-03: olly 810 [Tcl] To complement USE_TCL_STUBS, add support for USE_TK_STUBS 811 and SWIG_TCL_STUBS_VERSION. Document all three in the Tcl chapter 812 of the manual. Based on patch from SF#2810380 by Christian 813 Gollwitzer. 814 8152009-07-02: vmiklos 816 [PHP] Added factory.i for PHP, see the li_factory testcase 817 for more info on how to use it. 818 8192009-07-02: wsfulton 820 Fix -Wallkw option as reported by Solomon Gibbs. 821 8222009-07-02: wsfulton 823 Fix syntax error when a nested struct contains a comment containing a * followed 824 eventually by a /. Regression from 1.3.37, reported by Solomon Gibbs. 825 8262009-07-01: vmiklos 827 [PHP] Unknown properties are no longer ignored in proxy 828 classes. 829 8302009-07-01: vmiklos 831 [PHP] Fixed %newobject behaviour, previously any method 832 marked with %newobject was handled as a constructor. 833 8342009-06-30: olly 835 [Ruby] Undefine close and connect macros defined by Ruby API 836 headers as we don't need them and they can clash with C++ methods 837 being wrapped. Patch from Vit Ondruch in SF#2814430. 838 8392009-06-26: olly 840 [Ruby] Fix to handle FIXNUM values greater than MAXINT passed for a 841 double parameter. 842 8432009-06-24: wsfulton 844 Fix wrapping methods with default arguments and the compactdefaultargs feature 845 where a class is passed by value and is assigned a default value. The SwigValueWrapper 846 template workaround for a missing default constructor is no longer used as the code 847 generated does not call the default constructor. 848 8492009-06-16: wsfulton 850 [Java,C#] Fix enum marshalling when %ignore is used on one of the enum items. 851 Incorrect enum values were being passed to the C++ layer or compilation errors resulted. 852 8532009-06-02: talby 854 [Perl] Resolved reference.i overload support problem 855 identified by John Potowsky. 856 8572009-05-26: wsfulton 858 [C#] Improved std::map wrappers based on patch from Yuval Baror. The C# proxy 859 now implements System.Collections.Generic.IDictionary<>. 860 861 These std:map wrappers have a non-backwards compatible overhaul to make them 862 like a .NET IDictionary. Some method names have changed as following: 863 set -> setitem (use this[] property now) 864 get -> getitem (use this[] property now) 865 has_key -> ContainsKey 866 del -> Remove 867 clear -> Clear 868 869 The following macros used for std::map wrappers are deprecated and will no longer work: 870 specialize_std_map_on_key 871 specialize_std_map_on_value 872 specialize_std_map_on_both 873 874 *** POTENTIAL INCOMPATIBILITY *** 875 8762009-05-20: vmiklos 877 [PHP] Add the 'thisown' member to classes. The usage of it 878 is the same as the Python thisown one: it's 1 by default and 879 you can set it to 0 if you want to prevent freeing it. (For 880 example to prevent a double free.) 881 8822009-05-14: bhy 883 [Python] Fix the wrong pointer value returned by SwigPyObject_repr(). 884 8852009-05-13: mutandiz (Mikel Bancroft) 886 [allegrocl] Minor tweak when wrapping in -nocwrap mode. 887 8882009-05-11: wsfulton 889 [C#] Improved std::vector wrappers on the C# proxy side from Yuval Baror. These 890 implement IList<> instead of IEnumerable<> where possible. 891 8922009-04-29: wsfulton 893 [Java, C#] Add the 'notderived' attribute to the javabase and csbase typemaps. 894 When this attribute is set, the typemap will not apply to classes that are derived 895 from a C++ base class, eg 896 %typemap(csbase, notderived="1") SWIGTYPE "CommonBase" 897 8982009-04-29: olly 899 [Python] Don't attempt to acquire the GIL in situations where we 900 know that it will already be locked. This avoids some dead-locks 901 with mod_python (due to mod_python bugs which are apparently 902 unlikely to ever be fixed), and results in smaller wrappers which 903 run a little faster (in tests with Xapian on x86-64 Ubuntu 9.04, 904 the stripped wrapper library was 11% smaller and ran 2.7% faster). 905 9062009-04-21: wsfulton 907 [C#] Fix #2753469 - bool &OUTPUT and bool *OUTPUT typemaps initialisation. 908 9092009-04-09: wsfulton 910 Fix #2746858 - C macro expression using floating point numbers 911 9122009-03-30: olly 913 [PHP] The default out typemap for char[ANY] now returns the string up to a 914 zero byte, or the end of the array if there is no zero byte. This 915 is the same as Python does, and seems more generally useful than 916 the previous behaviour of returning the whole contents of the array 917 including any zero bytes. If you want the old behaviour, you can provide 918 your own typemap to do this: 919 920 %typemap(out) char [ANY] 921 %{ 922 RETVAL_STRINGL($1, $1_dim0, 1); 923 %} 924 925Version 1.3.39 (21 March 2009) 926============================== 927 9282009-03-19: bhy 929 [Python] Fix the memory leak related to Python 3 unicode and C char* conversion, 930 which can be shown in the following example before this fix: 931 932 from li_cstring import * 933 i=0 934 while True: 935 i += 1 936 n = str(i)*10 937 test3(n) 938 939 This fix affected SWIG_AsCharPtrAndSize() so you cannot call this function with 940 a null alloc and non-null cptr argument in Python 3, otherwise a runtime error 941 will be raised. 942 9432009-03-18: wsfulton 944 [C#] std::vector<T> wrapper improvements for .NET 2 and also providing the 945 necessary machinery to use the std::vector<T> wrappers with more advanced features such 946 as LINQ - the C# proxy class now derives from IEnumerable<>. The default is now to 947 generate code requiring .NET 2 as a minimum, although the C# code can be compiled 948 for .NET 1 by defining the SWIG_DOTNET_1 C# preprocessor constant. See the 949 std_vector.i file for more details. 950 951 *** POTENTIAL INCOMPATIBILITY *** 952 9532009-03-12: wsfulton 954 [Ruby] Fix #2676738 SWIG generated symbol name clashes. 955 9562009-03-01: bhy 957 [Python] Some fixes for Python 3.0.1 and higher support. In 3.0.1, the C API function 958 PyObject_Compare is removed, so PyObject_RichCompareBool is used for replacement. 959 Struct initilization of SwigPyObject and SwigPyObject_as_number changed to reflect 960 the drop of tp_compare and nb_long. 961 9622009-03-01: bhy 963 [Python] Fix SF#2583160. Now the importer in Python shadow wrapper take care of the 964 case that module already imported at other place. 965 9662009-02-28: bhy 967 [Python] Fix SF#2637352. Move struct declaration of SWIG_module in pyinit.swg before 968 the method calls, since some C compiler don't allow declaration in middle of function 969 body. 970 9712009-02-21: wsfulton 972 [Allegrocl] Fix seg fault wrapping some constant variable (%constant) types. 973 9742009-02-20: wsfulton 975 [CFFI] Fix seg faults when for %extend and using statements. 976 9772009-02-20: wsfulton 978 Fix SF #2605955: -co option which broke in 1.3.37. 979 9802009-02-20: wsfulton 981 New %insert("begin") section added. Also can be used as %begin. This is a new 982 code section reserved entirely for users and the code within the section is generated 983 at the top of the C/C++ wrapper file and so provides a means to put custom code 984 into the wrapper file before anything else that SWIG generates. 985 9862009-02-17: wsfulton 987 'make clean-test-suite' will now run clean on ALL languages. Previously it only 988 ran the correctly configured languages. This way it is now possible to clean up 989 properly after running 'make partialcheck-test-suite'. 990 9912009-02-14: wsfulton 992 Extend attribute library support for structs/classes and the accessor functions use 993 pass/return by value semantics. Two new macros are available and usage is identical 994 to %attribute. These are %attributeval for structs/classes and %attributestring for 995 string classes, like std::string. See attribute.swg for more details. 996 9972009-02-13: wsfulton 998 Add support for %extend and memberin typemaps. Previously the memberin typemaps were 999 ignored for member variables within a %extend block. 1000 10012009-02-12: wsfulton 1002 Remove unnecessary temporary variable when wrapping return values that are references. 1003 Example of generated code for wrapping: 1004 1005 struct XYZ { 1006 std::string& refReturn(); 1007 }; 1008 1009 used to be: 1010 1011 std::string *result = 0 ; 1012 ... 1013 { 1014 std::string &_result_ref = (arg1)->refReturn(); 1015 result = (std::string *) &_result_ref; 1016 } 1017 1018 Now it is: 1019 1020 std::string *result = 0 ; 1021 ... 1022 result = (std::string *) &(arg1)->refReturn(); 1023 10242009-02-08: bhy 1025 Change the SIZE mapped by %pybuffer_mutable_binary and %pybuffer_binary in pybuffer.i from 1026 the length of the buffer to the number of items in the buffer. 1027 10282009-02-08: wsfulton 1029 Fix %feature not working for conversion operators, reported by Matt Sprague, for example: 1030 %feature("cs:methodmodifiers") operator bool "protected"; 1031 10322009-02-07: wsfulton 1033 [MzScheme] Apply #2081967 configure changes for examples to build with recent PLT versions. 1034 Also fixes Makefile errors building SWIG executable when mzscheme package is installed 1035 (version 3.72 approx and later). 1036 10372009-02-04: talby 1038 [Perl] Fix SF#2564192 reported by David Kolovratnk. 1039 SWIG_AsCharPtrAndSize() now handles "get" magic. 1040 1041Version 1.3.38 (31 January 2009) 1042================================ 1043 10442009-01-31: bhy 1045 [Python] Fix SF#2552488 reported by Gaetan Lehmann. Now %pythonprepend 1046 and %pythonappend have correct indentation. 1047 10482009-01-31: bhy 1049 [Python] Fix SF#2552048 reported by Gaetan Lehmann. The parameter list 1050 of static member function in generated proxy code should not have the 1051 'self' parameter. 1052 10532009-01-29: wsfulton 1054 Fix regression introduced in 1.3.37 where the default output directory 1055 for target language specific files (in the absence of -outdir) was no 1056 longer the same directory as the generated c/c++ file. 1057 10582009-01-28: wsfulton 1059 [Java, C#] Fix proxy class not being used when the global scope operator 1060 was used for parameters passed by value. Reported by David Piepgrass. 1061 10622009-01-15: wsfulton 1063 [Perl] Fix seg fault when running with -v option, reported by John Ky. 1064 1065Version 1.3.37 (13 January 2009) 1066================================ 1067 10682009-01-13: mgossage 1069 [Lua] Added contract support for requiring that unsigned numbers are >=0 1070 Rewrote much of Examples/Lua/embed3. 1071 Added a lot to the Lua documentation. 1072 10732009-01-13: wsfulton 1074 Fix compilation error when using directors on protected virtual overloaded 1075 methods reported by Sam Hendley. 1076 10772009-01-12: drjoe 1078 [R] Fixed handling of integer arrays 1079 10802009-01-10: drjoe 1081 [R] Fix integer handling in r to deal correctly with signed 1082 and unsigned issues 1083 10842009-01-10: wsfulton 1085 Patch #1992756 from Colin McDonald - %contract not working for classes 1086 in namespace 1087 10882009-01-05: olly 1089 Mark SWIGPERL5, SWIGPHP5, and SWIGTCL8 as deprecated in the source 1090 code and remove documentation of them. 1091 10922008-12-30: wsfulton 1093 Bug #2430756. All the languages now define a macro in the generated C/C++ 1094 wrapper file indicating which language is being wrapped. The macro name is the 1095 same as those defined when SWIG is run, eg SWIGJAVA, SWIGOCTAVE, SWIGCSHARP etc 1096 and are listed in the "Conditional Compilation" section in the documentation. 1097 10982008-12-23: wsfulton 1099 [Java] Fix #2153773 - %nojavaexception was clearing the exception feature 1100 instead of disabling it. Clearing checked Java exceptions also didn't work. 1101 The new %clearjavaexception can be used for clearing the exception feature. 1102 11032008-12-22: wsfulton 1104 Fix #2432801 - Make SwigValueWrapper exception safe for when copy constructors 1105 throw exceptions. 1106 11072008-12-21: wsfulton 1108 Apply patch #2440046 which fixes possible seg faults for member and global 1109 variable char arrays when the strings are larger than the string array size. 1110 11112008-12-20: wsfulton 1112 The ccache compiler cache has been adapted to work with SWIG and 1113 named ccache-swig. It now works with C/C++ compilers as well as SWIG 1114 and can result in impressive speedups when used to recompile unchanged 1115 code with either a C/C++ compiler or SWIG. Documentation is in CCache.html 1116 or the installed ccache-swig man page. 1117 11182008-12-12: wsfulton 1119 Apply patch from Kalyanov Dmitry which fixes parsing of nested structs 1120 containing comments. 1121 11222008-12-12: wsfulton 1123 Fix error message in some nested struct and %inline parsing error situations 1124 such as unterminated strings and comments. 1125 11262008-12-07: olly 1127 [PHP] Fix warnings when compiling generated wrapper with GCC 4.3. 1128 11292008-12-06: wsfulton 1130 [PHP] Deprecate %pragma(php4). Please use %pragma(php) instead. 1131 The following two warnings have been renamed: 1132 WARN_PHP4_MULTIPLE_INHERITANCE -> WARN_PHP_MULTIPLE_INHERITANCE 1133 WARN_PHP4_UNKNOWN_PRAGMA -> WARN_PHP_UNKNOWN_PRAGMA 1134 1135 *** POTENTIAL INCOMPATIBILITY *** 1136 11372008-12-04: bhy 1138 [Python] Applied patch SF#2158938: all the SWIG symbol names started with Py 1139 are changed, since they are inappropriate and discouraged in Python 1140 documentation (from http://www.python.org/doc/2.5.2/api/includes.html): 1141 1142 "All user visible names defined by Python.h (except those defined by 1143 the included standard headers) have one of the prefixes "Py" or "_Py". 1144 Names beginning with "_Py" are for internal use by the Python implementation 1145 and should not be used by extension writers. Structure member names do 1146 not have a reserved prefix. 1147 1148 Important: user code should never define names that begin with "Py" or "_Py". 1149 This confuses the reader, and jeopardizes the portability of the user 1150 code to future Python versions, which may define additional names beginning 1151 with one of these prefixes." 1152 1153 Here is a brief list of what changed: 1154 1155 PySwig* -> SwigPy* 1156 PyObject_ptr -> SwigPtr_PyObject 1157 PyObject_var -> SwigVar_PyObject 1158 PySequence_Base, PySequence_Cont, PySequence_Ref -> 1159 SwigPySequence_Base, SwigPySequence_Cont, SwigPySequence_Ref 1160 PyMap* -> SwigPyMap* 1161 1162 We provided a pyname_compat.i for backward compatibility. Users whose code having 1163 these symbols and do not want to change it could simply include this file 1164 at front of your code. A better solution is to run the converting tool on 1165 your code, which has been put in SWIG's SVN trunk (Tools/pyname_patch.py) and 1166 you can download it here: 1167 https://swig.svn.sourceforge.net/svnroot/swig/trunk/Tools/pyname_patch.py 1168 1169 *** POTENTIAL INCOMPATIBILITY *** 1170 11712008-12-02: wsfulton 1172 [Python] Apply patch #2143727 from Serge Monkewitz to fix importing base classes 1173 when the package option is specified in %module and that module is %import'ed. 1174 11752008-11-28: wsfulton 1176 [UTL] Fix #2080497. Some incorrect acceptance of types in the STL, eg a double * element 1177 passed into a vector<int *> constructor would be accepted, but the ensuing behaviour 1178 was undefined. Now the type conversion correctly raises an exception. 1179 11802008-11-24: wsfulton 1181 Add -outcurrentdir option. This sets the default output directory to the current 1182 directory instead of the path specified by the input file. This option enables 1183 behaviour similar to c/c++ compilers. Note that this controls the output directory, 1184 but only in the absence of the -o and/or -outdir options. 1185 11862008-11-23: wsfulton 1187 [ruby] Apply patch #2263850 to fix ruby/file.i ... rubyio.h filename change in 1188 ruby 1.9. 1189 11902008-11-23: wsfulton 1191 Apply patch #2319790 from Johan Hake to fix shared_ptr usage in std::tr1 namespace. 1192 11932008-11-21: wsfulton 1194 The use of the include path to find the input file is now deprecated. 1195 This makes the behaviour of SWIG the same as C/C++ compilers in preparation 1196 for use with ccache. 1197 11982008-11-16: wsfulton 1199 Fix -nopreprocess option to: 1200 - correctly report file names in warning and error messages. 1201 - use the original input filename that created the preprocessed output when 1202 determining the C++ wrapper file name (in the absence of -o). Previously 1203 the name of the input file containing the preprocessed output was used. 1204 12052008-11-11: wsfulton 1206 [Java] Add patch #2152691 from MATSUURA Takanori which fixes compiles using the 1207 Intel compiler 1208 12092008-11-01: wsfulton 1210 Add patch #2128249 from Anatoly Techtonik which corrects the C/C++ proxy 1211 class being reported for Python docstrings when %rename is used. 1212 12132008-11-01: wsfulton 1214 Add the strip encoder patch from Anatoly Techtonik #2130016. This enables an 1215 easy way to rename symbols by stripping a commonly used prefix in all the 1216 function/struct names. It works in the same way as the other encoders, such as 1217 title, lower, command etc outlined in CHANGES file dated 12/30/2005. Example 1218 below will rename wxAnotherWidget to AnotherWidget and wxDoSomething to 1219 DoSomething: 1220 1221 %rename("%(strip:[wx])s") ""; 1222 1223 struct wxAnotherWidget { 1224 void wxDoSomething(); 1225 }; 1226 12272008-09-26: mutandiz 1228 [allegrocl] 1229 Lots of test-suite work. 1230 - Fix ordering of wrapper output and %{ %} header output. 1231 - Fix declarations of local vars in C wrappers. 1232 - Fix declaration of defined constants in C wrappers. 1233 - Fix declaration of EnumValues in C wrappers. 1234 - add some const typemaps to allegrocl.swg 1235 - add rename for operator bool() overloads. 1236 12372008-09-25: olly 1238 [PHP5] Fill in typemaps for SWIGTYPE and void * (SF#2095186). 1239 12402008-09-22: mutandiz (Mikel Bancroft) 1241 [allegrocl] 1242 - Support wrapping of types whose definitions are not seen by 1243 SWIG. They are treated as forward-referenced classes and if a 1244 definition is not seen are treated as (* :void). 1245 - Don't wrap the contents of unnamed namespaces. 1246 - More code cleanup. Removed some extraneous warnings. 1247 - start work on having the allegrocl mod pass the cpp test-suite. 1248 12492008-09-19: olly 1250 [PHP5] Add typemaps for long long and unsigned long long. 1251 12522008-09-18: wsfulton 1253 [C#] Added C# array typemaps provided by Antti Karanta. 1254 The arrays provide a way to use MarshalAs(UnmanagedType.LPArray) 1255 and pinning the array using 'fixed'. See arrays_csharp.i library file 1256 for details. 1257 12582008-09-18: wsfulton 1259 Document the optional module attribute in the %import directive, 1260 see Modules.html. Add a warning for Python wrappers when the 1261 module name for an imported base class is missing, requiring the 1262 module attribute to be added to %import, eg 1263 1264 %import(module="FooModule") foo.h 1265 12662008-09-18: olly 1267 [PHP5] Change the default input typemap for char * to turn PHP 1268 Null into C NULL (previously it was converted to an empty string). 1269 The new behaviour is consistent with how the corresponding output 1270 typemap works (SF#2025719). 1271 1272 If you want to keep the old behaviour, add the following typemap 1273 to your interface file (PHP's convert_to_string_ex() function does 1274 the converting from PHP Null to an empty string): 1275 1276 %typemap(in) char * { 1277 convert_to_string_ex($input); 1278 $1 = Z_STRVAL_PP($input); 1279 } 1280 12812008-09-18: olly 1282 [PHP5] Fix extra code added to proxy class constructors in the case 1283 where the only constructor takes no arguments. 1284 12852008-09-18: olly 1286 [PHP5] Fix wrapping of a renamed enumerated value of an enum class 1287 member (SF#2095273). 1288 12892008-09-17: mutandiz (Mikel Bancroft) 1290 [allegrocl] 1291 - Fix how forward reference typedefs are handled, so as not to conflict 1292 with other legit typedefs. 1293 - Don't (for now) perform an ffitype typemap lookup when trying to 1294 when calling compose_foreign_type(). This is actually a useful thing 1295 to do in certain cases, the test cases for which I can't currently 1296 locate :/. It's breaking some wrapping behavior that is more commonly 1297 seen, however. I'll readd in a more appropriate way when I can 1298 recreate the needed test case, or a user complains (which means 1299 they probably have a test case). 1300 - document the -isolate command-line arg in the 'swig -help' output. 1301 It was in the html docs, but not there. 1302 - small amount of code cleanup, removed some unused code. 1303 - some minor aesthetic changes. 1304 13052008-09-12: bhy 1306 [Python] Python 3.0 support branch merged into SWIG trunk. Thanks to 1307 Google Summer of Code 2008 for supporting this project! By default 1308 SWIG will generate interface files compatible with both Python 2.x 1309 and 3.0. And there's also some Python 3 new features that can be 1310 enabled by passing a "-py3" command line option to SWIG. These 1311 features are: 1312 1313 - Function annotation support 1314 Also, the parameter list of proxy function will be generated, 1315 even without the "-py3" option. However, the parameter list 1316 will fallback to *args if the function (or method) is overloaded. 1317 - Buffer interface support 1318 - Abstract base class support 1319 1320 For details of Python 3 support and these features, please see the 1321 "Python 3 Support" section in the "SWIG and Python" chapter of the SWIG 1322 documentation. 1323 1324 The "-apply" command line option and support of generating codes 1325 using apply() is removed. Since this is only required by very old 1326 Python. 1327 1328 This merge also patched SWIG's parser to solve a bug. By this patch, 1329 SWIG features able to be correctly applied on C++ conversion operator, 1330 such like this: 1331 1332 %feature("shadow") *::operator bool %{ ... %} 1333 13342008-09-02: richardb 1335 [Python] Commit patch #2089149: Director exception handling mangles 1336 returned exception. Exceptions raised by Python code in directors 1337 are now passed through to the caller without change. Also, remove 1338 the ": " prefix which used to be added to other director exceptions 1339 (eg, those due to incorrect return types). 1340 13412008-09-02: wsfulton 1342 [Python] Commit patch #1988296 GCItem multiple module linking issue when using 1343 directors. 1344 13452008-09-02: wsfulton 1346 [C#] Support for 'using' and 'fixed' blocks in the 'csin' typemap is now 1347 possible through the use of the pre attribute and the new terminator attribute, eg 1348 1349 %typemap(csin, 1350 pre=" using (CDate temp$csinput = new CDate($csinput)) {", 1351 terminator=" } // terminate temp$csinput using block", 1352 ) const CDate & 1353 "$csclassname.getCPtr(temp$csinput)" 1354 1355 See CSharp.html for more info. 1356 13572008-09-01: wsfulton 1358 [CFFI] Commit patch #2079381 submitted by Boris Smilga - constant exprs put into 1359 no-eval context in DEFCENUM 1360 13612008-08-02: wuzzeb 1362 [Chicken,Allegro] Commit Patch 2019314 1363 Fixes a build error in chicken, and several build errors and other errors 1364 in Allegro CL 1365 13662008-07-19: wsfulton 1367 Fix building of Tcl examples/test-suite on Mac OSX reported by Gideon Simpson. 1368 13692008-07-17: wsfulton 1370 Fix SF #2019156 Configuring with --without-octave or --without-alllang 1371 did not disable octave. 1372 13732008-07-14: wsfulton 1374 [Java, C#] Fix director typemaps for pointers so that NULL pointers are correctly 1375 marshalled to C#/Java null in director methods. 1376 13772008-07-04: olly 1378 [PHP] For std_vector.i and std_map.i, rename empty() to is_empty() 1379 since "empty" is a PHP reserved word. Based on patch from Mark Klein 1380 in SF#1943417. 1381 13822008-07-04: olly 1383 [PHP] The deprecated command line option "-make" has been removed. 1384 Searches on Google codesearch suggest that nobody is using it now 1385 anyway. 1386 13872008-07-04: olly 1388 [PHP] The SWIG cdata.i library module is now supported. 1389 13902008-07-03: olly 1391 [PHP] The deprecated command line option "-phpfull" has been 1392 removed. We recommend building your extension as a dynamically 1393 loadable module. 1394 13952008-07-02: olly 1396 [PHP4] Support for PHP4 has been removed. The PHP developers are 1397 no longer making new PHP4 releases, and won't even be providing 1398 patches for critical security issues after 2008-08-08. 1399 14002008-07-02: olly 1401 [Python] Import the C extension differently for Python 2.6 and 1402 later so that an implicit relative import doesn't produce a 1403 deprecation warning for 2.6 and a failure for 2.7 and later. 1404 Patch from Richard Boulton in SF#2008229, plus follow-up patches 1405 from Richard and Haoyu Bai. 1406 1407Version 1.3.36 (24 June 2008) 1408============================= 1409 141006/24/2008: wsfulton 1411 Remove deprecated -c commandline option (runtime library generation). 1412 141306/24/2008: olly 1414 [PHP] Fix assertion failure when handling %typemap(in,numinputs=0) 1415 (testcase ignore_parameter). 1416 141706/24/2008: olly 1418 [PHP] Fix segfault when wrapping a non-class function marked with 1419 %newobject (testcase char_strings). 1420 142106/22/2008: wsfulton 1422 [Java] Add a way to use AttachCurrentThreadAsDaemon instead of AttachCurrentThread 1423 in director code. Define the SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON macro, see 1424 Lib/java/director.swg. 1425 142606/21/2008: wsfulton 1427 [Ruby] Fix crashing in the STL wrappers (reject! and delete_if methods) 1428 142906/19/2008: wsfulton 1430 [Java, C#] C# and Java keywords will be renamed instead of just issuing a warning 1431 and then generating uncompileable code. Warning 314 gives the new name when a 1432 keyword is found. 1433 143406/19/2008: wsfulton 1435 [R] Keyword handling added. R Keywords will be renamed as necessary. 1436 Warning 314 gives the new name when a keyword is found. 1437 143806/17/2008: mgossage 1439 [Lua] Added missing support for bool& and bool*. Added runtest for li_typemaps testcase. 1440 (Bug #1938142) 1441 144206/07/2008: bhy 1443 Added test case keyword_rename, then made the keyword renaming works properly 1444 by fixing Swig_name_make() for a incomplete condition checking. 1445 144606/02/2008: wsfulton 1447 [Java, C#] Fix enum wrappers when using -noproxy. 1448 144905/30/2008: bhy 1450 Added std::wstring into Lib/typemaps/primtypes.swg, since it is also a primitive 1451 type in SWIG - fixed SF #1976978. 1452 145305/29/2008: wsfulton 1454 [Java, C#] Fix variable wrappers when using -noproxy. 1455 145605/29/2008: bhy 1457 [Python] Fixed a typo of %#ifdef in Lib/python/pycontainer.swg, which is related 1458 to -extranative SWIG option - SF #1971977. 1459 146005/20/2008: wsfulton 1461 New partialcheck makefile targets for partial testing of the test-suite. These 1462 just invoke SWIG, ie no compilation and no runtime testing. It can be faster 1463 when developing by just doing a directory diff of the files SWIG generates 1464 against those from a previous run. Example usage from the top level directory: 1465 1466 make partialcheck-test-suite 1467 make partialcheck-java-test-suite 1468 1469 This change also encompasses more flexibility in running the test-suite, eg 1470 it is possible to prefix the command line which runs any target language test 1471 with a tool. See the RUNTOOL, COMPILETOOL and SWIGTOOL targets in the common.mk 1472 file and makefiles in the test-suite directory. For example it is possible to 1473 run the runtime tests through valgrind using: 1474 1475 make check RUNTOOL="valgrind --leak-check=full" 1476 1477 or invoke SWIG under valgrind using: 1478 1479 make check SWIGTOOL="valgrind --tool=memcheck" 1480 148105/19/2008: drjoe 1482 [R] Fixed define that was breaking pre-2.7. Checked in 1483 patch from Soren Sonnenburg that creates strings in 1484 version independent way 1485 148605/15/2008: wsfulton 1487 [Java] Fix variable name clash in directors - SF #1963316 reported by Tristan. 1488 148905/14/2008: wsfulton 1490 Add an optimisation for functions that return objects by value, reducing 1491 the number of copies of the object that are made. Implemented using an 1492 optional attribute in the "out" typemap called "optimal". Details in 1493 Typemaps.html. 1494 149505/11/2008: olly 1496 [PHP] Check for %feature("notabstract") when generating PHP5 class 1497 wrapper. 1498 149905/11/2008: wsfulton 1500 Fix SF #1943608 - $self substitution in %contract, patch submitted by 1501 Toon Verstraelen. 1502 150305/09/2008: olly 1504 [PHP] Fix char * typemaps to work when applied to signed char * and 1505 unsigned char * (uncovered by testcase apply_strings). 1506 150705/09/2008: wsfulton 1508 Fix wrapping of char * member variables when using allprotected mode. 1509 Bug reported by Warren Wang. 1510 151105/09/2008: olly 1512 [PHP] Fix bad PHP code generated when wrapping an enum in a 1513 namespace (uncovered by testcase arrays_scope). 1514 151505/09/2008: olly 1516 [PHP] SWIG now runs the PHP testsuite using PHP5, not PHP4. PHP4 1517 is essentially obsolete now, so we care much more about solid PHP5 1518 support. 1519 152005/07/2008: wsfulton 1521 STL fixes when using %import rather than %include and the Solaris Workshop 1522 compiler and the Roguewave STL. 1523 152405/07/2008: wsfulton 1525 Fix wrapping of overloaded protected methods when using allprotected mode. 1526 Bug reported by Warren Wang. 1527 152805/03/2008: wsfulton 1529 Commit patch #1956607 to add -MT support from Richard Boulton. 1530 This patch mirrors the gcc -MT option which allows one to change the default 1531 Makefile target being generated when generating makefiles with the -M family 1532 of options. For example: 1533 1534 $ swig -java -MM -MT overiddenname -c++ example.i 1535 overiddenname: \ 1536 example.i \ 1537 example.h 1538 153904/30/2008: mgossage 1540 [Lua] Removed generation of _wrap_delete_XXXXX (wrappered destructor) 1541 which was unused and causing warning with g++ -Wall. 1542 Removed other unused warning in typemaps.i and other places. 1543 Added Examples/lua/embed3, and run tests a few test cases. 1544 154504/24/2008: olly 1546 [Python] Fix generated code for IBM's C++ compiler on AIX (patch 1547 from Goeran Uddeborg in SF#1928048). 1548 154904/24/2008: olly 1550 Rename BSIZE in Examples/test-suite/arrays_scope.i to BBSIZE to 1551 avoid a clash with BSIZE defined by headers on AIX with Perl 1552 (reported in SF#1928048). 1553 155404/20/2008: wsfulton 1555 Add the ability to wrap all protected members when using directors. 1556 Previously only the virtual methods were available to the target language. 1557 Now all protected members, (static and non-static variables, non-virtual methods 1558 and static methods) are wrapped when using the allprotected mode. The allprotected 1559 mode is turned on in the module declaration: 1560 1561 %module(directors="1", allprotected="1") modulename 1562 1563Version 1.3.35 (7 April 2008) 1564=============