From 76ad52be5886126e80184632949f5a30a3c30e83 Mon Sep 17 00:00:00 2001 From: Bassem Girgis Date: Sun, 4 Aug 2019 21:38:19 -0500 Subject: [PATCH] update swig on windows --- winx64/bin/swig-3.0.12/CCache/ccache-swig.exe | Bin 183499 -> 0 bytes winx64/bin/swig-3.0.12/CHANGES.current | 133 - .../Doc/Manual/SWIGDocumentation.pdf | Bin 5136078 -> 0 bytes .../Examples/csharp/extend/example.sln | 38 - .../Examples/csharp/funcptr/example.sln | 38 - .../Examples/csharp/nested/example.sln | 38 - .../Examples/csharp/reference/example.sln | 38 - .../Examples/csharp/simple/example.sln | 38 - .../Examples/csharp/template/example.sln | 38 - .../Examples/csharp/variables/example.sln | 38 - .../Examples/guile/simple/example.c | 21 - .../Examples/guile/simple/runme.scm | 26 - .../Examples/javascript/exception/example.i | 12 - .../Examples/mzscheme/simple/README | 1 - .../Examples/mzscheme/simple/example.c | 24 - .../Examples/mzscheme/simple/example.i | 16 - .../Examples/mzscheme/simple/runme.scm | 24 - .../Examples/mzscheme/std_vector/Makefile | 21 - .../Examples/ocaml/argout_ref/Makefile | 31 - .../Examples/ocaml/argout_ref/example.i | 8 - .../Examples/ocaml/argout_ref/example_prog.ml | 26 - .../ocaml/scoped_enum/example_prog.ml | 4 - .../Examples/perl5/java/Example.java | 29 - .../swig-3.0.12/Examples/perl5/java/Makefile | 24 - .../swig-3.0.12/Examples/perl5/java/example.i | 10 - .../swig-3.0.12/Examples/perl5/java/runme.pl | 29 - .../swig-3.0.12/Examples/php/disown/runme.php | 49 - .../Examples/php/pragmas/example.i | 31 - .../Examples/php/pragmas/runme.php | 5 - .../Examples/php/variables/runme.php | 96 - .../Examples/php5/callback/Makefile | 19 - .../Examples/php5/callback/index.html | 19 - .../Examples/php5/callback/runme.php | 47 - .../bin/swig-3.0.12/Examples/php5/check.list | 19 - .../swig-3.0.12/Examples/php5/class/runme.php | 60 - .../Examples/php5/constants/Makefile | 20 - .../Examples/php5/constants/example.i | 26 - .../Examples/php5/constants/runme.php | 28 - .../Examples/php5/cpointer/Makefile | 20 - .../Examples/php5/cpointer/example.c | 16 - .../Examples/php5/cpointer/example.i | 31 - .../Examples/php5/cpointer/runme.php | 47 - .../Examples/php5/disown/example.cxx | 51 - .../Examples/php5/disown/example.h | 50 - .../Examples/php5/disown/example.i | 12 - .../Examples/php5/enum/example.cxx | 37 - .../swig-3.0.12/Examples/php5/enum/runme.php | 32 - .../swig-3.0.12/Examples/php5/extend/Makefile | 19 - .../Examples/php5/extend/index.html | 19 - .../Examples/php5/extend/runme.php | 76 - .../Examples/php5/funcptr/Makefile | 20 - .../Examples/php5/funcptr/example.h | 7 - .../Examples/php5/funcptr/runme.php | 24 - .../Examples/php5/overloading/Makefile | 20 - .../Examples/php5/overloading/example.cxx | 55 - .../Examples/php5/overloading/example.h | 46 - .../Examples/php5/overloading/example.i | 8 - .../Examples/php5/overloading/runme.php | 58 - .../Examples/php5/pointer/Makefile | 20 - .../Examples/php5/pointer/example.c | 16 - .../Examples/php5/pointer/example.i | 30 - .../Examples/php5/pointer/runme.php | 35 - .../Examples/php5/pragmas/Makefile | 20 - .../Examples/php5/pragmas/include.php | 7 - .../Examples/php5/pragmas/runme.php | 5 - .../swig-3.0.12/Examples/php5/proxy/Makefile | 20 - .../Examples/php5/proxy/example.cxx | 43 - .../swig-3.0.12/Examples/php5/proxy/example.i | 12 - .../swig-3.0.12/Examples/php5/proxy/runme.php | 68 - .../Examples/php5/reference/Makefile | 20 - .../Examples/php5/reference/example.cxx | 49 - .../Examples/php5/reference/example.h | 22 - .../Examples/php5/reference/example.i | 43 - .../Examples/php5/reference/runme.php | 49 - .../swig-3.0.12/Examples/php5/simple/Makefile | 20 - .../Examples/php5/simple/runme.php | 25 - .../swig-3.0.12/Examples/php5/sync/Makefile | 20 - .../Examples/php5/sync/example.cxx | 13 - .../swig-3.0.12/Examples/php5/sync/example.h | 9 - .../swig-3.0.12/Examples/php5/sync/example.i | 7 - .../swig-3.0.12/Examples/php5/sync/runme.php | 15 - .../swig-3.0.12/Examples/php5/value/Makefile | 20 - .../swig-3.0.12/Examples/php5/value/example.c | 13 - .../swig-3.0.12/Examples/php5/value/example.h | 8 - .../swig-3.0.12/Examples/php5/value/example.i | 17 - .../swig-3.0.12/Examples/php5/value/runme.php | 43 - .../Examples/php5/variables/Makefile | 20 - .../Examples/php5/variables/example.c | 95 - .../Examples/php5/variables/example.h | 34 - .../Examples/php5/variables/example.i | 44 - .../Examples/python/callback/example.cxx | 4 - .../Examples/python/extend/example.cxx | 4 - .../Examples/python/extend/example.h | 56 - .../Examples/python/extend/example.i | 15 - .../import_packages/from_init1/runme.py | 13 - .../import_packages/from_init2/runme.py | 13 - .../import_packages/from_init3/runme.py | 13 - .../import_packages/namespace_pkg/nonpkg.py | 5 - .../import_packages/namespace_pkg/normal.py | 7 - .../import_packages/namespace_pkg/split.py | 9 - .../import_packages/namespace_pkg/zipsplit.py | 9 - .../import_packages/relativeimport1/runme.py | 13 - .../import_packages/relativeimport2/runme.py | 13 - .../import_packages/relativeimport3/runme.py | 13 - .../split_modules/vanilla/runme.py | 10 - .../split_modules/vanilla_split/foo.i | 10 - .../split_modules/vanilla_split/runme.py | 10 - .../Examples/python/java/Example.java | 29 - .../swig-3.0.12/Examples/python/java/Makefile | 25 - .../Examples/python/java/example.i | 13 - .../swig-3.0.12/Examples/python/java/runme.py | 16 - .../Examples/ruby/funcptr/example.c | 17 - .../Examples/ruby/funcptr/example.i | 15 - .../Examples/ruby/java/Example.java | 29 - .../swig-3.0.12/Examples/ruby/java/Makefile | 24 - .../swig-3.0.12/Examples/ruby/java/example.i | 9 - .../swig-3.0.12/Examples/ruby/java/runme.rb | 18 - .../swig-3.0.12/Examples/tcl/enum/example.h | 13 - .../Examples/tcl/java/Example.java | 29 - .../swig-3.0.12/Examples/tcl/java/Makefile | 24 - .../swig-3.0.12/Examples/tcl/java/example.i | 8 - .../swig-3.0.12/Examples/tcl/java/runme.tcl | 15 - .../Examples/test-suite/complextest.i | 61 - .../cpp11_alternate_function_syntax.i | 18 - .../Examples/test-suite/cpp11_hash_tables.i | 43 - .../Examples/test-suite/cpp11_static_assert.i | 17 - .../Examples/test-suite/cpp_broken.i | 12 - .../test-suite/csharp/director_basic_runme.cs | 74 - .../Examples/test-suite/default_args_c.i | 14 - .../Examples/test-suite/director_thread.i | 102 - .../Examples/test-suite/extern_throws.i | 18 - .../test-suite/go/varargs_overload_runme.go | 38 - .../test-suite/java/li_std_vector_runme.java | 36 - .../Examples/test-suite/li_std_except.i | 40 - .../Examples/test-suite/li_std_list.i | 46 - .../Examples/test-suite/li_std_set.i | 34 - .../test-suite/member_funcptr_galore.i | 96 - .../Examples/test-suite/null_pointer.i | 16 - .../Examples/test-suite/ocaml/Makefile.in | 77 - .../test-suite/ocaml/throw_exception_runme.ml | 28 - .../test-suite/ocaml/typedef_mptr_runme.ml | 16 - .../Examples/test-suite/ocaml/unions_runme.ml | 28 - .../test-suite/perl5/global_vars_runme.pl | 11 - .../php/abstract_inherit_ok_runme.php | 12 - .../test-suite/php/abstract_inherit_runme.php | 14 - .../test-suite/php/arrayptr_runme.php | 14 - .../test-suite/php/arrays_global_runme.php | 19 - .../php/arrays_global_twodim_runme.php | 22 - .../Examples/test-suite/php/arrays_runme.php | 18 - .../test-suite/php/arrays_scope_runme.php | 16 - .../Examples/test-suite/php/casts_runme.php | 18 - .../test-suite/php/class_ignore_runme.php | 16 - .../test-suite/php/cpp_basic_runme.php | 20 - .../test-suite/php/cpp_static_runme.php | 14 - .../php/director_abstract_runme.php | 62 - .../test-suite/php/director_classic_runme.php | 150 - .../test-suite/php/director_default_runme.php | 20 - .../test-suite/php/director_detect_runme.php | 55 - .../test-suite/php/director_enum_runme.php | 25 - .../test-suite/php/director_extend_runme.php | 24 - .../test-suite/php/director_frob_runme.php | 19 - .../test-suite/php/director_profile_runme.php | 53 - .../test-suite/php/director_string_runme.php | 34 - .../test-suite/php/director_unroll_runme.php | 29 - .../test-suite/php/exception_order_runme.php | 39 - .../test-suite/php/li_carrays_cpp_runme.php | 22 - .../test-suite/php/li_carrays_runme.php | 22 - .../test-suite/php/li_factory_runme.php | 22 - .../test-suite/php/newobject1_runme.php | 19 - .../test-suite/php/php_iterator_runme.php | 24 - .../Examples/test-suite/php/prefix_runme.php | 18 - .../php/template_arg_typename_runme.php | 18 - .../Examples/test-suite/php5/Makefile.in | 80 - .../test-suite/php5/add_link_runme.php | 22 - .../Examples/test-suite/php5/argout_runme.php | 38 - .../test-suite/php5/arrays_global_runme.php | 19 - .../php5/arrays_global_twodim_runme.php | 22 - .../Examples/test-suite/php5/arrays_runme.php | 18 - .../test-suite/php5/arrays_scope_runme.php | 16 - .../test-suite/php5/callback_runme.php | 9 - .../test-suite/php5/char_strings_runme.php | 43 - .../php5/conversion_namespace_runme.php | 13 - .../php5/conversion_ns_template_runme.php | 10 - .../test-suite/php5/conversion_runme.php | 13 - ...pp11_strongly_typed_enumerations_runme.php | 169 - .../test-suite/php5/cpp_basic_runme.php | 20 - .../test-suite/php5/cpp_static_runme.php | 14 - .../test-suite/php5/director_basic_runme.php | 58 - .../php5/director_exception_runme.php | 127 - .../php5/director_finalizer_runme.php | 61 - .../test-suite/php5/director_frob_runme.php | 19 - .../test-suite/php5/director_nested_runme.php | 74 - .../php5/director_pass_by_value_runme.php | 24 - .../php5/director_protected_runme.php | 70 - .../test-suite/php5/director_stl_runme.php | 60 - .../test-suite/php5/director_thread_runme.php | 32 - .../test-suite/php5/director_unroll_runme.php | 29 - .../php5/enum_scope_template_runme.php | 15 - .../test-suite/php5/evil_diamond_ns_runme.php | 18 - .../php5/evil_diamond_prop_runme.php | 38 - .../test-suite/php5/evil_diamond_runme.php | 16 - .../php5/extend_template_ns_runme.php | 12 - .../test-suite/php5/extend_template_runme.php | 12 - .../test-suite/php5/grouping_runme.php | 22 - .../php5/ignore_parameter_runme.php | 38 - .../test-suite/php5/import_nomodule_runme.php | 20 - .../test-suite/php5/li_carrays_cpp_runme.php | 22 - .../test-suite/php5/li_carrays_runme.php | 22 - .../test-suite/php5/li_std_string_runme.php | 31 - .../php5/li_std_vector_member_var_runme.php | 30 - .../test-suite/php5/overload_rename_runme.php | 19 - .../php5/overload_return_type_runme.php | 13 - .../php5/pointer_reference_runme.php | 18 - .../php5/preproc_constants_c_runme.php | 66 - .../php5/preproc_constants_runme.php | 74 - .../test-suite/php5/primitive_ref_runme.php | 34 - .../test-suite/php5/rename_scope_runme.php | 16 - .../Examples/test-suite/php5/skel.php | 15 - .../php5/smart_pointer_rename_runme.php | 27 - .../test-suite/php5/swig_exception_runme.php | 33 - .../Examples/test-suite/php5/sym_runme.php | 22 - .../php5/template_construct_runme.php | 11 - .../Examples/test-suite/php5/tests.php | 237 - .../php5/threads_exception_runme.php | 43 - .../php5/typedef_reference_runme.php | 13 - .../php5/typemap_ns_using_runme.php | 9 - .../Examples/test-suite/php5/using1_runme.php | 9 - .../Examples/test-suite/php5/using2_runme.php | 9 - .../php5/valuewrapper_base_runme.php | 13 - .../php5/virtual_vs_nonvirtual_base_runme.php | 11 - .../test-suite/php5/wrapmacro_runme.php | 12 - .../test-suite/python/autodoc_runme.py | 367 - .../test-suite/python/complextest_runme.py | 17 - .../cpp11_alternate_function_syntax_runme.py | 14 - .../python/cpp11_raw_string_literals_runme.py | 48 - .../test-suite/python/cpp_static_runme.py | 43 - .../test-suite/python/default_args_c_runme.py | 6 - .../python/global_namespace_runme.py | 58 - .../test-suite/python/li_std_map_runme.py | 52 - .../python/python_abstractbase_runme3.py | 25 - .../python/python_nondynamic_runme.py | 48 - .../test-suite/python/python_pybuf_runme3.py | 41 - .../python/varargs_overload_runme.py | 30 - .../Examples/test-suite/python_pythoncode.i | 31 - .../Examples/test-suite/register_par.i | 6 - .../scilab/varargs_overload_runme.sci | 21 - winx64/bin/swig-3.0.12/Lib/csharp/std_pair.i | 34 - winx64/bin/swig-3.0.12/Lib/d/std_map.i | 59 - winx64/bin/swig-3.0.12/Lib/d/std_pair.i | 34 - winx64/bin/swig-3.0.12/Lib/gcj/cni.i | 39 - winx64/bin/swig-3.0.12/Lib/gcj/cni.swg | 14 - winx64/bin/swig-3.0.12/Lib/gcj/javaprims.i | 422 - winx64/bin/swig-3.0.12/Lib/go/std_vector.i | 78 - winx64/bin/swig-3.0.12/Lib/mzscheme/stl.i | 11 - .../bin/swig-3.0.12/Lib/ocaml/libswigocaml.h | 20 - winx64/bin/swig-3.0.12/Lib/ocaml/std_map.i | 73 - winx64/bin/swig-3.0.12/Lib/ocaml/stl.i | 12 - winx64/bin/swig-3.0.12/Lib/octave/stl.i | 6 - winx64/bin/swig-3.0.12/Lib/perl5/cni.i | 12 - winx64/bin/swig-3.0.12/Lib/perl5/jstring.i | 48 - winx64/bin/swig-3.0.12/Lib/perl5/std_pair.i | 34 - winx64/bin/swig-3.0.12/Lib/perl5/stl.i | 11 - winx64/bin/swig-3.0.12/Lib/php/std_map.i | 76 - winx64/bin/swig-3.0.12/Lib/php/std_pair.i | 34 - winx64/bin/swig-3.0.12/Lib/php/std_vector.i | 102 - winx64/bin/swig-3.0.12/Lib/php/stl.i | 12 - winx64/bin/swig-3.0.12/Lib/php5/const.i | 51 - winx64/bin/swig-3.0.12/Lib/php5/director.swg | 170 - winx64/bin/swig-3.0.12/Lib/php5/factory.i | 109 - winx64/bin/swig-3.0.12/Lib/php5/globalvar.i | 361 - winx64/bin/swig-3.0.12/Lib/php5/php.swg | 529 - winx64/bin/swig-3.0.12/Lib/php5/phpinit.swg | 25 - winx64/bin/swig-3.0.12/Lib/php5/phpkw.swg | 866 - winx64/bin/swig-3.0.12/Lib/php5/phppointers.i | 42 - winx64/bin/swig-3.0.12/Lib/php5/phprun.swg | 280 - winx64/bin/swig-3.0.12/Lib/php5/std_common.i | 10 - winx64/bin/swig-3.0.12/Lib/php5/std_pair.i | 34 - winx64/bin/swig-3.0.12/Lib/php5/std_string.i | 79 - winx64/bin/swig-3.0.12/Lib/php5/stl.i | 12 - winx64/bin/swig-3.0.12/Lib/php5/typemaps.i | 322 - winx64/bin/swig-3.0.12/Lib/php5/utils.i | 114 - winx64/bin/swig-3.0.12/Lib/python/cni.i | 2 - winx64/bin/swig-3.0.12/Lib/python/jstring.i | 72 - winx64/bin/swig-3.0.12/Lib/python/pyabc.i | 10 - winx64/bin/swig-3.0.12/Lib/python/pyhead.swg | 215 - .../swig-3.0.12/Lib/python/std_basic_string.i | 103 - .../Lib/python/std_unordered_map.i | 259 - .../Lib/python/std_unordered_multiset.i | 48 - .../Lib/python/std_unordered_set.i | 62 - winx64/bin/swig-3.0.12/Lib/python/stl.i | 7 - .../bin/swig-3.0.12/Lib/r/boost_shared_ptr.i | 309 - winx64/bin/swig-3.0.12/Lib/r/stl.i | 10 - winx64/bin/swig-3.0.12/Lib/ruby/cni.i | 2 - winx64/bin/swig-3.0.12/Lib/ruby/jstring.i | 44 - .../bin/swig-3.0.12/Lib/ruby/rubywstrings.swg | 72 - winx64/bin/swig-3.0.12/Lib/ruby/std_string.i | 9 - winx64/bin/swig-3.0.12/Lib/ruby/std_wstring.i | 3 - winx64/bin/swig-3.0.12/Lib/ruby/stl.i | 12 - winx64/bin/swig-3.0.12/Lib/scilab/std_map.i | 69 - winx64/bin/swig-3.0.12/Lib/scilab/stl.i | 6 - winx64/bin/swig-3.0.12/Lib/tcl/cni.i | 2 - winx64/bin/swig-3.0.12/Lib/tcl/jstring.i | 42 - winx64/bin/swig-3.0.12/Lib/tcl/std_deque.i | 1 - winx64/bin/swig-3.0.12/Lib/tcl/stl.i | 11 - .../bin/swig-3.0.12/Source/Modules/module.cxx | 59 - .../bin/swig-3.0.12/Source/Modules/php5.cxx | 2858 - .../swig-3.0.12/Source/Modules/swigmain.cxx | 210 - .../swig-3.0.12/Tools/config/ax_boost_base.m4 | 285 - winx64/bin/swig-3.0.12/Tools/mkdist.py | 100 - winx64/bin/swig-3.0.12/Tools/mkrelease.py | 49 - .../swig-3.0.12/Tools/travis-linux-install.sh | 111 - winx64/bin/swig-3.0.12/appveyor.yml | 78 - winx64/bin/swig-3.0.12/swig.exe | Bin 2292295 -> 0 bytes winx64/bin/swig-3.0.12/vms/aaareadme.txt | 18 - winx64/bin/swig-3.0.12/vms/build_end.com | 21 - winx64/bin/swig-3.0.12/vms/build_init.com | 13 - winx64/bin/swig-3.0.12/vms/build_swig.com | 1 - winx64/bin/swig-3.0.12/vms/genbuild.py | 155 - winx64/bin/swig-3.0.12/vms/logicals.com | 18 - .../bin/swig-3.0.12/vms/scripts/build_all.com | 15 - .../swig-3.0.12/vms/scripts/compil_cparse.com | 98 - .../swig-3.0.12/vms/scripts/compil_doh.com | 106 - .../vms/scripts/compil_modules1_1.com | 132 - .../vms/scripts/compil_preprocessor.com | 94 - .../swig-3.0.12/vms/scripts/compil_swig.com | 122 - winx64/bin/swig-3.0.12/vms/swigconfig.h | 2 - .../.travis.yml | 167 +- .../{swig-3.0.12 => swigwin-4.0.0}/ANNOUNCE | 16 +- .../CCache/COPYING | 0 .../CCache/Makefile.in | 35 +- .../CCache/README | 0 .../CCache/README.swig | 0 .../CCache/args.c | 0 .../bin/swigwin-4.0.0/CCache/ccache-swig.exe | Bin 0 -> 468210 bytes .../CCache/ccache.c | 0 .../CCache/ccache.h | 4 +- .../CCache/ccache.yo | 0 .../CCache/ccache_swig_config.h.in | 0 .../CCache/cleanup.c | 0 .../CCache/config.h.in | 3 + .../swigwin-4.0.0/CCache/config_win32.h.in | 3 + .../CCache/configure | 22 + .../CCache/configure.ac | 15 + .../CCache/debian/NEWS | 0 .../CCache/debian/README.Debian | 0 .../CCache/debian/changelog | 0 .../CCache/debian/compat | 0 .../CCache/debian/control | 0 .../CCache/debian/copyright | 0 .../CCache/debian/dirs | 0 .../CCache/debian/docs | 0 .../CCache/debian/examples | 0 .../CCache/debian/patches/01_no_home.diff | 0 .../debian/patches/02_ccache-compressed.diff | 0 .../debian/patches/03_long_options.diff | 0 .../debian/patches/04_ignore_profile.diff | 0 .../CCache/debian/patches/05_nfs_fix.diff | 0 .../CCache/debian/patches/06_md.diff | 0 .../CCache/debian/patches/07_cachedirtag.diff | 0 .../debian/patches/08_manpage_hyphens.diff | 0 .../debian/patches/09_respect_ldflags.diff | 0 .../CCache/debian/patches/10_lru_cleanup.diff | 0 .../CCache/debian/patches/11_utimes.diff | 0 .../patches/12_cachesize_permissions.diff | 0 .../CCache/debian/patches/13_html_links.diff | 0 .../debian/patches/14_hardlink_doc.diff | 0 .../CCache/debian/patches/CREDITS | 0 .../CCache/debian/rules | 0 .../CCache/debian/update-ccache | 0 .../CCache/debian/watch | 0 .../CCache/execute.c | 0 .../CCache/hash.c | 0 .../CCache/install-sh | 0 .../CCache/mdfour.c | 0 .../CCache/mdfour.h | 0 .../CCache/packaging/README | 0 .../CCache/packaging/ccache.spec | 0 .../CCache/snprintf.c | 3 + .../CCache/stats.c | 0 .../CCache/test.sh | 25 +- .../CCache/unify.c | 0 .../CCache/util.c | 0 .../CCache/web/index.html | 0 .../{swig-3.0.12 => swigwin-4.0.0}/CHANGES | 134 +- winx64/bin/swigwin-4.0.0/CHANGES.current | 1540 + .../{swig-3.0.12 => swigwin-4.0.0}/COPYRIGHT | 6 +- .../Doc/Devel/cmdopt.html | 0 .../Doc/Devel/engineering.html | 0 .../Doc/Devel/file.html | 0 .../Doc/Devel/index.html | 0 .../Doc/Devel/internals.html | 0 .../Doc/Devel/migrate.txt | 0 .../Doc/Devel/parm.html | 0 .../Doc/Devel/plan-gsoc-2012.txt | 341 + .../Doc/Devel/runtime.txt | 4 +- .../Doc/Devel/scanner.html | 0 .../Doc/Devel/tree.html | 2 +- .../Doc/Devel/wrapobj.html | 0 .../Doc/Manual/Allegrocl.html | 116 +- .../Doc/Manual/Android.html | 22 +- .../Doc/Manual/Arguments.html | 24 +- .../Doc/Manual/CCache.html | 40 +- .../Doc/Manual/CPlusPlus11.html | 144 +- .../swigwin-4.0.0/Doc/Manual/CPlusPlus14.html | 60 + .../swigwin-4.0.0/Doc/Manual/CPlusPlus17.html | 109 + .../Doc/Manual/CSharp.html | 274 +- .../Doc/Manual/Chicken.html | 40 +- .../Doc/Manual/Contents.html | 558 +- .../Doc/Manual/Contract.html | 10 +- .../Doc/Manual/Customization.html | 38 +- .../Doc/Manual/D.html | 58 +- .../bin/swigwin-4.0.0/Doc/Manual/Doxygen.html | 1838 + .../Doc/Manual/Extending.html | 414 +- .../Doc/Manual/Go.html | 140 +- .../Doc/Manual/Guile.html | 44 +- .../Doc/Manual/Introduction.html | 115 +- .../Doc/Manual/Java.html | 938 +- .../Doc/Manual/Javascript.html | 60 +- .../Doc/Manual/Library.html | 169 +- .../Doc/Manual/Lisp.html | 246 +- .../Doc/Manual/Lua.html | 22 +- .../Doc/Manual/Makefile | 6 + .../Doc/Manual/Modula3.html | 40 +- .../Doc/Manual/Modules.html | 16 +- .../Doc/Manual/Mzscheme.html | 10 +- .../Doc/Manual/Ocaml.html | 210 +- .../Doc/Manual/Octave.html | 52 +- .../Doc/Manual/Perl5.html | 242 +- .../Doc/Manual/Php.html | 136 +- .../Doc/Manual/Pike.html | 28 +- .../Doc/Manual/Preface.html | 7 +- .../Doc/Manual/Preprocessor.html | 46 +- .../Doc/Manual/Python.html | 1588 +- .../Doc/Manual/R.html | 64 +- .../Doc/Manual/README | 0 .../Doc/Manual/Ruby.html | 222 +- .../Doc/Manual/SWIG.html | 290 +- .../Doc/Manual/SWIGDocumentation.html | 73978 ++++++++-------- .../Doc/Manual/SWIGDocumentation.pdf | Bin 0 -> 4758748 bytes .../Doc/Manual/SWIGPlus.html | 1065 +- .../Doc/Manual/Scilab.html | 157 +- .../Doc/Manual/Scripting.html | 0 .../Doc/Manual/Sections.html | 25 +- .../Doc/Manual/Tcl.html | 156 +- .../Doc/Manual/Typemaps.html | 444 +- .../Doc/Manual/Varargs.html | 29 +- .../Doc/Manual/Warnings.html | 52 +- .../Doc/Manual/Windows.html | 6 +- .../Doc/Manual/android-class.png | Bin .../Doc/Manual/android-simple.png | Bin .../Doc/Manual/ch2.1.png | Bin .../Doc/Manual/chapters | 12 +- .../Doc/Manual/fixstyle.py | 0 .../Doc/Manual/index.html | 4 +- .../Doc/Manual/linkchecker.config | 0 .../Doc/Manual/makechap.py | 4 +- .../Doc/Manual/maketoc.py | 0 .../Doc/Manual/style.css | 0 .../Doc/Manual/swig16.png | Bin .../Doc/Manual/swightml.book | 12 +- .../{swig-3.0.12 => swigwin-4.0.0}/Doc/README | 0 .../Examples/Makefile.in | 572 +- .../Examples/README | 0 .../Examples/android/check.list | 0 .../android/class/AndroidManifest.xml | 0 .../Examples/android/class/Makefile | 0 .../Examples/android/class/ant.properties | 0 .../Examples/android/class/build.xml | 0 .../Examples/android/class/jni/Android.mk | 0 .../Examples/android/class/jni/example.cpp | 0 .../Examples/android/class/jni/example.h | 0 .../Examples/android/class/jni/example.i | 0 .../Examples/android/class/local.properties | 0 .../Examples/android/class/proguard.cfg | 0 .../Examples/android/class/project.properties | 0 .../android/class/res/layout/main.xml | 0 .../android/class/res/values/strings.xml | 0 .../src/org/swig/classexample/SwigClass.java | 0 .../android/extend/AndroidManifest.xml | 0 .../Examples/android/extend/Makefile | 0 .../Examples/android/extend/ant.properties | 0 .../Examples/android/extend/build.xml | 0 .../Examples/android/extend/jni/Android.mk | 0 .../android/extend/jni/Application.mk | 0 .../Examples/android/extend/jni/example.cpp | 0 .../Examples/android/extend/jni/example.h | 0 .../Examples/android/extend/jni/example.i | 0 .../Examples/android/extend/local.properties | 0 .../Examples/android/extend/proguard.cfg | 0 .../android/extend/project.properties | 0 .../android/extend/res/layout/main.xml | 0 .../android/extend/res/values/strings.xml | 0 .../org/swig/extendexample/SwigExtend.java | 0 .../android/simple/AndroidManifest.xml | 0 .../Examples/android/simple/Makefile | 0 .../Examples/android/simple/ant.properties | 0 .../Examples/android/simple/build.xml | 0 .../Examples/android/simple/jni/Android.mk | 0 .../Examples/android/simple/jni/example.c | 0 .../Examples/android/simple/jni/example.i | 0 .../Examples/android/simple/local.properties | 0 .../Examples/android/simple/proguard.cfg | 0 .../android/simple/project.properties | 0 .../android/simple/res/layout/main.xml | 0 .../android/simple/res/values/strings.xml | 0 .../src/org/swig/simple/SwigSimple.java | 0 .../Examples/chicken/README | 0 .../Examples/chicken/check.list | 0 .../Examples/chicken/class/Makefile | 0 .../Examples/chicken/class/example.cxx | 0 .../Examples/chicken/class/example.h | 0 .../Examples/chicken/class/example.i | 0 .../Examples/chicken/class/runme-lowlevel.scm | 0 .../Examples/chicken/class/runme-tinyclos.scm | 0 .../Examples/chicken/constants/Makefile | 0 .../Examples/chicken/constants/example.i | 0 .../Examples/chicken/constants/runme.scm | 0 .../Examples/chicken/egg/Makefile | 0 .../Examples/chicken/egg/README | 0 .../Examples/chicken/egg/mod1.i | 0 .../Examples/chicken/egg/mod2.i | 0 .../Examples/chicken/egg/multi.setup | 0 .../Examples/chicken/egg/multi_init.scm | 0 .../Examples/chicken/egg/single.i | 0 .../Examples/chicken/egg/single.setup | 0 .../Examples/chicken/egg/test.scm | 0 .../Examples/chicken/multimap/Makefile | 0 .../Examples/chicken/multimap/example.c | 0 .../Examples/chicken/multimap/example.i | 0 .../Examples/chicken/multimap/runme.scm | 0 .../Examples/chicken/overload/Makefile | 0 .../Examples/chicken/overload/README | 0 .../Examples/chicken/overload/example.cxx | 0 .../Examples/chicken/overload/example.h | 0 .../Examples/chicken/overload/example.i | 0 .../Examples/chicken/overload/runme.scm | 0 .../Examples/chicken/simple/Makefile | 0 .../Examples/chicken/simple/README | 0 .../Examples/chicken/simple/example.c | 0 .../Examples/chicken/simple/example.i | 0 .../Examples/chicken/simple/runme.scm | 0 .../Examples/contract/simple_c/example.c | 0 .../Examples/contract/simple_c/example.i | 0 .../Examples/contract/simple_c/runme1.py | 0 .../Examples/contract/simple_c/runme2.py | 0 .../Examples/contract/simple_cxx/example.cxx | 0 .../Examples/contract/simple_cxx/example.h | 0 .../Examples/contract/simple_cxx/example.i | 0 .../Examples/contract/simple_cxx/runme1.py | 0 .../Examples/contract/simple_cxx/runme2.py | 0 .../Examples/contract/simple_cxx/runme3.py | 0 .../Examples/csharp/arrays/Makefile | 0 .../Examples/csharp/arrays/example-cs.csproj | 0 .../Examples/csharp/arrays/example-vc.vcproj | 0 .../Examples/csharp/arrays/example.c | 0 .../Examples/csharp/arrays/example.h | 0 .../Examples/csharp/arrays/example.i | 0 .../Examples/csharp/arrays/example.sln | 76 +- .../Examples/csharp/arrays/runme.cs | 0 .../Examples/csharp/callback/Makefile | 0 .../csharp/callback/example-cs.csproj | 0 .../csharp/callback/example-vc.vcproj | 0 .../Examples/csharp/callback/example.cxx | 0 .../Examples/csharp/callback/example.h | 0 .../Examples/csharp/callback/example.i | 0 .../Examples/csharp/callback/example.sln | 76 +- .../Examples/csharp/callback/runme.cs | 0 .../Examples/csharp/check.list | 0 .../Examples/csharp/class/Makefile | 0 .../Examples/csharp/class/example-cs.csproj | 0 .../Examples/csharp/class/example-vc.vcproj | 0 .../Examples/csharp/class/example.cxx | 0 .../Examples/csharp/class/example.h | 0 .../Examples/csharp/class/example.i | 0 .../Examples/csharp/class/example.sln | 76 +- .../Examples/csharp/class/runme.cs | 0 .../Examples/csharp/enum/Makefile | 0 .../Examples/csharp/enum/example-cs.csproj | 0 .../Examples/csharp/enum/example-vc.vcproj | 0 .../Examples/csharp/enum/example.cxx | 0 .../Examples/csharp/enum/example.h | 0 .../Examples/csharp/enum/example.i | 0 .../Examples/csharp/enum/example.sln | 76 +- .../Examples/csharp/enum/runme.cs | 0 .../Examples/csharp/extend/Makefile | 0 .../Examples/csharp/extend/example-cs.csproj | 0 .../Examples/csharp/extend/example-vc.vcproj | 0 .../Examples/csharp/extend/example.cxx | 0 .../Examples/csharp/extend/example.h | 0 .../Examples/csharp/extend/example.i | 0 .../Examples/csharp/extend/example.sln | 38 + .../Examples/csharp/extend/runme.cs | 0 .../Examples/csharp/funcptr/Makefile | 0 .../Examples/csharp/funcptr/example-cs.csproj | 0 .../Examples/csharp/funcptr/example-vc.vcproj | 0 .../Examples/csharp/funcptr/example.c | 0 .../Examples/csharp/funcptr/example.h | 0 .../Examples/csharp/funcptr/example.i | 0 .../Examples/csharp/funcptr/example.sln | 38 + .../Examples/csharp/funcptr/runme.cs | 0 .../Examples/csharp/nested/Makefile | 0 .../Examples/csharp/nested/example-cs.csproj | 0 .../Examples/csharp/nested/example-vc.vcproj | 0 .../Examples/csharp/nested/example.cxx | 0 .../Examples/csharp/nested/example.h | 0 .../Examples/csharp/nested/example.i | 0 .../Examples/csharp/nested/example.sln | 38 + .../Examples/csharp/nested/runme.cs | 0 .../Examples/csharp/reference/Makefile | 0 .../csharp/reference/example-cs.csproj | 0 .../csharp/reference/example-vc.vcproj | 0 .../Examples/csharp/reference/example.cxx | 0 .../Examples/csharp/reference/example.h | 0 .../Examples/csharp/reference/example.i | 0 .../Examples/csharp/reference/example.sln | 38 + .../Examples/csharp/reference/runme.cs | 0 .../Examples/csharp/simple/Makefile | 0 .../Examples/csharp/simple/example-cs.csproj | 0 .../Examples/csharp/simple/example-vc.vcproj | 0 .../Examples/csharp/simple/example.c | 0 .../Examples/csharp/simple/example.i | 0 .../Examples/csharp/simple/example.sln | 38 + .../Examples/csharp/simple/runme.cs | 0 .../Examples/csharp/template/Makefile | 0 .../csharp/template/example-cs.csproj | 0 .../csharp/template/example-vc.vcproj | 0 .../Examples/csharp/template/example.h | 0 .../Examples/csharp/template/example.i | 0 .../Examples/csharp/template/example.sln | 38 + .../Examples/csharp/template/runme.cs | 0 .../Examples/csharp/variables/Makefile | 0 .../csharp/variables/example-cs.csproj | 0 .../csharp/variables/example-vc.vcproj | 0 .../Examples/csharp/variables/example.c | 0 .../Examples/csharp/variables/example.h | 0 .../Examples/csharp/variables/example.i | 0 .../Examples/csharp/variables/example.sln | 38 + .../Examples/csharp/variables/runme.cs | 0 .../Examples/d/callback/Makefile | 0 .../Examples/d/callback/d1/runme.d | 0 .../Examples/d/callback/d2/runme.d | 0 .../Examples/d/callback/example.cxx | 0 .../Examples/d/callback/example.h | 0 .../Examples/d/callback/example.i | 0 .../Examples/d/check.list | 0 .../Examples/d/class/Makefile | 0 .../Examples/d/class/d1/runme.d | 0 .../Examples/d/class/d2/runme.d | 0 .../Examples/d/class/example.cxx | 0 .../Examples/d/class/example.h | 0 .../Examples/d/class/example.i | 0 .../Examples/d/constants/Makefile | 0 .../Examples/d/constants/d1/runme.d | 0 .../Examples/d/constants/d2/runme.d | 0 .../Examples/d/constants/example.i | 0 .../Examples/d/enum/Makefile | 0 .../Examples/d/enum/d1/runme.d | 0 .../Examples/d/enum/d2/runme.d | 0 .../Examples/d/enum/example.cxx | 0 .../Examples/d/enum/example.h | 0 .../Examples/d/enum/example.i | 0 .../Examples/d/example.mk.in | 0 .../Examples/d/extend/Makefile | 0 .../Examples/d/extend/d1/runme.d | 0 .../Examples/d/extend/d2/runme.d | 0 .../Examples/d/extend/example.cxx | 0 .../Examples/d/extend/example.h | 0 .../Examples/d/extend/example.i | 0 .../Examples/d/funcptr/Makefile | 0 .../Examples/d/funcptr/d1/runme.d | 0 .../Examples/d/funcptr/d2/runme.d | 0 .../Examples/d/funcptr/example.c | 0 .../Examples/d/funcptr/example.h | 0 .../Examples/d/funcptr/example.i | 0 .../Examples/d/simple/Makefile | 0 .../Examples/d/simple/d1/runme.d | 0 .../Examples/d/simple/d2/runme.d | 0 .../Examples/d/simple/example.c | 0 .../Examples/d/simple/example.i | 0 .../Examples/d/variables/Makefile | 0 .../Examples/d/variables/d1/runme.d | 0 .../Examples/d/variables/d2/runme.d | 0 .../Examples/d/variables/example.c | 0 .../Examples/d/variables/example.h | 0 .../Examples/d/variables/example.i | 0 .../Examples/go/callback/Makefile | 0 .../Examples/go/callback/callback.cxx | 0 .../Examples/go/callback/example.h | 0 .../Examples/go/callback/example.i | 0 .../Examples/go/callback/gocallback.go | 2 +- .../Examples/go/callback/index.html | 0 .../Examples/go/callback/runme.go | 3 +- .../Examples/go/check.list | 0 .../Examples/go/class/Makefile | 0 .../Examples/go/class/class.cxx | 0 .../Examples/go/class/example.h | 0 .../Examples/go/class/example.i | 0 .../Examples/go/class/index.html | 0 .../Examples/go/class/runme.go | 3 +- .../Examples/go/constants/Makefile | 0 .../Examples/go/constants/example.i | 0 .../Examples/go/constants/index.html | 0 .../Examples/go/constants/runme.go | 3 +- .../Examples/go/director/Makefile | 0 .../Examples/go/director/director.go | 4 +- .../Examples/go/director/director.h | 0 .../Examples/go/director/example.i | 0 .../Examples/go/director/index.html | 0 .../Examples/go/director/runme.go | 3 +- .../Examples/go/enum/Makefile | 0 .../Examples/go/enum/enum.cxx | 0 .../Examples/go/enum/example.h | 0 .../Examples/go/enum/example.i | 0 .../Examples/go/enum/index.html | 0 .../Examples/go/enum/runme.go | 3 +- .../Examples/go/extend/Makefile | 0 .../Examples/go/extend/ceo.go | 0 .../Examples/go/extend/example.h | 0 .../Examples/go/extend/example.i | 0 .../Examples/go/extend/extend.cxx | 0 .../Examples/go/extend/index.html | 0 .../Examples/go/extend/runme.go | 3 +- .../Examples/go/funcptr/Makefile | 0 .../Examples/go/funcptr/example.h | 0 .../Examples/go/funcptr/example.i | 0 .../Examples/go/funcptr/funcptr.c | 0 .../Examples/go/funcptr/index.html | 0 .../Examples/go/funcptr/runme.go | 3 +- .../Examples/go/index.html | 0 .../Examples/go/multimap/Makefile | 0 .../Examples/go/multimap/example.i | 0 .../Examples/go/multimap/multimap.c | 0 .../Examples/go/multimap/runme.go | 3 +- .../Examples/go/pointer/Makefile | 0 .../Examples/go/pointer/example.i | 0 .../Examples/go/pointer/index.html | 0 .../Examples/go/pointer/pointer.c | 0 .../Examples/go/pointer/runme.go | 3 +- .../Examples/go/reference/Makefile | 0 .../Examples/go/reference/example.h | 0 .../Examples/go/reference/example.i | 0 .../Examples/go/reference/index.html | 0 .../Examples/go/reference/reference.cxx | 0 .../Examples/go/reference/runme.go | 3 +- .../Examples/go/simple/Makefile | 0 .../Examples/go/simple/example.i | 0 .../Examples/go/simple/index.html | 0 .../Examples/go/simple/runme.go | 3 +- .../Examples/go/simple/simple.c | 0 .../Examples/go/template/Makefile | 0 .../Examples/go/template/example.h | 0 .../Examples/go/template/example.i | 0 .../Examples/go/template/index.html | 0 .../Examples/go/template/runme.go | 3 +- .../Examples/go/variables/Makefile | 0 .../Examples/go/variables/example.h | 0 .../Examples/go/variables/example.i | 0 .../Examples/go/variables/index.html | 0 .../Examples/go/variables/runme.go | 3 +- .../Examples/go/variables/variables.c | 0 .../Examples/guile/README | 0 .../Examples/guile/check.list | 0 .../Examples/guile/class/Makefile | 0 .../Examples/guile/class/example.cxx | 0 .../Examples/guile/class/example.h | 0 .../Examples/guile/class/example.i | 0 .../Examples/guile/class/runme.scm | 0 .../Examples/guile/constants/Makefile | 0 .../Examples/guile/constants/example.i | 0 .../Examples/guile/constants/runme.scm | 0 .../Examples/guile/matrix/Makefile | 0 .../Examples/guile/matrix/README | 0 .../Examples/guile/matrix/example.i | 0 .../Examples/guile/matrix/matrix.c | 0 .../Examples/guile/matrix/matrix.i | 0 .../Examples/guile/matrix/runme.scm | 2 +- .../Examples/guile/matrix/vector.c | 0 .../Examples/guile/matrix/vector.h | 0 .../Examples/guile/matrix/vector.i | 0 .../Examples/guile/multimap/Makefile | 0 .../Examples/guile/multimap/example.c | 0 .../Examples/guile/multimap/example.i | 0 .../Examples/guile/multimap/runme.scm | 0 .../Examples/guile/multivalue/Makefile | 0 .../Examples/guile/multivalue/example.c | 0 .../Examples/guile/multivalue/example.i | 4 +- .../Examples/guile/multivalue/runme.scm | 0 .../Examples/guile/port/Makefile | 0 .../Examples/guile/port/README | 0 .../Examples/guile/port/example.c | 0 .../Examples/guile/port/example.i | 0 .../Examples/guile/port/runme.scm | 0 .../Examples/guile/simple/Makefile | 0 .../Examples/guile/simple/README | 0 .../Examples/guile}/simple/example.c | 0 .../Examples/guile/simple/example.i | 6 +- .../Examples/guile/simple/runme.scm | 22 + .../Examples/guile/std_vector/Makefile | 0 .../Examples/guile/std_vector/example.h | 0 .../Examples/guile/std_vector/example.i | 0 .../Examples/guile/std_vector/runme.scm | 0 .../Examples/index.html | 0 .../Examples/java/callback/Makefile | 0 .../Examples/java/callback/example.cxx | 0 .../Examples/java/callback/example.h | 0 .../Examples/java/callback/example.i | 0 .../Examples/java/callback/index.html | 0 .../Examples/java/callback/runme.java | 0 .../Examples/java/check.list | 1 + .../Examples/java/class/Makefile | 0 .../Examples/java/class/example.cxx | 0 .../Examples/java/class/example.dsp | 0 .../Examples/java/class/example.h | 0 .../Examples/java/class/example.i | 0 .../Examples/java/class/index.html | 0 .../Examples/java/class/runme.java | 0 .../Examples/java/constants/Makefile | 0 .../Examples/java/constants/example.i | 0 .../Examples/java/constants/index.html | 0 .../Examples/java/constants/runme.java | 0 .../Examples/java/doxygen}/Makefile | 13 +- .../Examples/java/doxygen/example.cxx | 48 + .../Examples/java/doxygen}/example.dsp | 0 .../Examples/java/doxygen/example.h | 107 + .../Examples/java/doxygen/example.i | 17 + .../Examples/java/doxygen/runme.java | 63 + .../Examples/java/enum/Makefile | 0 .../Examples/java/enum/example.cxx | 0 .../Examples/java/enum/example.h | 0 .../Examples/java/enum/example.i | 0 .../Examples/java/enum/index.html | 0 .../Examples/java/enum/runme.java | 0 .../Examples/java/extend/Makefile | 0 .../Examples/java/extend/example.cxx | 0 .../Examples/java/extend/example.h | 0 .../Examples/java/extend/example.i | 0 .../Examples/java/extend/index.html | 0 .../Examples/java/extend/runme.java | 0 .../Examples/java/funcptr/Makefile | 0 .../Examples/java/funcptr/example.c | 0 .../Examples/java/funcptr/example.h | 0 .../Examples/java/funcptr/example.i | 0 .../Examples/java/funcptr/index.html | 0 .../Examples/java/funcptr/runme.java | 0 .../Examples/java/index.html | 0 .../Examples/java/multimap/Makefile | 0 .../Examples/java/multimap/example.c | 0 .../Examples/java/multimap/example.dsp | 0 .../Examples/java/multimap/example.i | 0 .../Examples/java/multimap/runme.java | 0 .../Examples/java/native/Makefile | 0 .../Examples/java/native/example.i | 0 .../Examples/java/native/index.html | 0 .../Examples/java/native/runme.java | 0 .../Examples/java/nested/Makefile | 0 .../Examples/java/nested/example.cxx | 0 .../Examples/java/nested/example.dsp | 162 + .../Examples/java/nested/example.h | 0 .../Examples/java/nested/example.i | 0 .../Examples/java/nested/runme.java | 0 .../Examples/java/pointer/Makefile | 0 .../Examples/java/pointer/example.c | 0 .../Examples/java/pointer/example.i | 0 .../Examples/java/pointer/index.html | 0 .../Examples/java/pointer/runme.java | 0 .../Examples/java/reference/Makefile | 0 .../Examples/java/reference/example.cxx | 0 .../Examples/java/reference/example.h | 0 .../Examples/java/reference/example.i | 0 .../Examples/java/reference/index.html | 0 .../Examples/java/reference/runme.java | 0 .../Examples/java/simple/Makefile | 0 .../Examples/java}/simple/example.c | 0 .../Examples/java/simple/example.dsp | 0 .../Examples/java/simple/example.i | 0 .../Examples/java/simple/index.html | 0 .../Examples/java/simple/runme.java | 0 .../Examples/java/template/Makefile | 0 .../Examples/java/template/example.h | 0 .../Examples/java/template/example.i | 0 .../Examples/java/template/index.html | 0 .../Examples/java/template/runme.java | 0 .../Examples/java/typemap/Makefile | 0 .../Examples/java/typemap/example.i | 0 .../Examples/java/typemap/index.html | 0 .../Examples/java/typemap/runme.java | 0 .../Examples/java/variables/Makefile | 0 .../Examples/java/variables/example.c | 0 .../Examples/java/variables/example.h | 0 .../Examples/java/variables/example.i | 0 .../Examples/java/variables/index.html | 0 .../Examples/java/variables/runme.java | 2 +- .../Examples/javascript/check.list | 0 .../Examples/javascript/class/Makefile | 0 .../Examples/javascript/class/binding.gyp.in | 0 .../Examples/javascript/class/example.cxx | 0 .../Examples/javascript/class/example.h | 0 .../Examples/javascript/class/example.i | 0 .../Examples/javascript/class/example.js | 0 .../Examples/javascript/class/runme.js | 0 .../Examples/javascript/constant/Makefile | 0 .../javascript/constant/binding.gyp.in | 0 .../Examples/javascript/constant/example.h | 0 .../Examples/javascript/constant/example.i | 0 .../Examples/javascript/constant/example.js | 0 .../Examples/javascript/constant/runme.js | 0 .../Examples/javascript/enum/Makefile | 0 .../Examples/javascript/enum/binding.gyp.in | 0 .../Examples/javascript/enum/example.cxx | 0 .../Examples/javascript/enum/example.h | 0 .../Examples/javascript/enum/example.i | 0 .../Examples/javascript/enum/example.js | 0 .../Examples/javascript/enum/runme.js | 2 +- .../Examples/javascript/example.mk | 0 .../Examples/javascript/exception/Makefile | 0 .../javascript/exception/binding.gyp.in | 0 .../Examples/javascript/exception/example.cxx | 0 .../Examples/javascript/exception/example.h | 18 +- .../Examples/javascript/exception/example.i | 18 + .../Examples/javascript/exception/example.js | 0 .../Examples/javascript/exception/runme.js | 10 +- .../Examples/javascript/functor/Makefile | 0 .../javascript/functor/binding.gyp.in | 0 .../Examples/javascript/functor/example.i | 0 .../Examples/javascript/functor/example.js | 0 .../Examples/javascript/functor/runme.js | 0 .../Examples/javascript/nspace/Makefile | 0 .../Examples/javascript/nspace/binding.gyp.in | 0 .../Examples/javascript/nspace/example.h | 0 .../Examples/javascript/nspace/example.i | 0 .../Examples/javascript/nspace/example.js | 0 .../Examples/javascript/nspace/runme.js | 0 .../Examples/javascript/operator/Makefile | 0 .../javascript/operator/binding.gyp.in | 0 .../Examples/javascript/operator/example.h | 0 .../Examples/javascript/operator/example.i | 0 .../Examples/javascript/operator/example.js | 0 .../Examples/javascript/operator/runme.js | 0 .../Examples/javascript/overload/Makefile | 0 .../javascript/overload/binding.gyp.in | 0 .../Examples/javascript/overload/example.h | 0 .../Examples/javascript/overload/example.i | 0 .../Examples/javascript/overload/example.js | 0 .../Examples/javascript/overload/runme.js | 0 .../Examples/javascript/pointer/Makefile | 0 .../javascript/pointer/binding.gyp.in | 0 .../Examples/javascript/pointer/example.cxx | 0 .../Examples/javascript/pointer/example.i | 0 .../Examples/javascript/pointer/example.js | 0 .../Examples/javascript/pointer/runme.js | 0 .../Examples/javascript/reference/Makefile | 0 .../javascript/reference/binding.gyp.in | 0 .../Examples/javascript/reference/example.cxx | 0 .../Examples/javascript/reference/example.h | 0 .../Examples/javascript/reference/example.i | 0 .../Examples/javascript/reference/example.js | 0 .../Examples/javascript/reference/runme.js | 0 .../Examples/javascript/simple/Makefile | 0 .../Examples/javascript/simple/binding.gyp.in | 0 .../Examples/javascript/simple/example.cxx | 0 .../Examples/javascript/simple/example.i | 0 .../Examples/javascript/simple/example.js | 0 .../Examples/javascript/simple/runme.js | 0 .../Examples/javascript/template/Makefile | 0 .../javascript/template/binding.gyp.in | 0 .../Examples/javascript/template/example.h | 0 .../Examples/javascript/template/example.i | 0 .../Examples/javascript/template/example.js | 0 .../Examples/javascript/template/runme.js | 0 .../Examples/javascript/variables/Makefile | 0 .../javascript/variables/binding.gyp.in | 0 .../Examples/javascript/variables/example.cxx | 0 .../Examples/javascript/variables/example.h | 0 .../Examples/javascript/variables/example.i | 0 .../Examples/javascript/variables/example.js | 0 .../Examples/javascript/variables/runme.js | 2 +- .../Examples/lua/arrays/Makefile | 0 .../Examples/lua/arrays/example.c | 0 .../Examples/lua/arrays/example.i | 0 .../Examples/lua/arrays/runme.lua | 2 +- .../Examples/lua/check.list | 0 .../Examples/lua/class/Makefile | 0 .../Examples/lua/class/example.cxx | 0 .../Examples/lua/class/example.h | 0 .../Examples/lua/class/example.i | 0 .../Examples/lua/class/runme.lua | 2 +- .../Examples/lua/constants/Makefile | 0 .../Examples/lua/constants/example.i | 0 .../Examples/lua/constants/runme.lua | 2 +- .../Examples/lua/dual/Makefile | 0 .../Examples/lua/dual/dual.cpp | 2 +- .../Examples/lua/dual/example.i | 0 .../Examples/lua/dual/example2.i | 0 .../Examples/lua/embed/Makefile | 0 .../Examples/lua/embed/embed.c | 0 .../Examples/lua/embed/example.c | 0 .../Examples/lua/embed/example.i | 0 .../Examples/lua/embed/runme.lua | 0 .../Examples/lua/embed2/Makefile | 0 .../Examples/lua/embed2/embed2.c | 0 .../Examples/lua/embed2/example.c | 0 .../Examples/lua/embed2/example.i | 0 .../Examples/lua/embed2/runme.lua | 0 .../Examples/lua/embed3/Makefile | 0 .../Examples/lua/embed3/embed3.cpp | 0 .../Examples/lua/embed3/example.cpp | 0 .../Examples/lua/embed3/example.h | 0 .../Examples/lua/embed3/example.i | 0 .../Examples/lua/embed3/runme.lua | 0 .../Examples/lua/exception/Makefile | 0 .../Examples/lua}/exception/example.h | 20 +- .../Examples/lua/exception/example.i | 6 + .../Examples/lua/exception/runme.lua | 4 +- .../Examples/lua/funcptr3/Makefile | 0 .../Examples/lua/funcptr3/example.c | 0 .../Examples/lua/funcptr3/example.h | 0 .../Examples/lua/funcptr3/example.i | 0 .../Examples/lua/funcptr3/runme.lua | 2 +- .../Examples/lua/functest/Makefile | 0 .../Examples/lua/functest/example.c | 0 .../Examples/lua/functest/example.i | 0 .../Examples/lua/functest/runme.lua | 2 +- .../Examples/lua/functor/Makefile | 0 .../Examples/lua/functor/example.i | 0 .../Examples/lua/functor/runme.lua | 2 +- .../Examples/lua/import.lua | 0 .../Examples/lua/import/Makefile | 0 .../Examples/lua/import/README | 0 .../Examples/lua/import/bar.h | 0 .../Examples/lua/import/bar.i | 0 .../Examples/lua/import/base.h | 0 .../Examples/lua/import/base.i | 0 .../Examples/lua/import/foo.h | 0 .../Examples/lua/import/foo.i | 0 .../Examples/lua/import/runme.lua | 2 +- .../Examples/lua/import/spam.h | 0 .../Examples/lua/import/spam.i | 0 .../Examples/lua/lua.c | 0 .../Examples/lua/nspace/Makefile | 0 .../Examples/lua/nspace/example.h | 0 .../Examples/lua/nspace/example.i | 0 .../Examples/lua/nspace/runme.lua | 2 +- .../Examples/lua/owner/Makefile | 0 .../Examples/lua/owner/example.cxx | 0 .../Examples/lua/owner/example.h | 0 .../Examples/lua/owner/example.i | 0 .../Examples/lua/owner/runme.lua | 2 +- .../Examples/lua/pointer/Makefile | 0 .../Examples/lua/pointer/example.c | 0 .../Examples/lua/pointer/example.i | 0 .../Examples/lua/pointer/runme.lua | 2 +- .../Examples/lua/simple/Makefile | 0 .../Examples/lua}/simple/example.c | 0 .../Examples/lua/simple/example.i | 0 .../Examples/lua/simple/runme.lua | 2 +- .../Examples/lua/variables/Makefile | 0 .../Examples/lua/variables/example.c | 0 .../Examples/lua/variables/example.h | 0 .../Examples/lua/variables/example.i | 0 .../Examples/lua/variables/runme.lua | 8 +- .../Examples/modula3/check.list | 0 .../Examples/modula3/class/Makefile | 0 .../Examples/modula3/class/example.cxx | 0 .../Examples/modula3/class/example.h | 0 .../Examples/modula3/class/example.i | 0 .../Examples/modula3/class/swig.tmpl | 0 .../Examples/modula3/enum/Makefile | 0 .../Examples/modula3/enum/example.cxx | 0 .../Examples/modula3/enum/example.h | 0 .../Examples/modula3/enum/example.i | 0 .../Examples/modula3/exception/Makefile | 0 .../Examples/modula3/exception/example.h | 0 .../Examples/modula3/exception/example.i | 0 .../Examples/modula3/reference/Makefile | 0 .../Examples/modula3/reference/example.cxx | 0 .../Examples/modula3/reference/example.h | 0 .../Examples/modula3/reference/example.i | 0 .../Examples/modula3/simple/Makefile | 0 .../Examples/modula3}/simple/example.c | 0 .../Examples/modula3/simple/example.i | 0 .../Examples/modula3/typemap/Makefile | 0 .../Examples/modula3/typemap/example.i | 0 .../Examples/mzscheme/check.list | 1 + .../Examples/mzscheme}/class/Makefile | 8 +- .../Examples/mzscheme}/class/example.cxx | 0 .../Examples/mzscheme}/class/example.h | 0 .../Examples/mzscheme}/class/example.i | 0 .../Examples/mzscheme/class/runme.scm | 60 + .../Examples/mzscheme/multimap/Makefile | 1 + .../Examples/mzscheme}/multimap/example.c | 2 +- .../Examples/mzscheme/multimap/example.i | 6 +- .../Examples/mzscheme/multimap/runme.scm | 2 +- .../Examples/mzscheme/simple/Makefile | 1 + .../Examples/mzscheme}/simple/example.c | 0 .../Examples/mzscheme}/simple/example.i | 0 .../Examples/mzscheme/simple/runme.scm | 31 + .../Examples/mzscheme/std_vector}/Makefile | 10 +- .../Examples/mzscheme/std_vector/example.h | 0 .../Examples/mzscheme/std_vector/example.i | 0 .../Examples/mzscheme/std_vector/runme.scm | 30 +- .../Examples/ocaml/argout_ref}/Makefile | 11 +- .../Examples/ocaml/argout_ref/example.c | 0 .../Examples/ocaml/argout_ref/example.i | 13 + .../Examples/ocaml/argout_ref/runme.ml | 17 + .../Examples/ocaml/callback}/Makefile | 38 +- .../Examples/ocaml/callback/example.c | 3 + .../Examples/ocaml}/callback/example.h | 4 +- .../Examples/ocaml}/callback/example.i | 1 - .../Examples/ocaml/callback/runme.ml | 30 + .../Examples/ocaml/check.list | 13 +- .../Examples/ocaml/class/Makefile | 35 + .../Examples/ocaml/class/example.c | 28 + .../Examples/ocaml}/class/example.h | 0 .../Examples/ocaml/class}/example.i | 0 .../Examples/ocaml/class/runme.ml | 57 + .../Examples/ocaml/contract/Makefile | 15 +- .../Examples/ocaml/contract/example.i | 0 .../Examples/ocaml/contract/runme.ml} | 7 +- .../Examples/ocaml/scoped_enum/Makefile | 15 +- .../Examples/ocaml/scoped_enum/README | 0 .../Examples/ocaml/scoped_enum/example.i | 0 .../Examples/ocaml/scoped_enum/foo.h | 0 .../Examples/ocaml/scoped_enum/runme.ml | 5 + .../Examples/ocaml/shapes/Makefile | 25 +- .../Examples/ocaml/shapes/example.c | 0 .../Examples/ocaml/shapes/example.h | 0 .../Examples/ocaml/shapes/example.i | 0 .../Examples/ocaml/shapes/runme.ml} | 2 +- .../Examples/ocaml/simple/Makefile | 15 +- .../Examples/ocaml}/simple/example.c | 0 .../Examples/ocaml}/simple/example.i | 0 .../Examples/ocaml/simple/index.html | 24 +- .../Examples/ocaml/simple/runme.ml} | 2 +- .../Examples/ocaml/std_string}/Makefile | 14 +- .../Examples/ocaml/std_string/README | 0 .../Examples/ocaml/std_string/example.h | 0 .../Examples/ocaml/std_string/example.i | 0 .../Examples/ocaml/std_string/runme.ml | 0 .../Examples/ocaml/std_vector}/Makefile | 4 + .../Examples/ocaml/std_vector/example.h | 0 .../Examples/ocaml/std_vector/example.i | 0 .../Examples/ocaml/std_vector/runme.ml | 4 +- .../Examples/ocaml/stl/Makefile | 8 +- .../Examples/ocaml/stl/example.h | 2 +- .../Examples/ocaml/stl/example.i | 2 - .../Examples/ocaml/stl/runme.ml | 0 .../Examples/ocaml/string_from_ptr/Makefile | 41 + .../Examples/ocaml/string_from_ptr/example.i} | 2 +- .../Examples/ocaml/string_from_ptr/runme.ml} | 4 +- .../Examples/ocaml/strings_test/Makefile | 37 + .../Examples/ocaml/strings_test/example.h | 6 +- .../Examples/ocaml/strings_test/example.i | 1 + .../Examples/ocaml/strings_test/runme.ml | 6 +- .../Examples/octave/callback/Makefile | 0 .../Examples/octave/callback/example.cxx | 0 .../Examples/octave/callback/example.h | 0 .../Examples/octave/callback/example.i | 0 .../Examples/octave/callback/runme.m | 0 .../Examples/octave/check.list | 0 .../Examples/octave/class/Makefile | 0 .../Examples/octave}/class/example.cxx | 0 .../Examples/octave}/class/example.h | 0 .../Examples/octave/class/example.i | 0 .../Examples/octave/class/runme.m | 0 .../Examples/octave/constants/Makefile | 0 .../Examples/octave/constants/example.i | 0 .../Examples/octave/constants/runme.m | 0 .../Examples/octave/contract/Makefile | 0 .../Examples/octave/contract/example.c | 0 .../Examples/octave/contract/example.i | 0 .../Examples/octave/contract/runme.m | 0 .../Examples/octave/enum/Makefile | 0 .../Examples/octave/enum/example.cxx | 0 .../Examples/octave/enum/example.h | 0 .../Examples/octave/enum/example.i | 0 .../Examples/octave/enum/runme.m | 0 .../Examples/octave/example.mk | 0 .../Examples/octave/extend/Makefile | 0 .../Examples/octave/extend/example.cxx | 0 .../Examples/octave/extend/example.h | 0 .../Examples/octave/extend/example.i | 0 .../Examples/octave/extend/runme.m | 2 +- .../Examples/octave/funcptr/Makefile | 0 .../Examples/octave/funcptr/example.c | 0 .../Examples/octave/funcptr/example.h | 0 .../Examples/octave/funcptr/example.i | 0 .../Examples/octave/funcptr/runme.m | 0 .../Examples/octave/funcptr2/Makefile | 0 .../Examples/octave/funcptr2/example.c | 0 .../Examples/octave/funcptr2/example.h | 0 .../Examples/octave/funcptr2/example.i | 0 .../Examples/octave/funcptr2/runme.m | 0 .../Examples/octave/functor/Makefile | 0 .../Examples/octave/functor/example.i | 0 .../Examples/octave/functor/runme.m | 0 .../Examples/octave/module_load/Makefile | 0 .../Examples/octave/module_load/example.c | 0 .../Examples/octave/module_load/example.h | 0 .../Examples/octave/module_load/example.i | 0 .../Examples/octave/module_load/runme.m | 65 +- .../Examples/octave/operator/Makefile | 0 .../Examples/octave/operator/example.h | 0 .../Examples/octave/operator/example.i | 0 .../Examples/octave/operator/runme.m | 0 .../Examples/octave/pointer/Makefile | 0 .../Examples/octave/pointer/example.c | 0 .../Examples/octave/pointer/example.i | 0 .../Examples/octave/pointer/runme.m | 0 .../Examples/octave/reference/Makefile | 0 .../Examples/octave/reference/example.cxx | 0 .../Examples/octave/reference/example.h | 0 .../Examples/octave/reference/example.i | 0 .../Examples/octave/reference/runme.m | 0 .../Examples/octave/simple/Makefile | 0 .../Examples/octave/simple/example.c | 0 .../Examples/octave/simple/example.i | 0 .../Examples/octave/simple/runme.m | 0 .../Examples/octave/template/Makefile | 0 .../Examples/octave/template/example.h | 0 .../Examples/octave/template/example.i | 0 .../Examples/octave/template/runme.m | 0 .../Examples/octave/variables/Makefile | 0 .../Examples/octave/variables/example.c | 0 .../Examples/octave/variables/example.h | 0 .../Examples/octave/variables/example.i | 0 .../Examples/octave/variables/runme.m | 2 +- .../Examples/perl5/callback/Makefile | 0 .../Examples/perl5/callback/example.cxx | 0 .../Examples/perl5/callback/example.h | 0 .../Examples/perl5/callback/example.i | 0 .../Examples/perl5/callback/index.html | 0 .../Examples/perl5/callback/runme.pl | 0 .../Examples/perl5/check.list | 1 - .../Examples/perl5/class/Makefile | 0 .../Examples/perl5}/class/example.cxx | 0 .../Examples/perl5/class/example.dsp | 0 .../Examples/perl5/class/example.h | 0 .../Examples/perl5}/class/example.i | 0 .../Examples/perl5/class/index.html | 0 .../Examples/perl5/class/runme.pl | 0 .../Examples/perl5/constants/Makefile | 0 .../Examples/perl5/constants/example.i | 0 .../Examples/perl5/constants/index.html | 0 .../Examples/perl5/constants/runme.pl | 0 .../Examples/perl5/constants2/Makefile | 0 .../Examples/perl5/constants2/example.i | 0 .../Examples/perl5/constants2/runme.pl | 0 .../Examples/perl5/extend/Makefile | 0 .../Examples/perl5/extend/example.cxx | 0 .../Examples/perl5/extend/example.h | 0 .../Examples/perl5/extend/example.i | 0 .../Examples/perl5/extend/index.html | 0 .../Examples/perl5/extend/runme.pl | 0 .../Examples/perl5/funcptr/Makefile | 0 .../Examples/perl5/funcptr/example.c | 0 .../Examples/perl5/funcptr/example.h | 0 .../Examples/perl5/funcptr/example.i | 0 .../Examples/perl5/funcptr/index.html | 0 .../Examples/perl5/funcptr/runme.pl | 0 .../Examples/perl5/import/Makefile | 0 .../Examples/perl5/import/README | 0 .../Examples/perl5/import/bar.dsp | 0 .../Examples/perl5/import/bar.h | 0 .../Examples/perl5/import/bar.i | 0 .../Examples/perl5/import/base.dsp | 0 .../Examples/perl5/import/base.h | 0 .../Examples/perl5/import/base.i | 0 .../Examples/perl5/import/example.dsw | 0 .../Examples/perl5/import/foo.dsp | 0 .../Examples/perl5/import/foo.h | 0 .../Examples/perl5/import/foo.i | 0 .../Examples/perl5/import/runme.pl | 0 .../Examples/perl5/import/spam.dsp | 0 .../Examples/perl5/import/spam.h | 0 .../Examples/perl5/import/spam.i | 0 .../Examples/perl5/index.html | 0 .../Examples/perl5/inline/Makefile | 0 .../Examples/perl5/inline/README | 0 .../Examples/perl5/inline/runme.pl | 0 .../Examples/perl5/multimap/Makefile | 0 .../Examples/perl5}/multimap/example.c | 0 .../Examples/perl5/multimap/example.dsp | 0 .../Examples/perl5/multimap/example.i | 0 .../Examples/perl5/multimap/runme.pl | 0 .../perl5/multiple_inheritance/Makefile | 0 .../perl5/multiple_inheritance/example.h | 0 .../perl5/multiple_inheritance}/example.i | 0 .../perl5/multiple_inheritance/runme.pl | 0 .../Examples/perl5/pointer/Makefile | 0 .../Examples/perl5/pointer/example.c | 0 .../Examples/perl5/pointer/example.i | 0 .../Examples/perl5/pointer/index.html | 0 .../Examples/perl5/pointer/runme.pl | 0 .../Examples/perl5/reference/Makefile | 0 .../Examples/perl5/reference/example.cxx | 0 .../Examples/perl5/reference/example.h | 0 .../Examples/perl5/reference/example.i | 0 .../Examples/perl5/reference/index.html | 0 .../Examples/perl5/reference/runme.pl | 0 .../Examples/perl5/simple/Makefile | 0 .../Examples/perl5}/simple/example.c | 0 .../Examples/perl5/simple/example.dsp | 0 .../Examples/perl5}/simple/example.i | 0 .../Examples/perl5/simple/index.html | 0 .../Examples/perl5/simple/runme.pl | 0 .../Examples/perl5/value/Makefile | 0 .../Examples/perl5/value/example.c | 0 .../Examples/perl5/value/example.h | 0 .../Examples/perl5/value/example.i | 0 .../Examples/perl5/value/index.html | 0 .../Examples/perl5/value/runme.pl | 0 .../Examples/perl5/variables/Makefile | 0 .../Examples/perl5/variables/example.c | 0 .../Examples/perl5/variables/example.h | 0 .../Examples/perl5/variables/example.i | 0 .../Examples/perl5/variables/index.html | 0 .../Examples/perl5/variables/runme.pl | 2 +- .../Examples/perl5/xmlstring/Makefile | 0 .../Examples/perl5/xmlstring/example.cxx | 0 .../Examples/perl5/xmlstring/example.h | 0 .../Examples/perl5/xmlstring/example.i | 0 .../Examples/perl5/xmlstring/runme.pl | 0 .../Examples/perl5/xmlstring/xmlstring.i | 0 .../Examples/php/callback/Makefile | 0 .../Examples/php/callback/example.cxx | 0 .../Examples/php/callback/example.h | 0 .../Examples/php/callback/example.i | 0 .../Examples/php/callback/index.html | 0 .../Examples/php/callback/runme.php | 0 .../Examples/php/check.list | 0 .../Examples/php/class/Makefile | 0 .../Examples/php}/class/example.cxx | 0 .../Examples/php}/class/example.h | 0 .../Examples/php}/class/example.i | 0 .../Examples/php/class/runme.php | 0 .../Examples/php/constants/Makefile | 0 .../Examples/php/constants/example.i | 0 .../Examples/php/constants/runme.php | 14 +- .../Examples/php/cpointer/Makefile | 0 .../Examples/php/cpointer/example.c | 0 .../Examples/php/cpointer/example.i | 0 .../Examples/php/cpointer/runme.php | 0 .../Examples/php/disown/Makefile | 0 .../Examples/php/disown/example.cxx | 0 .../Examples/php/disown/example.h | 0 .../Examples/php/disown/example.i | 0 .../Examples/php}/disown/runme.php | 4 +- .../Examples/php/enum}/Makefile | 0 .../Examples/php/enum/example.cxx | 0 .../Examples/php/enum/example.h | 0 .../Examples/php/enum/example.i | 0 .../Examples/php/enum/runme.php | 20 +- .../Examples/php/extend/Makefile | 0 .../Examples/php/extend/example.cxx | 0 .../Examples/php/extend/example.h | 0 .../Examples/php/extend/example.i | 0 .../Examples/php/extend/index.html | 0 .../Examples/php/extend/runme.php | 0 .../Examples/php/funcptr/Makefile | 0 .../Examples/php/funcptr/example.c | 0 .../Examples/php/funcptr/example.h | 0 .../Examples/php/funcptr/example.i | 0 .../Examples/php/funcptr/runme.php | 0 .../Examples/php/overloading}/Makefile | 0 .../Examples/php/overloading/example.cxx | 0 .../Examples/php/overloading/example.h | 0 .../Examples/php/overloading/example.i | 0 .../Examples/php/overloading/runme.php | 0 .../Examples/php/pointer/Makefile | 0 .../Examples/php/pointer/example.c | 0 .../Examples/php/pointer/example.i | 0 .../Examples/php/pointer/runme.php | 0 .../Examples/php/pragmas/Makefile | 0 .../Examples/php}/pragmas/example.i | 1 + .../Examples/php/pragmas/include.php | 0 .../Examples/php/pragmas/runme.php | 6 + .../Examples/php/proxy}/Makefile | 0 .../Examples/php/proxy/example.cxx | 0 .../Examples/php/proxy/example.h | 0 .../Examples/php/proxy/example.i | 0 .../Examples/php/proxy/runme.php | 0 .../Examples/php/reference}/Makefile | 0 .../Examples/php/reference/example.cxx | 0 .../Examples/php/reference/example.h | 0 .../Examples/php/reference/example.i | 0 .../Examples/php/reference/runme.php | 0 .../Examples/php/simple/Makefile | 0 .../Examples/php/simple/example.c | 0 .../Examples/php/simple/example.i | 0 .../Examples/php/simple/runme.php | 0 .../Examples/php/sync}/Makefile | 2 +- .../Examples/php/sync/example.cxx | 0 .../Examples/php/sync/example.h | 0 .../Examples/php/sync/example.i | 0 .../Examples/php/sync/runme.php | 0 .../Examples/php/value}/Makefile | 0 .../Examples/php/value/example.c | 0 .../Examples/php/value/example.h | 0 .../Examples/php/value/example.i | 0 .../Examples/php/value/runme.php | 18 +- .../Examples/php/variables}/Makefile | 2 +- .../Examples/php/variables/example.c | 0 .../Examples/php/variables/example.h | 0 .../Examples/php/variables/example.i | 0 .../Examples/php}/variables/runme.php | 4 +- .../Examples/pike/check.list | 0 .../Examples/pike/class/Makefile | 0 .../Examples/pike/class/example.cxx | 0 .../Examples/pike}/class/example.h | 0 .../Examples/pike}/class/example.i | 0 .../Examples/pike/class/runme.pike | 0 .../Examples/pike/constants/Makefile | 0 .../Examples/pike/constants/example.i | 0 .../Examples/pike/constants/runme.pike | 0 .../Examples/pike/enum/Makefile | 0 .../Examples/pike/enum/README | 0 .../Examples/pike/enum/example.cxx | 0 .../Examples/pike}/enum/example.h | 0 .../Examples/pike/enum/example.i | 0 .../Examples/pike/enum/runme.pike | 0 .../Examples/pike/overload/Makefile | 0 .../Examples/pike/overload/example.cxx | 0 .../Examples/pike/overload/example.h | 0 .../Examples/pike/overload/example.i | 0 .../Examples/pike/overload/runme.pike | 0 .../Examples/pike/simple/Makefile | 0 .../Examples/pike}/simple/example.c | 0 .../Examples/pike}/simple/example.i | 0 .../Examples/pike/simple/runme.pike | 0 .../Examples/pike/template/Makefile | 0 .../Examples/pike/template/example.h | 0 .../Examples/pike/template/example.i | 0 .../Examples/pike/template/runme.pike | 0 .../Examples/python/callback/Makefile | 0 .../Examples/python}/callback/example.cxx | 0 .../Examples/python}/callback/example.h | 0 .../Examples/python}/callback/example.i | 0 .../Examples/python/callback/index.html | 0 .../Examples/python/callback/runme.py | 0 .../Examples/python/check.list | 2 +- .../Examples/python/class/Makefile | 0 .../Examples/python/class/example.cxx | 0 .../Examples/python/class/example.dsp | 0 .../Examples/python}/class/example.h | 0 .../Examples/python}/class/example.i | 0 .../Examples/python/class/index.html | 0 .../Examples/python/class/runme.py | 0 .../Examples/python/constants/Makefile | 0 .../Examples/python/constants/example.i | 0 .../Examples/python/constants/index.html | 0 .../Examples/python/constants/runme.py | 0 .../Examples/python/contract/Makefile | 0 .../Examples/python/contract/example.c | 0 .../Examples/python/contract/example.dsp | 0 .../Examples/python/contract/example.i | 0 .../Examples/python/contract/runme.py | 0 .../Examples/python/docstrings/Makefile | 0 .../Examples/python/docstrings/example.cxx | 0 .../Examples/python/docstrings/example.h | 0 .../Examples/python/docstrings/example.i | 0 .../Examples/python/docstrings/runme.py | 0 .../Examples/python/doxygen/Makefile | 27 + .../Examples/python/doxygen/example.cxx | 48 + .../Examples/python/doxygen/example.dsp | 152 + .../Examples/python/doxygen/example.h | 107 + .../Examples/python/doxygen/example.i | 17 + .../Examples/python/doxygen/runme.py | 28 + .../Examples/python/enum/Makefile | 0 .../Examples/python/enum/example.cxx | 0 .../Examples/python}/enum/example.h | 0 .../Examples/python/enum/example.i | 0 .../Examples/python/enum/index.html | 0 .../Examples/python/enum/runme.py | 0 .../Examples/python/exception/Makefile | 0 .../Examples/python}/exception/example.h | 20 +- .../Examples/python/exception/example.i | 6 + .../Examples/python/exception/runme.py | 0 .../Examples/python/exceptproxy/Makefile | 0 .../Examples/python/exceptproxy}/example.h | 8 +- .../Examples/python/exceptproxy/example.i | 35 +- .../Examples/python/exceptproxy/runme.py | 0 .../Examples/python/extend/Makefile | 0 .../Examples/python}/extend/example.cxx | 0 .../Examples/python}/extend/example.h | 0 .../Examples/python}/extend/example.i | 0 .../Examples/python/extend/index.html | 0 .../Examples/python/extend/runme.py | 2 +- .../Examples/python/funcptr/Makefile | 0 .../Examples/python/funcptr/example.c | 0 .../Examples/python/funcptr/example.h | 0 .../Examples/python/funcptr/example.i | 0 .../Examples/python/funcptr/index.html | 0 .../Examples/python/funcptr/runme.py | 0 .../Examples/python/funcptr2/Makefile | 0 .../Examples/python/funcptr2/example.c | 0 .../Examples/python/funcptr2/example.h | 0 .../Examples/python/funcptr2/example.i | 0 .../Examples/python/funcptr2/runme.py | 0 .../Examples/python/functor/Makefile | 0 .../Examples/python/functor/example.i | 0 .../Examples/python/functor/runme.py | 0 .../Examples/python/import/Makefile | 0 .../Examples/python/import/README | 0 .../Examples/python/import/bar.dsp | 0 .../Examples/python/import/bar.h | 0 .../Examples/python/import/bar.i | 0 .../Examples/python/import/base.dsp | 0 .../Examples/python/import/base.h | 0 .../Examples/python/import/base.i | 0 .../Examples/python/import/example.dsw | 0 .../Examples/python/import/foo.dsp | 0 .../Examples/python/import/foo.h | 0 .../Examples/python/import/foo.i | 0 .../Examples/python/import/runme.py | 0 .../Examples/python/import/spam.dsp | 0 .../Examples/python/import/spam.h | 0 .../Examples/python/import/spam.i | 0 .../Examples/python/import_packages/Makefile | 15 +- .../Examples/python/import_packages/README | 0 .../import_packages/from_init1/Makefile | 0 .../python/import_packages/from_init1/README | 0 .../import_packages/from_init1/py2/Makefile | 0 .../from_init1/py2/__init__.py | 0 .../from_init1/py2/pkg2/Makefile | 0 .../from_init1/py2/pkg2/__init__.py | 0 .../from_init1/py2/pkg2/bar.hpp | 0 .../import_packages/from_init1/py2/pkg2/bar.i | 0 .../from_init1/py2/pkg2/foo.hpp | 0 .../import_packages/from_init1/py2/pkg2/foo.i | 0 .../import_packages/from_init1/py3/Makefile | 0 .../from_init1/py3/__init__.py | 0 .../from_init1/py3/pkg2/Makefile | 0 .../from_init1/py3/pkg2/__init__.py | 0 .../from_init1/py3/pkg2/bar.hpp | 0 .../import_packages/from_init1/py3/pkg2/bar.i | 0 .../from_init1/py3/pkg2/foo.hpp | 0 .../import_packages/from_init1/py3/pkg2/foo.i | 0 .../import_packages/from_init1/runme.py | 35 + .../import_packages/from_init2/Makefile | 0 .../python/import_packages/from_init2/README | 0 .../import_packages/from_init2/py2/Makefile | 0 .../from_init2/py2/__init__.py | 0 .../from_init2/py2/pkg2/Makefile | 0 .../from_init2/py2/pkg2/__init__.py | 0 .../from_init2/py2/pkg2/bar.hpp | 0 .../import_packages/from_init2/py2/pkg2/bar.i | 0 .../from_init2/py2/pkg2/pkg3/Makefile | 0 .../from_init2/py2/pkg2/pkg3/__init__.py | 0 .../from_init2/py2/pkg2/pkg3/foo.hpp | 0 .../from_init2/py2/pkg2/pkg3/foo.i | 0 .../import_packages/from_init2/py3/Makefile | 0 .../from_init2/py3/__init__.py | 0 .../from_init2/py3/pkg2/Makefile | 0 .../from_init2/py3/pkg2/__init__.py | 0 .../from_init2/py3/pkg2/bar.hpp | 0 .../import_packages/from_init2/py3/pkg2/bar.i | 0 .../from_init2/py3/pkg2/pkg3/Makefile | 0 .../from_init2/py3/pkg2/pkg3/__init__.py | 0 .../from_init2/py3/pkg2/pkg3/foo.hpp | 0 .../from_init2/py3/pkg2/pkg3/foo.i | 0 .../import_packages/from_init2/runme.py | 31 + .../import_packages/from_init3/Makefile | 0 .../python/import_packages/from_init3/README | 0 .../import_packages/from_init3/py2/Makefile | 0 .../from_init3/py2/__init__.py | 0 .../from_init3/py2/pkg2/Makefile | 0 .../from_init3/py2/pkg2/__init__.py | 0 .../from_init3/py2/pkg2/bar.hpp | 0 .../import_packages/from_init3/py2/pkg2/bar.i | 0 .../from_init3/py2/pkg2/pkg3/Makefile | 0 .../from_init3/py2/pkg2/pkg3/__init__.py | 0 .../from_init3/py2/pkg2/pkg3/pkg4/Makefile | 0 .../from_init3/py2/pkg2/pkg3/pkg4/__init__.py | 0 .../from_init3/py2/pkg2/pkg3/pkg4/foo.hpp | 0 .../from_init3/py2/pkg2/pkg3/pkg4/foo.i | 0 .../import_packages/from_init3/py3/Makefile | 0 .../from_init3/py3/__init__.py | 0 .../from_init3/py3/pkg2/Makefile | 0 .../from_init3/py3/pkg2/__init__.py | 0 .../from_init3/py3/pkg2/bar.hpp | 0 .../import_packages/from_init3/py3/pkg2/bar.i | 0 .../from_init3/py3/pkg2/pkg3/Makefile | 0 .../from_init3/py3/pkg2/pkg3/__init__.py | 0 .../from_init3/py3/pkg2/pkg3/pkg4/Makefile | 0 .../from_init3/py3/pkg2/pkg3/pkg4/__init__.py | 0 .../from_init3/py3/pkg2/pkg3/pkg4/foo.hpp | 0 .../from_init3/py3/pkg2/pkg3/pkg4/foo.i | 0 .../import_packages/from_init3/runme.py | 31 + .../import_packages/module_is_init/Makefile | 15 + .../import_packages/module_is_init/README | 18 + .../module_is_init/pkg1/Makefile | 20 + .../module_is_init/pkg1/foo.hpp | 10 + .../import_packages/module_is_init/pkg1/foo.i | 5 + .../import_packages/module_is_init/runme.py | 26 + .../import_packages/namespace_pkg/Makefile | 0 .../import_packages/namespace_pkg/README | 0 .../import_packages/namespace_pkg/nonpkg.py | 22 + .../import_packages/namespace_pkg/normal.py | 23 + .../import_packages/namespace_pkg/nstest.py | 18 +- .../import_packages/namespace_pkg/robin.i | 0 .../import_packages/namespace_pkg/runme.py | 3 +- .../import_packages/namespace_pkg/split.py | 25 + .../import_packages/namespace_pkg/zipsplit.py | 25 + .../import_packages/relativeimport1/Makefile | 0 .../import_packages/relativeimport1/README | 0 .../relativeimport1/py2/Makefile | 0 .../relativeimport1/py2/__init__.py | 0 .../relativeimport1/py2/pkg2/Makefile | 0 .../relativeimport1/py2/pkg2/__init__.py | 0 .../relativeimport1/py2/pkg2/bar.hpp | 0 .../relativeimport1/py2/pkg2/bar.i | 0 .../relativeimport1/py2/pkg2/pkg3/Makefile | 0 .../relativeimport1/py2/pkg2/pkg3/__init__.py | 0 .../relativeimport1/py2/pkg2/pkg3/foo.hpp | 0 .../relativeimport1/py2/pkg2/pkg3/foo.i | 0 .../relativeimport1/py3/Makefile | 0 .../relativeimport1/py3/__init__.py | 0 .../relativeimport1/py3/pkg2/Makefile | 0 .../relativeimport1/py3/pkg2/__init__.py | 0 .../relativeimport1/py3/pkg2/bar.hpp | 0 .../relativeimport1/py3/pkg2/bar.i | 0 .../relativeimport1/py3/pkg2/pkg3/Makefile | 0 .../relativeimport1/py3/pkg2/pkg3/__init__.py | 0 .../relativeimport1/py3/pkg2/pkg3/foo.hpp | 0 .../relativeimport1/py3/pkg2/pkg3/foo.i | 0 .../import_packages/relativeimport1/runme.py | 32 + .../import_packages/relativeimport2/Makefile | 0 .../import_packages/relativeimport2/README | 0 .../relativeimport2/py2/Makefile | 0 .../relativeimport2/py2/__init__.py | 0 .../relativeimport2/py2/pkg2/Makefile | 0 .../relativeimport2/py2/pkg2/__init__.py | 0 .../relativeimport2/py2/pkg2/bar.hpp | 0 .../relativeimport2/py2/pkg2/bar.i | 0 .../relativeimport2/py2/pkg2/pkg3/Makefile | 0 .../relativeimport2/py2/pkg2/pkg3/__init__.py | 0 .../py2/pkg2/pkg3/pkg4/Makefile | 0 .../py2/pkg2/pkg3/pkg4/__init__.py | 0 .../py2/pkg2/pkg3/pkg4/foo.hpp | 0 .../relativeimport2/py2/pkg2/pkg3/pkg4/foo.i | 0 .../relativeimport2/py3/Makefile | 0 .../relativeimport2/py3/__init__.py | 0 .../relativeimport2/py3/pkg2/Makefile | 0 .../relativeimport2/py3/pkg2/__init__.py | 0 .../relativeimport2/py3/pkg2/bar.hpp | 0 .../relativeimport2/py3/pkg2/bar.i | 0 .../relativeimport2/py3/pkg2/pkg3/Makefile | 0 .../relativeimport2/py3/pkg2/pkg3/__init__.py | 0 .../py3/pkg2/pkg3/pkg4/Makefile | 0 .../py3/pkg2/pkg3/pkg4/__init__.py | 0 .../py3/pkg2/pkg3/pkg4/foo.hpp | 0 .../relativeimport2/py3/pkg2/pkg3/pkg4/foo.i | 0 .../import_packages/relativeimport2/runme.py | 32 + .../import_packages/relativeimport3/Makefile | 0 .../import_packages/relativeimport3/README | 0 .../relativeimport3/py2/Makefile | 0 .../relativeimport3/py2/__init__.py | 0 .../relativeimport3/py2/pkg2/Makefile | 0 .../relativeimport3/py2/pkg2/__init__.py | 0 .../relativeimport3/py2/pkg2/bar.hpp | 0 .../relativeimport3/py2/pkg2/bar.i | 0 .../relativeimport3/py2/pkg2/pkg3/Makefile | 0 .../relativeimport3/py2/pkg2/pkg3/__init__.py | 0 .../relativeimport3/py2/pkg2/pkg3/foo.hpp | 0 .../relativeimport3/py2/pkg2/pkg3/foo.i | 0 .../relativeimport3/py3/Makefile | 0 .../relativeimport3/py3/__init__.py | 0 .../relativeimport3/py3/pkg2/Makefile | 0 .../relativeimport3/py3/pkg2/__init__.py | 0 .../relativeimport3/py3/pkg2/bar.hpp | 0 .../relativeimport3/py3/pkg2/bar.i | 0 .../relativeimport3/py3/pkg2/pkg3/Makefile | 0 .../relativeimport3/py3/pkg2/pkg3/__init__.py | 0 .../relativeimport3/py3/pkg2/pkg3/foo.hpp | 0 .../relativeimport3/py3/pkg2/pkg3/foo.i | 0 .../import_packages/relativeimport3/runme.py | 32 + .../import_packages/same_modnames1/Makefile | 0 .../import_packages/same_modnames1/README | 0 .../same_modnames1/pkg1/Makefile | 0 .../same_modnames1/pkg1/__init__.py | 0 .../same_modnames1/pkg1/foo.hpp | 0 .../import_packages/same_modnames1/pkg1/foo.i | 0 .../same_modnames1/pkg2/Makefile | 0 .../same_modnames1/pkg2/__init__.py | 0 .../same_modnames1/pkg2/foo.hpp | 0 .../import_packages/same_modnames1/pkg2/foo.i | 0 .../import_packages/same_modnames1/runme.py | 15 +- .../import_packages/same_modnames2/Makefile | 0 .../import_packages/same_modnames2/README | 0 .../same_modnames2/pkg1/Makefile | 0 .../same_modnames2/pkg1/__init__.py | 0 .../same_modnames2/pkg1/foo.hpp | 0 .../import_packages/same_modnames2/pkg1/foo.i | 0 .../same_modnames2/pkg1/pkg2/Makefile | 0 .../same_modnames2/pkg1/pkg2/__init__.py | 0 .../same_modnames2/pkg1/pkg2/foo.hpp | 0 .../same_modnames2/pkg1/pkg2/foo.i | 0 .../import_packages/same_modnames2/runme.py | 15 +- .../import_packages/split_modules/Makefile | 8 +- .../import_packages/split_modules/README | 3 + .../split_modules/vanilla/Makefile | 0 .../split_modules/vanilla/pkg1/Makefile | 0 .../split_modules/vanilla/pkg1/__init__.py | 0 .../split_modules/vanilla/pkg1/foo.i | 0 .../split_modules/vanilla/runme.py | 22 + .../split_modules/vanilla_split/Makefile | 4 +- .../split_modules/vanilla_split/foo.i | 15 + .../vanilla_split/pkg1/__init__.py | 0 .../split_modules/vanilla_split/runme.py | 22 + .../Examples/python/import_template/Makefile | 0 .../Examples/python/import_template/README | 0 .../Examples/python/import_template/bar.h | 0 .../Examples/python/import_template/bar.i | 0 .../Examples/python/import_template/base.h | 0 .../Examples/python/import_template/base.i | 0 .../Examples/python/import_template/foo.h | 0 .../Examples/python/import_template/foo.i | 0 .../Examples/python/import_template/runme.py | 0 .../Examples/python/import_template/spam.h | 0 .../Examples/python/import_template/spam.i | 0 .../Examples/python/index.html | 0 .../Examples/python/libffi/Makefile | 0 .../Examples/python/libffi/example.i | 0 .../Examples/python/multimap/Makefile | 0 .../Examples/python}/multimap/example.c | 0 .../Examples/python/multimap/example.dsp | 0 .../Examples/python/multimap/example.i | 12 +- .../Examples/python/multimap/runme.py | 0 .../Examples/python/operator/Makefile | 0 .../Examples/python/operator/example.h | 0 .../Examples/python/operator/example.i | 1 + .../Examples/python/operator/runme.py | 0 .../Examples/python/performance/Makefile | 0 .../python/performance/constructor/Makefile | 0 .../python/performance/constructor/Simple.i | 0 .../python/performance/constructor/runme.py | 0 .../Examples/python/performance/func/Makefile | 0 .../Examples/python/performance/func/Simple.i | 0 .../Examples/python/performance/func/runme.py | 0 .../Examples/python/performance/harness.py | 0 .../python/performance/hierarchy/Makefile | 0 .../python/performance/hierarchy/Simple.i | 0 .../python/performance/hierarchy/runme.py | 0 .../performance/hierarchy_operator/Makefile | 0 .../performance/hierarchy_operator/Simple.i | 0 .../performance/hierarchy_operator/runme.py | 0 .../python/performance/operator/Makefile | 0 .../python/performance/operator/Simple.i | 0 .../python/performance/operator/runme.py | 0 .../Examples/python/pointer/Makefile | 0 .../Examples/python/pointer/example.c | 0 .../Examples/python/pointer/example.i | 0 .../Examples/python/pointer/index.html | 0 .../Examples/python/pointer/runme.py | 0 .../Examples/python/reference/Makefile | 0 .../Examples/python/reference/example.cxx | 0 .../Examples/python/reference/example.h | 0 .../Examples/python/reference/example.i | 0 .../Examples/python/reference/index.html | 0 .../Examples/python/reference/runme.py | 0 .../Examples/python/simple/Makefile | 0 .../Examples/python}/simple/example.c | 0 .../Examples/python/simple/example.dsp | 0 .../Examples/python}/simple/example.i | 0 .../Examples/python/simple/index.html | 0 .../Examples/python/simple/runme.py | 0 .../Examples/python/smartptr/Makefile | 0 .../Examples/python/smartptr/example.cxx | 0 .../Examples/python/smartptr/example.h | 0 .../Examples/python/smartptr/example.i | 0 .../Examples/python/smartptr/runme.py | 0 .../Examples/python/smartptr/smartptr.h | 0 .../Examples/python/std_map/Makefile | 0 .../Examples/python/std_map/example.h | 0 .../Examples/python/std_map/example.i | 0 .../Examples/python/std_map/runme.py | 0 .../Examples/python/std_vector/Makefile | 0 .../Examples/python/std_vector/example.h | 0 .../Examples/python/std_vector/example.i | 0 .../Examples/python/std_vector/runme.py | 0 .../Examples/python/template/Makefile | 0 .../Examples/python/template/example.h | 0 .../Examples/python/template/example.i | 0 .../Examples/python/template/runme.py | 0 .../Examples/python/varargs/Makefile | 0 .../Examples/python/varargs/example.i | 0 .../Examples/python/varargs/runme.py | 0 .../Examples/python/variables/Makefile | 0 .../Examples/python/variables/example.c | 0 .../Examples/python/variables/example.h | 0 .../Examples/python/variables/example.i | 0 .../Examples/python/variables/index.html | 0 .../Examples/python/variables/runme.py | 6 +- .../Examples/r/check.list | 0 .../Examples/r/class/Makefile | 0 .../Examples/r/class/example.cxx | 0 .../Examples/r/class/example.dsp | 0 .../Examples/r}/class/example.h | 0 .../Examples/r}/class/example.i | 0 .../Examples/r/class/runme.R | 0 .../Examples/r/simple/Makefile | 0 .../Examples/r}/simple/example.c | 0 .../Examples/r/simple/example.dsp | 0 .../Examples/r}/simple/example.i | 0 .../Examples/r/simple/runme.R | 0 .../Examples/ruby/check.list | 1 - .../Examples/ruby/class/Makefile | 0 .../Examples/ruby/class/example.cxx | 0 .../Examples/ruby/class/example.dsp | 0 .../Examples/ruby}/class/example.h | 0 .../Examples/ruby}/class/example.i | 0 .../Examples/ruby/class/index.html | 0 .../Examples/ruby/class/runme.rb | 0 .../Examples/ruby/constants/Makefile | 0 .../Examples/ruby/constants/example.i | 0 .../Examples/ruby/constants/index.html | 0 .../Examples/ruby/constants/runme.rb | 0 .../Examples/ruby/enum/Makefile | 0 .../Examples/ruby/enum/example.cxx | 0 .../Examples/ruby}/enum/example.h | 0 .../Examples/ruby/enum/example.i | 0 .../Examples/ruby/enum/index.html | 0 .../Examples/ruby/enum/runme.rb | 0 .../Examples/ruby/exceptproxy}/Makefile | 0 .../Examples/ruby}/exceptproxy/example.h | 11 +- .../Examples/ruby/exceptproxy}/example.i | 1 + .../Examples/ruby/exceptproxy}/runme.rb | 0 .../Examples/ruby/free_function/Makefile | 0 .../Examples/ruby/free_function/example.cxx | 0 .../Examples/ruby/free_function/example.dsp | 0 .../Examples/ruby/free_function/example.h | 0 .../Examples/ruby/free_function/example.i | 0 .../Examples/ruby/free_function/runme.rb | 6 +- .../Examples/ruby/funcptr/Makefile | 0 .../Examples/ruby}/funcptr/example.c | 0 .../Examples/ruby/funcptr/example.h | 0 .../Examples/ruby}/funcptr/example.i | 0 .../Examples/ruby/funcptr/index.html | 0 .../Examples/ruby/funcptr/runme.rb | 0 .../Examples/ruby/funcptr2/Makefile | 0 .../Examples/ruby/funcptr2/example.c | 0 .../Examples/ruby/funcptr2/example.h | 0 .../Examples/ruby/funcptr2/example.i | 0 .../Examples/ruby/funcptr2/runme.rb | 0 .../Examples/ruby/functor/Makefile | 0 .../Examples/ruby/functor/example.i | 0 .../Examples/ruby/functor/runme.rb | 0 .../Examples/ruby/hashargs/Makefile | 0 .../Examples/ruby/hashargs/example.i | 4 +- .../Examples/ruby/hashargs/runme.rb | 0 .../Examples/ruby/import/Makefile | 0 .../Examples/ruby/import/README | 0 .../Examples/ruby/import/bar.dsp | 0 .../Examples/ruby/import/bar.h | 0 .../Examples/ruby/import/bar.i | 0 .../Examples/ruby/import/base.dsp | 0 .../Examples/ruby/import/base.h | 0 .../Examples/ruby/import/base.i | 0 .../Examples/ruby/import/example.dsw | 0 .../Examples/ruby/import/foo.dsp | 0 .../Examples/ruby/import/foo.h | 0 .../Examples/ruby/import/foo.i | 0 .../Examples/ruby/import/runme.rb | 0 .../Examples/ruby/import/spam.dsp | 0 .../Examples/ruby/import/spam.h | 0 .../Examples/ruby/import/spam.i | 0 .../Examples/ruby/import_template/Makefile | 0 .../Examples/ruby/import_template/README | 0 .../Examples/ruby/import_template/bar.h | 0 .../Examples/ruby/import_template/bar.i | 0 .../Examples/ruby/import_template/base.h | 0 .../Examples/ruby/import_template/base.i | 0 .../Examples/ruby/import_template/foo.h | 0 .../Examples/ruby/import_template/foo.i | 0 .../Examples/ruby/import_template/runme.rb | 0 .../Examples/ruby/import_template/spam.h | 0 .../Examples/ruby/import_template/spam.i | 0 .../Examples/ruby/index.html | 0 .../Examples/ruby/mark_function/Makefile | 0 .../Examples/ruby/mark_function/example.cxx | 0 .../Examples/ruby/mark_function/example.dsp | 0 .../Examples/ruby/mark_function/example.h | 0 .../Examples/ruby/mark_function/example.i | 0 .../Examples/ruby/mark_function/runme.rb | 0 .../Examples/ruby/multimap/Makefile | 0 .../Examples/ruby}/multimap/example.c | 0 .../Examples/ruby/multimap/example.dsp | 0 .../Examples/ruby/multimap/example.i | 0 .../Examples/ruby/multimap/runme.rb | 0 .../Examples/ruby/operator/Makefile | 0 .../Examples/ruby/operator/example.h | 0 .../Examples/ruby/operator/example.i | 0 .../Examples/ruby/operator/runme.rb | 0 .../Examples/ruby/overloading/Makefile | 0 .../Examples/ruby/overloading/example.cxx | 0 .../Examples/ruby/overloading/example.h | 0 .../Examples/ruby/overloading/example.i | 0 .../Examples/ruby/overloading/runme.rb | 0 .../Examples/ruby/pointer/Makefile | 0 .../Examples/ruby/pointer/example.c | 0 .../Examples/ruby/pointer/example.i | 0 .../Examples/ruby/pointer/index.html | 0 .../Examples/ruby/pointer/runme.rb | 0 .../Examples/ruby/reference/Makefile | 0 .../Examples/ruby/reference/example.cxx | 0 .../Examples/ruby/reference/example.h | 0 .../Examples/ruby/reference/example.i | 0 .../Examples/ruby/reference/index.html | 0 .../Examples/ruby/reference/runme.rb | 0 .../Examples/ruby/simple/Makefile | 0 .../Examples/ruby}/simple/example.c | 0 .../Examples/ruby/simple/example.dsp | 0 .../Examples/ruby}/simple/example.i | 0 .../Examples/ruby/simple/index.html | 0 .../Examples/ruby/simple/runme.rb | 0 .../Examples/ruby/std_vector/Makefile | 0 .../Examples/ruby/std_vector/example.h | 0 .../Examples/ruby/std_vector/example.i | 0 .../Examples/ruby/std_vector/runme.rb | 0 .../Examples/ruby/template/Makefile | 0 .../Examples/ruby/template/example.h | 0 .../Examples/ruby/template/example.i | 0 .../Examples/ruby/template/runme.rb | 0 .../Examples/ruby/value/Makefile | 0 .../Examples/ruby/value/example.c | 0 .../Examples/ruby/value/example.h | 0 .../Examples/ruby/value/example.i | 0 .../Examples/ruby/value/index.html | 0 .../Examples/ruby/value/runme.rb | 0 .../Examples/ruby/variables/Makefile | 0 .../Examples/ruby/variables/example.c | 0 .../Examples/ruby/variables/example.h | 0 .../Examples/ruby/variables/example.i | 0 .../Examples/ruby/variables/index.html | 0 .../Examples/ruby/variables/runme.rb | 2 +- .../Examples/s-exp/uffi.lisp | 0 .../Examples/scilab/check.list | 0 .../Examples/scilab/class/Makefile | 0 .../Examples/scilab/class/example.cxx | 0 .../Examples/scilab}/class/example.h | 0 .../Examples/scilab}/class/example.i | 0 .../Examples/scilab/class/runme.sci | 0 .../Examples/scilab/constants/Makefile | 0 .../Examples/scilab/constants/example.i | 0 .../Examples/scilab/constants/runme.sci | 0 .../Examples/scilab/contract/Makefile | 0 .../Examples/scilab/contract/example.c | 0 .../Examples/scilab/contract/example.i | 0 .../Examples/scilab/contract/runme.sci | 0 .../Examples/scilab/enum/Makefile | 0 .../Examples/scilab/enum/example.cxx | 0 .../Examples/scilab}/enum/example.h | 0 .../Examples/scilab/enum/example.i | 0 .../Examples/scilab/enum/runme.sci | 0 .../Examples/scilab/funcptr/Makefile | 0 .../Examples/scilab/funcptr/example.c | 0 .../Examples/scilab/funcptr/example.h | 0 .../Examples/scilab/funcptr/example.i | 0 .../Examples/scilab/funcptr/runme.sci | 0 .../Examples/scilab/matrix/Makefile | 0 .../Examples/scilab/matrix/example.c | 0 .../Examples/scilab/matrix/example.i | 0 .../Examples/scilab/matrix/runme.sci | 0 .../Examples/scilab/matrix2/Makefile | 0 .../Examples/scilab/matrix2/example.c | 0 .../Examples/scilab/matrix2/example.i | 0 .../Examples/scilab/matrix2/main.c | 0 .../Examples/scilab/matrix2/runme.sci | 0 .../Examples/scilab/pointer/Makefile | 0 .../Examples/scilab/pointer/example.c | 0 .../Examples/scilab/pointer/example.i | 0 .../Examples/scilab/pointer/runme.sci | 0 .../Examples/scilab/simple/Makefile | 0 .../Examples/scilab}/simple/example.c | 5 - .../Examples/scilab}/simple/example.i | 0 .../Examples/scilab/simple/runme.sci | 0 .../Examples/scilab/std_list/Makefile | 0 .../Examples/scilab/std_list/example.cxx | 0 .../Examples/scilab/std_list/example.h | 0 .../Examples/scilab/std_list/example.i | 0 .../Examples/scilab/std_list/runme.sci | 2 +- .../Examples/scilab/std_vector/Makefile | 0 .../Examples/scilab/std_vector/example.h | 0 .../Examples/scilab/std_vector/example.i | 0 .../Examples/scilab/std_vector/runme.sci | 0 .../Examples/scilab/struct/Makefile | 0 .../Examples/scilab/struct/example.i | 0 .../Examples/scilab/struct/runme.sci | 0 .../Examples/scilab/template/Makefile | 0 .../Examples/scilab/template/example.h | 0 .../Examples/scilab/template/example.i | 0 .../Examples/scilab/template/runme.sci | 0 .../Examples/scilab/variables/Makefile | 0 .../Examples/scilab/variables/example.c | 0 .../Examples/scilab/variables/example.h | 0 .../Examples/scilab/variables/example.i | 0 .../Examples/scilab/variables/runme.sci | 2 +- .../Examples/tcl/check.list | 1 - .../Examples/tcl/class/Makefile | 0 .../Examples/tcl/class/example.cxx | 0 .../Examples/tcl/class/example.dsp | 0 .../Examples/tcl/class}/example.h | 23 +- .../Examples/tcl/class}/example.i | 3 - .../Examples/tcl/class/index.html | 0 .../Examples/tcl/class/runme.tcl | 0 .../Examples/tcl/class/runme2.tcl | 0 .../Examples/tcl/constants/Makefile | 0 .../Examples/tcl/constants/example.i | 0 .../Examples/tcl/constants/index.html | 0 .../Examples/tcl/constants/runme.tcl | 0 .../Examples/tcl/contract/Makefile | 0 .../Examples/tcl/contract/example.c | 0 .../Examples/tcl/contract/example.dsp | 0 .../Examples/tcl/contract/example.i | 0 .../Examples/tcl/contract/runme.tcl | 0 .../Examples/tcl/enum/Makefile | 0 .../Examples/tcl/enum/example.cxx | 0 .../Examples/tcl}/enum/example.h | 0 .../Examples/tcl/enum/example.i | 0 .../Examples/tcl/enum/index.html | 0 .../Examples/tcl/enum/runme.tcl | 0 .../Examples/tcl/funcptr/Makefile | 0 .../Examples/tcl/funcptr/example.c | 0 .../Examples/tcl/funcptr/example.h | 0 .../Examples/tcl/funcptr/example.i | 0 .../Examples/tcl/funcptr/index.html | 0 .../Examples/tcl/funcptr/runme.tcl | 0 .../Examples/tcl/import/Makefile | 0 .../Examples/tcl/import/README | 0 .../Examples/tcl/import/bar.dsp | 0 .../Examples/tcl/import/bar.h | 0 .../Examples/tcl/import/bar.i | 0 .../Examples/tcl/import/base.dsp | 0 .../Examples/tcl/import/base.h | 0 .../Examples/tcl/import/base.i | 0 .../Examples/tcl/import/example.dsw | 0 .../Examples/tcl/import/foo.dsp | 0 .../Examples/tcl/import/foo.h | 0 .../Examples/tcl/import/foo.i | 0 .../Examples/tcl/import/runme.tcl | 0 .../Examples/tcl/import/spam.dsp | 0 .../Examples/tcl/import/spam.h | 0 .../Examples/tcl/import/spam.i | 0 .../Examples/tcl/index.html | 0 .../Examples/tcl/multimap/Makefile | 0 .../Examples/tcl}/multimap/example.c | 0 .../Examples/tcl/multimap/example.dsp | 0 .../Examples/tcl/multimap/example.i | 0 .../Examples/tcl/multimap/runme.tcl | 0 .../Examples/tcl/operator/Makefile | 0 .../Examples/tcl/operator/example.h | 0 .../Examples/tcl/operator/example.i | 0 .../Examples/tcl/operator/runme.tcl | 0 .../Examples/tcl/pointer/Makefile | 0 .../Examples/tcl/pointer/example.c | 0 .../Examples/tcl/pointer/example.i | 0 .../Examples/tcl/pointer/index.html | 0 .../Examples/tcl/pointer/runme.tcl | 0 .../Examples/tcl/reference/Makefile | 0 .../Examples/tcl/reference/example.cxx | 0 .../Examples/tcl/reference/example.h | 0 .../Examples/tcl/reference/example.i | 0 .../Examples/tcl/reference/index.html | 0 .../Examples/tcl/reference/runme.tcl | 0 .../Examples/tcl/simple/Makefile | 0 .../Examples/tcl/simple/example.c | 18 + .../Examples/tcl/simple/example.dsp | 0 .../Examples/tcl}/simple/example.i | 1 - .../Examples/tcl/simple/index.html | 0 .../Examples/tcl/simple/runme.tcl | 0 .../Examples/tcl/std_vector/Makefile | 0 .../Examples/tcl/std_vector/example.h | 0 .../Examples/tcl/std_vector/example.i | 0 .../Examples/tcl/std_vector/runme.tcl | 0 .../Examples/tcl/value/Makefile | 0 .../Examples/tcl/value/example.c | 0 .../Examples/tcl/value/example.h | 0 .../Examples/tcl/value/example.i | 0 .../Examples/tcl/value/index.html | 0 .../Examples/tcl/value/runme.tcl | 0 .../Examples/tcl/variables/Makefile | 0 .../Examples/tcl/variables/example.c | 0 .../Examples/tcl/variables/example.h | 0 .../Examples/tcl/variables/example.i | 0 .../Examples/tcl/variables/index.html | 0 .../Examples/tcl/variables/runme.tcl | 2 +- .../Examples/test-suite/README | 2 +- .../Examples/test-suite/abstract_access.i | 0 .../Examples/test-suite/abstract_inherit.i | 0 .../Examples/test-suite/abstract_inherit_ok.i | 0 .../Examples/test-suite/abstract_signature.i | 0 .../Examples/test-suite/abstract_typedef.i | 0 .../Examples/test-suite/abstract_typedef2.i | 0 .../Examples/test-suite/abstract_virtual.i | 0 .../Examples/test-suite/access_change.i | 0 .../Examples/test-suite/add_link.i | 0 .../Examples/test-suite/aggregate.i | 0 .../Examples/test-suite/allegrocl/Makefile.in | 0 .../Examples/test-suite/allowexcept.i | 0 .../Examples/test-suite/allprotected.i | 4 + .../Examples/test-suite/allprotected_not.i | 0 .../Examples/test-suite/anonymous_bitfield.i | 0 .../Examples/test-suite/apply_signed_char.i | 0 .../Examples/test-suite/apply_strings.i | 0 .../Examples/test-suite/argcargvtest.i | 0 .../Examples/test-suite/argout.i | 0 .../Examples/test-suite/array_member.i | 0 .../test-suite/array_typedef_memberin.i | 0 .../Examples/test-suite/arrayref.i | 0 .../Examples/test-suite/arrays.i | 0 .../test-suite/arrays_dimensionless.i | 0 .../Examples/test-suite/arrays_global.i | 0 .../test-suite/arrays_global_twodim.i | 0 .../Examples/test-suite/arrays_scope.i | 0 .../Examples/test-suite/autodoc.i | 44 +- .../Examples/test-suite/bloody_hell.i | 0 .../Examples/test-suite/bom_utf8.i | 0 .../Examples/test-suite/bools.i | 0 .../Examples/test-suite/c_delete.i | 0 .../Examples/test-suite/c_delete_function.i | 0 .../Examples/test-suite/callback.i | 0 .../Examples/test-suite/cast_operator.i | 0 .../Examples/test-suite/casts.i | 0 .../Examples/test-suite/catches.i | 8 +- .../Examples/test-suite/cffi/Makefile.in | 0 .../Examples/test-suite/char_binary.i | 0 .../Examples/test-suite/char_constant.i | 0 .../Examples/test-suite/char_strings.i | 0 .../Examples/test-suite/chartest.i | 0 .../Examples/test-suite/chicken/Makefile.in | 0 .../Examples/test-suite/chicken/README | 0 .../test-suite/chicken/casts_runme.ss | 0 .../test-suite/chicken/char_constant_runme.ss | 0 .../chicken/chicken_ext_test_external.cxx | 0 .../chicken/chicken_ext_test_runme.ss | 0 .../test-suite/chicken/class_ignore_runme.ss | 0 .../chicken/clientdata_prop_runme_proxy.ss | 0 .../test-suite/chicken/constover_runme.ss | 0 .../test-suite/chicken/contract_runme.ss | 0 .../chicken/cpp_basic_runme_proxy.ss | 0 .../test-suite/chicken/cpp_enum_runme.ss | 0 .../test-suite/chicken/cpp_namespace_runme.ss | 0 .../test-suite/chicken/dynamic_cast_runme.ss | 0 .../test-suite/chicken/global_vars_runme.ss | 0 .../chicken/global_vars_runme_proxy.ss | 0 .../chicken/import_nomodule_runme.ss | 0 .../test-suite/chicken/imports_runme.ss | 0 .../chicken/inherit_missing_runme.ss | 0 .../test-suite/chicken/li_std_string_runme.ss | 0 .../chicken/li_std_string_runme_proxy.ss | 0 .../test-suite/chicken/li_typemaps_runme.ss | 0 .../chicken/li_typemaps_runme_proxy.ss | 0 .../test-suite/chicken/list_vector_runme.ss | 0 .../chicken/member_pointer_runme.ss | 0 .../multiple_inheritance_runme_proxy.ss | 0 .../test-suite/chicken/multivalue_runme.ss | 0 .../Examples/test-suite/chicken/name_runme.ss | 0 .../chicken/newobject1_runme_proxy.ss | 0 .../test-suite/chicken/newobject2_runme.ss | 0 .../chicken/newobject2_runme_proxy.ss | 0 .../chicken/overload_complicated_runme.ss | 0 .../test-suite/chicken/overload_copy_runme.ss | 0 .../chicken/overload_copy_runme_proxy.ss | 0 .../chicken/overload_extend_c_runme.ss | 0 .../chicken/overload_extend_runme.ss | 0 .../chicken/overload_extend_runme_proxy.ss | 0 .../chicken/overload_simple_runme.ss | 0 .../chicken/overload_simple_runme_proxy.ss | 0 .../chicken/overload_subtype_runme.ss | 0 .../chicken/overload_subtype_runme_proxy.ss | 0 .../chicken/pointer_in_out_runme.ss | 0 .../chicken/reference_global_vars_runme.ss | 0 .../Examples/test-suite/chicken/testsuite.ss | 0 .../chicken/throw_exception_runme.ss | 0 .../chicken/typedef_inherit_runme.ss | 0 .../test-suite/chicken/typename_runme.ss | 0 .../test-suite/chicken/unions_runme.ss | 0 .../test-suite/chicken/unions_runme_proxy.ss | 0 .../Examples/test-suite/chicken_ext_test.i | 0 .../Examples/test-suite/class_forward.i | 0 .../Examples/test-suite/class_ignore.i | 0 .../test-suite/class_scope_namespace.i | 160 + .../Examples/test-suite/class_scope_weird.i | 0 .../Examples/test-suite/clientdata_prop.list | 0 .../Examples/test-suite/clientdata_prop_a.h | 0 .../Examples/test-suite/clientdata_prop_a.i | 0 .../Examples/test-suite/clientdata_prop_b.h | 0 .../Examples/test-suite/clientdata_prop_b.i | 0 .../Examples/test-suite/clisp/Makefile.in | 0 .../Examples/test-suite/common.mk | 102 +- .../Examples/test-suite/compactdefaultargs.i | 0 .../Examples/test-suite/complextest.i | 88 + .../Examples/test-suite/const_const.i | 0 .../Examples/test-suite/const_const_2.i | 0 .../Examples/test-suite/constant_directive.i | 4 + .../Examples/test-suite/constant_expr.i | 0 .../Examples/test-suite/constant_pointers.i | 0 .../Examples/test-suite/constants.i | 0 .../Examples/test-suite/constover.i | 0 .../Examples/test-suite/constructor_copy.i | 8 +- .../test-suite/constructor_exception.i | 0 .../test-suite/constructor_explicit.i | 0 .../Examples/test-suite/constructor_ignore.i | 0 .../Examples/test-suite/constructor_rename.i | 0 .../Examples/test-suite/constructor_value.i | 0 .../Examples/test-suite/contract.i | 0 .../Examples/test-suite/conversion.i | 0 .../test-suite/conversion_namespace.i | 0 .../test-suite/conversion_ns_template.i | 0 .../test-suite/conversion_operators.i | 0 .../Examples/test-suite/cplusplus_throw.i | 10 +- .../cpp11_alias_nested_template_scoping.i | 45 + .../Examples/test-suite/cpp11_alignment.i | 3 +- .../cpp11_alternate_function_syntax.i | 31 + .../Examples/test-suite/cpp11_constexpr.i | 10 +- .../Examples/test-suite/cpp11_decltype.i | 0 .../test-suite/cpp11_default_delete.i | 8 +- .../cpp11_delegating_constructors.i | 0 .../test-suite/cpp11_director_enums.i | 0 .../Examples/test-suite/cpp11_directors.i | 16 + .../cpp11_explicit_conversion_operators.i | 0 .../test-suite/cpp11_final_directors.i | 33 + .../test-suite/cpp11_final_override.i | 12 + .../test-suite/cpp11_function_objects.i | 0 .../Examples/test-suite/cpp11_hash_tables.i | 51 + .../cpp11_inheriting_constructors.i | 0 .../test-suite/cpp11_initializer_list.i | 0 .../cpp11_initializer_list_extend.i | 0 .../test-suite/cpp11_lambda_functions.i | 44 +- .../Examples/test-suite/cpp11_noexcept.i | 6 +- .../test-suite/cpp11_null_pointer_constant.i | 0 .../test-suite/cpp11_raw_string_literals.i | 45 + .../test-suite/cpp11_ref_qualifiers.i | 226 + .../cpp11_ref_qualifiers_rvalue_unignore.i | 15 + .../cpp11_ref_qualifiers_typemaps.i | 74 + .../test-suite/cpp11_reference_wrapper.i | 0 .../Examples/test-suite/cpp11_result_of.i | 0 .../test-suite/cpp11_rvalue_reference.i | 0 .../test-suite/cpp11_rvalue_reference2.i | 22 +- .../test-suite/cpp11_rvalue_reference3.i | 16 +- .../test-suite/cpp11_shared_ptr_const.i | 57 + .../cpp11_shared_ptr_nullptr_in_containers.i | 50 + .../test-suite/cpp11_shared_ptr_overload.i | 89 + .../test-suite/cpp11_shared_ptr_upcast.i | 188 + .../Examples/test-suite/cpp11_sizeof_object.i | 0 .../Examples/test-suite/cpp11_static_assert.i | 37 + .../Examples/test-suite/cpp11_std_array.i} | 2 +- .../test-suite/cpp11_std_unordered_map.i | 11 + .../test-suite/cpp11_std_unordered_multimap.i | 7 + .../test-suite/cpp11_std_unordered_multiset.i | 5 + .../test-suite/cpp11_std_unordered_set.i | 7 + .../cpp11_strongly_typed_enumerations.i | 0 ...cpp11_strongly_typed_enumerations_simple.i | 0 .../cpp11_template_double_brackets.i | 0 .../test-suite/cpp11_template_explicit.i | 15 +- .../test-suite/cpp11_template_typedefs.i | 0 .../Examples/test-suite/cpp11_thread_local.i | 2 + .../Examples/test-suite/cpp11_type_aliasing.i | 2 +- .../Examples/test-suite/cpp11_type_traits.i | 0 .../test-suite/cpp11_uniform_initialization.i | 0 .../test-suite/cpp11_unrestricted_unions.i | 0 .../test-suite/cpp11_userdefined_literals.i | 0 .../test-suite/cpp11_variadic_templates.i | 0 .../cpp14_binary_integer_literals.i | 31 + .../test-suite/cpp17_hex_floating_literals.i | 43 + .../test-suite/cpp17_nested_namespaces.i | 199 + .../cpp17_nspace_nested_namespaces.i | 13 + .../test-suite/cpp17_u8_char_literals.i | 26 + .../Examples/test-suite/cpp_basic.i | 0 .../Examples/test-suite/cpp_enum.i | 0 .../Examples/test-suite/cpp_namespace.i | 4 + .../Examples/test-suite/cpp_nodefault.i | 0 .../Examples/test-suite/cpp_static.i | 3 + .../Examples/test-suite/cpp_typedef.i | 0 .../Examples/test-suite/csharp/Makefile.in | 9 +- .../Examples/test-suite/csharp/README | 0 .../test-suite/csharp/aggregate_runme.cs | 0 .../test-suite/csharp/allprotected_runme.cs | 14 + .../test-suite/csharp/apply_strings_runme.cs | 0 .../Examples/test-suite/csharp/bools_runme.cs | 0 .../test-suite/csharp/catches_runme.cs | 0 .../test-suite/csharp/char_strings_runme.cs | 0 .../test-suite/csharp/complextest_runme.cs | 43 + .../test-suite/csharp/constover_runme.cs | 0 .../csharp/cpp11_std_array_runme.cs} | 20 +- ...cpp11_strongly_typed_enumerations_runme.cs | 0 .../csharp/cpp17_nested_namespaces_runme.cs | 25 + .../cpp17_nspace_nested_namespaces_runme.cs | 25 + .../csharp/csharp_attributes_runme.cs | 0 .../csharp/csharp_exceptions_runme.cs | 0 .../csharp/csharp_lib_arrays_runme.cs | 0 .../test-suite/csharp/csharp_prepost_runme.cs | 0 .../csharp/csharp_typemaps_runme.cs | 0 .../test-suite/csharp/default_args_runme.cs | 0 .../csharp/default_constructor_runme.cs | 0 .../csharp/director_alternating_runme.cs | 0 .../test-suite/csharp/director_basic_runme.cs | 128 + .../csharp/director_classes_runme.cs | 13 +- .../csharp/director_classic_runme.cs | 0 .../csharp/director_ignore_runme.cs | 0 .../csharp/director_nspace_runme.cs | 0 .../csharp/director_pass_by_value_runme.cs | 0 .../csharp/director_primitives_runme.cs | 0 .../csharp/director_protected_runme.cs | 0 .../csharp/director_smartptr_runme.cs | 29 + .../csharp/director_string_runme.cs | 0 .../test-suite/csharp/director_void_runme.cs | 0 .../test-suite/csharp/enum_forward_runme.cs | 0 .../test-suite/csharp/enum_thorough_runme.cs | 0 .../csharp/enum_thorough_simple_runme.cs | 0 .../csharp/enum_thorough_typesafe_runme.cs | 0 .../csharp/exception_order_runme.cs | 0 .../test-suite/csharp/friends_runme.cs | 0 .../test-suite/csharp/imports_runme.cs | 0 .../csharp/inherit_target_language_runme.cs | 0 .../csharp/intermediary_classname_runme.cs | 0 .../test-suite/csharp/li_attribute_runme.cs | 0 .../csharp/li_boost_shared_ptr_bits_runme.cs | 0 .../li_boost_shared_ptr_director_runme.cs | 111 + .../csharp/li_boost_shared_ptr_runme.cs | 0 .../csharp/li_std_auto_ptr_runme.cs | 7 + .../csharp/li_std_combinations_runme.cs | 0 .../test-suite/csharp/li_std_except_runme.cs | 0 .../test-suite/csharp/li_std_list_runme.cs | 402 + .../test-suite/csharp/li_std_map_runme.cs | 16 +- .../test-suite/csharp/li_std_set_runme.cs | 89 + .../test-suite/csharp/li_std_string_runme.cs | 0 .../csharp/li_std_vector_enum_runme.cs | 0 .../test-suite/csharp/li_std_vector_runme.cs | 62 +- .../test-suite/csharp/li_std_wstring_runme.cs | 0 .../csharp/li_swigtype_inout_runme.cs | 0 .../test-suite/csharp/li_typemaps_runme.cs | 0 .../test-suite/csharp/long_long_runme.cs | 0 .../test-suite/csharp/member_pointer_runme.cs | 0 .../multiple_inheritance_abstract_runme.cs | 0 .../multiple_inheritance_interfaces_runme.cs | 0 .../multiple_inheritance_nspace_runme.cs | 0 .../multiple_inheritance_shared_ptr_runme.cs | 0 .../test-suite/csharp/nested_class_runme.cs | 0 .../csharp/nested_directors_runme.cs | 0 .../csharp/nested_in_template_runme.cs | 10 + .../test-suite/csharp/nested_structs_runme.cs | 0 .../csharp/nested_workaround_runme.cs | 0 .../test-suite/csharp/nspace_extend_runme.cs | 0 .../test-suite/csharp/nspace_runme.cs | 0 .../csharp/operator_overload_runme.cs | 0 .../csharp/overload_complicated_runme.cs | 0 .../csharp/overload_template_runme.cs | 0 .../csharp/pointer_reference_runme.cs | 0 .../csharp/preproc_constants_c_runme.cs | 6 +- .../csharp/preproc_constants_runme.cs | 5 +- .../test-suite/csharp/proxycode_runme.cs | 0 .../csharp/rename_pcre_encoder_runme.cs | 0 .../csharp/rename_pcre_enum_runme.cs | 0 .../test-suite/csharp/rename_simple_runme.cs | 0 .../Examples/test-suite/csharp/sizet_runme.cs | 0 .../test-suite/csharp/sneaky1_runme.cs | 0 .../special_variable_attributes_runme.cs | 0 .../csharp/special_variable_macros_runme.cs | 0 .../csharp/template_nested_runme.cs | 0 .../test-suite/csharp/threads_runme.cs | 0 .../csharp/throw_exception_runme.cs | 0 .../csharp/typemap_namespace_runme.cs | 0 .../csharp/typemap_out_optimal_runme.cs | 0 .../test-suite/csharp/varargs_runme.cs | 0 .../test-suite/csharp/virtual_poly_runme.cs | 0 .../Examples/test-suite/csharp_attributes.i | 0 .../Examples/test-suite/csharp_exceptions.i | 34 +- .../Examples/test-suite/csharp_features.i | 0 .../Examples/test-suite/csharp_lib_arrays.i | 0 .../csharp_namespace_system_collision.i | 0 .../Examples/test-suite/csharp_prepost.i | 0 .../test-suite/csharp_swig2_compatibility.i | 0 .../Examples/test-suite/csharp_typemaps.i | 0 .../curiously_recurring_template_pattern.i | 0 .../Examples/test-suite/d/Makefile.in | 6 + .../Examples/test-suite/d/README | 0 .../Examples/test-suite/d/aggregate_runme.1.d | 0 .../Examples/test-suite/d/aggregate_runme.2.d | 0 .../test-suite/d/allprotected_runme.1.d | 0 .../test-suite/d/allprotected_runme.2.d | 0 .../test-suite/d/apply_strings_runme.1.d | 0 .../test-suite/d/apply_strings_runme.2.d | 0 .../Examples/test-suite/d/bools_runme.1.d | 0 .../Examples/test-suite/d/bools_runme.2.d | 0 .../Examples/test-suite/d/catches_runme.1.d | 0 .../Examples/test-suite/d/catches_runme.2.d | 0 .../test-suite/d/char_strings_runme.1.d | 0 .../test-suite/d/char_strings_runme.2.d | 0 .../Examples/test-suite/d/constover_runme.1.d | 0 .../Examples/test-suite/d/constover_runme.2.d | 0 .../test-suite/d/d_nativepointers_runme.1.d | 0 .../test-suite/d/d_nativepointers_runme.2.d | 0 .../test-suite/d/default_args_runme.1.d | 0 .../test-suite/d/default_args_runme.2.d | 0 .../d/default_constructor_runme.1.d | 0 .../d/default_constructor_runme.2.d | 0 .../d/director_alternating_runme.1.d | 0 .../d/director_alternating_runme.2.d | 0 .../test-suite/d/director_basic_runme.1.d | 0 .../test-suite/d/director_basic_runme.2.d | 0 .../test-suite/d/director_classes_runme.1.d | 13 +- .../test-suite/d/director_classes_runme.2.d | 13 +- .../test-suite/d/director_classic_runme.1.d | 0 .../test-suite/d/director_classic_runme.2.d | 0 .../test-suite/d/director_ignore_runme.1.d | 0 .../test-suite/d/director_ignore_runme.2.d | 0 .../d/director_primitives_runme.1.d | 0 .../d/director_primitives_runme.2.d | 0 .../test-suite/d/director_protected_runme.1.d | 0 .../test-suite/d/director_protected_runme.2.d | 0 .../test-suite/d/director_string_runme.1.d | 0 .../test-suite/d/director_string_runme.2.d | 0 .../test-suite/d/enum_thorough_runme.1.d | 0 .../test-suite/d/enum_thorough_runme.2.d | 0 .../d/inherit_target_language_runme.1.d | 0 .../d/inherit_target_language_runme.2.d | 0 .../test-suite/d/li_attribute_runme.1.d | 0 .../test-suite/d/li_attribute_runme.2.d | 0 .../d/li_boost_shared_ptr_bits_runme.1.d | 0 .../d/li_boost_shared_ptr_bits_runme.2.d | 0 .../d/li_boost_shared_ptr_director_runme.2.d | 114 + .../d/li_boost_shared_ptr_runme.1.d | 0 .../d/li_boost_shared_ptr_runme.2.d | 0 .../test-suite/d/li_std_except_runme.1.d | 0 .../test-suite/d/li_std_except_runme.2.d | 0 .../test-suite/d/li_std_string_runme.1.d | 0 .../test-suite/d/li_std_string_runme.2.d | 0 .../test-suite/d/li_std_vector_runme.1.d | 0 .../test-suite/d/li_std_vector_runme.2.d | 0 .../test-suite/d/li_typemaps_runme.1.d | 0 .../test-suite/d/li_typemaps_runme.2.d | 0 .../Examples/test-suite/d/long_long_runme.1.d | 0 .../Examples/test-suite/d/long_long_runme.2.d | 0 .../test-suite/d/member_pointer_runme.1.d | 0 .../test-suite/d/member_pointer_runme.2.d | 0 .../test-suite/d/nspace_extend_runme.1.d | 0 .../test-suite/d/nspace_extend_runme.2.d | 0 .../Examples/test-suite/d/nspace_runme.1.d | 0 .../Examples/test-suite/d/nspace_runme.2.d | 0 .../test-suite/d/operator_overload_runme.1.d | 0 .../test-suite/d/operator_overload_runme.2.d | 0 .../d/overload_complicated_runme.1.d | 0 .../d/overload_complicated_runme.2.d | 0 .../test-suite/d/overload_template_runme.1.d | 0 .../test-suite/d/overload_template_runme.2.d | 0 .../test-suite/d/pointer_reference_runme.1.d | 0 .../test-suite/d/pointer_reference_runme.2.d | 0 .../d/preproc_constants_c_runme.1.d | 5 +- .../d/preproc_constants_c_runme.2.d | 5 +- .../test-suite/d/preproc_constants_runme.1.d | 5 +- .../test-suite/d/preproc_constants_runme.2.d | 5 +- .../Examples/test-suite/d/proxycode_runme.2.d | 0 .../Examples/test-suite/d/sizet_runme.1.d | 0 .../Examples/test-suite/d/sizet_runme.2.d | 0 .../Examples/test-suite/d/sneaky1_runme.1.d | 0 .../Examples/test-suite/d/sneaky1_runme.2.d | 0 .../d/special_variable_macros_runme.1.d | 0 .../d/special_variable_macros_runme.2.d | 0 .../Examples/test-suite/d/threads_runme.1.d | 0 .../Examples/test-suite/d/threads_runme.2.d | 0 .../test-suite/d/throw_exception_runme.1.d | 0 .../test-suite/d/throw_exception_runme.2.d | 0 .../test-suite/d/typemap_namespace_runme.1.d | 0 .../test-suite/d/typemap_namespace_runme.2.d | 0 .../d/typemap_out_optimal_runme.1.d | 0 .../d/typemap_out_optimal_runme.2.d | 0 .../Examples/test-suite/d/varargs_runme.1.d | 0 .../Examples/test-suite/d/varargs_runme.2.d | 0 .../test-suite/d/virtual_poly_runme.1.d | 0 .../test-suite/d/virtual_poly_runme.2.d | 0 .../Examples/test-suite/d_nativepointers.i | 0 .../test-suite/default_arg_expressions.i | 34 + .../Examples/test-suite/default_arg_values.i | 0 .../Examples/test-suite/default_args.i | 44 +- .../Examples/test-suite/default_args_c.i | 53 + .../Examples/test-suite/default_constructor.i | 0 .../test-suite/defvalue_constructor.i | 0 .../Examples/test-suite/derived_byvalue.i | 4 + .../Examples/test-suite/derived_nested.i | 0 .../test-suite/destructor_methodmodifiers.i | 61 + .../test-suite/destructor_reprotected.i | 0 .../Examples/test-suite/director_abstract.i | 0 .../test-suite/director_alternating.i | 0 .../Examples/test-suite/director_basic.i | 35 + .../test-suite/director_binary_string.i | 0 .../Examples/test-suite/director_classes.i | 8 + .../Examples/test-suite/director_classic.i | 0 .../test-suite/director_constructor.i | 0 .../Examples/test-suite/director_default.i | 0 .../Examples/test-suite/director_detect.i | 0 .../Examples/test-suite/director_enum.i | 0 .../Examples/test-suite/director_exception.i | 67 +- .../test-suite/director_exception_catches.i | 25 + .../test-suite/director_exception_nothrow.i | 28 + .../Examples/test-suite/director_extend.i | 2 +- .../Examples/test-suite/director_finalizer.i | 0 .../Examples/test-suite/director_frob.i | 0 .../Examples/test-suite/director_ignore.i | 0 .../Examples/test-suite/director_keywords.i | 0 .../test-suite/director_namespace_clash.i | 0 .../Examples/test-suite/director_nested.i | 0 .../test-suite/director_nested_class.i | 0 .../test-suite/director_nestedmodule.i | 0 .../Examples/test-suite/director_nspace.i | 0 .../director_nspace_director_name_collision.i | 0 .../Examples/test-suite/director_overload.i | 4 + .../Examples/test-suite/director_overload2.i | 0 .../Examples/test-suite/director_ownership.i | 72 + .../test-suite/director_pass_by_value.i | 0 .../Examples/test-suite/director_primitives.i | 0 .../Examples/test-suite/director_profile.i | 0 .../Examples/test-suite/director_property.i | 4 + .../Examples/test-suite/director_protected.i | 0 .../director_protected_overloaded.i | 0 .../Examples/test-suite/director_redefined.i | 0 .../Examples/test-suite/director_ref.i | 0 .../Examples/test-suite/director_smartptr.i | 8 +- .../Examples/test-suite/director_stl.i | 0 .../Examples/test-suite/director_string.i | 0 .../Examples/test-suite/director_thread.i | 157 + .../Examples/test-suite/director_unroll.i | 0 .../Examples/test-suite/director_using.i | 0 .../Examples/test-suite/director_void.i | 0 .../Examples/test-suite/director_wombat.i | 0 .../Examples/test-suite/director_wstring.i | 0 .../Examples/test-suite/disown.i | 0 .../Examples/test-suite/doxygen_alias.i | 22 + .../test-suite/doxygen_basic_notranslate.i | 110 + .../test-suite/doxygen_basic_translate.h | 5 + .../test-suite/doxygen_basic_translate.i | 111 + .../Examples/test-suite/doxygen_ignore.i | 41 + .../test-suite/doxygen_misc_constructs.h | 94 + .../test-suite/doxygen_misc_constructs.i | 127 + .../test-suite/doxygen_nested_class.i | 24 + .../Examples/test-suite/doxygen_parsing.i | 140 + .../test-suite/doxygen_parsing_enums.i | 40 + .../test-suite/doxygen_parsing_enums_proper.i | 7 + .../test-suite/doxygen_parsing_enums_simple.i | 6 + .../doxygen_parsing_enums_typesafe.i | 8 + .../doxygen_parsing_enums_typeunsafe.i | 6 + .../Examples/test-suite/doxygen_translate.i | 266 + .../test-suite/doxygen_translate_all_tags.i | 403 + .../test-suite/doxygen_translate_links.i | 67 + .../Examples/test-suite/dynamic_cast.i | 0 .../Examples/test-suite/empty.i | 0 .../Examples/test-suite/empty_c.i | 0 .../Examples/test-suite/enum_forward.i | 0 .../Examples/test-suite/enum_ignore.i | 0 .../Examples/test-suite/enum_macro.i | 42 + .../Examples/test-suite/enum_missing.i | 0 .../Examples/test-suite/enum_plus.i | 0 .../Examples/test-suite/enum_rename.i | 0 .../Examples/test-suite/enum_scope_template.i | 0 .../Examples/test-suite/enum_template.i | 0 .../Examples/test-suite/enum_thorough.i | 0 .../test-suite/enum_thorough_proper.i | 0 .../test-suite/enum_thorough_simple.i | 0 .../test-suite/enum_thorough_typesafe.i | 0 .../test-suite/enum_thorough_typeunsafe.i | 0 .../Examples/test-suite/enum_var.i | 0 .../Examples/test-suite/enums.i | 0 .../Examples/test-suite/equality.i | 0 .../Examples/test-suite/errors/Makefile.in | 20 +- .../Examples/test-suite/errors/c_bad_name.i | 0 .../test-suite/errors/c_bad_name.stderr | 0 .../Examples/test-suite/errors/c_bad_native.i | 0 .../test-suite/errors/c_bad_native.stderr | 0 .../Examples/test-suite/errors/c_class.i | 0 .../Examples/test-suite/errors/c_class.stderr | 0 .../Examples/test-suite/errors/c_deprecated.i | 0 .../test-suite/errors/c_deprecated.stderr | 0 .../Examples/test-suite/errors/c_empty_char.i | 0 .../test-suite/errors/c_empty_char.stderr | 0 .../test-suite/errors/c_enum_badvalue.i | 0 .../test-suite/errors/c_enum_badvalue.stderr | 0 .../test-suite/errors/c_extra_rblock.i | 0 .../test-suite/errors/c_extra_rblock.stderr | 0 .../test-suite/errors/c_extra_rbrace.i | 0 .../test-suite/errors/c_extra_rbrace.stderr | 0 .../test-suite/errors/c_extra_unsigned.i | 0 .../test-suite/errors/c_extra_unsigned.stderr | 0 .../test-suite/errors/c_insert_missing.i | 0 .../test-suite/errors/c_insert_missing.stderr | 0 .../Examples/test-suite/errors/c_long_short.i | 0 .../test-suite/errors/c_long_short.stderr | 0 .../test-suite/errors/c_missing_rbrace.i | 0 .../test-suite/errors/c_missing_rbrace.stderr | 0 .../test-suite/errors/c_missing_semi.i | 0 .../test-suite/errors/c_missing_semi.stderr | 0 .../Examples/test-suite/errors/c_redefine.i | 0 .../test-suite/errors/c_redefine.stderr | 0 .../test-suite/errors/c_varargs_neg.i | 0 .../test-suite/errors/c_varargs_neg.stderr | 0 .../test-suite/errors/cpp_bad_extern.i | 0 .../test-suite/errors/cpp_bad_extern.stderr | 0 .../errors/cpp_bad_global_memberptr.i | 6 + .../errors/cpp_bad_global_memberptr.stderr | 2 + .../test-suite/errors/cpp_class_definition.i | 26 + .../errors/cpp_class_definition.stderr | 1 + .../errors/cpp_extend_destructors.i | 0 .../errors/cpp_extend_destructors.stderr | 0 .../test-suite/errors/cpp_extend_redefine.i | 0 .../errors/cpp_extend_redefine.stderr | 0 .../test-suite/errors/cpp_extend_undefined.i | 0 .../errors/cpp_extend_undefined.stderr | 0 .../test-suite/errors/cpp_extra_brackets.i | 0 .../errors/cpp_extra_brackets.stderr | 0 .../test-suite/errors/cpp_extra_brackets2.i | 0 .../errors/cpp_extra_brackets2.stderr | 0 .../errors/cpp_final_destructor.stderr | 1 + .../Examples/test-suite/errors/cpp_inherit.i | 0 .../test-suite/errors/cpp_inherit.stderr | 0 .../test-suite/errors/cpp_inherit_ignored.i | 0 .../errors/cpp_inherit_ignored.stderr | 0 .../test-suite/errors/cpp_inline_namespace.i | 0 .../errors/cpp_inline_namespace.stderr | 0 .../errors/cpp_invalid_exponents1.i | 4 + .../errors/cpp_invalid_exponents1.stderr | 2 + .../errors/cpp_invalid_exponents2.i | 4 + .../errors/cpp_invalid_exponents2.stderr | 2 + .../errors/cpp_invalid_qualifiers.i | 43 + .../errors/cpp_invalid_qualifiers.stderr | 20 + .../test-suite/errors/cpp_invalid_template.i | 9 + .../errors/cpp_invalid_template.stderr | 3 + .../test-suite/errors/cpp_macro_locator.i | 0 .../errors/cpp_macro_locator.stderr | 0 .../errors/cpp_missing_rparenthesis.i | 0 .../errors/cpp_missing_rparenthesis.stderr | 0 .../test-suite/errors/cpp_missing_rtemplate.i | 0 .../errors/cpp_missing_rtemplate.stderr | 0 .../test-suite/errors/cpp_namespace_alias.i | 0 .../errors/cpp_namespace_alias.stderr | 0 .../errors/cpp_namespace_aliasnot.i | 0 .../errors/cpp_namespace_aliasnot.stderr | 0 .../errors/cpp_namespace_aliasundef.i | 0 .../errors/cpp_namespace_aliasundef.stderr | 0 .../errors/cpp_namespace_template_bad.i | 40 + .../errors/cpp_namespace_template_bad.stderr | 9 + .../Examples/test-suite/errors/cpp_namewarn.i | 0 .../test-suite/errors/cpp_namewarn.stderr | 0 .../errors/cpp_nested_namespace_alias.i | 34 + .../errors/cpp_nested_namespace_alias.stderr | 3 + .../test-suite/errors/cpp_nested_template.i | 0 .../errors/cpp_nested_template.stderr | 2 + .../test-suite/errors/cpp_no_access.i | 0 .../test-suite/errors/cpp_no_access.stderr | 0 .../test-suite/errors/cpp_no_return_type.i | 0 .../errors/cpp_no_return_type.stderr | 0 .../Examples/test-suite/errors/cpp_nobase.i | 0 .../test-suite/errors/cpp_nobase.stderr | 0 .../test-suite/errors/cpp_overload_const.i | 0 .../errors/cpp_overload_const.stderr | 0 .../test-suite/errors/cpp_private_inherit.i | 0 .../errors/cpp_private_inherit.stderr | 0 .../errors/cpp_raw_string_termination.i | 4 + .../errors/cpp_raw_string_termination.stderr | 2 + .../test-suite/errors/cpp_recursive_typedef.i | 0 .../errors/cpp_recursive_typedef.stderr | 0 .../test-suite/errors/cpp_refqualifier.i | 28 + .../test-suite/errors/cpp_refqualifier.stderr | 6 + .../test-suite/errors/cpp_shared_ptr.i | 0 .../test-suite/errors/cpp_shared_ptr.stderr | 0 .../errors/cpp_template_duplicate_names.i | 51 + .../cpp_template_duplicate_names.stderr | 14 + .../test-suite/errors/cpp_template_friend.i | 0 .../errors/cpp_template_friend.stderr | 0 .../test-suite/errors/cpp_template_nargs.i | 0 .../errors/cpp_template_nargs.stderr | 0 .../test-suite/errors/cpp_template_not.i | 0 .../test-suite/errors/cpp_template_not.stderr | 0 .../test-suite/errors/cpp_template_partial.i | 0 .../errors/cpp_template_partial.stderr | 0 .../test-suite/errors/cpp_template_repeat.i | 0 .../errors/cpp_template_repeat.stderr | 0 .../test-suite/errors/cpp_template_scope.i | 57 + .../errors/cpp_template_scope.stderr | 11 + .../test-suite/errors/cpp_template_undef.i | 0 .../errors/cpp_template_undef.stderr | 0 .../test-suite/errors/cpp_using_not.i | 0 .../test-suite/errors/cpp_using_not.stderr | 0 .../test-suite/errors/cpp_using_undef.i | 0 .../test-suite/errors/cpp_using_undef.stderr | 0 .../errors/doxygen_unknown_command.i | 6 + .../errors/doxygen_unknown_command.stderr | 1 + .../Examples/test-suite/errors/nomodule.i | 0 .../test-suite/errors/nomodule.stderr | 0 .../Examples/test-suite/errors/pp_badeval.i | 0 .../test-suite/errors/pp_badeval.stderr | 0 .../Examples/test-suite/errors/pp_constant.i | 0 .../test-suite/errors/pp_constant.stderr | 0 .../Examples/test-suite/errors/pp_defined.i | 0 .../test-suite/errors/pp_defined.stderr | 0 .../test-suite/errors/pp_deprecated.i | 0 .../test-suite/errors/pp_deprecated.stderr | 0 .../test-suite/errors/pp_expressions_bad.i | 43 + .../errors/pp_expressions_bad.stderr | 19 + .../test-suite/errors/pp_illegal_argument.i | 0 .../errors/pp_illegal_argument.stderr | 0 .../test-suite/errors/pp_invalid_exponents.i | 7 + .../errors/pp_invalid_exponents.stderr | 6 + .../test-suite/errors/pp_macro_badchar.i | 0 .../test-suite/errors/pp_macro_badchar.stderr | 0 .../errors/pp_macro_defined_unterminated.i | 0 .../pp_macro_defined_unterminated.stderr | 0 .../test-suite/errors/pp_macro_expansion.i | 0 .../errors/pp_macro_expansion.stderr | 0 .../errors/pp_macro_expansion_multiline.i | 0 .../pp_macro_expansion_multiline.stderr | 0 .../errors/pp_macro_inline_unterminated.i | 0 .../pp_macro_inline_unterminated.stderr | 0 .../errors/pp_macro_missing_expression.i | 2 +- .../errors/pp_macro_missing_expression.stderr | 0 .../test-suite/errors/pp_macro_nargs.i | 0 .../test-suite/errors/pp_macro_nargs.stderr | 0 .../test-suite/errors/pp_macro_redef.i | 0 .../test-suite/errors/pp_macro_redef.stderr | 0 .../test-suite/errors/pp_macro_rparen.i | 0 .../test-suite/errors/pp_macro_rparen.stderr | 0 .../errors/pp_macro_unexpected_tokens.i | 0 .../errors/pp_macro_unexpected_tokens.stderr | 0 .../test-suite/errors/pp_macro_unterminated.i | 0 .../errors/pp_macro_unterminated.stderr | 0 .../test-suite/errors/pp_misplaced_elif.i | 0 .../errors/pp_misplaced_elif.stderr | 0 .../test-suite/errors/pp_misplaced_else.i | 0 .../errors/pp_misplaced_else.stderr | 0 .../test-suite/errors/pp_missing_enddef.i | 0 .../errors/pp_missing_enddef.stderr | 0 .../test-suite/errors/pp_missing_endif.i | 0 .../test-suite/errors/pp_missing_endif.stderr | 0 .../test-suite/errors/pp_missing_endoffile.i | 0 .../errors/pp_missing_endoffile.stderr | 0 .../test-suite/errors/pp_missing_file.i | 0 .../test-suite/errors/pp_missing_file.stderr | 0 .../test-suite/errors/pp_missing_rblock.i | 0 .../errors/pp_missing_rblock.stderr | 0 .../Examples/test-suite/errors/pp_pragma.i | 0 .../test-suite/errors/pp_pragma.stderr | 0 .../test-suite/errors/pp_unknowndirective.i | 0 .../errors/pp_unknowndirective.stderr | 0 .../test-suite/errors/pp_unknowndirective2.i | 0 .../errors/pp_unknowndirective2.stderr | 0 .../test-suite/errors/pp_unknowndirective3.i | 14 + .../errors/pp_unknowndirective3.stderr | 4 + .../test-suite/errors/pp_unterm_char.i | 0 .../test-suite/errors/pp_unterm_char.stderr | 0 .../test-suite/errors/pp_unterm_comment.i | 0 .../errors/pp_unterm_comment.stderr | 0 .../test-suite/errors/pp_unterm_string.i | 0 .../test-suite/errors/pp_unterm_string.stderr | 0 .../test-suite/errors/pp_unterminated_block.i | 0 .../errors/pp_unterminated_block.stderr | 0 .../test-suite/errors/pp_variable_args.i | 0 .../test-suite/errors/pp_variable_args.stderr | 0 .../test-suite/errors/swig_apply_nargs.i | 0 .../test-suite/errors/swig_apply_nargs.stderr | 0 .../Examples/test-suite/errors/swig_extend.i | 0 .../test-suite/errors/swig_extend.stderr | 0 .../test-suite/errors/swig_fragment_missing.i | 0 .../errors/swig_fragment_missing.stderr | 0 .../test-suite/errors/swig_identifier.i | 0 .../test-suite/errors/swig_identifier.stderr | 0 .../test-suite/errors/swig_insert_bad.i | 0 .../test-suite/errors/swig_insert_bad.stderr | 0 .../test-suite/errors/swig_pythoncode_bad.i | 0 .../errors/swig_pythoncode_bad.stderr | 0 .../test-suite/errors/swig_pythoncode_bad2.i | 0 .../errors/swig_pythoncode_bad2.stderr | 0 .../test-suite/errors/swig_pythoncode_bad3.i | 0 .../errors/swig_pythoncode_bad3.stderr | 0 .../test-suite/errors/swig_typemap_copy.i | 0 .../errors/swig_typemap_copy.stderr | 0 .../test-suite/errors/swig_typemap_old.i | 0 .../test-suite/errors/swig_typemap_old.stderr | 0 .../test-suite/errors/swig_typemap_warn.i | 0 .../errors/swig_typemap_warn.stderr | 0 .../Examples/test-suite/evil_diamond.i | 0 .../Examples/test-suite/evil_diamond_ns.i | 0 .../Examples/test-suite/evil_diamond_prop.i | 0 .../Examples/test-suite/exception_classname.i | 0 .../Examples/test-suite/exception_order.i | 17 +- .../test-suite/exception_partial_info.i | 10 +- .../Examples/test-suite/expressions.i | 0 .../Examples/test-suite/extend.i | 4 + .../extend_constructor_destructor.i | 0 .../Examples/test-suite/extend_default.i | 0 .../Examples/test-suite/extend_placement.i | 0 .../test-suite/extend_special_variables.i | 0 .../Examples/test-suite/extend_template.i | 0 .../test-suite/extend_template_method.i | 0 .../Examples/test-suite/extend_template_ns.i | 0 .../test-suite/extend_typedef_class.i | 0 .../Examples/test-suite/extend_variable.i | 0 .../Examples/test-suite/extern_c.i | 0 .../Examples/test-suite/extern_declaration.i | 0 .../Examples/test-suite/extern_namespace.i | 0 .../Examples/test-suite/extern_throws.i | 18 + .../Examples/test-suite/features.i | 4 + .../Examples/test-suite/file_test.i | 0 .../Examples/test-suite/fragments.i | 0 .../Examples/test-suite/friends.i | 0 .../Examples/test-suite/friends_template.i | 0 .../Examples/test-suite/funcptr.i | 0 .../Examples/test-suite/funcptr_cpp.i | 3 + .../Examples/test-suite/function_typedef.i | 0 .../Examples/test-suite/functors.i | 33 + .../Examples/test-suite/fvirtual.i | 0 .../Examples/test-suite/global_functions.i | 0 .../Examples/test-suite/global_namespace.i | 0 .../Examples/test-suite/global_ns_arg.i | 0 .../Examples/test-suite/global_scope_types.i | 0 .../Examples/test-suite/global_vars.i | 0 .../Examples/test-suite/go/Makefile.in | 87 +- .../test-suite/go/abstract_access_runme.go | 2 +- .../test-suite/go/abstract_typedef2_runme.go | 2 +- .../test-suite/go/abstract_typedef_runme.go | 2 +- .../test-suite/go/abstract_virtual_runme.go | 2 +- .../Examples/test-suite/go/argout_runme.go | 2 +- .../test-suite/go/array_member_runme.go | 2 +- .../test-suite/go/arrays_global_runme.go | 2 +- .../test-suite/go/char_binary_runme.go | 2 +- .../test-suite/go/class_ignore_runme.go | 2 +- .../test-suite/go/class_scope_weird_runme.go | 2 +- .../test-suite/go/compactdefaultargs_runme.go | 2 +- .../Examples/test-suite/go/constover_runme.go | 3 +- .../test-suite/go/constructor_copy_runme.go | 2 +- .../Examples/test-suite/go/contract_runme.go | 2 +- ...cpp11_strongly_typed_enumerations_runme.go | 2 +- .../Examples/test-suite/go/cpp_enum_runme.go | 2 +- .../test-suite/go/cpp_namespace_runme.go | 2 +- .../test-suite/go/cpp_static_runme.go | 2 +- .../test-suite/go/default_args_runme.go | 2 +- .../go/default_constructor_runme.go | 2 +- .../go/director_alternating_runme.go | 2 +- .../test-suite/go/director_basic_runme.go | 2 +- .../test-suite/go/director_classic_runme.go | 2 +- .../test-suite/go/director_default_runme.go | 2 +- .../test-suite/go/director_detect_runme.go | 2 +- .../test-suite/go/director_enum_runme.go | 2 +- .../test-suite/go/director_exception_runme.go | 2 +- .../test-suite/go/director_extend_runme.go | 2 +- .../test-suite/go/director_finalizer_runme.go | 2 +- .../test-suite/go/director_frob_runme.go | 2 +- .../test-suite/go/director_nested_runme.go | 2 +- .../test-suite/go/director_profile_runme.go | 2 +- .../test-suite/go/director_protected_runme.go | 2 +- .../test-suite/go/director_string_runme.go | 2 +- .../test-suite/go/director_unroll_runme.go | 2 +- .../Examples/test-suite/go/disown_runme.go | 2 +- .../test-suite/go/dynamic_cast_runme.go | 2 +- .../Examples/test-suite/go/empty_c_runme.go | 2 +- .../Examples/test-suite/go/empty_runme.go | 2 +- .../test-suite/go/enum_template_runme.go | 2 +- .../Examples/test-suite/go/enums_runme.go | 2 +- .../test-suite/go/exception_order_runme.go | 2 +- .../test-suite/go/extend_placement_runme.go | 2 +- .../test-suite/go/extend_template_ns_runme.go | 2 +- .../test-suite/go/extend_template_runme.go | 2 +- .../test-suite/go/extend_variable_runme.go | 2 +- .../Examples/test-suite/go/extern_c_runme.go | 2 +- .../Examples/test-suite/go/friends_runme.go | 2 +- .../Examples/test-suite/go/fvirtual_runme.go | 2 +- .../test-suite/go/global_ns_arg_runme.go | 2 +- .../test-suite/go/go_director_inout_runme.go | 2 +- .../Examples/test-suite/go/go_inout_runme.go | 2 +- .../test-suite/go/go_subdir_import_runme.go | 6 +- .../Examples/test-suite/go/grouping_runme.go | 2 +- .../test-suite/go/import_nomodule_runme.go | 2 +- .../Examples/test-suite/go/imports_runme.go | 4 +- .../Examples/test-suite/go/inctest_runme.go | 2 +- .../test-suite/go/inherit_member_runme.go | 2 +- .../test-suite/go/inherit_missing_runme.go | 2 +- .../Examples/test-suite/go/input_runme.go | 2 +- .../test-suite/go/keyword_rename_c_runme.go | 2 +- .../test-suite/go/keyword_rename_runme.go | 2 +- .../test-suite/go/li_attribute_runme.go | 2 +- .../test-suite/go/li_carrays_cpp_runme.go | 2 +- .../test-suite/go/li_carrays_runme.go | 2 +- .../test-suite/go/li_cdata_cpp_runme.go | 2 +- .../Examples/test-suite/go/li_cdata_runme.go | 2 +- .../test-suite/go/li_cmalloc_runme.go | 2 +- .../test-suite/go/li_cpointer_cpp_runme.go | 2 +- .../test-suite/go/li_cpointer_runme.go | 2 +- .../test-suite/go/li_std_map_runme.go | 2 +- .../test-suite/go/li_std_vector_ptr_runme.go | 2 +- .../test-suite/go/member_pointer_runme.go | 2 +- .../test-suite/go/memberin_extend_c_runme.go | 2 +- .../Examples/test-suite/go/minherit_runme.go | 2 +- .../Examples/test-suite/go/mod_runme.go | 4 +- .../test-suite/go/multi_import_runme.go | 4 +- .../test-suite/go/namespace_class_runme.go | 2 +- .../test-suite/go/namespace_typemap_runme.go | 2 +- .../go/namespace_virtual_method_runme.go | 2 +- .../test-suite/go/naturalvar_runme.go | 2 +- .../test-suite/go/nested_workaround_runme.go | 2 +- .../go/overload_complicated_runme.go | 2 +- .../test-suite/go/overload_copy_runme.go | 2 +- .../test-suite/go/overload_extend2_runme.go | 2 +- .../test-suite/go/overload_extend_c_runme.go | 2 +- .../test-suite/go/overload_extend_runme.go | 2 +- .../go/overload_polymorphic_runme.go | 2 +- .../test-suite/go/overload_rename_runme.go | 2 +- .../test-suite/go/overload_simple_runme.go | 2 +- .../test-suite/go/overload_subtype_runme.go | 2 +- .../go/overload_template_fast_runme.go | 2 +- .../test-suite/go/overload_template_runme.go | 2 +- .../Examples/test-suite/go/preproc_runme.go | 2 +- .../test-suite/go/primitive_ref_runme.go | 2 +- .../test-suite/go/profiletest_runme.go | 2 +- .../Examples/test-suite/go/refcount_runme.go | 2 +- .../go/reference_global_vars_runme.go | 2 +- .../test-suite/go/rename_scope_runme.go | 2 +- .../test-suite/go/rename_simple_runme.go | 2 +- .../go/rename_strip_encoder_runme.go | 2 +- .../test-suite/go/ret_by_value_runme.go | 2 +- .../test-suite/go/return_const_value_runme.go | 2 +- .../go/smart_pointer_extend_runme.go | 2 +- .../go/smart_pointer_member_runme.go | 2 +- .../go/smart_pointer_multi_runme.go | 2 +- .../go/smart_pointer_multi_typedef_runme.go | 2 +- .../go/smart_pointer_overload_runme.go | 2 +- .../go/smart_pointer_rename_runme.go | 2 +- .../go/smart_pointer_simple_runme.go | 2 +- .../smart_pointer_templatevariables_runme.go | 2 +- .../go/smart_pointer_typedef_runme.go | 2 +- .../Examples/test-suite/go/sneaky1_runme.go | 2 +- .../go/special_variable_macros_runme.go | 2 +- .../go/static_const_member_2_runme.go | 2 +- .../go/struct_initialization_runme.go | 2 +- .../test-suite/go/struct_rename_runme.go | 2 +- .../test-suite/go/struct_value_runme.go | 2 +- .../go/template_default_arg_runme.go | 2 +- .../test-suite/go/template_extend1_runme.go | 2 +- .../test-suite/go/template_extend2_runme.go | 2 +- .../test-suite/go/template_inherit_runme.go | 2 +- .../test-suite/go/template_ns4_runme.go | 2 +- .../test-suite/go/template_ns_runme.go | 2 +- .../test-suite/go/template_opaque_runme.go | 2 +- .../test-suite/go/template_ref_type_runme.go | 2 +- .../test-suite/go/template_rename_runme.go | 2 +- .../test-suite/go/template_static_runme.go | 2 +- .../go/template_tbase_template_runme.go | 2 +- .../go/template_type_namespace_runme.go | 2 +- .../go/template_typedef_cplx3_runme.go | 2 +- .../go/template_typedef_cplx4_runme.go | 2 +- .../test-suite/go/threads_exception_runme.go | 2 +- .../test-suite/go/typedef_class_runme.go | 2 +- .../test-suite/go/typedef_funcptr_runme.go | 29 + .../test-suite/go/typedef_inherit_runme.go | 2 +- .../test-suite/go/typedef_scope_runme.go | 2 +- .../test-suite/go/typemap_namespace_runme.go | 2 +- .../test-suite/go/typemap_ns_using_runme.go | 2 +- .../go/typemap_out_optimal_runme.go | 2 +- .../Examples/test-suite/go/typename_runme.go | 2 +- .../Examples/test-suite/go/unions_runme.go | 2 +- .../Examples/test-suite/go/using1_runme.go | 2 +- .../Examples/test-suite/go/using2_runme.go | 2 +- .../test-suite/go/using_composition_runme.go | 2 +- .../test-suite/go/using_extend_runme.go | 2 +- .../test-suite/go/using_inherit_runme.go | 2 +- .../test-suite/go/using_private_runme.go | 2 +- .../test-suite/go/using_protected_runme.go | 2 +- .../test-suite/go/varargs_overload_runme.go | 74 + .../Examples/test-suite/go/varargs_runme.go | 2 +- .../test-suite/go/virtual_derivation_runme.go | 2 +- .../test-suite/go/virtual_poly_runme.go | 2 +- .../Examples/test-suite/go/voidtest_runme.go | 2 +- .../Examples/test-suite/go/wrapmacro_runme.go | 2 +- .../Examples/test-suite/go_director_inout.i | 0 .../Examples/test-suite/go_inout.i | 0 .../Examples/test-suite/go_subdir_import.list | 2 +- .../Examples/test-suite/go_subdir_import_a.i | 0 .../Examples/test-suite/go_subdir_import_b.i | 0 .../Examples/test-suite/grouping.i | 0 .../Examples/test-suite/guile/Makefile.in | 0 .../Examples/test-suite/guile/README | 0 .../test-suite/guile/argout_runme.scm | 0 .../Examples/test-suite/guile/casts_runme.scm | 0 .../test-suite/guile/char_constant_runme.scm | 0 .../test-suite/guile/class_ignore_runme.scm | 0 .../test-suite/guile/constover_runme.scm | 0 .../test-suite/guile/contract_runme.scm | 0 .../test-suite/guile/cpp_enum_runme.scm | 0 .../test-suite/guile/cpp_namespace_runme.scm | 0 .../test-suite/guile/dynamic_cast_runme.scm | 0 .../guile/guile_ext_test_external.cxx | 0 .../test-suite/guile/guile_ext_test_runme.scm | 0 .../guile/import_nomodule_runme.scm | 0 .../test-suite/guile/imports_runme.scm | 0 .../guile/inherit_missing_runme.scm | 0 .../test-suite/guile/integers_runme.scm | 0 .../test-suite/guile/li_std_string_runme.scm | 0 .../test-suite/guile/li_typemaps_runme.scm | 0 .../test-suite/guile/list_vector_runme.scm | 0 .../test-suite/guile/multivalue_runme.scm | 0 .../Examples/test-suite/guile/name_runme.scm | 0 .../guile/overload_complicated_runme.scm | 6 +- .../test-suite/guile/overload_copy_runme.scm | 0 .../guile/overload_extend_c_runme.scm | 0 .../guile/overload_extend_runme.scm | 0 .../test-suite/guile/overload_null_runme.scm | 53 + .../guile/overload_simple_runme.scm | 0 .../guile/overload_subtype_runme.scm | 0 .../test-suite/guile/pointer_in_out_runme.scm | 0 .../guile/reference_global_vars_runme.scm | 0 .../Examples/test-suite/guile/testsuite.scm | 0 .../guile/throw_exception_runme.scm | 0 .../guile/typedef_inherit_runme.scm | 0 .../test-suite/guile/typename_runme.scm | 0 .../test-suite/guile/unions_runme.scm | 0 .../Examples/test-suite/guile_ext_test.i | 0 .../Examples/test-suite/iadd.i | 0 .../Examples/test-suite/ignore_parameter.i | 4 + .../test-suite/ignore_template_constructor.i | 8 +- .../Examples/test-suite/immutable_values.i | 0 .../Examples/test-suite/implicittest.i | 0 .../Examples/test-suite/import_fragments.i | 18 + .../Examples/test-suite/import_fragments_a.i | 48 + .../Examples/test-suite/import_fragments_b.i | 9 + .../Examples/test-suite/import_nomodule.h | 0 .../Examples/test-suite/import_nomodule.i | 0 .../Examples/test-suite/import_stl.list | 0 .../Examples/test-suite/import_stl_a.i | 0 .../Examples/test-suite/import_stl_b.i | 0 .../Examples/test-suite/imports.list | 0 .../Examples/test-suite/imports_a.h | 0 .../Examples/test-suite/imports_a.i | 0 .../Examples/test-suite/imports_b.h | 0 .../Examples/test-suite/imports_b.i | 0 .../Examples/test-suite/inctest.h | 0 .../Examples/test-suite/inctest.i | 0 .../Examples/test-suite/infinity.i | 0 .../Examples/test-suite/inherit.i | 0 .../Examples/test-suite/inherit_member.i | 0 .../Examples/test-suite/inherit_missing.i | 0 .../Examples/test-suite/inherit_same_name.i | 0 .../test-suite/inherit_target_language.i | 0 .../Examples/test-suite/inherit_void_arg.i | 0 .../Examples/test-suite/inline_initializer.i | 0 .../Examples/test-suite/inout.i | 0 .../Examples/test-suite/inplaceadd.i | 0 .../Examples/test-suite/input.i | 0 .../Examples/test-suite/insert_directive.h | 0 .../Examples/test-suite/insert_directive.i | 0 .../Examples/test-suite/integers.i | 0 .../test-suite/intermediary_classname.i | 15 +- .../test-suite/java/CommentParser.java | 172 + .../Examples/test-suite/java/Makefile.in | 32 +- .../Examples/test-suite/java/README | 0 .../test-suite/java/aggregate_runme.java | 0 .../test-suite/java/allprotected_runme.java | 0 .../java/apply_signed_char_runme.java | 0 .../test-suite/java/apply_strings_runme.java | 0 .../test-suite/java/array_member_runme.java | 0 .../java/arrays_global_twodim_runme.java | 0 .../test-suite/java/char_binary_runme.java | 0 .../test-suite/java/char_strings_runme.java | 0 .../java/class_scope_namespace_runme.java | 59 + .../java/constant_directive_runme.java | 0 ...1_alias_nested_template_scoping_runme.java | 32 + .../java/cpp11_constexpr_runme.java | 0 .../java/cpp11_lambda_functions_runme.java | 0 .../java/cpp11_raw_string_literals_runme.java | 67 + .../java/cpp11_ref_qualifiers_runme.java | 56 + ..._ref_qualifiers_rvalue_unignore_runme.java | 20 + .../cpp11_ref_qualifiers_typemaps_runme.java | 39 + .../java/cpp11_result_of_runme.java | 0 .../java/cpp11_shared_ptr_overload_runme.java | 60 + .../java/cpp11_std_array_runme.java} | 22 +- .../java/cpp11_std_unordered_map_runme.java | 122 + .../java/cpp11_std_unordered_set_runme.java | 75 + ...p11_strongly_typed_enumerations_runme.java | 0 ...ongly_typed_enumerations_simple_runme.java | 0 .../java/cpp11_template_typedefs_runme.java | 19 + .../java/cpp11_thread_local_runme.java | 0 .../java/cpp11_type_aliasing_runme.java | 0 .../java/cpp17_nested_namespaces_runme.java | 32 + .../cpp17_nspace_nested_namespaces_runme.java | 30 + .../test-suite/java/cpp_typedef_runme.java | 0 ...usly_recurring_template_pattern_runme.java | 0 .../test-suite/java/default_args_runme.java | 0 .../java/default_constructor_runme.java | 0 .../test-suite/java/derived_nested_runme.java | 0 .../java/director_abstract_runme.java | 0 .../test-suite/java/director_basic_runme.java | 0 .../java/director_binary_string_runme.java | 0 .../java/director_classes_runme.java | 13 +- .../java/director_classic_runme.java | 0 .../java/director_default_runme.java | 0 .../test-suite/java/director_enum_runme.java | 0 .../director_exception_catches_runme.java | 35 + .../java/director_exception_runme.java | 0 .../test-suite/java/director_frob_runme.java | 0 .../java/director_ignore_runme.java | 0 .../java/director_nested_class_runme.java | 0 .../java/director_nspace_runme.java | 0 .../java/director_ownership_runme.java | 42 + .../java/director_pass_by_value_runme.java | 0 .../java/director_primitives_runme.java | 0 .../java/director_protected_runme.java | 0 .../test-suite/java/director_ref_runme.java | 0 .../java/director_smartptr_runme.java | 36 + .../java/director_string_runme.java | 0 .../java/director_thread_runme.java | 6 + .../java/director_unroll_runme.java | 0 .../java/director_wombat_runme.java | 0 .../test-suite/java/doxygen_alias_runme.java | 32 + .../java/doxygen_basic_notranslate_runme.java | 102 + .../java/doxygen_basic_translate_runme.java | 99 + .../test-suite/java/doxygen_ignore_runme.java | 44 + .../java/doxygen_misc_constructs_runme.java | 200 + .../java/doxygen_nested_class_runme.java | 48 + .../doxygen_parsing_enums_proper_runme.java | 66 + .../doxygen_parsing_enums_simple_runme.java | 58 + .../doxygen_parsing_enums_typesafe_runme.java | 67 + ...oxygen_parsing_enums_typeunsafe_runme.java | 66 + .../java/doxygen_parsing_runme.java | 141 + .../doxygen_translate_all_tags_runme.java | 153 + .../java/doxygen_translate_links_runme.java | 69 + .../java/doxygen_translate_runme.java | 279 + .../test-suite/java/dynamic_cast_runme.java | 0 .../test-suite/java/enum_forward_runme.java | 0 .../test-suite/java/enum_macro_runme.java | 24 + .../java/enum_thorough_proper_runme.java | 0 .../test-suite/java/enum_thorough_runme.java | 0 .../java/enum_thorough_simple_runme.java | 0 .../java/enum_thorough_typeunsafe_runme.java | 0 .../extend_constructor_destructor_runme.java | 0 .../test-suite/java/extend_default_runme.java | 0 .../java/extend_special_variables_runme.java | 0 .../java/extend_template_method_runme.java | 0 .../java/extend_typedef_class_runme.java | 0 .../java/extern_declaration_runme.java | 0 .../test-suite/java/friends_runme.java | 0 .../java/friends_template_runme.java | 0 .../java/global_namespace_runme.java | 0 .../java/ignore_parameter_runme.java | 0 .../test-suite/java/imports_runme.java | 0 .../test-suite/java/inctest_runme.java | 0 .../java/inherit_target_language_runme.java | 0 .../java/intermediary_classname_runme.java | 0 .../test-suite/java/java_constants_runme.java | 0 .../java_director_assumeoverride_runme.java | 2 +- ...rector_exception_feature_nspace_runme.java | 13 +- ...java_director_exception_feature_runme.java | 13 +- .../java/java_director_ptrclass_runme.java | 0 .../test-suite/java/java_director_runme.java | 0 .../java_director_typemaps_ptr_runme.java | 200 + .../java/java_director_typemaps_runme.java | 8 +- .../test-suite/java/java_enums_runme.java | 0 .../test-suite/java/java_jnitypes_runme.java | 0 .../java_lib_arrays_dimensionless_runme.java | 0 .../java/java_lib_arrays_runme.java | 0 .../java/java_lib_various_runme.java | 0 .../test-suite/java/java_pgcpp_runme.java | 0 .../test-suite/java/java_pragmas_runme.java | 0 .../test-suite/java/java_prepost_runme.java | 0 .../test-suite/java/java_throws_runme.java | 22 + .../java/java_typemaps_proxy_runme.java | 0 .../java/java_typemaps_typewrapper_runme.java | 0 .../test-suite/java/kwargs_feature_runme.java | 0 .../java/li_boost_intrusive_ptr_runme.java | 0 .../li_boost_shared_ptr_attribute_runme.java | 0 .../java/li_boost_shared_ptr_bits_runme.java | 0 .../li_boost_shared_ptr_director_runme.java | 129 + .../java/li_boost_shared_ptr_runme.java | 0 .../li_boost_shared_ptr_template_runme.java | 0 .../test-suite/java/li_carrays_cpp_runme.java | 0 .../test-suite/java/li_carrays_runme.java | 0 .../test-suite/java/li_cdata_cpp_runme.java | 0 .../test-suite/java/li_cdata_runme.java | 0 .../java/li_std_auto_ptr_runme.java | 0 .../test-suite/java/li_std_except_runme.java | 0 .../test-suite/java/li_std_list_runme.java | 180 + .../test-suite/java/li_std_map_runme.java | 122 + .../test-suite/java/li_std_set_runme.java | 75 + .../test-suite/java/li_std_string_runme.java | 0 .../java/li_std_vector_enum_runme.java | 0 .../test-suite/java/li_std_vector_runme.java | 171 + .../test-suite/java/li_typemaps_runme.java | 0 .../test-suite/java/long_long_runme.java | 6 +- .../java/member_pointer_const_runme.java | 60 + .../test-suite/java/member_pointer_runme.java | 2 + .../java/memberin_extend_runme.java | 0 .../test-suite/java/minherit2_runme.java | 0 .../multiple_inheritance_abstract_runme.java | 0 ...multiple_inheritance_interfaces_runme.java | 0 .../multiple_inheritance_nspace_runme.java | 0 .../java/multiple_inheritance_runme.java | 0 ...multiple_inheritance_shared_ptr_runme.java | 0 .../java/namespace_chase_runme.java | 26 + .../namespace_forward_declaration_runme.java | 0 .../java/namespace_template_runme.java | 32 + .../java/native_directive_runme.java | 22 + .../java/naturalvar_more_runme.java | 0 .../java/naturalvar_onoff_runme.java | 0 .../test-suite/java/nested_class_runme.java | 0 .../java/nested_extend_c_runme.java | 0 .../test-suite/java/nested_structs_runme.java | 0 .../java/nested_template_base_runme.java | 0 .../java/nested_workaround_runme.java | 0 .../test-suite/java/nspace_extend_runme.java | 0 .../test-suite/java/nspace_runme.java | 0 .../java/operator_overload_runme.java | 0 .../java/overload_complicated_runme.java | 0 .../java/overload_template_runme.java | 0 .../java/pointer_reference_runme.java | 0 .../java/preproc_line_file_runme.java | 0 .../test-suite/java/primitive_ref_runme.java | 0 .../test-suite/java/profiletest_runme.java | 0 .../test-suite/java/proxycode_runme.java | 0 .../test-suite/java/rename1_runme.java | 4 - .../test-suite/java/rename2_runme.java | 4 - .../test-suite/java/rename3_runme.java | 4 - .../test-suite/java/rename4_runme.java | 4 - .../java/rename_pcre_encoder_runme.java | 0 .../java/rename_pcre_enum_runme.java | 0 .../java/rename_wildcard_runme.java | 0 .../test-suite/java/ret_by_value_runme.java | 0 .../Examples/test-suite/java/rname_runme.java | 0 .../Examples/test-suite/java/sizet_runme.java | 0 .../smart_pointer_const_overload_runme.java | 0 .../java/smart_pointer_ignore_runme.java | 0 .../java/special_variable_macros_runme.java | 0 .../java/special_variables_runme.java | 0 .../java/template_class_reuse_name_runme.java | 57 + .../java/template_classes_runme.java | 0 .../java/template_default_arg_runme.java | 0 .../java/template_default_cache_runme.java | 0 .../template_default_class_parms_runme.java | 0 ...ate_default_class_parms_typedef_runme.java | 0 .../java/template_methods_runme.java | 0 ...e_namespace_forward_declaration_runme.java | 0 .../java/template_nested_runme.java | 0 .../java/template_nested_typemaps_runme.java | 0 ...emplate_parameters_global_scope_runme.java | 75 + ...template_partial_specialization_runme.java | 4 +- ..._partial_specialization_typedef_runme.java | 4 +- .../template_template_parameters_runme.java | 0 ...template_templated_constructors_runme.java | 0 .../java/template_typedef_inherit_runme.java | 0 .../java/template_typedef_typedef_runme.java | 0 ...rective_and_declaration_forward_runme.java | 10 +- ...emplate_using_directive_typedef_runme.java | 31 + .../typedef_classforward_same_name_runme.java | 26 + .../java/typedef_funcptr_runme.java | 34 + .../test-suite/java/typemap_arrays_runme.java | 0 .../java/typemap_namespace_runme.java | 0 .../java/typemap_out_optimal_runme.java | 0 .../java/typemap_template_parms_runme.java | 23 + .../test-suite/java/unions_runme.java | 0 ...rective_and_declaration_forward_runme.java | 0 ...using_directive_and_declaration_runme.java | 0 .../test-suite/java/using_pointers_runme.java | 0 .../test-suite/java/varargs_runme.java | 0 .../test-suite/java/virtual_poly_runme.java | 0 .../test-suite/java/wallkw_runme.java | 0 .../Examples/test-suite/java_constants.i | 0 .../Examples/test-suite/java_director.i | 1 + .../test-suite/java_director_assumeoverride.i | 4 +- .../java_director_exception_feature.i | 37 +- .../java_director_exception_feature_nspace.i | 35 +- .../test-suite/java_director_ptrclass.i | 0 .../test-suite/java_director_typemaps.i | 15 +- .../test-suite/java_director_typemaps_ptr.i | 433 + .../Examples/test-suite/java_enums.i | 0 .../Examples/test-suite/java_jnitypes.i | 0 .../Examples/test-suite/java_lib_arrays.i | 0 .../java_lib_arrays_dimensionless.i | 0 .../Examples/test-suite/java_lib_various.i | 0 .../test-suite/java_nspacewithoutpackage.i | 0 .../Examples/test-suite/java_pgcpp.i | 0 .../Examples/test-suite/java_pragmas.i | 0 .../Examples/test-suite/java_prepost.i | 0 .../Examples/test-suite/java_throws.i | 33 +- .../Examples/test-suite/java_typemaps_proxy.i | 0 .../test-suite/java_typemaps_typewrapper.i | 0 .../test-suite/javascript/Makefile.in | 8 +- .../javascript/abstract_access_runme.js | 0 .../javascript/abstract_inherit_runme.js | 0 .../javascript/abstract_typedef2_runme.js | 0 .../javascript/abstract_typedef_runme.js | 0 .../javascript/abstract_virtual_runme.js | 0 .../javascript/array_member_runme.js | 0 .../javascript/arrays_global_runme.js | 0 .../test-suite/javascript/callback_runme.js | 0 .../javascript/char_binary_runme.js | 0 .../javascript/char_strings_runme.js | 0 .../javascript/class_ignore_runme.js | 0 .../javascript/class_scope_weird_runme.js | 0 .../javascript/complextest_runme.js | 15 +- .../test-suite/javascript/constover_runme.js | 0 .../javascript/constructor_copy_runme.js | 0 ...cpp11_strongly_typed_enumerations_runme.js | 0 .../test-suite/javascript/cpp_enum_runme.js | 0 .../javascript/cpp_namespace_runme.js | 0 .../test-suite/javascript/cpp_static_runme.js | 0 .../javascript/director_alternating_runme.js | 0 .../test-suite/javascript/disown_runme.js | 0 .../javascript/dynamic_cast_runme.js | 0 .../test-suite/javascript/empty_c_runme.js | 0 .../test-suite/javascript/empty_runme.js | 0 .../javascript/enum_template_runme.js | 0 .../test-suite/javascript/infinity_runme.js | 0 .../namespace_virtual_method_runme.js | 0 .../javascript/node_template/binding.gyp.in | 0 .../javascript/node_template/index.js.in | 0 .../javascript/nspace_extend_runme.js | 0 .../test-suite/javascript/nspace_runme.js | 0 .../javascript/null_pointer_runme.js | 2 +- .../javascript/overload_copy_runme.js | 0 .../javascript/overload_null_runme.js | 49 + .../javascript/preproc_include_runme.js | 0 .../test-suite/javascript/preproc_runme.js | 0 .../test-suite/javascript/rename1_runme.js | 4 - .../test-suite/javascript/rename2_runme.js | 4 - .../test-suite/javascript/rename3_runme.js | 4 - .../test-suite/javascript/rename4_runme.js | 4 - .../javascript/rename_scope_runme.js | 0 .../javascript/rename_simple_runme.js | 0 .../javascript/ret_by_value_runme.js | 0 .../javascript/string_simple_runme.js | 2 +- .../javascript/struct_value_runme.js | 0 .../javascript/swig_exception_runme.js | 0 .../javascript/template_static_runme.js | 0 .../javascript/typedef_class_runme.js | 0 .../javascript/typedef_inherit_runme.js | 0 .../javascript/typedef_scope_runme.js | 0 .../javascript/typemap_arrays_runme.js | 0 .../javascript/typemap_delete_runme.js | 0 .../javascript/typemap_namespace_runme.js | 0 .../javascript/typemap_ns_using_runme.js | 0 .../test-suite/javascript/using1_runme.js | 0 .../test-suite/javascript/using2_runme.js | 0 .../test-suite/javascript/varargs_runme.js | 0 .../Examples/test-suite/keyword_rename.i | 2 + .../Examples/test-suite/keyword_rename_c.i | 0 .../Examples/test-suite/kind.i | 0 .../Examples/test-suite/kwargs_feature.i | 0 .../Examples/test-suite/langobj.i | 0 .../Examples/test-suite/lextype.i | 0 .../Examples/test-suite/li_attribute.i | 0 .../test-suite/li_attribute_template.i | 0 .../test-suite/li_boost_intrusive_ptr.i | 0 .../Examples/test-suite/li_boost_shared_ptr.i | 0 .../li_boost_shared_ptr_attribute.i | 0 .../test-suite/li_boost_shared_ptr_bits.i | 4 + .../test-suite/li_boost_shared_ptr_director.i | 138 + .../test-suite/li_boost_shared_ptr_template.i | 0 .../Examples/test-suite/li_carrays.i | 0 .../Examples/test-suite/li_carrays_cpp.i | 0 .../Examples/test-suite/li_cdata.i | 0 .../Examples/test-suite/li_cdata_carrays.i | 0 .../test-suite/li_cdata_carrays_cpp.i | 0 .../Examples/test-suite/li_cdata_cpp.i | 0 .../Examples/test-suite/li_cmalloc.i | 0 .../Examples/test-suite/li_constraints.i | 0 .../Examples/test-suite/li_cpointer.i | 0 .../Examples/test-suite/li_cpointer_cpp.i | 0 .../Examples/test-suite/li_cstring.i | 0 .../Examples/test-suite/li_cwstring.i | 0 .../Examples/test-suite/li_factory.i | 0 .../Examples/test-suite/li_implicit.i | 5 +- .../Examples/test-suite/li_math.i | 0 .../Examples/test-suite/li_reference.i | 0 .../Examples/test-suite/li_std_auto_ptr.i | 0 .../Examples/test-suite/li_std_carray.i | 0 .../Examples/test-suite/li_std_combinations.i | 0 .../test-suite/li_std_container_typemaps.i | 0 .../test-suite/li_std_containers_int.i | 0 .../Examples/test-suite/li_std_deque.i | 0 .../Examples/test-suite/li_std_except.i | 40 + .../test-suite/li_std_except_as_class.i | 11 +- .../Examples/test-suite/li_std_functors.i | 0 .../Examples/test-suite/li_std_list.i | 72 + .../Examples/test-suite/li_std_map.i | 25 + .../Examples/test-suite/li_std_map_member.i | 0 .../Examples/test-suite/li_std_multimap.i | 0 .../Examples/test-suite/li_std_pair.i | 0 .../Examples/test-suite/li_std_pair_extra.i | 0 .../test-suite/li_std_pair_lang_object.i | 0 .../Examples/test-suite/li_std_pair_using.i | 0 .../Examples/test-suite/li_std_queue.i | 0 .../Examples/test-suite/li_std_set.i | 35 + .../Examples/test-suite/li_std_stack.i | 0 .../Examples/test-suite/li_std_stream.i | 0 .../Examples/test-suite/li_std_string.i | 31 +- .../Examples/test-suite/li_std_string_extra.i | 8 + .../Examples/test-suite/li_std_vector.i | 0 .../test-suite/li_std_vector_back_reference.i | 14 + .../Examples/test-suite/li_std_vector_enum.i | 0 .../Examples/test-suite/li_std_vector_extra.i | 12 +- .../test-suite/li_std_vector_member_var.i | 0 .../Examples/test-suite/li_std_vector_ptr.i | 17 + .../Examples/test-suite/li_std_vectora.i | 0 .../Examples/test-suite/li_std_wstream.i | 0 .../Examples/test-suite/li_std_wstring.i | 24 +- .../Examples/test-suite/li_stdint.i | 0 .../Examples/test-suite/li_swigtype_inout.i | 0 .../Examples/test-suite/li_typemaps.i | 0 .../Examples/test-suite/li_typemaps_apply.i | 0 .../Examples/test-suite/li_windows.i | 0 .../Examples/test-suite/list_vector.i | 0 .../Examples/test-suite/long_long.i | 0 .../Examples/test-suite/long_long_apply.i | 0 .../Examples/test-suite/lua/Makefile.in | 6 - .../test-suite/lua/abstract_access_runme.lua | 2 +- .../test-suite/lua/array_member_runme.lua | 0 .../test-suite/lua/arrays_global_runme.lua | 0 .../test-suite/lua/char_strings_runme.lua | 0 .../test-suite/lua/chartest_runme.lua | 0 ...pp11_strongly_typed_enumerations_runme.lua | 0 .../test-suite/lua/cpp_basic_runme.lua | 0 .../test-suite/lua/cpp_enum_runme.lua | 0 .../test-suite/lua/cpp_namespace_runme.lua | 0 .../test-suite/lua/cpp_nodefault_runme.lua | 0 .../test-suite/lua/cpp_static_runme.lua | 0 .../test-suite/lua/cpp_typedef_runme.lua | 0 .../Examples/test-suite/lua/disown_runme.lua | 0 .../test-suite/lua/dynamic_cast_runme.lua | 0 .../test-suite/lua/enum_plus_runme.lua | 0 .../test-suite/lua/enum_rename_runme.lua | 0 .../lua/enum_scope_template_runme.lua | 0 .../test-suite/lua/enum_template_runme.lua | 0 .../Examples/test-suite/lua/enums_runme.lua | 0 .../test-suite/lua/equality_runme.lua | 0 .../test-suite/lua/exception_order_runme.lua | 0 .../lua/exception_partial_info_runme.lua | 0 .../extend_constructor_destructor_runme.lua | 0 .../test-suite/lua/extend_placement_runme.lua | 0 .../Examples/test-suite/lua/extend_runme.lua | 0 .../test-suite/lua/extend_template_runme.lua | 0 .../lua/extend_typedef_class_runme.lua | 0 .../test-suite/lua/extend_variable_runme.lua | 0 .../Examples/test-suite/lua/friends_runme.lua | 0 .../test-suite/lua/funcptr_cpp_runme.lua | 0 .../test-suite/lua/fvirtual_runme.lua | 0 .../test-suite/lua/global_namespace_runme.lua | 0 .../test-suite/lua/global_vars_runme.lua | 0 .../test-suite/lua/grouping_runme.lua | 0 .../Examples/test-suite/lua/iadd_runme.lua | 0 .../Examples/test-suite/lua/import.lua | 0 .../test-suite/lua/import_nomodule_runme.lua | 0 .../Examples/test-suite/lua/imports_runme.lua | 0 .../test-suite/lua/inherit_missing_runme.lua | 0 .../test-suite/lua/keyword_rename_c_runme.lua | 0 .../test-suite/lua/keyword_rename_runme.lua | 0 .../test-suite/lua/li_carrays_cpp_runme.lua | 0 .../test-suite/lua/li_carrays_runme.lua | 0 .../test-suite/lua/li_factory_runme.lua | 0 .../test-suite/lua/li_std_except_runme.lua | 0 .../test-suite/lua/li_std_pair_runme.lua | 0 .../test-suite/lua/li_std_string_runme.lua | 4 +- .../test-suite/lua/li_std_vector_runme.lua | 0 .../test-suite/lua/li_typemaps_runme.lua | 0 .../lua/lua_inherit_getitem_runme.lua | 0 .../lua/lua_no_module_global_runme.lua | 0 .../test-suite/lua/member_pointer_runme.lua | 0 .../test-suite/lua/multi_import_runme.lua | 0 .../lua/nested_workaround_runme.lua | 0 .../test-suite/lua/newobject1_runme.lua | 0 .../test-suite/lua/newobject2_runme.lua | 4 +- .../test-suite/lua/nspace_extend_runme.lua | 0 .../Examples/test-suite/lua/nspace_runme.lua | 0 .../lua/operator_overload_runme.lua | 0 .../lua/overload_complicated_runme.lua | 6 +- .../test-suite/lua/overload_null_runme.lua | 41 + .../test-suite/lua/overload_simple_runme.lua | 0 .../lua/overload_template_fast_runme.lua | 0 .../lua/overload_template_runme.lua | 0 .../lua/pointer_reference_runme.lua | 0 .../test-suite/lua/primitive_ref_runme.lua | 0 .../test-suite/lua/refcount_runme.lua | 0 .../test-suite/lua/rename_simple_runme.lua | 0 .../test-suite/lua/ret_by_value_runme.lua | 0 .../Examples/test-suite/lua/sizet_runme.lua | 0 .../lua/smart_pointer_extend_runme.lua | 0 .../lua/smart_pointer_inherit_runme.lua | 0 .../lua/smart_pointer_multi_runme.lua | 0 .../lua/smart_pointer_not_runme.lua | 0 .../lua/smart_pointer_overload_runme.lua | 0 .../lua/smart_pointer_rename_runme.lua | 0 .../lua/smart_pointer_simple_runme.lua | 0 .../smart_pointer_templatemethods_runme.lua | 0 .../lua/static_const_member_2_runme.lua | 0 .../lua/static_const_member_runme.lua | 0 .../lua/template_construct_runme.lua | 0 .../lua/template_default_arg_runme.lua | 0 .../test-suite/lua/template_extend1_runme.lua | 0 .../test-suite/lua/template_extend2_runme.lua | 0 .../test-suite/lua/template_inherit_runme.lua | 0 .../test-suite/lua/template_static_runme.lua | 0 .../test-suite/lua/valuewrapper_runme.lua | 0 .../Examples/test-suite/lua/varargs_runme.lua | 0 .../test-suite/lua/voidtest_runme.lua | 0 .../Examples/test-suite/lua_inherit_getitem.i | 0 .../test-suite/lua_no_module_global.i | 0 .../test-suite/member_funcptr_galore.i | 227 + .../Examples/test-suite/member_pointer.i | 16 +- .../test-suite/member_pointer_const.i | 149 + .../Examples/test-suite/member_template.i | 0 .../Examples/test-suite/memberin1.i | 0 .../Examples/test-suite/memberin_extend.i | 0 .../Examples/test-suite/memberin_extend_c.i | 0 .../Examples/test-suite/minherit.i | 0 .../Examples/test-suite/minherit2.i | 4 +- .../Examples/test-suite/mixed_types.i | 0 .../Examples/test-suite/mod.h | 0 .../Examples/test-suite/mod.list | 0 .../Examples/test-suite/mod_a.i | 0 .../Examples/test-suite/mod_b.i | 0 .../Examples/test-suite/multi_import.h | 0 .../Examples/test-suite/multi_import.list | 0 .../Examples/test-suite/multi_import_a.i | 0 .../Examples/test-suite/multi_import_b.i | 0 .../Examples/test-suite/multi_import_c.i | 0 .../test-suite/multiple_inheritance.i | 0 .../multiple_inheritance_abstract.i | 0 .../multiple_inheritance_interfaces.i | 0 .../test-suite/multiple_inheritance_nspace.i | 0 .../multiple_inheritance_shared_ptr.i | 6 +- .../Examples/test-suite/multivalue.i | 4 +- .../Examples/test-suite/mzscheme/Makefile.in | 62 +- .../Examples/test-suite/mzscheme/README | 0 .../test-suite/mzscheme/casts_runme.scm | 0 .../mzscheme/char_constant_runme.scm | 0 .../test-suite/mzscheme/imports_runme.scm | 0 .../test-suite/mzscheme/integers_runme.scm | 0 .../test-suite/mzscheme/name_runme.scm | 2 +- .../test-suite/mzscheme/unions_runme.scm | 6 +- .../Examples/test-suite/name.i | 0 .../Examples/test-suite/name_cxx.i | 0 .../Examples/test-suite/name_warnings.i | 4 +- .../Examples/test-suite/namespace_chase.i | 36 + .../Examples/test-suite/namespace_class.i | 0 .../Examples/test-suite/namespace_enum.i | 0 .../Examples/test-suite/namespace_extend.i | 0 .../namespace_forward_declaration.i | 0 .../Examples/test-suite/namespace_nested.i | 0 .../Examples/test-suite/namespace_spaces.i | 0 .../Examples/test-suite/namespace_template.i | 40 +- .../test-suite/namespace_typedef_class.i | 0 .../Examples/test-suite/namespace_typemap.i | 0 .../Examples/test-suite/namespace_union.i | 0 .../test-suite/namespace_virtual_method.i | 0 .../Examples/test-suite/native_directive.i | 43 + .../Examples/test-suite/naturalvar.i | 0 .../Examples/test-suite/naturalvar_more.i | 0 .../Examples/test-suite/naturalvar_onoff.i | 0 .../Examples/test-suite/nested.i | 83 +- .../Examples/test-suite/nested_class.i | 0 .../Examples/test-suite/nested_comment.i | 0 .../Examples/test-suite/nested_directors.i | 0 .../Examples/test-suite/nested_extend_c.i | 0 .../Examples/test-suite/nested_ignore.i | 0 .../Examples/test-suite/nested_in_template.i | 34 + .../Examples/test-suite/nested_private.i | 0 .../Examples/test-suite/nested_scope.i | 0 .../Examples/test-suite/nested_structs.i | 4 + .../test-suite/nested_template_base.i | 4 + .../Examples/test-suite/nested_workaround.i | 0 .../Examples/test-suite/newobject1.i | 0 .../Examples/test-suite/newobject2.i | 0 .../Examples/test-suite/newobject3.i | 25 + .../Examples/test-suite/nspace.i | 0 .../Examples/test-suite/nspace_extend.i | 0 .../Examples/test-suite/null_pointer.i | 14 + .../Examples/test-suite/ocaml/Makefile.in | 100 + .../Examples/test-suite/ocaml/README | 0 .../test-suite/ocaml/abstract_access_runme.ml | 5 + .../ocaml/abstract_typedef2_runme.ml | 4 + .../ocaml/abstract_typedef_runme.ml | 6 + .../ocaml/abstract_virtual_runme.ml | 5 + .../test-suite/ocaml/aggregate_runme.ml | 15 + .../test-suite/ocaml/allowexcept_runme.ml | 7 + .../test-suite/ocaml/cast_operator_runme.ml | 5 + .../test-suite/ocaml/catches_runme.ml | 39 + .../test-suite/ocaml/char_binary_runme.ml | 24 + .../test-suite/ocaml/char_constant_runme.ml | 16 + .../test-suite/ocaml/chartest_runme.ml | 25 + .../test-suite/ocaml/class_ignore_runme.ml | 0 .../ocaml/class_scope_weird_runme.ml | 6 + .../test-suite/ocaml/constover_runme.ml | 16 + .../ocaml/constructor_rename_runme.ml | 5 + .../test-suite/ocaml/conversion_runme.ml | 9 + .../test-suite/ocaml/cpp_nodefault_runme.ml | 17 + .../test-suite/ocaml/cpp_static_runme.ml | 17 + .../ocaml/default_arg_values_runme.ml | 17 + .../test-suite/ocaml/default_args_runme.ml | 58 + .../ocaml/director_default_runme.ml | 25 + .../ocaml/director_exception_catches_runme.ml | 15 + .../ocaml/director_exception_nothrow_runme.ml | 12 + .../ocaml/director_exception_runme.ml | 46 + .../test-suite/ocaml/director_frob_runme.ml | 5 + .../test-suite/ocaml/director_ignore_runme.ml | 18 + .../ocaml/director_pass_by_value_runme.ml | 24 + .../test-suite/ocaml/director_unroll_runme.ml | 15 + .../test-suite/ocaml/dynamic_cast_runme.ml | 9 + .../ocaml/exception_classname_runme.ml | 5 + .../test-suite/ocaml/exception_order_runme.ml | 17 + .../extend_constructor_destructor_runme.ml | 12 + .../ocaml/extend_placement_runme.ml | 53 + .../Examples/test-suite/ocaml/extend_runme.ml | 26 + .../ocaml/extend_special_variables_runme.ml | 14 + .../test-suite/ocaml/extend_template_runme.ml | 8 + .../ocaml/extend_typedef_class_runme.ml | 12 + .../test-suite/ocaml/extern_c_runme.ml | 4 + .../test-suite/ocaml/funcptr_cpp_runme.ml | 13 + .../test-suite/ocaml/fvirtual_runme.ml | 10 + .../test-suite/ocaml/global_ns_arg_runme.ml | 5 + .../test-suite/ocaml/global_vars_runme.ml | 15 + .../ocaml/ignore_parameter_runme.ml | 20 + .../test-suite/ocaml/imports_runme.ml | 0 .../test-suite/ocaml/inctest_runme.ml | 7 + .../test-suite/ocaml/inherit_missing_runme.ml | 10 + .../test-suite/ocaml/li_cpointer_cpp_runme.ml | 10 + .../test-suite/ocaml/li_std_except_runme.ml | 18 + .../test-suite/ocaml/li_std_vector_runme.ml | 23 + .../Examples/test-suite/ocaml/makedebugtop | 0 .../test-suite/ocaml/memberin_extend_runme.ml | 10 + .../test-suite/ocaml/minherit_runme.ml | 0 .../Examples/test-suite/ocaml/name_runme.ml | 0 .../ocaml/namespace_virtual_method_runme.ml | 4 + .../test-suite/ocaml/newobject1_runme.ml | 0 .../test-suite/ocaml/newobject2_runme.ml | 16 + .../test-suite/ocaml/overload_bool_runme.ml | 26 + .../test-suite/ocaml/overload_copy_runme.ml | 0 .../test-suite/ocaml/overload_extend_runme.ml | 11 + .../test-suite/ocaml/overload_method_runme.ml | 11 + .../ocaml/overload_numeric_runme.ml | 14 + .../ocaml/overload_polymorphic_runme.ml | 9 + .../test-suite/ocaml/overload_rename_runme.ml | 7 + .../ocaml/overload_subtype_runme.ml | 8 + .../ocaml/overload_template_runme.ml | 60 + .../test-suite/ocaml/primitive_ref_runme.ml | 20 + .../ocaml/reference_global_vars_runme.ml | 57 + .../ocaml/rename_predicates_runme.ml | 40 + .../Examples/test-suite/ocaml/sizet_runme.ml | 10 + .../test-suite/ocaml/sneaky1_runme.ml | 0 .../ocaml/special_variable_macros_runme.ml | 14 + .../ocaml/special_variables_runme.ml | 36 + .../ocaml/static_const_member_runme.ml | 9 + .../test-suite/ocaml/string_simple_runme.ml | 9 + .../test-suite/ocaml/struct_value_runme.ml | 11 + .../test-suite/ocaml/swig_exception_runme.ml | 13 + ...ate_default_arg_overloaded_extend_runme.ml | 17 + .../ocaml/template_default_arg_runme.ml | 52 + .../ocaml/template_extend1_runme.ml | 8 + .../ocaml/template_extend2_runme.ml | 8 + .../ocaml/template_inherit_runme.ml | 22 + .../test-suite/ocaml/template_opaque_runme.ml | 5 + .../ocaml/template_ref_type_runme.ml | 6 + .../test-suite/ocaml/template_rename_runme.ml | 12 + .../ocaml/template_tbase_template_runme.ml | 5 + .../test-suite/ocaml/throw_exception_runme.ml | 25 + .../test-suite/ocaml/typedef_class_runme.ml | 13 + .../typedef_classforward_same_name_runme.ml | 11 + .../test-suite/ocaml/typedef_inherit_runme.ml | 11 + .../test-suite/ocaml/typedef_mptr_runme.ml | 13 + .../ocaml/typedef_reference_runme.ml | 11 + .../test-suite/ocaml/typemap_arrays_runme.ml | 4 + .../test-suite/ocaml/typemap_delete_runme.ml | 5 + .../test-suite/ocaml/typename_runme.ml | 0 .../test-suite/ocaml/types_directive_runme.ml | 14 + .../Examples/test-suite/ocaml/unions_runme.ml | 28 + .../Examples/test-suite/ocaml/using1_runme.ml | 4 + .../test-suite/ocaml/using_extend_runme.ml | 12 + .../test-suite/ocaml/using_inherit_runme.ml | 24 + .../test-suite/ocaml/using_pointers_runme.ml | 10 + .../test-suite/ocaml/using_private_runme.ml | 10 + .../test-suite/ocaml/using_protected_runme.ml | 2 +- .../test-suite/ocaml/valuewrapper_runme.ml | 8 + .../ocaml/varargs_overload_runme.ml | 29 + .../test-suite/ocaml/varargs_runme.ml | 0 .../test-suite/ocaml/voidtest_runme.ml | 0 .../test-suite/ocaml/wrapmacro_runme.ml | 10 + .../Examples/test-suite/octave/Makefile.in | 22 +- .../test-suite/octave/abstract_access_runme.m | 0 .../octave/abstract_typedef2_runme.m | 0 .../octave/abstract_typedef_runme.m | 0 .../octave/abstract_virtual_runme.m | 0 .../test-suite/octave/argcargvtest_runme.m | 0 .../test-suite/octave/array_member_runme.m | 0 .../test-suite/octave/arrays_global_runme.m | 0 .../test-suite/octave/callback_runme.m | 0 .../test-suite/octave/class_ignore_runme.m | 0 .../octave/class_scope_weird_runme.m | 0 .../octave/compactdefaultargs_runme.m | 0 .../test-suite/octave/complextest_runme.m | 14 +- .../test-suite/octave/constover_runme.m | 0 .../octave/constructor_copy_runme.m | 0 .../test-suite/octave/contract_runme.m | 0 .../cpp11_strongly_typed_enumerations_runme.m | 0 .../test-suite/octave/cpp_enum_runme.m | 0 .../test-suite/octave/cpp_namespace_runme.m | 0 .../test-suite/octave/default_args_runme.m | 0 .../octave/default_constructor_runme.m | 0 .../octave/director_abstract_runme.m | 0 .../test-suite/octave/director_basic_runme.m | 0 .../octave/director_classic_runme.m | 0 .../octave/director_default_runme.m | 0 .../test-suite/octave/director_detect_runme.m | 0 .../test-suite/octave/director_enum_runme.m | 0 .../test-suite/octave/director_extend_runme.m | 0 .../test-suite/octave/director_frob_runme.m | 0 .../test-suite/octave/director_nested_runme.m | 0 .../test-suite/octave/director_stl_runme.m | 0 .../test-suite/octave/director_string_runme.m | 0 .../test-suite/octave/director_unroll_runme.m | 0 .../octave/director_wstring_runme.m | 0 .../test-suite/octave/dynamic_cast_runme.m | 0 .../test-suite/octave/empty_c_runme.m | 0 .../Examples/test-suite/octave/empty_runme.m | 0 .../test-suite/octave/enum_template_runme.m | 0 .../Examples/test-suite/octave/enums_runme.m | 0 .../test-suite/octave/exception_order_runme.m | 0 .../octave/extend_placement_runme.m | 0 .../octave/extend_template_ns_runme.m | 0 .../test-suite/octave/extend_template_runme.m | 0 .../test-suite/octave/extend_variable_runme.m | 0 .../test-suite/octave/file_test_runme.m | 0 .../test-suite/octave/friends_runme.m | 0 .../test-suite/octave/fvirtual_runme.m | 0 .../test-suite/octave/global_ns_arg_runme.m | 0 .../test-suite/octave/grouping_runme.m | 0 .../Examples/test-suite/octave/iadd_runme.m | 0 .../test-suite/octave/import_nomodule_runme.m | 0 .../test-suite/octave/imports_runme.m | 0 .../test-suite/octave/inctest_runme.m | 0 .../test-suite/octave/inherit_missing_runme.m | 0 .../Examples/test-suite/octave/inout_runme.m | 0 .../test-suite/octave/inplaceadd_runme.m | 0 .../Examples/test-suite/octave/input_runme.m | 0 .../test-suite/octave/li_attribute_runme.m | 0 .../octave/li_boost_shared_ptr_runme.m | 0 .../test-suite/octave/li_carrays_cpp_runme.m | 0 .../test-suite/octave/li_carrays_runme.m | 0 .../test-suite/octave/li_cmalloc_runme.m | 0 .../test-suite/octave/li_cpointer_cpp_runme.m | 0 .../test-suite/octave/li_cpointer_runme.m | 0 .../test-suite/octave/li_cstring_runme.m | 0 .../test-suite/octave/li_cwstring_runme.m | 0 .../test-suite/octave/li_factory_runme.m | 0 .../test-suite/octave/li_implicit_runme.m | 0 .../test-suite/octave/li_std_carray_runme.m | 0 .../octave/li_std_pair_extra_runme.m | 0 .../test-suite/octave/li_std_set_runme.m | 0 .../test-suite/octave/li_std_stream_runme.m | 0 .../octave/li_std_string_extra_runme.m | 0 .../octave/li_std_vector_enum_runme.m | 0 .../test-suite/octave/li_std_vector_runme.m | 0 .../test-suite/octave/li_std_wstream_runme.m | 0 .../test-suite/octave/li_std_wstring_runme.m | 0 .../test-suite/octave/member_pointer_runme.m | 0 .../test-suite/octave/minherit_runme.m | 0 .../Examples/test-suite/octave/mod_runme.m | 0 .../test-suite/octave/multi_import_runme.m | 0 .../test-suite/octave/namespace_class_runme.m | 0 .../octave/namespace_typemap_runme.m | 0 .../octave/namespace_virtual_method_runme.m | 0 .../test-suite/octave/naturalvar_runme.m | 0 .../test-suite/octave/nested_structs_runme.m | 0 .../test-suite/octave/nondynamic_runme.m | 0 .../test-suite/octave/null_pointer_runme.m | 2 +- .../octave/octave_cell_deref_runme.m | 4 +- .../test-suite/octave/octave_dim_runme.m | 0 .../Examples/test-suite/octave/octave_empty.c | 0 .../octave/overload_complicated_runme.m | 16 +- .../test-suite/octave/overload_copy_runme.m | 0 .../octave/overload_extend2_runme.m | 0 .../octave/overload_extend_c_runme.m | 0 .../test-suite/octave/overload_extend_runme.m | 0 .../test-suite/octave/overload_null_runme.m | 52 + .../test-suite/octave/overload_rename_runme.m | 0 .../octave/overload_simple_cast_runme.m | 0 .../test-suite/octave/overload_simple_runme.m | 0 .../octave/overload_subtype_runme.m | 0 .../octave/overload_template_fast_runme.m | 0 .../octave/overload_template_runme.m | 0 .../octave/preproc_constants_runme.m | 0 .../test-suite/octave/preproc_runme.m | 0 .../test-suite/octave/primitive_ref_runme.m | 0 .../test-suite/octave/profiletest_runme.m | 0 .../test-suite/octave/refcount_runme.m | 0 .../octave/reference_global_vars_runme.m | 0 .../test-suite/octave/rename_scope_runme.m | 0 .../test-suite/octave/ret_by_value_runme.m | 0 .../octave/return_const_value_runme.m | 4 +- .../test-suite/octave/samename_runme.m | 0 .../octave/smart_pointer_extend_runme.m | 0 .../octave/smart_pointer_member_runme.m | 0 .../octave/smart_pointer_multi_runme.m | 0 .../smart_pointer_multi_typedef_runme.m | 0 .../octave/smart_pointer_not_runme.m | 0 .../octave/smart_pointer_overload_runme.m | 0 .../octave/smart_pointer_rename_runme.m | 0 .../octave/smart_pointer_simple_runme.m | 0 .../smart_pointer_templatevariables_runme.m | 0 .../octave/smart_pointer_typedef_runme.m | 0 .../test-suite/octave/sneaky1_runme.m | 0 .../octave/static_const_member_2_runme.m | 0 .../test-suite/octave/std_containers_runme.m | 0 .../test-suite/octave/struct_rename_runme.m | 0 .../test-suite/octave/struct_value_runme.m | 0 .../test-suite/octave/swigobject_runme.m | 0 .../octave/template_construct_runme.m | 0 .../octave/template_default_arg_runme.m | 0 .../octave/template_extend1_runme.m | 0 .../octave/template_extend2_runme.m | 0 .../octave/template_inherit_runme.m | 0 .../test-suite/octave/template_matrix_runme.m | 0 .../test-suite/octave/template_ns4_runme.m | 0 .../test-suite/octave/template_ns_runme.m | 0 .../test-suite/octave/template_opaque_runme.m | 0 .../octave/template_ref_type_runme.m | 0 .../test-suite/octave/template_rename_runme.m | 0 .../test-suite/octave/template_static_runme.m | 0 .../octave/template_tbase_template_runme.m | 0 .../octave/template_type_namespace_runme.m | 0 .../octave/template_typedef_cplx2_runme.m | 0 .../octave/template_typedef_cplx3_runme.m | 0 .../octave/template_typedef_cplx4_runme.m | 0 .../octave/template_typedef_cplx_runme.m | 0 .../octave/template_typedef_import_runme.m | 0 .../octave/template_typedef_runme.m | 0 .../test-suite/octave/typedef_class_runme.m | 0 .../test-suite/octave/typedef_inherit_runme.m | 0 .../test-suite/octave/typedef_scope_runme.m | 0 .../octave/typemap_namespace_runme.m | 0 .../octave/typemap_ns_using_runme.m | 0 .../test-suite/octave/typename_runme.m | 0 .../test-suite/octave/types_directive_runme.m | 0 .../Examples/test-suite/octave/unions_runme.m | 0 .../Examples/test-suite/octave/using1_runme.m | 0 .../Examples/test-suite/octave/using2_runme.m | 0 .../octave/using_composition_runme.m | 0 .../test-suite/octave/using_extend_runme.m | 0 .../test-suite/octave/using_inherit_runme.m | 0 .../test-suite/octave/using_private_runme.m | 0 .../test-suite/octave/using_protected_runme.m | 0 .../test-suite/octave/varargs_runme.m | 0 .../octave/virtual_derivation_runme.m | 0 .../test-suite/octave/virtual_poly_runme.m | 0 .../test-suite/octave/voidtest_runme.m | 0 .../test-suite/octave/wrapmacro_runme.m | 0 .../Examples/test-suite/octave_cell_deref.i | 2 +- .../Examples/test-suite/octave_dim.i | 0 .../Examples/test-suite/operator_overload.i | 0 .../test-suite/operator_overload_break.i | 0 .../test-suite/operator_pointer_ref.i | 0 .../Examples/test-suite/operbool.i | 0 .../Examples/test-suite/ordering.i | 0 .../Examples/test-suite/overload_arrays.i | 7 +- .../Examples/test-suite/overload_bool.i | 0 .../test-suite/overload_complicated.i | 29 +- .../Examples/test-suite/overload_copy.i | 4 - .../Examples/test-suite/overload_extend.i | 0 .../Examples/test-suite/overload_extend2.i | 0 .../Examples/test-suite/overload_extend_c.i | 0 .../Examples/test-suite/overload_method.i | 5 + .../Examples/test-suite/overload_null.i | 52 + .../Examples/test-suite/overload_numeric.i | 0 .../test-suite/overload_polymorphic.i | 0 .../Examples/test-suite/overload_rename.i | 0 .../test-suite/overload_return_type.i | 0 .../Examples/test-suite/overload_simple.i | 7 +- .../Examples/test-suite/overload_subtype.i | 0 .../Examples/test-suite/overload_template.i | 0 .../test-suite/overload_template_fast.i | 0 .../Examples/test-suite/packageoption.h | 0 .../Examples/test-suite/packageoption.list | 0 .../Examples/test-suite/packageoption_a.i | 0 .../Examples/test-suite/packageoption_b.i | 0 .../Examples/test-suite/packageoption_c.i | 0 .../Examples/test-suite/perl5/Makefile.in | 0 .../Examples/test-suite/perl5/README | 2 +- .../test-suite/perl5/aggregate_runme.pl | 0 .../perl5/apply_signed_char_runme.pl | 0 .../test-suite/perl5/apply_strings_runme.pl | 0 .../test-suite/perl5/array_member_runme.pl | 0 .../test-suite/perl5/char_binary_runme.pl | 0 .../test-suite/perl5/char_strings_runme.pl | 0 .../test-suite/perl5/class_ignore_runme.pl | 0 .../test-suite/perl5/contract_runme.pl | 0 ...cpp11_strongly_typed_enumerations_runme.pl | 0 .../test-suite/perl5/default_args_runme.pl | 0 .../perl5/default_constructor_runme.pl | 0 .../perl5/director_abstract_runme.pl | 0 .../perl5/director_alternating_runme.pl | 0 .../test-suite/perl5/director_basic_runme.pl | 0 .../perl5/director_classes_runme.pl | 4 +- .../perl5/director_classic_runme.pl | 0 .../perl5/director_constructor_runme.pl | 0 .../perl5/director_default_runme.pl | 0 .../test-suite/perl5/director_detect_runme.pl | 0 .../test-suite/perl5/director_enum_runme.pl | 0 .../perl5/director_exception_runme.pl | 0 .../test-suite/perl5/director_extend_runme.pl | 0 .../perl5/director_finalizer_runme.pl | 0 .../test-suite/perl5/director_frob_runme.pl | 0 .../test-suite/perl5/director_ignore_runme.pl | 0 .../test-suite/perl5/director_nested_runme.pl | 0 .../perl5/director_primitives_runme.pl | 0 .../perl5/director_protected_runme.pl | 0 .../test-suite/perl5/director_string_runme.pl | 0 .../test-suite/perl5/director_unroll_runme.pl | 0 .../test-suite/perl5/director_wombat_runme.pl | 0 .../Examples/test-suite/perl5/disown_runme.pl | 0 .../test-suite/perl5/dynamic_cast_runme.pl | 0 .../test-suite/perl5/enum_template_runme.pl | 0 .../test-suite/perl5/enum_thorough_runme.pl | 0 .../test-suite/perl5/exception_order_runme.pl | 0 .../test-suite/perl5/global_vars_runme.pl | 17 + .../test-suite/perl5/grouping_runme.pl | 0 .../perl5/ignore_parameter_runme.pl | 0 .../test-suite/perl5/import_nomodule_runme.pl | 0 .../test-suite/perl5/imports_runme.pl | 0 .../test-suite/perl5/inctest_runme.pl | 0 .../test-suite/perl5/inherit_missing_runme.pl | 0 .../test-suite/perl5/inherit_runme.pl | 0 .../test-suite/perl5/li_carrays_cpp_runme.pl | 0 .../test-suite/perl5/li_carrays_runme.pl | 0 .../perl5/li_cdata_carrays_cpp_runme.pl | 0 .../perl5/li_cdata_carrays_runme.pl | 0 .../test-suite/perl5/li_reference_runme.pl | 0 .../test-suite/perl5/li_std_except_runme.pl | 0 .../test-suite/perl5/li_std_string_runme.pl | 0 .../test-suite/perl5/li_typemaps_runme.pl | 0 .../test-suite/perl5/member_pointer_runme.pl | 0 .../test-suite/perl5/minherit_runme.pl | 0 .../perl5/multiple_inheritance_runme.pl | 0 .../test-suite/perl5/naturalvar_runme.pl | 0 .../perl5/operator_overload_break_runme.pl | 0 .../perl5/operator_overload_runme.pl | 0 .../test-suite/perl5/overload_copy_runme.pl | 0 .../test-suite/perl5/overload_null_runme.pl | 44 + .../test-suite/perl5/overload_simple_runme.pl | 0 .../test-suite/perl5/packageoption_runme.pl | 0 .../test-suite/perl5/preproc_runme.pl | 0 .../test-suite/perl5/primitive_ref_runme.pl | 0 .../test-suite/perl5/primitive_types_runme.pl | 0 .../test-suite/perl5/profiletest_runme.pl | 0 .../perl5/reference_global_vars_runme.pl | 0 .../test-suite/perl5/rename_scope_runme.pl | 0 .../test-suite/perl5/ret_by_value_runme.pl | 0 .../perl5/return_const_value_runme.pl | 0 .../test-suite/perl5/run-perl-test.pl | 2 +- .../perl5/scilab_multivalue_runme.pl | 88 + .../Examples/test-suite/perl5/sizet_runme.pl | 0 .../test-suite/perl5/sneaky1_runme.pl | 0 .../perl5/template_default_arg_runme.pl | 0 .../perl5/template_ref_type_runme.pl | 0 .../perl5/template_typedef_cplx2_runme.pl | 0 .../perl5/template_typedef_cplx3_runme.pl | 0 .../perl5/template_typedef_cplx_runme.pl | 0 .../test-suite/perl5/typedef_class_runme.pl | 0 .../perl5/typemap_namespace_runme.pl | 0 .../test-suite/perl5/typename_runme.pl | 0 .../Examples/test-suite/perl5/unions_runme.pl | 0 .../Examples/test-suite/perl5/using1_runme.pl | 0 .../Examples/test-suite/perl5/using2_runme.pl | 0 .../test-suite/perl5/varargs_runme.pl | 0 .../test-suite/perl5/virtual_poly_runme.pl | 0 .../test-suite/perl5/voidtest_runme.pl | 0 .../test-suite/perl5/wrapmacro_runme.pl | 0 .../Examples/test-suite/php/Makefile.in | 1 + .../php}/abstract_inherit_ok_runme.php | 2 +- .../php}/abstract_inherit_runme.php | 2 +- .../test-suite/php/add_link_runme.php | 8 +- .../Examples/test-suite/php/argout_runme.php | 4 +- .../test-suite/php}/arrayptr_runme.php | 2 +- .../test-suite/php/arrays_global_runme.php | 19 + .../php/arrays_global_twodim_runme.php | 22 + .../Examples/test-suite/php/arrays_runme.php | 18 + .../test-suite/php/arrays_scope_runme.php | 16 + .../test-suite/php/callback_runme.php | 0 .../Examples/test-suite/php}/casts_runme.php | 6 +- .../test-suite/php/char_strings_runme.php | 0 .../test-suite/php}/class_ignore_runme.php | 4 +- .../php/conversion_namespace_runme.php | 0 .../php/conversion_ns_template_runme.php | 0 .../test-suite/php/conversion_runme.php | 0 ...pp11_strongly_typed_enumerations_runme.php | 0 .../test-suite/php/cpp_basic_runme.php | 20 + .../test-suite/php/cpp_static_runme.php | 14 + .../php}/director_abstract_runme.php | 4 +- .../test-suite/php/director_basic_runme.php | 6 +- .../php}/director_classic_runme.php | 4 +- .../php}/director_default_runme.php | 4 +- .../test-suite/php}/director_detect_runme.php | 4 +- .../test-suite/php}/director_enum_runme.php | 4 +- .../php/director_exception_runme.php | 4 +- .../test-suite/php}/director_extend_runme.php | 4 +- .../php/director_finalizer_runme.php | 6 +- .../test-suite/php/director_frob_runme.php | 19 + .../test-suite/php/director_nested_runme.php | 4 +- .../php/director_pass_by_value_runme.php | 0 .../php}/director_profile_runme.php | 4 +- .../php/director_protected_runme.php | 6 +- .../test-suite/php/director_stl_runme.php | 4 +- .../test-suite/php}/director_string_runme.php | 6 +- .../test-suite/php/director_thread_runme.php | 6 +- .../test-suite/php/director_unroll_runme.php | 32 + .../php/enum_scope_template_runme.php | 0 .../test-suite/php/evil_diamond_ns_runme.php | 0 .../php/evil_diamond_prop_runme.php | 2 + .../test-suite/php/evil_diamond_runme.php | 0 .../test-suite/php}/exception_order_runme.php | 6 +- .../php/extend_template_ns_runme.php | 0 .../test-suite/php/extend_template_runme.php | 0 .../test-suite/php/grouping_runme.php | 6 +- .../test-suite/php/ignore_parameter_runme.php | 4 +- .../test-suite/php/import_nomodule_runme.php | 4 +- .../test-suite/php/li_carrays_cpp_runme.php | 22 + .../test-suite/php/li_carrays_runme.php | 22 + .../test-suite/php}/li_factory_runme.php | 4 +- .../test-suite/php/li_std_string_runme.php | 3 + .../php/li_std_vector_member_var_runme.php | 0 .../test-suite/php}/newobject1_runme.php | 4 +- .../test-suite/php/newobject3_runme.php | 18 + .../test-suite/php/overload_null_runme.php | 46 + .../test-suite/php/overload_rename_runme.php | 2 +- .../php/overload_return_type_runme.php | 0 .../test-suite/php}/php_iterator_runme.php | 4 +- .../test-suite/php/php_pragma_runme.php | 11 + .../php/pointer_reference_runme.php | 0 .../Examples/test-suite/php}/prefix_runme.php | 4 +- .../php/preproc_constants_c_runme.php | 3 + .../php/preproc_constants_runme.php | 3 + .../test-suite/php/primitive_ref_runme.php | 0 .../test-suite/php/rename_scope_runme.php | 0 .../Examples/test-suite/php/skel.php | 0 .../php/smart_pointer_rename_runme.php | 0 .../test-suite/php/swig_exception_runme.php | 0 .../Examples/test-suite/php/sym_runme.php | 2 +- .../php}/template_arg_typename_runme.php | 4 +- .../php/template_construct_runme.php | 2 +- .../Examples/test-suite/php/tests.php | 74 +- .../php/threads_exception_runme.php | 8 +- .../php/typedef_reference_runme.php | 2 +- .../test-suite/php/typemap_ns_using_runme.php | 0 .../Examples/test-suite/php/using1_runme.php | 0 .../Examples/test-suite/php/using2_runme.php | 0 .../php/valuewrapper_base_runme.php | 0 .../php/virtual_vs_nonvirtual_base_runme.php | 0 .../test-suite/php/wrapmacro_runme.php | 0 .../Examples/test-suite/php_iterator.i | 0 .../Examples/test-suite/php_namewarn_rename.i | 0 .../Examples/test-suite/php_pragma.i | 6 + .../Examples/test-suite/pike/Makefile.in | 0 .../Examples/test-suite/pointer_in_out.i | 0 .../Examples/test-suite/pointer_reference.i | 0 .../Examples/test-suite/prefix.i | 0 .../Examples/test-suite/preproc.i | 80 + .../Examples/test-suite/preproc_constants.i | 9 + .../Examples/test-suite/preproc_constants_c.i | 0 .../Examples/test-suite/preproc_defined.i | 0 .../Examples/test-suite/preproc_gcc_output.h | 13 + .../Examples/test-suite/preproc_gcc_output.i | 12 + .../Examples/test-suite/preproc_include.i | 0 .../Examples/test-suite/preproc_include_a.h | 0 .../Examples/test-suite/preproc_include_b.h | 0 .../Examples/test-suite/preproc_include_c.h | 0 .../test-suite/preproc_include_d withspace.h | 0 .../test-suite/preproc_include_e withspace.h | 0 .../test-suite/preproc_include_f withspace.h | 0 .../Examples/test-suite/preproc_include_g.h | 0 .../Examples/test-suite/preproc_include_h1.i | 0 .../Examples/test-suite/preproc_include_h2.i | 0 .../Examples/test-suite/preproc_include_h3.i | 0 .../Examples/test-suite/preproc_line_file.i | 0 .../Examples/test-suite/primitive_ref.i | 0 .../Examples/test-suite/primitive_types.i | 36 +- .../Examples/test-suite/private_assign.i | 0 .../Examples/test-suite/profiletest.i | 0 .../Examples/test-suite/protected_rename.i | 0 .../Examples/test-suite/proxycode.i | 0 .../Examples/test-suite/pure_virtual.i | 4 + .../Examples/test-suite/python/Makefile.in | 100 +- .../Examples/test-suite/python/README | 0 .../python/abstract_access_runme.py | 0 .../python/abstract_typedef2_runme.py | 0 .../python/abstract_typedef_runme.py | 0 .../python/abstract_virtual_runme.py | 0 .../test-suite/python/argcargvtest_runme.py | 0 .../test-suite/python/array_member_runme.py | 0 .../test-suite/python/arrays_global_runme.py | 0 .../test-suite/python/autodoc_runme.py | 281 + .../test-suite/python/callback_runme.py | 4 + .../test-suite/python/char_binary_runme.py | 0 .../test-suite/python/class_ignore_runme.py | 0 .../python/class_scope_weird_runme.py | 0 .../test-suite/python/comment_verifier.py | 26 + .../python/compactdefaultargs_runme.py | 0 .../test-suite/python/complextest_runme.py | 30 + .../python/constant_directive_runme.py | 0 .../test-suite/python/constover_runme.py | 0 .../python/constructor_copy_runme.py | 0 .../python/constructor_rename_runme.py | 0 .../test-suite/python/contract_runme.py | 0 .../cpp11_alternate_function_syntax_runme.py | 23 + .../test-suite/python/cpp11_decltype_runme.py | 0 .../python/cpp11_final_directors_runme.py | 11 + .../python/cpp11_function_objects_runme.py | 0 .../python/cpp11_hash_tables_runme.py | 60 + .../cpp11_initializer_list_extend_runme.py | 0 .../python/cpp11_initializer_list_runme.py | 0 .../cpp11_null_pointer_constant_runme.py | 0 .../python/cpp11_raw_string_literals_runme.py | 75 + .../python/cpp11_ref_qualifiers_runme.py | 45 + ...11_ref_qualifiers_rvalue_unignore_runme.py | 4 + .../python/cpp11_result_of_runme.py | 0 .../python/cpp11_rvalue_reference_runme.py | 0 .../python/cpp11_shared_ptr_overload_runme.py | 45 + .../python/cpp11_std_array_runme.py} | 2 +- ...cpp11_strongly_typed_enumerations_runme.py | 0 .../python/cpp11_template_typedefs_runme.py | 0 .../python/cpp11_thread_local_runme.py | 0 .../python/cpp11_type_aliasing_runme.py | 0 .../python/cpp11_type_traits_runme.py | 0 .../cpp11_uniform_initialization_runme.py | 0 .../cpp14_binary_integer_literals_runme.py | 16 + .../cpp17_hex_floating_literals_runme.py | 28 + .../python/cpp17_nested_namespaces_runme.py | 18 + .../python/cpp17_u8_char_literals_runme.py | 10 + .../test-suite/python/cpp_enum_runme.py | 0 .../test-suite/python/cpp_namespace_runme.py | 0 .../test-suite/python/cpp_static_runme.py | 72 + .../python/default_arg_values_runme.py | 0 .../test-suite/python/default_args_c_runme.py | 26 + .../test-suite/python/default_args_runme.py | 62 +- .../python/default_constructor_runme.py | 0 .../python/director_abstract_runme.py | 16 +- .../python/director_alternating_runme.py | 0 .../test-suite/python/director_basic_runme.py | 0 .../python/director_classic_runme.py | 0 .../python/director_default_runme.py | 0 .../python/director_detect_runme.py | 0 .../test-suite/python/director_enum_runme.py | 0 .../python/director_exception_runme.py | 26 +- .../python/director_extend_runme.py | 0 .../python/director_finalizer_runme.py | 0 .../test-suite/python/director_frob_runme.py | 0 .../python/director_keywords_runme.py | 0 .../python/director_nested_runme.py | 0 .../python/director_pass_by_value_runme.py | 0 .../python/director_profile_runme.py | 0 .../python/director_property_runme.py | 0 .../python/director_protected_runme.py | 0 .../python/director_smartptr_runme.py | 19 + .../test-suite/python/director_stl_runme.py | 0 .../python/director_string_runme.py | 0 .../python/director_thread_runme.py | 0 .../python/director_unroll_runme.py | 0 .../python/director_wstring_runme.py | 0 .../test-suite/python/disown_runme.py | 0 .../test-suite/python/doxygen_alias_runme.py | 10 + .../python/doxygen_basic_notranslate_runme.py | 66 + .../python/doxygen_basic_translate_runme.py | 84 + .../test-suite/python/doxygen_ignore_runme.py | 17 + .../python/doxygen_misc_constructs_runme.py | 133 + .../python/doxygen_parsing_runme.py | 66 + .../doxygen_translate_all_tags_runme.py | 306 + .../python/doxygen_translate_links_runme.py | 38 + .../python/doxygen_translate_runme.py | 264 + .../test-suite/python/dynamic_cast_runme.py | 0 .../test-suite/python/empty_c_runme.py | 0 .../Examples/test-suite/python/empty_runme.py | 0 .../test-suite/python/enum_forward_runme.py | 0 .../test-suite/python/enum_template_runme.py | 0 .../Examples/test-suite/python/enums_runme.py | 0 .../python/exception_classname_runme.py | 0 .../python/exception_order_runme.py | 0 .../python/extend_placement_runme.py | 0 .../python/extend_template_method_runme.py | 0 .../python/extend_template_ns_runme.py | 0 .../python/extend_template_runme.py | 0 .../python/extend_variable_runme.py | 0 .../test-suite/python/extern_c_runme.py | 0 .../test-suite/python/file_test_runme.py | 0 .../test-suite/python/friends_runme.py | 0 .../test-suite/python/funcptr_cpp_runme.py | 3 + .../test-suite/python/functors_runme.py | 12 + .../test-suite/python/fvirtual_runme.py | 0 .../python/global_functions_runme.py | 0 .../python/global_namespace_runme.py | 41 + .../test-suite/python/global_ns_arg_runme.py | 0 .../test-suite/python/global_vars_runme.py | 0 .../test-suite/python/grouping_runme.py | 0 .../Examples/test-suite/python/hugemod.pl | 0 .../Examples/test-suite/python/iadd_runme.py | 0 .../python/ignore_parameter_runme.py | 23 + .../test-suite/python/implicittest_runme.py | 25 +- .../python/import_nomodule_runme.py | 0 .../test-suite/python/import_stl_runme.py | 0 .../test-suite/python/imports_runme.py | 0 .../test-suite/python/inctest_runme.py | 0 .../python/inherit_missing_runme.py | 0 .../Examples/test-suite/python/inout_runme.py | 0 .../test-suite/python/inplaceadd_runme.py | 0 .../Examples/test-suite/python/input_runme.py | 0 .../python/keyword_rename_c_runme.py | 0 .../test-suite/python/keyword_rename_runme.py | 2 + .../test-suite/python/kwargs_feature_runme.py | 0 .../test-suite/python/langobj_runme.py | 0 .../test-suite/python/li_attribute_runme.py | 0 .../python/li_attribute_template_runme.py | 0 .../python/li_boost_shared_ptr_bits_runme.py | 9 +- .../li_boost_shared_ptr_director_runme.py | 80 + .../python/li_boost_shared_ptr_runme.py | 0 .../li_boost_shared_ptr_template_runme.py | 0 .../test-suite/python/li_carrays_cpp_runme.py | 0 .../test-suite/python/li_carrays_runme.py | 0 .../test-suite/python/li_cdata_cpp_runme.py | 0 .../test-suite/python/li_cdata_runme.py | 0 .../test-suite/python/li_cmalloc_runme.py | 0 .../python/li_cpointer_cpp_runme.py | 0 .../test-suite/python/li_cpointer_runme.py | 0 .../test-suite/python/li_cstring_runme.py | 4 +- .../test-suite/python/li_cwstring_runme.py | 4 +- .../test-suite/python/li_factory_runme.py | 0 .../test-suite/python/li_implicit_runme.py | 0 .../python/li_std_auto_ptr_runme.py | 0 .../test-suite/python/li_std_carray_runme.py | 0 .../python/li_std_containers_int_runme.py | 13 +- .../python/li_std_except_as_class_runme.py | 0 .../python/li_std_map_member_runme.py | 0 .../test-suite/python/li_std_map_runme.py | 81 + .../python/li_std_pair_extra_runme.py | 0 .../python/li_std_pair_using_runme.py | 0 .../test-suite/python/li_std_set_runme.py | 2 + .../test-suite/python/li_std_stream_runme.py | 0 .../python/li_std_string_extra_runme.py | 22 + .../li_std_vector_back_reference_runme.py | 10 + .../python/li_std_vector_enum_runme.py | 0 .../python/li_std_vector_extra_runme.py | 8 + .../python/li_std_vector_ptr_runme.py | 10 +- .../test-suite/python/li_std_vector_runme.py | 0 .../test-suite/python/li_std_wstream_runme.py | 0 .../test-suite/python/li_std_wstring_runme.py | 23 + .../python/member_pointer_const_runme.py | 51 + .../test-suite/python/member_pointer_runme.py | 3 + .../python/memberin_extend_c_runme.py | 0 .../test-suite/python/minherit_runme.py | 0 .../Examples/test-suite/python/mod_runme.py | 0 .../test-suite/python/multi_import_runme.py | 0 .../python/namespace_class_runme.py | 16 +- .../python/namespace_typemap_runme.py | 0 .../python/namespace_virtual_method_runme.py | 0 .../test-suite/python/naturalvar_runme.py | 0 .../python/nested_in_template_runme.py | 5 + .../test-suite/python/nested_runme.py | 20 + .../python/nested_template_base_runme.py | 0 .../python/nested_workaround_runme.py | 0 .../python/operator_overload_runme.py | 7 + .../test-suite/python/operbool_runme.py | 0 .../test-suite/python/overload_bool_runme.py | 0 .../python/overload_complicated_runme.py | 14 +- .../test-suite/python/overload_copy_runme.py | 0 .../python/overload_extend2_runme.py | 0 .../python/overload_extend_c_runme.py | 0 .../python/overload_extend_runme.py | 0 .../test-suite/python/overload_null_runme.py | 44 + .../python/overload_numeric_runme.py | 0 .../python/overload_rename_runme.py | 0 .../python/overload_simple_runme.py | 0 .../python/overload_subtype_runme.py | 0 .../python/overload_template_fast_runme.py | 9 +- .../python/overload_template_runme.py | 0 .../python/pointer_reference_runme.py | 0 .../python/preproc_defined_runme.py | 0 .../python/preproc_gcc_output_runme.py | 5 + .../python/preproc_include_runme.py | 0 .../test-suite/python/preproc_runme.py | 3 + .../test-suite/python/primitive_ref_runme.py | 0 .../python/primitive_types_runme.py | 7 +- .../test-suite/python/profiletest_runme.py | 0 .../test-suite/python/profiletestc_runme.py | 0 .../python/python_abstractbase_runme3.py | 35 + .../test-suite/python/python_append_runme.py | 10 +- .../test-suite/python/python_builtin_runme.py | 15 + .../python_destructor_exception_runme.py | 0 .../python/python_docstring_runme.py | 2 +- .../python/python_extranative_runme.py | 0 .../python/python_moduleimport_runme.py | 0 .../python/python_nondynamic_runme.py | 108 + .../python_overload_simple_cast_runme.py | 8 +- .../test-suite/python/python_pickle_runme.py | 6 - .../python/python_pybuffer_runme.py | 46 + .../python/python_pythoncode_runme.py | 4 + .../python/python_richcompare_runme.py | 52 + .../python/python_strict_unicode_runme.py | 12 +- .../test-suite/python/python_threads_runme.py | 0 .../python/python_varargs_typemap_runme.py | 0 .../test-suite/python/pythonswig.supp | 0 .../test-suite/python/refcount_runme.py | 0 .../python/reference_global_vars_runme.py | 0 .../python/rename_pcre_encoder_runme.py | 0 .../python/rename_predicates_runme.py | 0 .../python/rename_rstrip_encoder_runme.py | 0 .../test-suite/python/rename_scope_runme.py | 0 .../python/rename_strip_encoder_runme.py | 0 .../test-suite/python/ret_by_value_runme.py | 0 .../python/return_const_value_runme.py | 4 +- .../smart_pointer_const_overload_runme.py | 0 .../python/smart_pointer_extend_runme.py | 0 .../python/smart_pointer_member_runme.py | 8 +- .../python/smart_pointer_multi_runme.py | 0 .../smart_pointer_multi_typedef_runme.py | 0 .../python/smart_pointer_not_runme.py | 0 .../python/smart_pointer_overload_runme.py | 0 .../python/smart_pointer_rename_runme.py | 0 .../python/smart_pointer_simple_runme.py | 0 .../smart_pointer_templatevariables_runme.py | 0 .../python/smart_pointer_typedef_runme.py | 0 .../test-suite/python/sneaky1_runme.py | 0 .../python/special_variable_macros_runme.py | 0 .../python/static_const_member_2_runme.py | 0 .../test-suite/python/std_containers_runme.py | 20 + .../python/struct_initialization_runme.py | 0 .../test-suite/python/struct_rename_runme.py | 0 .../test-suite/python/struct_value_runme.py | 0 .../test-suite/python/swigobject_runme.py | 0 .../python/template_class_reuse_name_runme.py | 42 + .../python/template_classes_runme.py | 0 .../python/template_construct_runme.py | 0 ...ate_default_arg_overloaded_extend_runme.py | 0 .../template_default_arg_overloaded_runme.py | 0 .../python/template_default_arg_runme.py | 0 .../python/template_default_cache_runme.py | 0 .../python/template_extend1_runme.py | 0 .../python/template_extend2_runme.py | 0 .../python/template_inherit_runme.py | 0 .../python/template_matrix_runme.py | 0 .../test-suite/python/template_ns4_runme.py | 0 .../test-suite/python/template_ns_runme.py | 0 .../python/template_opaque_runme.py | 0 .../python/template_ref_type_runme.py | 0 .../python/template_rename_runme.py | 0 .../python/template_static_runme.py | 0 .../python/template_tbase_template_runme.py | 0 .../python/template_type_namespace_runme.py | 0 .../python/template_typedef_cplx2_runme.py | 0 .../python/template_typedef_cplx3_runme.py | 0 .../python/template_typedef_cplx4_runme.py | 0 .../python/template_typedef_cplx_runme.py | 0 .../python/template_typedef_import_runme.py | 0 .../python/template_typedef_runme.py | 0 .../template_typemaps_typedef2_runme.py | 0 .../python/template_typemaps_typedef_runme.py | 0 .../template_using_directive_typedef_runme.py | 15 + .../python/threads_exception_runme.py | 0 .../test-suite/python/typedef_class_runme.py | 0 .../typedef_classforward_same_name_runme.py | 11 + .../python/typedef_funcptr_runme.py | 20 + .../python/typedef_inherit_runme.py | 0 .../test-suite/python/typedef_scope_runme.py | 0 .../python/typedef_typedef_runme.py | 0 .../test-suite/python/typemap_arrays_runme.py | 0 .../test-suite/python/typemap_delete_runme.py | 0 .../python/typemap_documentation_runme.py | 0 .../python/typemap_namespace_runme.py | 0 .../python/typemap_ns_using_runme.py | 0 .../python/typemap_out_optimal_runme.py | 0 .../python/typemap_qualifier_strip_runme.py | 0 .../python/typemap_template_typedef_runme.py | 32 + .../test-suite/python/typename_runme.py | 0 .../python/types_directive_runme.py | 0 .../python/unicode_strings_runme.py | 10 + .../test-suite/python/unions_runme.py | 0 .../test-suite/python/using1_runme.py | 0 .../test-suite/python/using2_runme.py | 0 .../python/using_composition_runme.py | 0 .../test-suite/python/using_extend_runme.py | 0 .../test-suite/python/using_inherit_runme.py | 0 .../test-suite/python/using_private_runme.py | 0 .../python/using_protected_runme.py | 0 .../python/varargs_overload_runme.py | 62 + .../test-suite/python/varargs_runme.py | 2 - .../python/virtual_derivation_runme.py | 0 .../test-suite/python/virtual_poly_runme.py | 0 .../test-suite/python/voidtest_runme.py | 0 .../test-suite/python/wrapmacro_runme.py | 0 .../Examples/test-suite/python_abstractbase.i | 0 .../Examples/test-suite/python_append.i | 6 +- .../Examples/test-suite/python_builtin.i | 32 +- .../test-suite/python_destructor_exception.i | 0 .../Examples/test-suite/python_director.i | 0 .../Examples/test-suite/python_docstring.i | 0 .../Examples/test-suite/python_extranative.i | 0 .../Examples/test-suite/python_moduleimport.i | 0 .../Examples/test-suite/python_nondynamic.i | 11 +- .../test-suite/python_overload_simple_cast.i | 0 .../Examples/test-suite/python_pickle.i | 0 .../Examples/test-suite/python_pybuffer.i} | 8 +- .../Examples/test-suite/python_pythoncode.i | 61 + .../Examples/test-suite/python_richcompare.i | 0 .../test-suite/python_strict_unicode.i | 0 .../Examples/test-suite/python_threads.i | 0 .../test-suite/python_varargs_typemap.i | 5 +- .../Examples/test-suite/r/Makefile.in | 16 +- .../test-suite/r/arrays_dimensionless_runme.R | 0 .../test-suite/r/enum_thorough_runme.R | 452 + .../Examples/test-suite/r/funcptr_runme.R | 0 .../test-suite/r/ignore_parameter_runme.R | 0 .../Examples/test-suite/r/integers_runme.R | 0 .../test-suite/r/li_std_vector_runme.R | 0 .../test-suite/r/overload_method_runme.R | 0 .../test-suite/r/overload_null_runme.R | 49 + .../test-suite/r/preproc_constants_runme.R | 0 .../test-suite/r/r_copy_struct_runme.R | 0 .../test-suite/r/r_double_delete_runme.R | 0 .../Examples/test-suite/r/r_legacy_runme.R | 0 .../Examples/test-suite/r/r_sexp_runme.R | 0 .../test-suite/r/r_use_isnull_runme.R | 11 + .../test-suite/r/rename_simple_runme.R | 0 .../test-suite/r/simple_array_runme.R | 0 .../Examples/test-suite/r/unions_runme.R | 0 .../Examples/test-suite/r/unittest.R | 0 .../Examples/test-suite/r_copy_struct.i | 0 .../Examples/test-suite/r_double_delete.i | 0 .../Examples/test-suite/r_legacy.i | 0 .../Examples/test-suite/r_overload_array.i | 0 .../Examples/test-suite/r_overload_comma.i | 0 .../Examples/test-suite/r_sexp.i | 0 .../Examples/test-suite/r_use_isnull.i | 34 + .../Examples/test-suite/redefined.i | 0 .../Examples/test-suite/redefined_not.i | 2 +- .../Examples/test-suite/refcount.h | 0 .../Examples/test-suite/refcount.i | 0 .../test-suite/reference_global_vars.i | 0 .../Examples/test-suite/register_par.i | 10 + .../Examples/test-suite/rename.h | 6 +- .../Examples/test-suite/rename1.i | 7 +- .../Examples/test-suite/rename2.i | 2 +- .../Examples/test-suite/rename3.i | 2 +- .../Examples/test-suite/rename4.i | 12 +- .../Examples/test-suite/rename_camel.i | 0 .../Examples/test-suite/rename_pcre_encoder.i | 0 .../Examples/test-suite/rename_pcre_enum.i | 0 .../Examples/test-suite/rename_predicates.i | 0 .../test-suite/rename_rstrip_encoder.i | 0 .../Examples/test-suite/rename_scope.i | 0 .../Examples/test-suite/rename_simple.i | 0 .../test-suite/rename_strip_encoder.i | 0 .../Examples/test-suite/rename_wildcard.i | 0 .../Examples/test-suite/restrict_cplusplus.i | 3 +- .../Examples/test-suite/ret_by_value.i | 0 .../Examples/test-suite/return_const_value.i | 0 .../Examples/test-suite/return_value_scope.i | 0 .../Examples/test-suite/rname.i | 0 .../Examples/test-suite/ruby/Makefile.in | 24 +- .../Examples/test-suite/ruby/README | 0 .../test-suite/ruby/abstract_access_runme.rb | 0 .../ruby/abstract_inherit_ok_runme.rb | 0 .../test-suite/ruby/abstract_inherit_runme.rb | 0 .../ruby/abstract_signature_runme.rb | 0 .../ruby/abstract_typedef2_runme.rb | 0 .../test-suite/ruby/abstract_typedef_runme.rb | 0 .../test-suite/ruby/abstract_virtual_runme.rb | 0 .../test-suite/ruby/access_change_runme.rb | 0 .../test-suite/ruby/add_link_runme.rb | 0 .../test-suite/ruby/aggregate_runme.rb | 0 .../ruby/anonymous_bitfield_runme.rb | 0 .../ruby/apply_signed_char_runme.rb | 0 .../test-suite/ruby/apply_strings_runme.rb | 0 .../Examples/test-suite/ruby/argout_runme.rb | 0 .../test-suite/ruby/array_member_runme.rb | 0 .../test-suite/ruby/arrays_global_runme.rb | 0 .../Examples/test-suite/ruby/arrays_runme.rb | 0 .../Examples/test-suite/ruby/bools_runme.rb | 0 .../test-suite/ruby/cast_operator_runme.rb | 0 .../Examples/test-suite/ruby/casts_runme.rb | 0 .../test-suite/ruby/char_constant_runme.rb | 0 .../test-suite/ruby/check_missing_tests.rb | 0 .../test-suite/ruby/class_ignore_runme.rb | 0 .../test-suite/ruby/const_const_runme.rb | 0 .../test-suite/ruby/constover_runme.rb | 0 .../ruby/cpp11_hash_tables_runme.rb | 61 + .../ruby/cpp11_shared_ptr_const_runme.rb | 9 + ..._shared_ptr_nullptr_in_containers_runme.rb | 16 + .../ruby/cpp11_shared_ptr_upcast_runme.rb | 60 + .../test-suite/ruby/cpp11_std_array_runme.rb} | 4 +- ...cpp11_strongly_typed_enumerations_runme.rb | 0 .../test-suite/ruby/cpp_namespace_runme.rb | 0 .../ruby/default_constructor_runme.rb | 0 .../ruby/director_abstract_runme.rb | 0 .../test-suite/ruby/director_basic_runme.rb | 0 .../ruby/director_constructor_runme.rb | 0 .../test-suite/ruby/director_default_runme.rb | 0 .../test-suite/ruby/director_detect_runme.rb | 0 .../ruby/director_exception_runme.rb | 0 .../test-suite/ruby/director_frob_runme.rb | 0 .../test-suite/ruby/director_nested_runme.rb | 0 .../ruby/director_protected_runme.rb | 0 .../ruby/director_smartptr_runme.rb | 24 + .../test-suite/ruby/director_string_runme.rb | 0 .../test-suite/ruby/director_unroll_runme.rb | 0 .../test-suite/ruby/director_wombat_runme.rb | 0 .../Examples/test-suite/ruby/disown_runme.rb | 0 .../test-suite/ruby/dynamic_cast_runme.rb | 0 .../test-suite/ruby/enum_thorough_runme.rb | 0 .../Examples/test-suite/ruby/enums_runme.rb | 0 .../ruby/extend_template_ns_runme.rb | 0 .../test-suite/ruby/extend_template_runme.rb | 0 .../Examples/test-suite/ruby/friends_runme.rb | 0 .../test-suite/ruby/function_typedef_runme.rb | 0 .../test-suite/ruby/grouping_runme.rb | 0 .../test-suite/ruby/ignore_parameter_runme.rb | 0 .../Examples/test-suite/ruby/imports_runme.rb | 0 .../test-suite/ruby/inherit_missing_runme.rb | 0 .../test-suite/ruby/integers_runme.rb | 0 .../ruby/li_boost_shared_ptr_bits_runme.rb | 0 .../li_boost_shared_ptr_director_runme.rb | 103 + .../ruby/li_boost_shared_ptr_runme.rb | 0 .../li_boost_shared_ptr_template_runme.rb | 0 .../test-suite/ruby/li_carrays_cpp_runme.rb | 0 .../test-suite/ruby/li_carrays_runme.rb | 0 .../test-suite/ruby/li_cstring_runme.rb | 0 .../test-suite/ruby/li_factory_runme.rb | 0 .../Examples/test-suite/ruby/li_math_runme.rb | 0 .../test-suite/ruby/li_std_deque_runme.rb | 0 .../test-suite/ruby/li_std_functors_runme.rb | 0 .../test-suite/ruby/li_std_list_runme.rb | 8 + .../test-suite/ruby/li_std_map_runme.rb | 0 .../test-suite/ruby/li_std_multimap_runme.rb | 0 .../ruby/li_std_pair_lang_object_runme.rb | 0 .../test-suite/ruby/li_std_pair_runme.rb | 0 .../test-suite/ruby/li_std_queue_runme.rb | 0 .../test-suite/ruby/li_std_set_runme.rb | 0 .../test-suite/ruby/li_std_speed2_runme.rb | 0 .../test-suite/ruby/li_std_stack_runme.rb | 0 .../test-suite/ruby/li_std_stream_runme.rb | 0 .../test-suite/ruby/li_std_string_runme.rb | 0 .../ruby/li_std_vector_enum_runme.rb | 0 .../test-suite/ruby/li_std_vector_runme.rb | 0 .../test-suite/ruby/li_std_wstring_runme.rb | 42 + .../test-suite/ruby/member_pointer_runme.rb | 0 .../test-suite/ruby/minherit_runme.rb | 0 .../ruby/namespace_typemap_runme.rb | 0 .../test-suite/ruby/newobject1_runme.rb | 2 +- .../test-suite/ruby/newobject2_runme.rb | 2 +- .../test-suite/ruby/overload_bool_runme.rb | 0 .../test-suite/ruby/overload_copy_runme.rb | 0 .../test-suite/ruby/overload_extend2_runme.rb | 0 .../ruby/overload_extend_c_runme.rb | 0 .../test-suite/ruby/overload_extend_runme.rb | 0 .../test-suite/ruby/overload_null_runme.rb | 52 + .../test-suite/ruby/overload_simple_runme.rb | 0 .../test-suite/ruby/overload_subtype_runme.rb | 0 .../ruby/overload_template_runme.rb | 0 .../test-suite/ruby/primitive_ref_runme.rb | 0 .../test-suite/ruby/primitive_types_runme.rb | 0 .../test-suite/ruby/profiletest_runme.rb | 0 .../test-suite/ruby/refcount_runme.rb | 0 .../ruby/reference_global_vars_runme.rb | 0 .../test-suite/ruby/rename_scope_runme.rb | 0 .../ruby/ruby_alias_global_function_runme.rb | 20 + .../ruby/ruby_alias_method_runme.rb | 24 + .../ruby/ruby_alias_module_function_runme.rb | 26 + .../test-suite/ruby/ruby_keywords_runme.rb | 0 .../ruby/ruby_li_std_speed_runme.rb | 0 .../ruby/ruby_manual_proxy_runme.rb | 0 .../ruby/ruby_minherit_shared_ptr_runme.rb | 0 .../test-suite/ruby/ruby_naming_runme.rb | 0 .../test-suite/ruby/ruby_rdata_runme.rb | 7 + .../ruby_track_objects_directors_runme.rb | 0 .../ruby/ruby_track_objects_runme.rb | 0 .../ruby/smart_pointer_const_runme.rb | 0 .../ruby/smart_pointer_multi_runme.rb | 0 .../ruby/smart_pointer_multi_typedef_runme.rb | 0 .../ruby/smart_pointer_not_runme.rb | 0 .../ruby/smart_pointer_overload_runme.rb | 0 .../ruby/smart_pointer_rename_runme.rb | 0 .../ruby/smart_pointer_simple_runme.rb | 0 .../ruby/smart_pointer_typedef_runme.rb | 0 .../Examples/test-suite/ruby/sneaky1_runme.rb | 0 .../ruby/static_const_member_2_runme.rb | 0 .../test-suite/ruby/std_containers_runme.rb | 2 + .../Examples/test-suite/ruby/stl_new_runme.rb | 0 .../test-suite/ruby/struct_value_runme.rb | 0 .../Examples/test-suite/ruby/swig_assert.rb | 22 +- .../Examples/test-suite/ruby/swig_gc.rb | 0 .../ruby/template_construct_runme.rb | 0 .../test-suite/ruby/template_extend1_runme.rb | 0 .../test-suite/ruby/template_extend2_runme.rb | 0 .../test-suite/ruby/template_inherit_runme.rb | 0 .../test-suite/ruby/template_ns4_runme.rb | 0 .../test-suite/ruby/template_ns_runme.rb | 0 .../test-suite/ruby/template_rename_runme.rb | 0 .../ruby/template_tbase_template_runme.rb | 0 .../ruby/template_type_namespace_runme.rb | 0 .../ruby/template_typedef_cplx2_runme.rb | 0 .../ruby/template_typedef_cplx3_runme.rb | 0 .../ruby/template_typedef_cplx4_runme.rb | 0 .../ruby/template_typedef_cplx_runme.rb | 0 .../test-suite/ruby/throw_exception_runme.rb | 0 .../test-suite/ruby/typedef_inherit_runme.rb | 0 .../test-suite/ruby/typedef_scope_runme.rb | 0 .../ruby/typemap_namespace_runme.rb | 0 .../test-suite/ruby/typemap_ns_using_runme.rb | 0 .../test-suite/ruby/typename_runme.rb | 0 .../Examples/test-suite/ruby/unions_runme.rb | 0 .../Examples/test-suite/ruby/using1_runme.rb | 0 .../Examples/test-suite/ruby/using2_runme.rb | 0 .../ruby/using_composition_runme.rb | 0 .../test-suite/ruby/using_extend_runme.rb | 0 .../test-suite/ruby/using_inherit_runme.rb | 0 .../test-suite/ruby/using_private_runme.rb | 0 .../test-suite/ruby/using_protected_runme.rb | 0 .../Examples/test-suite/ruby/varargs_runme.rb | 0 .../ruby/virtual_derivation_runme.rb | 0 .../test-suite/ruby/virtual_poly_runme.rb | 0 .../test-suite/ruby/voidtest_runme.rb | 0 .../test-suite/ruby_alias_global_function.i | 11 + .../Examples/test-suite/ruby_alias_method.i | 26 + .../test-suite/ruby_alias_module_function.i | 11 + .../Examples/test-suite/ruby_keywords.i | 0 .../Examples/test-suite/ruby_li_std_speed.i | 0 .../Examples/test-suite/ruby_manual_proxy.i | 0 .../test-suite/ruby_minherit_shared_ptr.i | 0 .../Examples/test-suite/ruby_naming.i | 0 .../Examples/test-suite/ruby_rdata.i | 20 + .../Examples/test-suite/ruby_track_objects.i | 0 .../test-suite/ruby_track_objects_directors.i | 0 .../Examples/test-suite/samename.i | 0 .../Examples/test-suite/schemerunme/casts.scm | 0 .../test-suite/schemerunme/char_constant.scm | 0 .../test-suite/schemerunme/class_ignore.scm | 0 .../test-suite/schemerunme/constover.scm | 0 .../test-suite/schemerunme/contract.scm | 0 .../test-suite/schemerunme/cpp_enum.scm | 0 .../test-suite/schemerunme/cpp_namespace.scm | 0 .../test-suite/schemerunme/dynamic_cast.scm | 0 .../test-suite/schemerunme/global_vars.scm | 0 .../schemerunme/global_vars_proxy.scm | 0 .../schemerunme/import_nomodule.scm | 0 .../test-suite/schemerunme/imports.scm | 0 .../schemerunme/inherit_missing.scm | 0 .../test-suite/schemerunme/integers.scm | 0 .../test-suite/schemerunme/li_std_string.scm | 0 .../test-suite/schemerunme/li_typemaps.scm | 0 .../schemerunme/li_typemaps_proxy.scm | 0 .../test-suite/schemerunme/list_vector.scm | 0 .../multiple_inheritance_proxy.scm | 0 .../test-suite/schemerunme/multivalue.scm | 0 .../Examples/test-suite/schemerunme/name.scm | 0 .../schemerunme/overload_complicated.scm | 0 .../test-suite/schemerunme/overload_copy.scm | 0 .../schemerunme/overload_extend.scm | 0 .../schemerunme/overload_extend_c.scm | 0 .../schemerunme/overload_simple.scm | 0 .../schemerunme/overload_subtype.scm | 0 .../test-suite/schemerunme/pointer_in_out.scm | 0 .../schemerunme/reference_global_vars.scm | 8 + .../schemerunme/typedef_inherit.scm | 0 .../test-suite/schemerunme/typename.scm | 0 .../test-suite/schemerunme/unions.scm | 0 .../test-suite/schemerunme/unions_proxy.scm | 0 .../Examples/test-suite/scilab/Makefile.in | 2 +- .../scilab/abstract_access_runme.sci | 0 .../scilab/abstract_inherit_ok_runme.sci | 0 .../scilab/abstract_inherit_runme.sci | 0 .../scilab/abstract_signature_runme.sci | 0 .../scilab/abstract_typedef2_runme.sci | 0 .../scilab/abstract_typedef_runme.sci | 0 .../scilab/abstract_virtual_runme.sci | 0 .../test-suite/scilab/access_change_runme.sci | 0 .../test-suite/scilab/add_link_runme.sci | 0 .../test-suite/scilab/aggregate_runme.sci | 0 .../test-suite/scilab/allowexcept_runme.sci | 0 .../test-suite/scilab/allprotected_runme.sci | 0 .../scilab/anonymous_bitfield_runme.sci | 0 .../scilab/apply_signed_char_runme.sci | 0 .../test-suite/scilab/apply_strings_runme.sci | 0 .../test-suite/scilab/array_member_runme.sci | 0 .../scilab/arrays_dimensionless_runme.sci | 0 .../test-suite/scilab/arrays_global_runme.sci | 0 .../scilab/arrays_global_twodim_runme.sci | 0 .../test-suite/scilab/bools_runme.sci | 0 .../test-suite/scilab/char_constant_runme.sci | 0 .../test-suite/scilab/constover_runme.sci | 0 .../scilab/constructor_copy_runme.sci | 0 .../test-suite/scilab/cpp_basic_runme.sci | 0 .../test-suite/scilab/cpp_enum_runme.sci | 0 .../test-suite/scilab/default_args_runme.sci | 0 .../scilab/default_constructor_runme.sci | 0 .../test-suite/scilab/empty_c_runme.sci | 0 .../test-suite/scilab/empty_runme.sci | 0 .../test-suite/scilab/enums_runme.sci | 0 .../test-suite/scilab/funcptr_cpp_runme.sci | 0 .../test-suite/scilab/funcptr_runme.sci | 0 .../test-suite/scilab/global_vars_runme.sci | 0 .../test-suite/scilab/inctest_runme.sci | 0 .../scilab/inherit_missing_runme.sci | 0 .../test-suite/scilab/inout_runme.sci | 0 .../test-suite/scilab/integers_runme.sci | 0 .../scilab/li_carrays_cpp_runme.sci | 0 .../test-suite/scilab/li_carrays_runme.sci | 0 .../scilab/li_cpointer_cpp_runme.sci | 0 .../test-suite/scilab/li_cpointer_runme.sci | 0 .../test-suite/scilab/li_math_runme.sci | 0 .../li_std_container_typemaps_runme.sci | 4 +- .../test-suite/scilab/li_std_deque_runme.sci | 2 +- .../test-suite/scilab/li_std_except_runme.sci | 0 .../test-suite/scilab/li_std_pair_runme.sci | 0 .../scilab/li_std_string_extra_runme.sci | 0 .../test-suite/scilab/li_std_vector_runme.sci | 0 .../test-suite/scilab/li_typemaps_runme.sci | 0 .../scilab/member_pointer_runme.sci | 0 .../Examples/test-suite/scilab/name_runme.sci | 0 .../scilab/nested_structs_runme.sci | 0 .../test-suite/scilab/newobject2_runme.sci | 0 .../test-suite/scilab/null_pointer_runme.sci | 2 +- .../scilab/operator_overload_runme.sci | 0 .../scilab/overload_arrays_runme.sci | 0 .../scilab/overload_complicated_runme.sci | 0 .../test-suite/scilab/overload_copy_runme.sci | 0 .../scilab/overload_extend2_runme.sci | 0 .../scilab/overload_extend_c_runme.sci | 0 .../scilab/overload_extend_runme.sci | 0 .../test-suite/scilab/overload_null_runme.sci | 45 + .../scilab/overload_numeric_runme.sci | 0 .../scilab/overload_polymorphic_runme.sci | 0 .../scilab/overload_simple_runme.sci | 0 .../scilab/overload_subtype_runme.sci | 0 .../scilab/preproc_constants_runme.sci | 0 .../test-suite/scilab/preproc_runme.sci | 0 .../test-suite/scilab/primitive_ref_runme.sci | 0 .../scilab/primitive_types_runme.sci | 0 .../test-suite/scilab/ret_by_value_runme.sci | 0 .../scilab/return_const_value_runme.sci | 0 .../test-suite/scilab/scilab_consts_runme.sci | 0 .../test-suite/scilab/scilab_enums_runme.sci | 0 .../scilab/scilab_identifier_name_runme.sci | 0 .../scilab/scilab_li_matrix_runme.sci | 6 +- .../scilab/scilab_multivalue_runme.sci | 0 ...lab_pointer_conversion_functions_runme.sci | 0 .../test-suite/scilab/simple_array_runme.sci | 0 .../test-suite/scilab/sizet_runme.sci | 0 .../scilab/smart_pointer_simple_runme.sci | 0 .../test-suite/scilab/sneaky1_runme.sci | 0 .../scilab/struct_initialization_runme.sci | 0 .../test-suite/scilab/struct_rename_runme.sci | 0 .../test-suite/scilab/struct_value_runme.sci | 0 .../Examples/test-suite/scilab/swigtest.quit | 0 .../Examples/test-suite/scilab/swigtest.start | 0 .../scilab/template_classes_runme.sci | 0 .../test-suite/scilab/template_ns_runme.sci | 0 .../scilab/template_rename_runme.sci | 0 .../scilab/template_static_runme.sci | 0 .../scilab/throw_exception_runme.sci | 10 +- .../scilab/typedef_struct_cpp_runme.sci | 0 .../scilab/typedef_struct_runme.sci | 0 .../scilab/union_parameter_runme.sci | 0 .../test-suite/scilab/unions_runme.sci | 0 .../scilab/varargs_overload_runme.sci | 41 + .../test-suite/scilab/varargs_runme.sci | 0 .../test-suite/scilab/voidtest_runme.sci | 0 .../Examples/test-suite/scilab_consts.i | 0 .../Examples/test-suite/scilab_enums.i | 0 .../test-suite/scilab_identifier_name.i | 0 .../Examples/test-suite/scilab_li_matrix.i | 0 .../Examples/test-suite/scilab_multivalue.i | 0 .../scilab_pointer_conversion_functions.i | 0 .../Examples/test-suite/shared_ptr_wrapper.h | 0 .../Examples/test-suite/simple_array.i | 0 .../Examples/test-suite/simutry.i | 6 +- .../Examples/test-suite/sizeof_pointer.i | 0 .../Examples/test-suite/sizet.i | 0 .../Examples/test-suite/smart_pointer_const.i | 0 .../test-suite/smart_pointer_const2.i | 0 .../test-suite/smart_pointer_const_overload.i | 0 .../test-suite/smart_pointer_extend.i | 0 .../test-suite/smart_pointer_ignore.i | 0 .../test-suite/smart_pointer_inherit.i | 0 .../test-suite/smart_pointer_member.i | 0 .../Examples/test-suite/smart_pointer_multi.i | 0 .../test-suite/smart_pointer_multi_typedef.i | 0 .../test-suite/smart_pointer_namespace.i | 0 .../test-suite/smart_pointer_namespace2.i | 13 +- .../Examples/test-suite/smart_pointer_not.i | 0 .../test-suite/smart_pointer_overload.i | 4 - .../test-suite/smart_pointer_protected.i | 0 .../test-suite/smart_pointer_rename.i | 0 .../test-suite/smart_pointer_simple.i | 0 .../test-suite/smart_pointer_static.i | 0 .../smart_pointer_template_const_overload.i | 0 ...smart_pointer_template_defaults_overload.i | 0 .../smart_pointer_templatemethods.i | 0 .../smart_pointer_templatevariables.i | 0 .../test-suite/smart_pointer_typedef.i | 0 .../Examples/test-suite/sneaky1.i | 0 .../test-suite/special_variable_attributes.i | 0 .../test-suite/special_variable_macros.i | 0 .../Examples/test-suite/special_variables.i | 0 .../Examples/test-suite/static_array_member.i | 0 .../Examples/test-suite/static_const_member.i | 0 .../test-suite/static_const_member_2.i | 4 + .../Examples/test-suite/std_containers.i | 4 + .../Examples/test-suite/stl_new.i | 0 .../test-suite/stl_no_default_constructor.i | 19 + .../Examples/test-suite/string_constants.i | 0 .../Examples/test-suite/string_simple.i | 4 +- .../test-suite/struct_initialization.i | 0 .../test-suite/struct_initialization_cpp.i | 0 .../Examples/test-suite/struct_rename.i | 0 .../Examples/test-suite/struct_value.i | 0 .../Examples/test-suite/swig_examples_lock.h | 0 .../Examples/test-suite/swig_exception.i | 0 .../Examples/test-suite/swigobject.i | 0 .../Examples/test-suite/sym.i | 0 .../Examples/test-suite/symbol_clash.i | 0 .../test-suite/tag_no_clash_with_variable.i | 0 .../Examples/test-suite/tcl/Makefile.in | 0 .../Examples/test-suite/tcl/README | 0 .../Examples/test-suite/tcl/bools_runme.tcl | 0 .../test-suite/tcl/clientdata_prop_runme.tcl | 0 ...pp11_strongly_typed_enumerations_runme.tcl | 0 .../Examples/test-suite/tcl/disown_runme.tcl | 0 .../test-suite/tcl/enum_thorough_runme.tcl | 0 .../test-suite/tcl/import_nomodule_runme.tcl | 0 .../Examples/test-suite/tcl/imports_runme.tcl | 0 .../test-suite/tcl/li_std_string_runme.tcl | 0 .../test-suite/tcl/member_pointer_runme.tcl | 0 .../test-suite/tcl/newobject1_runme.tcl | 0 .../test-suite/tcl/newobject2_runme.tcl | 0 .../test-suite/tcl/null_pointer_runme.tcl | 2 +- .../test-suite/tcl/overload_copy_runme.tcl | 0 .../test-suite/tcl/overload_null_runme.tcl | 52 + .../test-suite/tcl/overload_simple_runme.tcl | 0 .../test-suite/tcl/primitive_ref_runme.tcl | 0 .../test-suite/tcl/primitive_types_runme.tcl | 0 .../test-suite/tcl/profiletest_runme.tcl | 0 .../tcl/reference_global_vars_runme.tcl | 0 .../test-suite/tcl/union_parameter_runme.tcl | 0 .../Examples/test-suite/tcl/unions_runme.tcl | 0 .../test-suite/template_arg_replace.i | 0 .../Examples/test-suite/template_arg_scope.i | 0 .../test-suite/template_arg_typename.i | 0 .../test-suite/template_array_numeric.i | 0 .../test-suite/template_base_template.i | 0 .../Examples/test-suite/template_basic.i | 0 .../test-suite/template_class_reuse_name.i | 132 + .../Examples/test-suite/template_classes.i | 0 .../Examples/test-suite/template_const_ref.i | 0 .../Examples/test-suite/template_construct.i | 0 .../Examples/test-suite/template_default.i | 0 .../Examples/test-suite/template_default2.i | 0 .../test-suite/template_default_arg.i | 0 .../template_default_arg_overloaded.i | 0 .../template_default_arg_overloaded_extend.i | 0 .../template_default_arg_virtual_destructor.i | 0 .../test-suite/template_default_cache.i | 0 .../test-suite/template_default_class_parms.i | 4 + .../template_default_class_parms_typedef.i | 4 + .../test-suite/template_default_inherit.i | 0 .../test-suite/template_default_pointer.i | 0 .../test-suite/template_default_qualify.i | 0 .../Examples/test-suite/template_default_vw.i | 0 .../test-suite/template_empty_inherit.i | 34 + .../Examples/test-suite/template_enum.i | 0 .../test-suite/template_enum_ns_inherit.i | 0 .../test-suite/template_enum_typedef.i | 0 .../Examples/test-suite/template_explicit.i | 0 .../Examples/test-suite/template_expr.i | 0 .../Examples/test-suite/template_extend1.i | 0 .../Examples/test-suite/template_extend2.i | 0 .../test-suite/template_extend_overload.i | 0 .../test-suite/template_extend_overload_2.i | 0 .../Examples/test-suite/template_forward.i | 0 .../Examples/test-suite/template_inherit.i | 0 .../test-suite/template_inherit_abstract.i | 0 .../Examples/test-suite/template_int_const.i | 0 .../test-suite/template_keyword_in_type.i | 0 .../Examples/test-suite/template_matrix.i | 0 .../Examples/test-suite/template_methods.i | 0 .../template_namespace_forward_declaration.i | 0 .../Examples/test-suite/template_nested.i | 0 .../test-suite/template_nested_typemaps.i | 33 +- .../Examples/test-suite/template_ns.i | 0 .../Examples/test-suite/template_ns2.i | 0 .../Examples/test-suite/template_ns3.i | 0 .../Examples/test-suite/template_ns4.i | 0 .../Examples/test-suite/template_ns_enum.i | 0 .../Examples/test-suite/template_ns_enum2.i | 0 .../Examples/test-suite/template_ns_inherit.i | 0 .../Examples/test-suite/template_ns_scope.i | 0 .../Examples/test-suite/template_opaque.i | 3 - .../template_parameters_global_scope.i | 133 + .../test-suite/template_partial_arg.i | 0 .../template_partial_specialization.i | 22 +- .../template_partial_specialization_typedef.i | 22 +- .../test-suite/template_private_assignment.i | 0 .../Examples/test-suite/template_qualifier.i | 0 .../Examples/test-suite/template_ref_type.i | 0 .../Examples/test-suite/template_rename.i | 0 .../Examples/test-suite/template_retvalue.i | 0 .../test-suite/template_specialization.i | 0 .../template_specialization_defarg.i | 0 .../test-suite/template_specialization_enum.i | 0 .../Examples/test-suite/template_static.i | 0 .../test-suite/template_tbase_template.i | 0 .../test-suite/template_template_parameters.i | 0 .../template_templated_constructors.i | 0 .../test-suite/template_type_namespace.i | 0 .../Examples/test-suite/template_typedef.i | 0 .../template_typedef_class_template.i | 4 + .../test-suite/template_typedef_cplx.i | 0 .../test-suite/template_typedef_cplx2.h | 0 .../test-suite/template_typedef_cplx2.i | 0 .../test-suite/template_typedef_cplx3.i | 0 .../test-suite/template_typedef_cplx4.i | 0 .../test-suite/template_typedef_cplx5.i | 2 +- .../test-suite/template_typedef_fnc.i | 0 .../test-suite/template_typedef_funcptr.i | 0 .../test-suite/template_typedef_import.i | 0 .../test-suite/template_typedef_import.list | 0 .../test-suite/template_typedef_inherit.i | 0 .../Examples/test-suite/template_typedef_ns.i | 0 .../test-suite/template_typedef_ptr.i | 0 .../test-suite/template_typedef_rec.i | 0 .../test-suite/template_typedef_typedef.i | 0 .../Examples/test-suite/template_typemaps.i | 4 + .../test-suite/template_typemaps_typedef.i | 4 + .../test-suite/template_typemaps_typedef2.i | 4 + .../Examples/test-suite/template_using.i | 0 ..._using_directive_and_declaration_forward.i | 0 .../template_using_directive_typedef.i | 44 + .../Examples/test-suite/template_virtual.i | 2 +- .../Examples/test-suite/template_whitespace.i | 0 .../Examples/test-suite/testdir/README | 0 .../go_subdir_import/go_subdir_import_c.i | 0 .../testdir/inctest/subdir1/hello.i | 0 .../testdir/inctest/subdir1/imports.i | 0 .../testdir/inctest/subdir1/subinc1.i | 0 .../testdir/inctest/subdir2/hello.i | 0 .../testdir/inctest/subdir2/imports.i | 0 .../testdir/inctest/subdir2/subinc2.i | 0 .../test-suite/testdir/inctest/test.i | 0 .../Examples/test-suite/threads.i | 0 .../Examples/test-suite/threads_exception.i | 22 +- .../Examples/test-suite/throw_exception.i | 30 +- .../test-suite/typedef_array_member.i | 0 .../Examples/test-suite/typedef_class.i | 0 .../typedef_classforward_same_name.i | 15 + .../Examples/test-suite/typedef_funcptr.i | 10 + .../Examples/test-suite/typedef_inherit.i | 0 .../Examples/test-suite/typedef_mptr.i | 0 .../Examples/test-suite/typedef_reference.i | 0 .../Examples/test-suite/typedef_scope.i | 0 .../Examples/test-suite/typedef_sizet.i | 0 .../Examples/test-suite/typedef_struct.i | 0 .../Examples/test-suite/typedef_struct_cpp.i | 0 .../Examples/test-suite/typedef_typedef.i | 0 .../test-suite/typemap_array_qualifiers.i | 0 .../Examples/test-suite/typemap_arrays.i | 0 .../Examples/test-suite/typemap_delete.i | 4 + .../Examples/test-suite/typemap_directorout.i | 0 .../test-suite/typemap_documentation.i | 0 .../test-suite/typemap_global_scope.i | 0 .../Examples/test-suite/typemap_manyargs.i | 0 .../Examples/test-suite/typemap_namespace.i | 0 .../Examples/test-suite/typemap_ns_using.i | 0 .../Examples/test-suite/typemap_numinputs.i | 0 .../Examples/test-suite/typemap_out_optimal.i | 0 .../test-suite/typemap_qualifier_strip.i | 0 .../Examples/test-suite/typemap_self.i | 0 .../Examples/test-suite/typemap_subst.i | 0 .../Examples/test-suite/typemap_template.i | 26 +- .../typemap_template_parm_typedef.i | 0 .../test-suite/typemap_template_parms.i | 28 + .../test-suite/typemap_template_typedef.i | 66 + .../Examples/test-suite/typemap_variables.i | 0 .../Examples/test-suite/typemap_various.i | 0 .../Examples/test-suite/typename.i | 0 .../Examples/test-suite/types_directive.i | 0 .../Examples/test-suite/uffi/Makefile.in | 0 .../Examples/test-suite/unicode_strings.i | 2 + .../Examples/test-suite/union_parameter.i | 0 .../Examples/test-suite/union_scope.i | 0 .../Examples/test-suite/unions.i | 0 .../Examples/test-suite/using1.i | 0 .../Examples/test-suite/using2.i | 0 .../Examples/test-suite/using_composition.i | 0 .../using_directive_and_declaration.i | 0 .../using_directive_and_declaration_forward.i | 0 .../Examples/test-suite/using_extend.i | 0 .../Examples/test-suite/using_inherit.i | 0 .../Examples/test-suite/using_namespace.i | 0 .../test-suite/using_namespace_loop.i | 0 .../Examples/test-suite/using_pointers.i | 8 +- .../Examples/test-suite/using_private.i | 0 .../Examples/test-suite/using_protected.i | 0 .../Examples/test-suite/valuewrapper.i | 0 .../Examples/test-suite/valuewrapper_base.i | 0 .../Examples/test-suite/valuewrapper_const.i | 0 .../Examples/test-suite/valuewrapper_opaque.i | 4 + .../Examples/test-suite/varargs.i | 0 .../Examples/test-suite/varargs_overload.i | 44 + .../test-suite/variable_replacement.i | 0 .../Examples/test-suite/virtual_derivation.i | 1 + .../Examples/test-suite/virtual_destructor.i | 0 .../Examples/test-suite/virtual_poly.i | 4 + .../test-suite/virtual_vs_nonvirtual_base.i | 0 .../Examples/test-suite/voidtest.i | 0 .../Examples/test-suite/wallkw.i | 0 .../Examples/test-suite/wrapmacro.i | 0 .../Examples/xml/Makefile.in | 0 .../Examples/xml/error.expected-xml | 0 .../Examples/xml/error.i | 0 .../Examples/xml/example.expected-xml | 0 .../Examples/xml/example.h | 0 .../Examples/xml/example.i | 0 .../Examples/xml/example_apply.expected-xml | 0 .../Examples/xml/example_apply.i | 0 .../Examples/xml/example_const.expected-xml | 0 .../Examples/xml/example_const.i | 0 .../Examples/xml/example_gif.expected-xml | 0 .../Examples/xml/example_inl.expected-xml | 0 .../Examples/xml/example_inl.h | 0 .../Examples/xml/example_inl.i | 0 .../Examples/xml/example_p5.expected-xml | 0 .../Examples/xml/example_p5.i | 0 .../Examples/xml/example_ro.expected-xml | 0 .../Examples/xml/example_ro.i | 0 .../xml/example_title_add.expected-xml | 0 .../Examples/xml/example_title_add.i | 0 .../Examples/xml/example_xml.expected-xml | 0 .../Examples/xml/example_xml.h | 0 .../Examples/xml/example_xml.i | 0 .../Examples/xml/gnarly.expected-xml | 0 .../Examples/xml/gnarly.i | 0 .../{swig-3.0.12 => swigwin-4.0.0}/INSTALL | 0 .../{swig-3.0.12 => swigwin-4.0.0}/LICENSE | 0 .../LICENSE-GPL | 0 .../LICENSE-UNIVERSITIES | 0 .../Lib/allegrocl/allegrocl.swg | 2 + .../Lib/allegrocl/inout_typemaps.i | 0 .../Lib/allegrocl/longlongs.i | 0 .../Lib/allegrocl/std_list.i | 28 +- .../Lib/allegrocl/std_string.i | 0 .../Lib/allegrocl/typemaps.i | 0 .../Lib/allkw.swg | 3 - .../Lib/attribute.i | 0 .../Lib/carrays.i | 0 .../Lib/cdata.i | 15 - .../Lib/cffi/cffi.swg | 2 + .../Lib/chicken/chicken.swg | 24 +- .../Lib/chicken/chickenkw.swg | 0 .../Lib/chicken/chickenrun.swg | 3 +- .../Lib/chicken/extra-install.list | 0 .../Lib/chicken/multi-generic.scm | 0 .../Lib/chicken/std_string.i | 0 .../Lib/chicken/swigclosprefix.scm | 0 .../Lib/chicken/tinyclos-multi-generic.patch | 0 .../Lib/chicken/typemaps.i | 0 .../Lib/clisp/clisp.swg | 0 .../Lib/cmalloc.i | 0 .../Lib/constraints.i | 0 .../Lib/cpointer.i | 0 .../Lib/csharp/arrays_csharp.i | 0 .../Lib/csharp/boost_intrusive_ptr.i | 27 +- .../Lib/csharp/boost_shared_ptr.i | 113 +- winx64/bin/swigwin-4.0.0/Lib/csharp/complex.i | 5 + .../Lib/csharp/csharp.swg | 36 +- .../Lib/csharp/csharphead.swg | 9 +- .../Lib/csharp/csharpkw.swg | 0 .../Lib/csharp/director.swg | 4 + .../Lib/csharp/enums.swg | 0 .../Lib/csharp/enumsimple.swg | 0 .../Lib/csharp/enumtypesafe.swg | 0 .../Lib/csharp/std_array.i | 2 +- .../Lib/csharp/std_auto_ptr.i | 0 .../Lib/csharp/std_common.i | 0 .../swigwin-4.0.0/Lib/csharp/std_complex.i | 95 + .../Lib/csharp/std_deque.i | 0 .../Lib/csharp/std_except.i | 0 .../bin/swigwin-4.0.0/Lib/csharp/std_list.i | 519 + .../Lib/csharp/std_map.i | 31 +- .../Lib/csharp}/std_pair.i | 6 +- winx64/bin/swigwin-4.0.0/Lib/csharp/std_set.i | 311 + .../Lib/csharp/std_shared_ptr.i | 0 .../Lib/csharp/std_string.i | 0 .../Lib/csharp/std_vector.i | 44 +- .../Lib/csharp/std_wstring.i | 0 .../java => swigwin-4.0.0/Lib/csharp}/stl.i | 0 .../Lib/csharp/swiginterface.i | 0 .../Lib/csharp/swigtype_inout.i | 0 .../Lib/csharp/typemaps.i | 0 .../Lib/csharp/wchar.i | 0 .../Lib/cstring.i | 0 .../Lib/cwstring.i | 0 .../Lib/d/boost_shared_ptr.i | 102 +- .../Lib/d/carrays.i | 0 .../Lib/d/cpointer.i | 0 .../Lib/d/d.swg | 0 .../Lib/d/dclassgen.swg | 4 +- .../Lib/d/ddirectives.swg | 0 .../Lib/d/denums.swg | 0 .../Lib/d/dexception.swg | 0 .../Lib/d/dhead.swg | 0 .../Lib/d/director.swg | 4 + .../Lib/d/dkw.swg | 0 .../Lib/d/dmemberfunctionpointers.swg | 2 + .../Lib/d/doperators.swg | 0 .../Lib/d/dprimitives.swg | 2 +- .../Lib/d/dstrings.swg | 0 .../Lib/d/dswigtype.swg | 15 +- .../Lib/d/dvoid.swg | 0 .../Lib/d/std_common.i | 0 .../Lib/d/std_deque.i | 0 .../Lib/d/std_except.i | 0 winx64/bin/swigwin-4.0.0/Lib/d/std_map.i | 62 + .../ocaml => swigwin-4.0.0/Lib/d}/std_pair.i | 6 +- .../Lib/d/std_shared_ptr.i | 0 .../Lib/d/std_string.i | 0 .../Lib/d/std_vector.i | 32 +- .../jsc => swigwin-4.0.0/Lib/d}/stl.i | 0 .../Lib/d/typemaps.i | 0 .../Lib/d/wrapperloader.swg | 0 .../Lib/director_common.swg | 0 .../Lib/exception.i | 66 +- .../Lib/go/cdata.i | 0 winx64/bin/swigwin-4.0.0/Lib/go/director.swg | 80 + .../Lib/go/exception.i | 0 .../Lib/go/go.swg | 11 +- .../Lib/go/gokw.swg | 0 .../Lib/go/goruntime.swg | 69 - .../Lib/go/gostring.swg | 0 .../Lib/go/std_common.i | 0 .../Lib/go/std_deque.i | 0 .../Lib/go/std_except.i | 0 .../Lib/go/std_list.i | 7 +- .../lua => swigwin-4.0.0/Lib/go}/std_map.i | 16 +- .../java => swigwin-4.0.0/Lib/go}/std_pair.i | 6 +- .../Lib/go/std_string.i | 0 .../v8 => swigwin-4.0.0/Lib/go}/std_vector.i | 21 +- .../v8 => swigwin-4.0.0/Lib/go}/stl.i | 0 .../Lib/go/typemaps.i | 0 .../Lib/guile/Makefile | 0 .../Lib/guile/common.scm | 0 .../Lib/guile/cplusplus.i | 0 .../Lib/guile/extra-install.list | 0 .../Lib/guile/guile.i | 0 .../Lib/guile/guile_scm.swg | 5 +- .../Lib/guile/guile_scm_run.swg | 32 +- .../Lib/guile/guilemain.i | 5 - .../Lib/guile/interpreter.i | 0 .../Lib/guile/list-vector.i | 0 .../Lib/guile/pointer-in-out.i | 0 .../Lib/guile/ports.i | 0 .../Lib/guile/std_common.i | 0 .../Lib/guile/std_deque.i | 0 .../Lib/guile/std_except.i | 0 .../Lib/guile/std_map.i | 212 +- .../Lib/guile/std_pair.i | 20 +- .../Lib/guile/std_string.i | 0 .../Lib/guile/std_vector.i | 22 +- .../Lib/lua => swigwin-4.0.0/Lib/guile}/stl.i | 0 .../Lib/guile/swigrun.i | 0 .../Lib/guile/typemaps.i | 28 +- .../Lib/intrusive_ptr.i | 6 +- .../Lib/inttypes.i | 0 .../Lib/java/arrays_java.i | 0 .../Lib/java/boost_intrusive_ptr.i | 91 +- .../Lib/java/boost_shared_ptr.i | 154 +- .../Lib/java/director.swg | 131 +- .../Lib/java/enums.swg | 0 .../Lib/java/enumsimple.swg | 0 .../Lib/java/enumtypesafe.swg | 0 .../Lib/java/enumtypeunsafe.swg | 0 .../Lib/java/java.swg | 82 +- .../Lib/java/javahead.swg | 0 .../Lib/java/javakw.swg | 0 .../Lib/java/std_array.i | 10 +- .../Lib/java/std_auto_ptr.i | 0 .../Lib/java/std_common.i | 0 .../Lib/java/std_deque.i | 0 .../Lib/java/std_except.i | 0 winx64/bin/swigwin-4.0.0/Lib/java/std_list.i | 225 + winx64/bin/swigwin-4.0.0/Lib/java/std_map.i | 224 + winx64/bin/swigwin-4.0.0/Lib/java/std_pair.i | 37 + winx64/bin/swigwin-4.0.0/Lib/java/std_set.i | 199 + .../Lib/java/std_shared_ptr.i | 0 .../Lib/java/std_string.i | 0 .../Lib/java/std_unordered_map.i | 211 + .../Lib/java/std_unordered_set.i | 199 + .../bin/swigwin-4.0.0/Lib/java/std_vector.i | 184 + .../Lib/java/std_wstring.i | 0 .../Lib/go => swigwin-4.0.0/Lib/java}/stl.i | 1 + .../Lib/java/swiginterface.i | 0 .../Lib/java/typemaps.i | 72 +- .../Lib/java/various.i | 2 +- .../Lib/javascript/jsc/arrays_javascript.i | 0 .../Lib/javascript/jsc/ccomplex.i | 0 .../Lib/javascript/jsc/cdata.i | 0 .../Lib/javascript/jsc/complex.i | 0 .../Lib/javascript/jsc/exception.i | 0 .../Lib/javascript/jsc/javascript.swg | 0 .../Lib/javascript/jsc/javascriptcode.swg | 2 +- .../Lib/javascript/jsc/javascriptcomplex.swg | 0 .../javascript/jsc/javascriptfragments.swg | 0 .../Lib/javascript/jsc/javascripthelpers.swg | 0 .../Lib/javascript/jsc/javascriptinit.swg | 0 .../Lib/javascript/jsc/javascriptkw.swg | 0 .../javascript/jsc/javascriptprimtypes.swg | 0 .../Lib/javascript/jsc/javascriptrun.swg | 2 +- .../Lib/javascript/jsc/javascriptruntime.swg | 0 .../Lib/javascript/jsc/javascriptstrings.swg | 0 .../Lib/javascript/jsc/javascripttypemaps.swg | 0 .../Lib/javascript/jsc/std_common.i | 0 .../Lib/javascript/jsc/std_complex.i | 7 + .../Lib/javascript/jsc/std_deque.i | 0 .../Lib/javascript/jsc/std_except.i | 0 .../Lib/javascript/jsc/std_map.i | 17 +- .../Lib/javascript/jsc}/std_pair.i | 6 +- .../Lib/javascript/jsc/std_string.i | 0 .../Lib/javascript/jsc}/std_vector.i | 14 + .../Lib/javascript/jsc}/stl.i | 2 - .../Lib/javascript/jsc/typemaps.i | 0 .../Lib/javascript/v8/arrays_javascript.i | 0 .../Lib/javascript/v8/ccomplex.i | 0 .../Lib/javascript/v8/cdata.i | 0 .../Lib/javascript/v8/complex.i | 0 .../Lib/javascript/v8/exception.i | 0 .../Lib/javascript/v8/javascript.swg | 0 .../Lib/javascript/v8/javascriptcode.swg | 27 +- .../Lib/javascript/v8/javascriptcomplex.swg | 2 +- .../Lib/javascript/v8/javascriptfragments.swg | 0 .../Lib/javascript/v8/javascripthelpers.swg | 29 +- .../Lib/javascript/v8/javascriptinit.swg | 22 +- .../Lib/javascript/v8/javascriptkw.swg | 0 .../Lib/javascript/v8/javascriptprimtypes.swg | 14 +- .../Lib/javascript/v8/javascriptrun.swg | 82 +- .../Lib/javascript/v8/javascriptruntime.swg | 2 + .../Lib/javascript/v8/javascriptstrings.swg | 8 +- .../Lib/javascript/v8/javascripttypemaps.swg | 0 .../Lib/javascript/v8/std_common.i | 0 .../Lib/javascript/v8/std_complex.i | 7 + .../Lib/javascript/v8/std_deque.i | 0 .../Lib/javascript/v8/std_except.i | 0 .../Lib/javascript/v8}/std_map.i | 16 +- .../Lib/javascript/v8/std_pair.i | 6 +- .../Lib/javascript/v8/std_string.i | 0 .../Lib/javascript/v8}/std_vector.i | 14 + .../Lib/javascript/v8}/stl.i | 2 - .../Lib/javascript/v8/typemaps.i | 0 .../Lib/linkruntime.c | 0 .../Lib/lua/_std_common.i | 0 .../Lib/lua/carrays.i | 0 .../Lib/lua/factory.i | 0 .../Lib/lua/lua.swg | 2 +- .../Lib/lua/lua_fnptr.i | 0 .../Lib/lua/luakw.swg | 0 .../Lib/lua/luarun.swg | 21 +- .../Lib/lua/luaruntime.swg | 5 +- .../Lib/lua/luatypemaps.swg | 14 +- .../Lib/lua/std_common.i | 0 .../Lib/lua/std_deque.i | 0 .../Lib/lua/std_except.i | 0 .../go => swigwin-4.0.0/Lib/lua}/std_map.i | 16 +- .../Lib/lua/std_pair.i | 20 +- .../Lib/lua/std_string.i | 2 - .../Lib/lua/std_vector.i | 11 +- .../Lib/guile => swigwin-4.0.0/Lib/lua}/stl.i | 2 - .../Lib/lua/typemaps.i | 2 +- .../Lib/lua/wchar.i | 0 .../{swig-3.0.12 => swigwin-4.0.0}/Lib/math.i | 0 .../Lib/modula3/modula3.swg | 2 + .../Lib/modula3/modula3head.swg | 0 .../Lib/modula3/typemaps.i | 0 .../Lib/mzscheme/Makefile | 0 .../Lib/mzscheme/mzrun.swg | 2 +- .../Lib/mzscheme/mzscheme.swg | 1 + .../Lib/mzscheme/std_common.i | 0 .../Lib/mzscheme/std_deque.i | 0 .../Lib/mzscheme/std_map.i | 228 +- .../Lib/mzscheme/std_pair.i | 20 +- .../Lib/mzscheme/std_string.i | 0 .../Lib/mzscheme/std_vector.i | 22 +- winx64/bin/swigwin-4.0.0/Lib/mzscheme/stl.i | 10 + .../Lib/mzscheme/typemaps.i | 13 +- .../Lib/ocaml/carray.i | 9 +- .../Lib/ocaml/class.swg | 1 + .../Lib/ocaml/cstring.i | 2 +- .../Lib/ocaml/director.swg | 6 +- .../Lib/ocaml/extra-install.list | 1 - .../Lib/ocaml/ocaml.i | 4 - .../Lib/ocaml/ocaml.swg | 173 +- .../Lib/ocaml/ocamldec.swg | 127 +- .../Lib/ocaml/ocamlkw.swg | 10 +- .../Lib/ocaml/preamble.swg | 0 .../Lib/ocaml/std_common.i | 1 + .../Lib/ocaml/std_complex.i | 0 .../Lib/ocaml/std_deque.i | 0 .../bin/swigwin-4.0.0/Lib/ocaml/std_except.i | 23 + .../Lib/ocaml/std_list.i | 30 +- .../v8 => swigwin-4.0.0/Lib/ocaml}/std_map.i | 17 +- winx64/bin/swigwin-4.0.0/Lib/ocaml/std_pair.i | 36 + .../Lib/ocaml/std_string.i | 16 +- .../Lib/ocaml/std_vector.i | 13 +- winx64/bin/swigwin-4.0.0/Lib/ocaml/stl.i | 10 + .../Lib/ocaml/swig.ml | 11 +- .../Lib/ocaml/swig.mli | 1 + .../Lib/ocaml/swigp4.ml | 0 .../Lib/ocaml/typecheck.i | 73 +- .../Lib/ocaml/typemaps.i | 180 +- .../Lib/ocaml/typeregister.swg | 0 .../Lib/octave/attribute.i | 0 .../Lib/octave}/boost_shared_ptr.i | 121 +- .../Lib/octave/carrays.i | 0 .../Lib/octave/cdata.i | 0 .../Lib/octave/cmalloc.i | 0 .../Lib/octave/director.swg | 24 +- .../Lib/octave/exception.i | 0 .../Lib/octave/factory.i | 0 .../Lib/octave/implicit.i | 0 .../Lib/octave/octave.swg | 0 .../Lib/octave/octcomplex.swg | 0 .../Lib/octave/octcontainer.swg | 8 +- .../Lib/octave/octfragments.swg | 0 .../Lib/octave/octiterators.swg | 2 +- .../Lib/octave/octopers.swg | 0 .../Lib/octave/octprimtypes.swg | 12 +- .../Lib/octave/octrun.swg | 149 +- .../Lib/octave/octruntime.swg | 63 +- .../Lib/octave/octstdcommon.swg | 23 +- .../Lib/octave/octtypemaps.swg | 0 .../Lib/octave/octuserdir.swg | 0 .../Lib/octave/std_alloc.i | 0 .../Lib/octave/std_basic_string.i | 47 +- .../Lib/octave/std_carray.i | 0 .../Lib/octave/std_char_traits.i | 0 .../Lib/octave/std_common.i | 0 .../Lib/octave/std_complex.i | 7 + .../Lib/octave/std_container.i | 0 .../Lib/octave/std_deque.i | 2 +- .../Lib/octave/std_except.i | 0 .../Lib/octave/std_list.i | 2 +- .../Lib/octave/std_map.i | 0 .../Lib/octave/std_pair.i | 16 +- .../Lib/octave/std_shared_ptr.i | 0 .../Lib/octave/std_string.i | 0 .../Lib/octave/std_vector.i | 0 .../Lib/octave/std_wstring.i | 0 winx64/bin/swigwin-4.0.0/Lib/octave/stl.i | 10 + .../Lib/octave/typemaps.i | 0 .../Lib/perl5/Makefile.in | 0 .../Lib/perl5/Makefile.pl | 0 .../Lib/perl5/attribute.i | 0 .../Lib/perl5/carrays.i | 0 .../Lib/perl5/cdata.i | 0 .../Lib/perl5/cmalloc.i | 0 .../Lib/perl5/cpointer.i | 0 .../Lib/perl5/cstring.i | 0 .../Lib/perl5/director.swg | 0 .../Lib/perl5/exception.i | 0 .../Lib/perl5/extra-install.list | 0 .../Lib/perl5/factory.i | 0 .../Lib/perl5/noembed.h | 0 .../Lib/perl5/perl5.swg | 0 .../Lib/perl5/perlerrors.swg | 0 .../Lib/perl5/perlfragments.swg | 0 .../Lib/perl5/perlhead.swg | 0 .../Lib/perl5/perlinit.swg | 0 .../Lib/perl5/perlkw.swg | 0 .../Lib/perl5/perlmacros.swg | 0 .../Lib/perl5/perlmain.i | 0 .../Lib/perl5/perlopers.swg | 0 .../Lib/perl5/perlprimtypes.swg | 0 .../Lib/perl5/perlrun.swg | 13 +- .../Lib/perl5/perlruntime.swg | 0 .../Lib/perl5/perlstrings.swg | 0 .../Lib/perl5/perltypemaps.swg | 8 +- .../Lib/perl5/perluserdir.swg | 0 .../Lib/perl5/reference.i | 0 .../Lib/perl5/std_common.i | 0 .../Lib/perl5/std_deque.i | 0 .../Lib/perl5/std_except.i | 0 .../Lib/perl5/std_list.i | 8 +- .../Lib/perl5/std_map.i | 16 +- winx64/bin/swigwin-4.0.0/Lib/perl5/std_pair.i | 36 + .../Lib/perl5/std_string.i | 0 .../Lib/perl5/std_vector.i | 23 +- winx64/bin/swigwin-4.0.0/Lib/perl5/stl.i | 10 + .../Lib/perl5/typemaps.i | 10 +- .../Lib/php/const.i | 3 +- .../Lib/php/director.swg | 0 .../Lib/php/factory.i | 0 .../Lib/php/globalvar.i | 21 +- .../Lib/php/php.swg | 28 +- .../Lib/php/phpinit.swg | 6 +- .../Lib/php/phpkw.swg | 139 +- .../Lib/php/phppointers.i | 0 .../Lib/php/phprun.swg | 19 +- .../Lib/php/std_common.i | 0 .../Lib/php/std_deque.i | 0 .../php5 => swigwin-4.0.0/Lib/php}/std_map.i | 16 +- winx64/bin/swigwin-4.0.0/Lib/php/std_pair.i | 36 + .../Lib/php/std_string.i | 0 .../Lib/php}/std_vector.i | 14 + winx64/bin/swigwin-4.0.0/Lib/php/stl.i | 10 + .../Lib/php/typemaps.i | 0 .../Lib/php/utils.i | 6 - .../Lib/pike/pike.swg | 2 + .../Lib/pike/pikekw.swg | 0 .../Lib/pike/pikerun.swg | 0 .../Lib/pike/std_string.i | 0 .../Lib/pointer.i | 0 .../Lib/python/Makefile.in | 0 .../Lib/python/README | 0 .../Lib/python/argcargv.i | 0 .../Lib/python/attribute.i | 0 .../Lib/python/boost_shared_ptr.i | 117 +- .../Lib/python/builtin.swg | 89 +- .../Lib/python/carrays.i | 0 .../Lib/python/ccomplex.i | 0 .../Lib/python/cdata.i | 0 .../Lib/python/cmalloc.i | 0 .../Lib/python/complex.i | 0 .../Lib/python/cpointer.i | 0 .../Lib/python/cstring.i | 0 .../Lib/python/cwstring.i | 0 .../Lib/python/defarg.swg | 2 +- .../Lib/python/director.swg | 0 .../Lib/python/embed.i | 0 .../Lib/python/exception.i | 0 .../Lib/python/factory.i | 0 .../Lib/python/file.i | 0 .../Lib/python/implicit.i | 0 winx64/bin/swigwin-4.0.0/Lib/python/pyabc.i | 10 + .../Lib/python/pyapi.swg | 19 +- .../Lib/python/pybackward.swg | 0 .../Lib/python/pybuffer.i | 54 +- .../Lib/python/pyclasses.swg | 0 .../Lib/python/pycomplex.swg | 0 .../Lib/python/pycontainer.swg | 76 +- .../Lib/python/pydocs.swg | 21 + .../Lib/python/pyerrors.swg | 42 +- .../Lib/python/pyfragments.swg | 0 .../bin/swigwin-4.0.0/Lib/python/pyhead.swg | 87 + .../Lib/python/pyinit.swg | 147 +- .../Lib/python/pyiterators.swg | 75 +- .../Lib/python/pymacros.swg | 0 .../Lib/python/pyname_compat.i | 3 +- .../Lib/python/pyopers.swg | 0 .../Lib/python/pyprimtypes.swg | 0 .../Lib/python/pyrun.swg | 450 +- .../Lib/python/pyruntime.swg | 7 +- .../Lib/python/pystdcommon.swg | 23 +- .../Lib/python/pystrings.swg | 32 +- .../Lib/python/python.swg | 0 .../Lib/python/pythonkw.swg | 2 + .../Lib/python/pythreads.swg | 4 +- .../Lib/python/pytuplehlp.swg | 0 .../Lib/python/pytypemaps.swg | 2 +- .../Lib/python/pyuserdir.swg | 5 +- .../Lib/python/pywstrings.swg | 24 +- .../Lib/python/std_alloc.i | 0 .../Lib/python/std_array.i | 0 .../Lib/python/std_auto_ptr.i | 0 .../Lib/python/std_basic_string.i | 89 + .../Lib/python/std_carray.i | 0 .../Lib/python/std_char_traits.i | 0 .../Lib/python/std_common.i | 0 .../Lib/python/std_complex.i | 9 +- .../Lib/python/std_container.i | 0 .../Lib/python/std_deque.i | 2 +- .../Lib/python/std_except.i | 0 .../Lib/python/std_ios.i | 0 .../Lib/python/std_iostream.i | 0 .../Lib/python/std_list.i | 2 +- .../Lib/python/std_map.i | 8 +- .../Lib/python/std_multimap.i | 16 +- .../Lib/python/std_multiset.i | 0 .../Lib/python/std_pair.i | 0 .../Lib/python/std_set.i | 10 +- .../Lib/python/std_shared_ptr.i | 0 .../Lib/python/std_sstream.i | 0 .../Lib/python/std_streambuf.i | 0 .../Lib/python/std_string.i | 0 .../Lib/python/std_unordered_map.i | 296 + .../Lib/python/std_unordered_multimap.i | 48 +- .../Lib/python/std_unordered_multiset.i | 48 + .../Lib/python/std_unordered_set.i | 67 + .../Lib/python/std_vector.i | 0 .../Lib/python/std_vectora.i | 0 .../Lib/python/std_wios.i | 0 .../Lib/python/std_wiostream.i | 0 .../Lib/python/std_wsstream.i | 0 .../Lib/python/std_wstreambuf.i | 0 .../Lib/python/std_wstring.i | 0 winx64/bin/swigwin-4.0.0/Lib/python/stl.i | 10 + .../Lib/python/typemaps.i | 0 .../Lib/python/wchar.i | 0 .../Lib/r}/boost_shared_ptr.i | 128 +- .../Lib/r/cdata.i | 0 .../Lib/r/exception.i | 0 .../Lib/r/r.swg | 7 +- .../Lib/r/rcontainer.swg | 0 .../Lib/r/rfragments.swg | 0 .../Lib/r/rkw.swg | 0 .../Lib/r/ropers.swg | 0 .../Lib/r/rrun.swg | 16 +- .../Lib/r/rstdcommon.swg | 18 +- .../Lib/r/rtype.swg | 24 +- .../Lib/r/srun.swg | 4 +- .../Lib/r/std_alloc.i | 0 .../Lib/r/std_common.i | 0 .../Lib/r/std_container.i | 0 .../Lib/r/std_deque.i | 0 .../Lib/r/std_except.i | 0 .../Lib/r/std_list.i | 0 .../Lib/r/std_map.i | 0 .../Lib/r/std_pair.i | 0 .../Lib/r}/std_shared_ptr.i | 0 .../Lib/r/std_string.i | 0 .../Lib/r/std_vector.i | 0 winx64/bin/swigwin-4.0.0/Lib/r/stl.i | 9 + .../Lib/r/typemaps.i | 0 .../Lib/ruby/Makefile.swig | 0 .../Lib/ruby/argcargv.i | 0 .../Lib/ruby/attribute.i | 0 .../Lib/ruby/boost_shared_ptr.i | 104 +- .../Lib/ruby/carrays.i | 0 .../Lib/ruby/cdata.i | 0 .../Lib/ruby/cmalloc.i | 0 .../Lib/ruby/cpointer.i | 0 .../Lib/ruby/cstring.i | 0 .../Lib/ruby/director.swg | 0 .../Lib/ruby/embed.i | 0 .../Lib/ruby/exception.i | 0 .../Lib/ruby/extconf.rb | 0 .../Lib/ruby/extra-install.list | 0 .../Lib/ruby/factory.i | 0 .../Lib/ruby/file.i | 0 .../Lib/ruby/progargcargv.i | 0 .../Lib/ruby/ruby.swg | 2 +- .../Lib/ruby/rubyapi.swg | 0 .../Lib/ruby/rubyautodoc.swg | 0 .../Lib/ruby/rubyclasses.swg | 0 .../Lib/ruby/rubycomplex.swg | 0 .../Lib/ruby/rubycontainer.swg | 12 +- .../Lib/ruby/rubycontainer_extended.swg | 2 +- .../Lib/ruby/rubydef.swg | 0 .../Lib/ruby/rubyerrors.swg | 0 .../Lib/ruby/rubyfragments.swg | 0 .../Lib/ruby/rubyhead.swg | 3 + .../Lib/ruby/rubyinit.swg | 0 .../Lib/ruby/rubyiterators.swg | 2 +- .../Lib/ruby/rubykw.swg | 0 .../Lib/ruby/rubymacros.swg | 0 .../Lib/ruby/rubyopers.swg | 0 .../Lib/ruby/rubyprimtypes.swg | 0 .../Lib/ruby/rubyrun.swg | 17 +- .../Lib/ruby/rubyruntime.swg | 0 .../Lib/ruby/rubystdautodoc.swg | 0 .../Lib/ruby/rubystdcommon.swg | 36 +- .../Lib/ruby/rubystdcommon_forward.swg | 15 + .../Lib/ruby/rubystdfunctors.swg | 0 .../Lib/ruby/rubystrings.swg | 0 .../Lib/ruby/rubytracking.swg | 13 +- .../Lib/ruby/rubytypemaps.swg | 0 .../Lib/ruby/rubyuserdir.swg | 2 +- .../swigwin-4.0.0/Lib/ruby/rubywstrings.swg | 58 + .../Lib/ruby/std_alloc.i | 0 .../Lib/ruby/std_array.i | 0 .../Lib/ruby/std_basic_string.i | 67 +- .../Lib/ruby/std_char_traits.i | 0 .../Lib/ruby/std_common.i | 0 .../Lib/ruby/std_complex.i | 7 + .../Lib/ruby/std_container.i | 0 .../Lib/ruby/std_deque.i | 2 +- .../Lib/ruby/std_except.i | 0 .../Lib/ruby/std_functors.i | 0 .../Lib/ruby/std_ios.i | 0 .../Lib/ruby/std_iostream.i | 0 .../Lib/ruby/std_list.i | 3 +- .../Lib/ruby/std_map.i | 0 .../Lib/ruby/std_multimap.i | 7 +- .../Lib/ruby/std_multiset.i | 2 +- .../Lib/ruby/std_pair.i | 0 .../Lib/ruby/std_queue.i | 2 +- .../Lib/ruby/std_set.i | 0 .../swigwin-4.0.0/Lib/ruby/std_shared_ptr.i | 141 + .../Lib/ruby/std_sstream.i | 0 .../Lib/ruby/std_stack.i | 2 +- .../Lib/ruby/std_streambuf.i | 0 .../bin/swigwin-4.0.0/Lib/ruby/std_string.i | 7 + .../Lib/ruby/std_unordered_map.i | 83 + .../Lib/ruby/std_unordered_multimap.i | 100 + .../Lib/ruby/std_unordered_multiset.i | 50 + .../Lib/ruby/std_unordered_set.i | 50 + .../Lib/ruby/std_vector.i | 0 .../Lib/ruby/std_vectora.i | 0 .../bin/swigwin-4.0.0/Lib/ruby/std_wstring.i | 52 + winx64/bin/swigwin-4.0.0/Lib/ruby/stl.i | 10 + .../Lib/ruby/timeval.i | 0 .../Lib/ruby/typemaps.i | 0 .../Lib/runtime.swg | 0 .../Lib/scilab/boost_shared_ptr.i | 401 + .../Lib/scilab/carrays.i | 0 .../Lib/scilab/cmalloc.i | 0 .../Lib/scilab/cpointer.i | 0 .../Lib/scilab/exception.i | 0 .../Lib/scilab/matrix.i | 0 .../Lib/scilab/sciarray.swg | 0 .../Lib/scilab/scibool.swg | 0 .../Lib/scilab/scichar.swg | 0 .../Lib/scilab/scicontainer.swg | 7 +- .../Lib/scilab/scidouble.swg | 0 .../Lib/scilab/scienum.swg | 0 .../Lib/scilab/sciexception.swg | 2 +- .../Lib/scilab/scifloat.swg | 0 .../Lib/scilab/sciint.swg | 0 .../Lib/scilab/sciiterators.swg | 2 +- .../Lib/scilab/scilab.swg | 0 .../Lib/scilab/scilist.swg | 0 .../Lib/scilab/scilong.swg | 0 .../Lib/scilab/scilonglong.swg | 0 .../Lib/scilab/scimacros.swg | 0 .../Lib/scilab/scimatrixbool.swg | 0 .../Lib/scilab/scimatrixchar.swg | 0 .../Lib/scilab/scimatrixdouble.swg | 0 .../Lib/scilab/scimatrixint.swg | 0 .../Lib/scilab/scimisctypes.swg | 0 .../Lib/scilab/scipointer.swg | 0 .../Lib/scilab/sciprimtypes.swg | 0 .../Lib/scilab/scirun.swg | 107 +- .../Lib/scilab/sciruntime.swg | 6 +- .../Lib/scilab/scisequence.swg | 0 .../Lib/scilab/scisequencebool.swg | 0 .../Lib/scilab/scisequencedouble.swg | 0 .../Lib/scilab/scisequencefloat.swg | 0 .../Lib/scilab/scisequenceint.swg | 0 .../Lib/scilab/scisequencepointer.swg | 0 .../Lib/scilab/scisequencestring.swg | 0 .../Lib/scilab/scishort.swg | 0 .../Lib/scilab/scisignedchar.swg | 0 .../Lib/scilab/scistdcommon.swg | 33 +- .../Lib/scilab/scitypemaps.swg | 4 +- .../Lib/scilab/sciunsignedchar.swg | 0 .../Lib/scilab/sciunsignedint.swg | 0 .../Lib/scilab/sciunsignedlong.swg | 0 .../Lib/scilab/sciunsignedshort.swg | 0 .../Lib/scilab/std_alloc.i | 0 .../Lib/scilab/std_basic_string.i | 3 +- .../Lib/scilab/std_char_traits.i | 0 .../Lib/scilab/std_common.i | 0 .../Lib/scilab/std_container.i | 0 .../Lib/scilab/std_deque.i | 0 .../Lib/scilab/std_except.i | 0 .../Lib/scilab/std_list.i | 0 winx64/bin/swigwin-4.0.0/Lib/scilab/std_map.i | 79 + .../Lib/scilab/std_multiset.i | 0 .../Lib/scilab/std_pair.i | 6 +- .../Lib/scilab/std_set.i | 0 .../swigwin-4.0.0/Lib/scilab/std_shared_ptr.i | 2 + .../Lib/scilab/std_string.i | 0 .../Lib/scilab/std_vector.i | 0 winx64/bin/swigwin-4.0.0/Lib/scilab/stl.i | 10 + .../Lib/scilab/typemaps.i | 0 .../Lib/shared_ptr.i | 4 +- .../Lib/std/README | 0 .../Lib/std/_std_deque.i | 0 .../Lib/std/std_alloc.i | 4 +- .../Lib/std/std_array.i | 4 +- .../Lib/std/std_basic_string.i | 0 .../Lib/std/std_carray.swg | 4 +- .../Lib/std/std_char_traits.i | 0 .../Lib/std/std_common.i | 2 +- .../Lib/std/std_container.i | 2 +- .../Lib/std/std_deque.i | 0 .../Lib/std/std_except.i | 0 .../Lib/std/std_ios.i | 8 +- .../Lib/std/std_iostream.i | 6 +- .../Lib/std/std_list.i | 4 +- .../Lib/std/std_map.i | 3 +- .../Lib/std/std_multimap.i | 3 +- .../Lib/std/std_multiset.i | 2 +- .../Lib/std/std_pair.i | 16 +- .../Lib/std/std_queue.i | 4 +- .../Lib/std/std_set.i | 4 +- .../Lib/std/std_sstream.i | 0 .../Lib/std/std_stack.i | 4 +- .../Lib/std/std_streambuf.i | 2 +- .../Lib/std/std_string.i | 0 .../Lib/std/std_unordered_map.i | 27 +- .../Lib/std/std_unordered_multimap.i | 25 +- .../Lib/std/std_unordered_multiset.i | 39 +- .../Lib/std/std_unordered_set.i | 29 +- .../Lib/std/std_vector.i | 22 +- .../Lib/std/std_vectora.i | 0 .../Lib/std/std_wios.i | 0 .../Lib/std/std_wiostream.i | 0 .../Lib/std/std_wsstream.i | 0 .../Lib/std/std_wstreambuf.i | 0 .../Lib/std/std_wstring.i | 0 .../Lib/std_except.i | 2 +- .../Lib/stdint.i | 0 .../{swig-3.0.12 => swigwin-4.0.0}/Lib/stl.i | 0 .../Lib/swig.swg | 4 +- .../Lib/swigarch.i | 0 .../Lib/swigerrors.swg | 0 .../bin/swigwin-4.0.0/Lib/swigfragments.swg | 86 + .../Lib/swiginit.swg | 6 +- .../Lib/swiglabels.swg | 0 .../Lib/swigrun.i | 0 .../Lib/swigrun.swg | 1 + .../Lib/swigwarn.swg | 14 +- .../Lib/swigwarnings.swg | 0 .../Lib/tcl/Makefile.in | 0 .../Lib/tcl/attribute.i | 0 .../Lib/tcl/carrays.i | 0 .../Lib/tcl/cdata.i | 0 .../Lib/tcl/cmalloc.i | 0 .../Lib/tcl/cpointer.i | 0 .../Lib/tcl/cstring.i | 0 .../Lib/tcl/cwstring.i | 0 .../Lib/tcl/exception.i | 0 .../Lib/tcl/factory.i | 0 .../Lib/tcl/mactkinit.c | 8 +- .../Lib/tcl/std_common.i | 0 .../Lib/tcl}/std_deque.i | 0 .../Lib/tcl/std_except.i | 0 .../Lib/tcl/std_map.i | 16 +- .../Lib/tcl/std_pair.i | 6 +- .../Lib/tcl/std_string.i | 0 .../Lib/tcl/std_vector.i | 20 +- .../Lib/tcl/std_wstring.i | 0 winx64/bin/swigwin-4.0.0/Lib/tcl/stl.i | 10 + .../Lib/tcl/tcl8.swg | 0 .../Lib/tcl/tclapi.swg | 2 +- .../Lib/tcl/tclerrors.swg | 0 .../Lib/tcl/tclfragments.swg | 0 .../Lib/tcl/tclinit.swg | 0 .../Lib/tcl/tclinterp.i | 0 .../Lib/tcl/tclkw.swg | 0 .../Lib/tcl/tclmacros.swg | 0 .../Lib/tcl/tclopers.swg | 0 .../Lib/tcl/tclprimtypes.swg | 0 .../Lib/tcl/tclresult.i | 0 .../Lib/tcl/tclrun.swg | 5 +- .../Lib/tcl/tclruntime.swg | 0 .../Lib/tcl/tclsh.i | 0 .../Lib/tcl/tclstrings.swg | 0 .../Lib/tcl/tcltypemaps.swg | 0 .../Lib/tcl/tcluserdir.swg | 0 .../Lib/tcl/tclwstrings.swg | 0 .../Lib/tcl/typemaps.i | 0 .../Lib/tcl/wish.i | 0 .../Lib/typemaps/README | 0 .../Lib/typemaps/attribute.swg | 0 .../Lib/typemaps/carrays.swg | 0 .../Lib/typemaps/cdata.swg | 0 .../Lib/typemaps/cmalloc.swg | 0 .../Lib/typemaps/cpointer.swg | 0 .../Lib/typemaps/cstring.swg | 0 .../Lib/typemaps/cstrings.swg | 0 .../Lib/typemaps/cwstring.swg | 0 .../Lib/typemaps/enumint.swg | 0 .../Lib/typemaps/exception.swg | 0 .../Lib/typemaps/factory.swg | 0 .../Lib/typemaps/fragments.swg | 77 +- .../Lib/typemaps/implicit.swg | 0 .../Lib/typemaps/inoutlist.swg | 0 .../Lib/typemaps/misctypes.swg | 0 .../Lib/typemaps/primtypes.swg | 0 .../Lib/typemaps/ptrtypes.swg | 0 .../Lib/typemaps/std_except.swg | 0 .../Lib/typemaps/std_string.swg | 0 .../Lib/typemaps/std_strings.swg | 0 .../Lib/typemaps/std_wstring.swg | 0 .../Lib/typemaps/string.swg | 0 .../Lib/typemaps/strings.swg | 0 .../Lib/typemaps/swigmacros.swg | 11 +- .../Lib/typemaps/swigobject.swg | 0 .../Lib/typemaps/swigtype.swg | 48 +- .../Lib/typemaps/swigtypemaps.swg | 0 .../Lib/typemaps/typemaps.swg | 0 .../Lib/typemaps/valtypes.swg | 0 .../Lib/typemaps/void.swg | 0 .../Lib/typemaps/wstring.swg | 0 .../Lib/uffi/uffi.swg | 0 .../Lib/wchar.i | 0 .../Lib/windows.i | 3 + .../Lib/xml/typemaps.i | 0 .../Lib/xml/xml.swg | 0 .../Makefile.in | 87 +- .../bin/{swig-3.0.12 => swigwin-4.0.0}/README | 8 +- .../RELEASENOTES | 29 + .../Source/CParse/cparse.h | 3 +- .../Source/CParse/cscanner.c | 121 +- .../Source/CParse/parser.c | 7902 +- .../Source/CParse/parser.h | 79 +- .../Source/CParse/parser.y | 1089 +- .../Source/CParse/templ.c | 63 +- .../Source/CParse/util.c | 4 +- .../Source/DOH/README | 0 .../Source/DOH/base.c | 0 .../Source/DOH/doh.h | 0 .../Source/DOH/dohint.h | 0 .../Source/DOH/file.c | 0 .../Source/DOH/fio.c | 0 .../Source/DOH/hash.c | 0 .../Source/DOH/list.c | 0 .../Source/DOH/memory.c | 4 +- .../Source/DOH/string.c | 40 +- .../Source/DOH/void.c | 0 .../Source/Doxygen/doxycommands.h | 170 + .../Source/Doxygen/doxyentity.cxx | 69 + .../swigwin-4.0.0/Source/Doxygen/doxyentity.h | 45 + .../Source/Doxygen/doxyparser.cxx | 1421 + .../swigwin-4.0.0/Source/Doxygen/doxyparser.h | 372 + .../Source/Doxygen/doxytranslator.cxx | 69 + .../Source/Doxygen/doxytranslator.h | 90 + .../swigwin-4.0.0/Source/Doxygen/javadoc.cxx | 845 + .../swigwin-4.0.0/Source/Doxygen/javadoc.h | 169 + .../swigwin-4.0.0/Source/Doxygen/pydoc.cxx | 848 + .../bin/swigwin-4.0.0/Source/Doxygen/pydoc.h | 198 + .../Source/Include/swigconfig.h.in | 3 - .../Source/Include/swigwarn.h | 14 + .../Source/Makefile.am | 27 +- .../Source/Makefile.in | 173 +- .../Source/Modules/README | 0 .../Source/Modules/allegrocl.cxx | 279 - .../Source/Modules/allocate.cxx | 2 +- .../Source/Modules/browser.cxx | 0 .../Source/Modules/cffi.cxx | 0 .../Source/Modules/chicken.cxx | 0 .../Source/Modules/clisp.cxx | 0 .../Source/Modules/contract.cxx | 0 .../Source/Modules/csharp.cxx | 193 +- .../Source/Modules/d.cxx | 92 +- .../Source/Modules/directors.cxx | 215 +- .../Source/Modules/emit.cxx | 74 +- .../Source/Modules/go.cxx | 99 +- .../Source/Modules/guile.cxx | 0 .../Source/Modules/interface.cxx | 14 +- .../Source/Modules/java.cxx | 265 +- .../Source/Modules/javascript.cxx | 35 +- .../Source/Modules/lang.cxx | 81 +- .../Source/Modules/lua.cxx | 14 +- .../Source/Modules/main.cxx | 64 +- .../Source/Modules/modula3.cxx | 8 +- .../Source/Modules/mzscheme.cxx | 18 +- .../Source/Modules/nested.cxx | 0 .../Source/Modules/ocaml.cxx | 277 +- .../Source/Modules/octave.cxx | 76 +- .../Source/Modules/overload.cxx | 43 +- .../Source/Modules/perl5.cxx | 79 +- .../Source/Modules/php.cxx | 136 +- .../Source/Modules/pike.cxx | 0 .../Source/Modules/python.cxx | 1857 +- .../Source/Modules/r.cxx | 1405 +- .../Source/Modules/ruby.cxx | 122 +- .../Source/Modules/s-exp.cxx | 0 .../Source/Modules/scilab.cxx | 186 +- .../swigwin-4.0.0/Source/Modules/swigmain.cxx | 274 + .../Source/Modules/swigmod.h | 41 +- .../Source/Modules/tcl8.cxx | 20 +- .../Source/Modules/typepass.cxx | 15 +- .../Source/Modules/uffi.cxx | 31 +- .../Source/Modules/utils.cxx | 2 +- .../Source/Modules/xml.cxx | 0 .../Source/Preprocessor/cpp.c | 103 +- .../Source/Preprocessor/expr.c | 22 +- .../Source/Preprocessor/preprocessor.h | 0 .../Source/README | 0 .../Source/Swig/cwrap.c | 11 +- .../Source/Swig/deprecate.c | 0 .../Source/Swig/error.c | 19 +- .../Source/Swig/extend.c | 4 +- .../Source/Swig/fragment.c | 0 .../Source/Swig/getopt.c | 0 .../Source/Swig/include.c | 0 .../Source/Swig/misc.c | 73 +- .../Source/Swig/naming.c | 64 +- .../Source/Swig/parms.c | 16 + .../Source/Swig/scanner.c | 81 +- .../Source/Swig/stype.c | 170 +- .../Source/Swig/swig.h | 6 +- .../Source/Swig/swigfile.h | 0 .../Source/Swig/swigopt.h | 0 .../Source/Swig/swigparm.h | 1 + .../Source/Swig/swigscan.h | 2 +- .../Source/Swig/swigtree.h | 0 .../Source/Swig/swigwrap.h | 0 .../Source/Swig/symbol.c | 57 +- .../Source/Swig/tree.c | 6 +- .../Source/Swig/typemap.c | 36 +- .../Source/Swig/typeobj.c | 82 +- .../Source/Swig/typesys.c | 212 +- .../Source/Swig/wrapfunc.c | 0 .../bin/{swig-3.0.12 => swigwin-4.0.0}/TODO | 68 - .../Tools/brew-install | 0 .../Tools/capitalize | 0 .../Tools/check-include-path.pike | 0 .../Tools/config/ac_compile_warnings.m4 | 0 .../Tools/config/ac_define_dir.m4 | 0 .../Tools/config/ax_boost_base.m4 | 299 + .../Tools/config/ax_compare_version.m4 | 8 +- .../Tools/config/ax_cxx_compile_stdcxx_11.m4 | 0 .../Tools/config/ax_path_generic.m4 | 8 +- .../Tools/config/compile | 0 .../Tools/config/config.guess | 679 +- .../Tools/config/config.sub | 284 +- .../Tools/config/depcomp | 6 +- .../Tools/config/install-sh | 0 .../Tools/config/missing | 0 .../Tools/config/ylwrap | 6 +- .../Tools/convertpath | 0 .../Tools/javascript/Makefile.in | 0 .../Tools/javascript/javascript.cxx | 0 .../Tools/javascript/js_shell.cxx | 0 .../Tools/javascript/js_shell.h | 0 .../Tools/javascript/jsc_shell.cxx | 0 .../Tools/javascript/v8_shell.cxx | 0 winx64/bin/swigwin-4.0.0/Tools/mkdist.py | 103 + winx64/bin/swigwin-4.0.0/Tools/mkrelease.py | 56 + .../Tools/mkwindows.sh | 11 +- .../Tools/nuget-install.cmd | 2 +- .../Tools/obs-buildlogs.py | 2 +- .../Tools/obs-update | 0 .../Tools/pcre-build.sh | 0 .../Tools/pyname_patch.py | 0 .../Tools/setup.py.tmpl | 0 .../Tools/swig.gdb | 4 +- .../Tools/testflags.py | 8 +- .../Tools/travis-linux-install.sh | 136 + .../Tools/travis-osx-install.sh | 17 +- .../Tools/vcfilter | 0 .../Win/README.txt | 0 .../{swig-3.0.12 => swigwin-4.0.0}/aclocal.m4 | 44 +- winx64/bin/swigwin-4.0.0/appveyor.yml | 128 + .../{swig-3.0.12 => swigwin-4.0.0}/autogen.sh | 0 .../{swig-3.0.12 => swigwin-4.0.0}/configure | 1628 +- .../configure.ac | 655 +- .../preinst-swig.in | 0 winx64/bin/swigwin-4.0.0/swig.exe | Bin 0 -> 4261187 bytes .../swig.spec.in | 4 +- 5943 files changed, 91790 insertions(+), 71892 deletions(-) delete mode 100644 winx64/bin/swig-3.0.12/CCache/ccache-swig.exe delete mode 100644 winx64/bin/swig-3.0.12/CHANGES.current delete mode 100644 winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.pdf delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/extend/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/funcptr/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/nested/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/reference/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/simple/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/template/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/csharp/variables/example.sln delete mode 100644 winx64/bin/swig-3.0.12/Examples/guile/simple/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/guile/simple/runme.scm delete mode 100644 winx64/bin/swig-3.0.12/Examples/javascript/exception/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/mzscheme/simple/README delete mode 100644 winx64/bin/swig-3.0.12/Examples/mzscheme/simple/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/mzscheme/simple/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/mzscheme/simple/runme.scm delete mode 100644 winx64/bin/swig-3.0.12/Examples/mzscheme/std_vector/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/ocaml/argout_ref/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/ocaml/argout_ref/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/ocaml/argout_ref/example_prog.ml delete mode 100644 winx64/bin/swig-3.0.12/Examples/ocaml/scoped_enum/example_prog.ml delete mode 100644 winx64/bin/swig-3.0.12/Examples/perl5/java/Example.java delete mode 100644 winx64/bin/swig-3.0.12/Examples/perl5/java/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/perl5/java/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/perl5/java/runme.pl delete mode 100644 winx64/bin/swig-3.0.12/Examples/php/disown/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php/pragmas/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php/pragmas/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php/variables/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/callback/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/callback/index.html delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/callback/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/check.list delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/class/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/constants/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/constants/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/constants/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/cpointer/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/cpointer/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/cpointer/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/cpointer/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/disown/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/disown/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/disown/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/enum/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/enum/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/extend/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/extend/index.html delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/extend/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/funcptr/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/funcptr/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/funcptr/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/overloading/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/overloading/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/overloading/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/overloading/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/overloading/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pointer/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pointer/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pointer/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pointer/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pragmas/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pragmas/include.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/pragmas/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/proxy/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/proxy/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/proxy/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/proxy/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/reference/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/reference/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/reference/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/reference/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/reference/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/simple/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/simple/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/sync/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/sync/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/sync/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/sync/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/sync/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/value/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/value/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/value/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/value/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/value/runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/variables/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/variables/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/variables/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/php5/variables/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/callback/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/extend/example.cxx delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/extend/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/extend/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/from_init1/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/from_init2/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/from_init3/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/namespace_pkg/nonpkg.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/namespace_pkg/normal.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/namespace_pkg/split.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/namespace_pkg/zipsplit.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/relativeimport1/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/relativeimport2/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/relativeimport3/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/split_modules/vanilla/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/split_modules/vanilla_split/foo.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/import_packages/split_modules/vanilla_split/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/java/Example.java delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/java/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/java/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/python/java/runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/funcptr/example.c delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/funcptr/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/java/Example.java delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/java/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/java/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/ruby/java/runme.rb delete mode 100644 winx64/bin/swig-3.0.12/Examples/tcl/enum/example.h delete mode 100644 winx64/bin/swig-3.0.12/Examples/tcl/java/Example.java delete mode 100644 winx64/bin/swig-3.0.12/Examples/tcl/java/Makefile delete mode 100644 winx64/bin/swig-3.0.12/Examples/tcl/java/example.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/tcl/java/runme.tcl delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/complextest.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/cpp11_alternate_function_syntax.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/cpp11_hash_tables.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/cpp11_static_assert.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/cpp_broken.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/csharp/director_basic_runme.cs delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/default_args_c.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/director_thread.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/extern_throws.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/go/varargs_overload_runme.go delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/java/li_std_vector_runme.java delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/li_std_except.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/li_std_list.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/li_std_set.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/member_funcptr_galore.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/null_pointer.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/ocaml/Makefile.in delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/ocaml/throw_exception_runme.ml delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/ocaml/typedef_mptr_runme.ml delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/ocaml/unions_runme.ml delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/perl5/global_vars_runme.pl delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/abstract_inherit_ok_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/abstract_inherit_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/arrayptr_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/arrays_global_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/arrays_global_twodim_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/arrays_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/arrays_scope_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/casts_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/class_ignore_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/cpp_basic_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/cpp_static_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_abstract_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_classic_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_default_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_detect_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_enum_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_extend_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_frob_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_profile_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_string_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/director_unroll_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/exception_order_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/li_carrays_cpp_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/li_carrays_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/li_factory_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/newobject1_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/php_iterator_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/prefix_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php/template_arg_typename_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/Makefile.in delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/add_link_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/argout_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/arrays_global_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/arrays_global_twodim_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/arrays_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/arrays_scope_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/callback_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/char_strings_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/conversion_namespace_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/conversion_ns_template_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/conversion_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/cpp11_strongly_typed_enumerations_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/cpp_basic_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/cpp_static_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_basic_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_exception_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_finalizer_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_frob_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_nested_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_pass_by_value_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_protected_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_stl_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_thread_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/director_unroll_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/enum_scope_template_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/evil_diamond_ns_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/evil_diamond_prop_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/evil_diamond_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/extend_template_ns_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/extend_template_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/grouping_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/ignore_parameter_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/import_nomodule_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/li_carrays_cpp_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/li_carrays_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/li_std_string_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/li_std_vector_member_var_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/overload_rename_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/overload_return_type_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/pointer_reference_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/preproc_constants_c_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/preproc_constants_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/primitive_ref_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/rename_scope_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/skel.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/smart_pointer_rename_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/swig_exception_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/sym_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/template_construct_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/tests.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/threads_exception_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/typedef_reference_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/typemap_ns_using_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/using1_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/using2_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/valuewrapper_base_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/virtual_vs_nonvirtual_base_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/php5/wrapmacro_runme.php delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/autodoc_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/complextest_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/cpp11_alternate_function_syntax_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/cpp11_raw_string_literals_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/cpp_static_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/default_args_c_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/global_namespace_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/li_std_map_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/python_abstractbase_runme3.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/python_nondynamic_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/python_pybuf_runme3.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python/varargs_overload_runme.py delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/python_pythoncode.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/register_par.i delete mode 100644 winx64/bin/swig-3.0.12/Examples/test-suite/scilab/varargs_overload_runme.sci delete mode 100644 winx64/bin/swig-3.0.12/Lib/csharp/std_pair.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/d/std_map.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/d/std_pair.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/gcj/cni.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/gcj/cni.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/gcj/javaprims.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/go/std_vector.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/mzscheme/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ocaml/libswigocaml.h delete mode 100644 winx64/bin/swig-3.0.12/Lib/ocaml/std_map.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ocaml/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/octave/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/perl5/cni.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/perl5/jstring.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/perl5/std_pair.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/perl5/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php/std_map.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php/std_pair.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php/std_vector.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/const.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/director.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/factory.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/globalvar.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/php.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/phpinit.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/phpkw.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/phppointers.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/phprun.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/std_common.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/std_pair.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/std_string.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/typemaps.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/php5/utils.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/cni.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/jstring.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/pyabc.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/pyhead.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/std_basic_string.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/std_unordered_map.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/std_unordered_multiset.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/std_unordered_set.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/python/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/r/boost_shared_ptr.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/r/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/cni.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/jstring.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/rubywstrings.swg delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/std_string.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/std_wstring.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/ruby/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/scilab/std_map.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/scilab/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/tcl/cni.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/tcl/jstring.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/tcl/std_deque.i delete mode 100644 winx64/bin/swig-3.0.12/Lib/tcl/stl.i delete mode 100644 winx64/bin/swig-3.0.12/Source/Modules/module.cxx delete mode 100644 winx64/bin/swig-3.0.12/Source/Modules/php5.cxx delete mode 100644 winx64/bin/swig-3.0.12/Source/Modules/swigmain.cxx delete mode 100644 winx64/bin/swig-3.0.12/Tools/config/ax_boost_base.m4 delete mode 100644 winx64/bin/swig-3.0.12/Tools/mkdist.py delete mode 100644 winx64/bin/swig-3.0.12/Tools/mkrelease.py delete mode 100644 winx64/bin/swig-3.0.12/Tools/travis-linux-install.sh delete mode 100644 winx64/bin/swig-3.0.12/appveyor.yml delete mode 100644 winx64/bin/swig-3.0.12/swig.exe delete mode 100644 winx64/bin/swig-3.0.12/vms/aaareadme.txt delete mode 100644 winx64/bin/swig-3.0.12/vms/build_end.com delete mode 100644 winx64/bin/swig-3.0.12/vms/build_init.com delete mode 100644 winx64/bin/swig-3.0.12/vms/build_swig.com delete mode 100644 winx64/bin/swig-3.0.12/vms/genbuild.py delete mode 100644 winx64/bin/swig-3.0.12/vms/logicals.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/build_all.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/compil_cparse.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/compil_doh.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/compil_modules1_1.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/compil_preprocessor.com delete mode 100644 winx64/bin/swig-3.0.12/vms/scripts/compil_swig.com delete mode 100644 winx64/bin/swig-3.0.12/vms/swigconfig.h rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/.travis.yml (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/ANNOUNCE (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/COPYING (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/Makefile.in (65%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/README.swig (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/args.c (100%) create mode 100644 winx64/bin/swigwin-4.0.0/CCache/ccache-swig.exe rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/ccache.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/ccache.h (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/ccache.yo (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/ccache_swig_config.h.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/cleanup.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/config.h.in (98%) create mode 100644 winx64/bin/swigwin-4.0.0/CCache/config_win32.h.in rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/configure (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/configure.ac (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/NEWS (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/README.Debian (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/changelog (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/compat (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/control (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/copyright (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/dirs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/docs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/examples (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/01_no_home.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/02_ccache-compressed.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/03_long_options.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/04_ignore_profile.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/05_nfs_fix.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/06_md.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/07_cachedirtag.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/08_manpage_hyphens.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/09_respect_ldflags.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/10_lru_cleanup.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/11_utimes.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/12_cachesize_permissions.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/13_html_links.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/14_hardlink_doc.diff (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/patches/CREDITS (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/rules (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/update-ccache (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/debian/watch (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/execute.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/hash.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/install-sh (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/mdfour.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/mdfour.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/packaging/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/packaging/ccache.spec (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/snprintf.c (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/stats.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/test.sh (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/unify.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/util.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CCache/web/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/CHANGES (99%) create mode 100644 winx64/bin/swigwin-4.0.0/CHANGES.current rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/COPYRIGHT (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/cmdopt.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/engineering.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/file.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/internals.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/migrate.txt (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/parm.html (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Doc/Devel/plan-gsoc-2012.txt rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/runtime.txt (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/scanner.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/tree.html (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Devel/wrapobj.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Allegrocl.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Android.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Arguments.html (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/CCache.html (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/CPlusPlus11.html (90%) create mode 100644 winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus14.html create mode 100644 winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus17.html rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/CSharp.html (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Chicken.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Contents.html (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Contract.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Customization.html (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/D.html (94%) create mode 100644 winx64/bin/swigwin-4.0.0/Doc/Manual/Doxygen.html rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Extending.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Go.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Guile.html (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Introduction.html (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Java.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Javascript.html (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Library.html (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Lisp.html (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Lua.html (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Makefile (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Modula3.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Modules.html (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Mzscheme.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Ocaml.html (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Octave.html (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Perl5.html (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Php.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Pike.html (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Preface.html (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Preprocessor.html (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Python.html (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/R.html (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Ruby.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/SWIG.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/SWIGDocumentation.html (50%) create mode 100644 winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.pdf rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/SWIGPlus.html (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Scilab.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Scripting.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Sections.html (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Tcl.html (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Typemaps.html (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Varargs.html (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Warnings.html (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/Windows.html (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/android-class.png (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/android-simple.png (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/ch2.1.png (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/chapters (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/fixstyle.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/index.html (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/linkchecker.config (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/makechap.py (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/maketoc.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/style.css (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/swig16.png (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/Manual/swightml.book (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Doc/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/Makefile.in (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/AndroidManifest.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/ant.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/build.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/jni/Android.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/jni/example.cpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/jni/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/jni/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/local.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/proguard.cfg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/project.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/res/layout/main.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/res/values/strings.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/class/src/org/swig/classexample/SwigClass.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/AndroidManifest.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/ant.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/build.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/jni/Android.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/jni/Application.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/jni/example.cpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/jni/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/jni/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/local.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/proguard.cfg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/project.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/res/layout/main.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/res/values/strings.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/extend/src/org/swig/extendexample/SwigExtend.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/AndroidManifest.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/ant.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/build.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/jni/Android.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/jni/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/jni/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/local.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/proguard.cfg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/project.properties (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/res/layout/main.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/res/values/strings.xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/android/simple/src/org/swig/simple/SwigSimple.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/runme-lowlevel.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/class/runme-tinyclos.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/constants/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/mod1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/mod2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/multi.setup (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/multi_init.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/single.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/single.setup (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/egg/test.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/multimap/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/overload/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/simple/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/chicken/simple/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_c/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_c/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_c/runme1.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_c/runme2.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/runme1.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/runme2.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/contract/simple_cxx/runme3.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/example.sln (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/arrays/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/example.sln (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/callback/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/example.sln (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/class/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/example.sln (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/enum/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/extend/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/extend/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/funcptr/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/funcptr/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/nested/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/nested/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/reference/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/reference/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/simple/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/simple/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/template/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/template/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/example-cs.csproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/example-vc.vcproj (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/csharp/variables/example.sln rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/csharp/variables/runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/constants/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/constants/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/example.mk.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/simple/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/simple/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/d1/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/d2/runme.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/d/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/callback.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/gocallback.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/callback/runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/class.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/class/runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/constants/runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/director.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/director.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/director/runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/enum.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/enum/runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/ceo.go (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/extend.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/extend/runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/funcptr.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/funcptr/runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/multimap/multimap.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/multimap/runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/pointer/pointer.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/pointer/runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/reference.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/reference/runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/simple/runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/simple/simple.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/template/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/template/runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/go/variables/variables.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/class/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/constants/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/matrix.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/matrix.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/runme.scm (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/vector.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/vector.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/matrix/vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multimap/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multivalue/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multivalue/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multivalue/example.i (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/multivalue/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/port/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/port/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/port/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/port/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/port/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/simple/README (100%) rename winx64/bin/{swig-3.0.12/Examples/java => swigwin-4.0.0/Examples/guile}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/simple/example.i (54%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/guile/simple/runme.scm rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/std_vector/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/guile/std_vector/runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/callback/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/check.list (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/class/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/constants/runme.java (100%) rename winx64/bin/{swig-3.0.12/Examples/php5/enum => swigwin-4.0.0/Examples/java/doxygen}/Makefile (57%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/java/doxygen/example.cxx rename winx64/bin/{swig-3.0.12/Examples/java/nested => swigwin-4.0.0/Examples/java/doxygen}/example.dsp (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/java/doxygen/example.h create mode 100644 winx64/bin/swigwin-4.0.0/Examples/java/doxygen/example.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/java/doxygen/runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/enum/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/extend/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/funcptr/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/multimap/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/multimap/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/native/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/native/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/native/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/native/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/nested/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/nested/example.cxx (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/java/nested/example.dsp rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/nested/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/nested/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/nested/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/pointer/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/reference/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/lua => swigwin-4.0.0/Examples/java}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/simple/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/template/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/template/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/typemap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/typemap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/typemap/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/typemap/runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/java/variables/runme.java (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/class/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/constant/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/enum/runme.js (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/example.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/example.h (52%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/javascript/exception/example.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/exception/runme.js (71%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/functor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/functor/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/functor/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/functor/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/functor/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/nspace/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/operator/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/overload/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/pointer/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/reference/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/simple/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/template/runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/example.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/javascript/variables/runme.js (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/arrays/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/arrays/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/arrays/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/arrays/runme.lua (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/class/runme.lua (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/constants/runme.lua (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/dual/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/dual/dual.cpp (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/dual/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/dual/example2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed/embed.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed/runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed2/embed2.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed2/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed2/runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/embed3.cpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/example.cpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/embed3/runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/exception/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/lua}/exception/example.h (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/exception/example.i (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/exception/runme.lua (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/funcptr3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/funcptr3/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/funcptr3/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/funcptr3/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/funcptr3/runme.lua (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functest/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functest/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functest/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functest/runme.lua (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functor/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/functor/runme.lua (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/runme.lua (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/import/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/lua.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/nspace/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/nspace/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/nspace/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/nspace/runme.lua (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/owner/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/owner/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/owner/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/owner/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/owner/runme.lua (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/pointer/runme.lua (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/modula3 => swigwin-4.0.0/Examples/lua}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/simple/runme.lua (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/lua/variables/runme.lua (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/class/swig.tmpl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/exception/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/exception/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/exception/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/ocaml => swigwin-4.0.0/Examples/modula3}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/typemap/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/modula3/typemap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/check.list (90%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/mzscheme}/class/Makefile (74%) rename winx64/bin/{swig-3.0.12/Examples/octave => swigwin-4.0.0/Examples/mzscheme}/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/octave => swigwin-4.0.0/Examples/mzscheme}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/perl5 => swigwin-4.0.0/Examples/mzscheme}/class/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/mzscheme/class/runme.scm rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/multimap/Makefile (99%) rename winx64/bin/{swig-3.0.12/Examples/tcl => swigwin-4.0.0/Examples/mzscheme}/multimap/example.c (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/multimap/example.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/multimap/runme.scm (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/simple/Makefile (99%) rename winx64/bin/{swig-3.0.12/Examples/perl5 => swigwin-4.0.0/Examples/mzscheme}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12/Examples/ocaml => swigwin-4.0.0/Examples/mzscheme}/simple/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/mzscheme/simple/runme.scm rename winx64/bin/{swig-3.0.12/Examples/php5/disown => swigwin-4.0.0/Examples/mzscheme/std_vector}/Makefile (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/mzscheme/std_vector/runme.scm (58%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/std_vector => swigwin-4.0.0/Examples/ocaml/argout_ref}/Makefile (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/argout_ref/example.c (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/argout_ref/example.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/argout_ref/runme.ml rename winx64/bin/{swig-3.0.12/Examples/ocaml/string_from_ptr => swigwin-4.0.0/Examples/ocaml/callback}/Makefile (56%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/callback/example.c rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/ocaml}/callback/example.h (95%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/ocaml}/callback/example.i (76%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/callback/runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/check.list (72%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/class/Makefile create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/class/example.c rename winx64/bin/{swig-3.0.12/Examples/php => swigwin-4.0.0/Examples/ocaml}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/perl5/multiple_inheritance => swigwin-4.0.0/Examples/ocaml/class}/example.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/class/runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/contract/Makefile (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/contract/example.i (100%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/contract/example_prog.ml => swigwin-4.0.0/Examples/ocaml/contract/runme.ml} (52%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/scoped_enum/Makefile (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/scoped_enum/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/scoped_enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/scoped_enum/foo.h (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/scoped_enum/runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/shapes/Makefile (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/shapes/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/shapes/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/shapes/example.i (100%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/shapes/example_prog.ml => swigwin-4.0.0/Examples/ocaml/shapes/runme.ml} (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/simple/Makefile (67%) rename winx64/bin/{swig-3.0.12/Examples/pike => swigwin-4.0.0/Examples/ocaml}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12/Examples/perl5 => swigwin-4.0.0/Examples/ocaml}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/simple/index.html (61%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/simple/example_prog.ml => swigwin-4.0.0/Examples/ocaml/simple/runme.ml} (95%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/strings_test => swigwin-4.0.0/Examples/ocaml/std_string}/Makefile (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_string/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_string/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_string/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_string/runme.ml (100%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/std_string => swigwin-4.0.0/Examples/ocaml/std_vector}/Makefile (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/std_vector/runme.ml (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/stl/Makefile (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/stl/example.h (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/stl/example.i (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/stl/runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/string_from_ptr/Makefile rename winx64/bin/{swig-3.0.12/Examples/ocaml/string_from_ptr/foolib.i => swigwin-4.0.0/Examples/ocaml/string_from_ptr/example.i} (94%) rename winx64/bin/{swig-3.0.12/Examples/ocaml/string_from_ptr/example_prog.ml => swigwin-4.0.0/Examples/ocaml/string_from_ptr/runme.ml} (88%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/ocaml/strings_test/Makefile rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/strings_test/example.h (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/strings_test/example.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ocaml/strings_test/runme.ml (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/callback/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/class/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/perl5 => swigwin-4.0.0/Examples/octave}/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/octave}/class/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/class/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/constants/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/contract/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/contract/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/contract/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/contract/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/enum/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/example.mk (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/extend/runme.m (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr2/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr2/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/funcptr2/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/functor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/functor/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/functor/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/module_load/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/module_load/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/module_load/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/module_load/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/module_load/runme.m (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/operator/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/operator/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/operator/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/pointer/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/reference/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/simple/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/template/runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/octave/variables/runme.m (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/callback/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/check.list (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/class/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php => swigwin-4.0.0/Examples/perl5}/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/php => swigwin-4.0.0/Examples/perl5}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/class/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/constants2/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/extend/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/funcptr/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/bar.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/base.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/example.dsw (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/foo.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/spam.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/import/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/inline/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/inline/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/inline/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/mzscheme => swigwin-4.0.0/Examples/perl5}/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multimap/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multimap/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multiple_inheritance/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multiple_inheritance/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/php5/class => swigwin-4.0.0/Examples/perl5/multiple_inheritance}/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/multiple_inheritance/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/pointer/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/reference/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/perl5}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/pike => swigwin-4.0.0/Examples/perl5}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/simple/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/value/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/variables/runme.pl (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/perl5/xmlstring/xmlstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/callback/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/class/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/php}/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/pike => swigwin-4.0.0/Examples/php}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/pike => swigwin-4.0.0/Examples/php}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/class/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/constants/runme.php (60%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/cpointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/cpointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/cpointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/cpointer/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/disown/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/disown/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/disown/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/disown/example.i (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/php}/disown/runme.php (90%) rename winx64/bin/{swig-3.0.12/Examples/php/overloading => swigwin-4.0.0/Examples/php/enum}/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/enum/runme.php (52%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/extend/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/funcptr/runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/php/proxy => swigwin-4.0.0/Examples/php/overloading}/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/overloading/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/overloading/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/overloading/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/overloading/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pointer/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pragmas/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/php}/pragmas/example.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/pragmas/include.php (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/php/pragmas/runme.php rename winx64/bin/{swig-3.0.12/Examples/php/reference => swigwin-4.0.0/Examples/php/proxy}/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/proxy/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/proxy/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/proxy/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/proxy/runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/php/sync => swigwin-4.0.0/Examples/php/reference}/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/reference/runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/simple/runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/php/enum => swigwin-4.0.0/Examples/php/sync}/Makefile (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/sync/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/sync/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/sync/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/sync/runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/php/variables => swigwin-4.0.0/Examples/php/value}/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/value/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/value/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/value/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/value/runme.php (66%) rename winx64/bin/{swig-3.0.12/Examples/php/value => swigwin-4.0.0/Examples/php/variables}/Makefile (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/php/variables/example.i (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/php}/variables/runme.php (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/pike}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/pike}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/class/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/constants/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/enum/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/pike}/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/enum/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/overload/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/overload/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/overload/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/overload/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/overload/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/r => swigwin-4.0.0/Examples/pike}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/pike}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/simple/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/pike/template/runme.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/callback/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/callback/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/callback/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/callback/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/callback/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/callback/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/check.list (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/r => swigwin-4.0.0/Examples/python}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/r => swigwin-4.0.0/Examples/python}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/class/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/constants/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/contract/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/contract/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/contract/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/contract/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/contract/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/docstrings/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/docstrings/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/docstrings/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/docstrings/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/docstrings/runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/Makefile create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/example.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/example.dsp create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/example.h create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/example.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/doxygen/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/pike => swigwin-4.0.0/Examples/python}/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/enum/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/enum/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exception/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/lua => swigwin-4.0.0/Examples/python}/exception/example.h (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exception/example.i (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exception/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exceptproxy/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby/exception_class => swigwin-4.0.0/Examples/python/exceptproxy}/example.h (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exceptproxy/example.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/exceptproxy/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/extend/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/extend/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/extend/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/python}/extend/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/extend/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/extend/runme.py (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr2/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr2/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/funcptr2/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/functor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/functor/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/functor/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/bar.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/base.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/example.dsw (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/foo.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/spam.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/Makefile (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py2/pkg2/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init1/py3/pkg2/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/from_init1/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py2/pkg2/pkg3/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init2/py3/pkg2/pkg3/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/from_init2/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/pkg4/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/pkg4/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/pkg4/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py2/pkg2/pkg3/pkg4/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/pkg4/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/pkg4/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/pkg4/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/from_init3/py3/pkg2/pkg3/pkg4/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/from_init3/runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/Makefile create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/README create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/pkg1/Makefile create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/pkg1/foo.hpp create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/pkg1/foo.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/module_is_init/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/namespace_pkg/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/namespace_pkg/README (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/namespace_pkg/nonpkg.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/namespace_pkg/normal.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/namespace_pkg/nstest.py (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/namespace_pkg/robin.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/namespace_pkg/runme.py (95%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/namespace_pkg/split.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/namespace_pkg/zipsplit.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py2/pkg2/pkg3/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport1/py3/pkg2/pkg3/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/relativeimport1/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/pkg4/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/pkg4/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/pkg4/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py2/pkg2/pkg3/pkg4/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/pkg4/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/pkg4/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/pkg4/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport2/py3/pkg2/pkg3/pkg4/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/relativeimport2/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/relativeimport3/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg1/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg1/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg1/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg2/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/pkg2/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames1/runme.py (57%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/pkg2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/pkg2/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/pkg2/foo.hpp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/pkg1/pkg2/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/same_modnames2/runme.py (55%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/Makefile (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/README (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla/pkg1/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla/pkg1/__init__.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla/pkg1/foo.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/split_modules/vanilla/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla_split/Makefile (85%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/split_modules/vanilla_split/foo.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_packages/split_modules/vanilla_split/pkg1/__init__.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/python/import_packages/split_modules/vanilla_split/runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/import_template/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/libffi/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/libffi/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/perl5 => swigwin-4.0.0/Examples/python}/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/multimap/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/multimap/example.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/multimap/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/operator/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/operator/example.i (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/operator/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/constructor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/constructor/Simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/constructor/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/func/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/func/Simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/func/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/harness.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy/Simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy_operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy_operator/Simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/hierarchy_operator/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/operator/Simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/performance/operator/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/pointer/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/reference/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/python}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/r => swigwin-4.0.0/Examples/python}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/simple/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/smartptr/smartptr.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_map/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_map/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_map/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_map/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_vector/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/std_vector/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/template/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/varargs/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/varargs/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/varargs/runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/python/variables/runme.py (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/r}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/r}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/class/runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/scilab => swigwin-4.0.0/Examples/r}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/r}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/r/simple/runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/check.list (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/scilab => swigwin-4.0.0/Examples/ruby}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/scilab => swigwin-4.0.0/Examples/ruby}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/class/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/constants/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/ruby}/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/enum/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/enum/runme.rb (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby/exception_class => swigwin-4.0.0/Examples/ruby/exceptproxy}/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/ruby}/exceptproxy/example.h (66%) rename winx64/bin/{swig-3.0.12/Examples/ruby/exception_class => swigwin-4.0.0/Examples/ruby/exceptproxy}/example.i (98%) rename winx64/bin/{swig-3.0.12/Examples/ruby/exception_class => swigwin-4.0.0/Examples/ruby/exceptproxy}/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/free_function/runme.rb (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/ruby}/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/ruby}/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr2/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr2/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/funcptr2/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/functor/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/functor/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/functor/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/hashargs/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/hashargs/example.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/hashargs/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/bar.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/base.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/example.dsw (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/foo.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/spam.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/import_template/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/mark_function/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/python => swigwin-4.0.0/Examples/ruby}/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/multimap/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/multimap/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/operator/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/operator/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/operator/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/overloading/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/overloading/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/overloading/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/overloading/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/overloading/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/pointer/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/reference/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/tcl => swigwin-4.0.0/Examples/ruby}/simple/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/scilab => swigwin-4.0.0/Examples/ruby}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/simple/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/std_vector/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/std_vector/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/template/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/value/runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/ruby/variables/runme.rb (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/s-exp/uffi.lisp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/check.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/tcl => swigwin-4.0.0/Examples/scilab}/class/example.h (100%) rename winx64/bin/{swig-3.0.12/Examples/tcl => swigwin-4.0.0/Examples/scilab}/class/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/class/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/constants/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/contract/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/contract/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/contract/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/contract/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/scilab}/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/enum/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/funcptr/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix2/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix2/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix2/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix2/main.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/matrix2/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/pointer/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/simple/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/scilab}/simple/example.c (76%) rename winx64/bin/{swig-3.0.12/Examples/tcl => swigwin-4.0.0/Examples/scilab}/simple/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/simple/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_list/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_list/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_list/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_list/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_list/runme.sci (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_vector/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/std_vector/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/struct/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/struct/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/struct/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/template/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/template/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/template/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/template/runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/scilab/variables/runme.sci (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/check.list (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/php5/proxy => swigwin-4.0.0/Examples/tcl/class}/example.h (51%) rename winx64/bin/{swig-3.0.12/Examples/php5/enum => swigwin-4.0.0/Examples/tcl/class}/example.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/class/runme2.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/constants/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/constants/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/constants/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/constants/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/contract/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/contract/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/contract/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/contract/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/contract/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/enum/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/enum/example.cxx (100%) rename winx64/bin/{swig-3.0.12/Examples/scilab => swigwin-4.0.0/Examples/tcl}/enum/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/enum/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/enum/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/enum/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/funcptr/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/bar.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/bar.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/bar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/base.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/base.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/example.dsw (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/foo.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/foo.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/foo.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/spam.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/spam.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/import/spam.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/multimap/Makefile (100%) rename winx64/bin/{swig-3.0.12/Examples/ruby => swigwin-4.0.0/Examples/tcl}/multimap/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/multimap/example.dsp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/multimap/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/multimap/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/operator/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/operator/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/operator/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/operator/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/pointer/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/pointer/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/pointer/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/pointer/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/pointer/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/example.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/reference/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/simple/Makefile (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/tcl/simple/example.c rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/simple/example.dsp (100%) rename winx64/bin/{swig-3.0.12/Examples/php5 => swigwin-4.0.0/Examples/tcl}/simple/example.i (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/simple/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/simple/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/std_vector/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/std_vector/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/std_vector/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/std_vector/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/value/runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/example.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/index.html (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/tcl/variables/runme.tcl (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/README (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_access.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_inherit_ok.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_signature.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_typedef2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/abstract_virtual.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/access_change.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/add_link.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/aggregate.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/allegrocl/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/allowexcept.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/allprotected.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/allprotected_not.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/anonymous_bitfield.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/apply_signed_char.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/apply_strings.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/argcargvtest.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/argout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/array_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/array_typedef_memberin.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrayref.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrays_dimensionless.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrays_global.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrays_global_twodim.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/arrays_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/autodoc.i (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/bloody_hell.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/bom_utf8.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/bools.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/c_delete.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/c_delete_function.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/callback.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cast_operator.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/casts.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/catches.i (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cffi/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/char_binary.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/char_constant.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/char_strings.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chartest.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/casts_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/char_constant_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/chicken_ext_test_external.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/chicken_ext_test_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/class_ignore_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/clientdata_prop_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/constover_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/contract_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/cpp_basic_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/cpp_enum_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/cpp_namespace_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/dynamic_cast_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/global_vars_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/global_vars_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/import_nomodule_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/imports_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/inherit_missing_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/li_std_string_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/li_std_string_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/li_typemaps_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/li_typemaps_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/list_vector_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/member_pointer_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/multiple_inheritance_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/multivalue_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/name_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/newobject1_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/newobject2_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/newobject2_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_complicated_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_copy_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_copy_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_extend_c_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_extend_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_extend_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_simple_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_simple_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_subtype_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/overload_subtype_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/pointer_in_out_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/reference_global_vars_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/testsuite.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/throw_exception_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/typedef_inherit_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/typename_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/unions_runme.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken/unions_runme_proxy.ss (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/chicken_ext_test.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/class_forward.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/class_ignore.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/class_scope_namespace.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/class_scope_weird.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clientdata_prop.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clientdata_prop_a.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clientdata_prop_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clientdata_prop_b.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clientdata_prop_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/clisp/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/common.mk (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/compactdefaultargs.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/complextest.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/const_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/const_const_2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constant_directive.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constant_expr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constant_pointers.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constants.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constover.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_copy.i (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_explicit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_ignore.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/constructor_value.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/contract.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/conversion.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/conversion_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/conversion_ns_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/conversion_operators.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cplusplus_throw.i (57%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_alias_nested_template_scoping.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_alignment.i (73%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_alternate_function_syntax.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_constexpr.i (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_decltype.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_default_delete.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_delegating_constructors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_director_enums.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_directors.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_explicit_conversion_operators.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_final_directors.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_final_override.i (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_function_objects.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_hash_tables.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_inheriting_constructors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_initializer_list.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_initializer_list_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_lambda_functions.i (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_noexcept.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_null_pointer_constant.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_raw_string_literals.i (60%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_ref_qualifiers.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_ref_qualifiers_rvalue_unignore.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_ref_qualifiers_typemaps.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_reference_wrapper.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_result_of.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_rvalue_reference.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_rvalue_reference2.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_rvalue_reference3.i (77%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_shared_ptr_const.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_shared_ptr_nullptr_in_containers.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_shared_ptr_overload.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_shared_ptr_upcast.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_sizeof_object.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_static_assert.i rename winx64/bin/{swig-3.0.12/Examples/test-suite/cpp11_li_std_array.i => swigwin-4.0.0/Examples/test-suite/cpp11_std_array.i} (97%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_std_unordered_map.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_std_unordered_multimap.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_std_unordered_multiset.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp11_std_unordered_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_strongly_typed_enumerations.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_strongly_typed_enumerations_simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_template_double_brackets.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_template_explicit.i (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_template_typedefs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_thread_local.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_type_aliasing.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_type_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_uniform_initialization.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_unrestricted_unions.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_userdefined_literals.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp11_variadic_templates.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp14_binary_integer_literals.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp17_hex_floating_literals.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp17_nested_namespaces.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp17_nspace_nested_namespaces.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/cpp17_u8_char_literals.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_basic.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_namespace.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_nodefault.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_static.i (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/cpp_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/Makefile.in (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/aggregate_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/allprotected_runme.cs (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/apply_strings_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/bools_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/catches_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/char_strings_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/complextest_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/constover_runme.cs (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/csharp/cpp11_li_std_array_runme.cs => swigwin-4.0.0/Examples/test-suite/csharp/cpp11_std_array_runme.cs} (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/cpp11_strongly_typed_enumerations_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/cpp17_nested_namespaces_runme.cs create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/cpp17_nspace_nested_namespaces_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/csharp_attributes_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/csharp_exceptions_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/csharp_lib_arrays_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/csharp_prepost_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/csharp_typemaps_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/default_args_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/default_constructor_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_alternating_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/director_basic_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_classes_runme.cs (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_classic_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_ignore_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_nspace_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_pass_by_value_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_primitives_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_protected_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_smartptr_runme.cs (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_string_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/director_void_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/enum_forward_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/enum_thorough_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/enum_thorough_simple_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/enum_thorough_typesafe_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/exception_order_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/friends_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/imports_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/inherit_target_language_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/intermediary_classname_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_attribute_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_boost_shared_ptr_bits_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/li_boost_shared_ptr_director_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_boost_shared_ptr_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_auto_ptr_runme.cs (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_combinations_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_except_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/li_std_list_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_map_runme.cs (93%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/li_std_set_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_string_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_vector_enum_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_vector_runme.cs (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_std_wstring_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_swigtype_inout_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/li_typemaps_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/long_long_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/member_pointer_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/multiple_inheritance_abstract_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/multiple_inheritance_interfaces_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/multiple_inheritance_nspace_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/multiple_inheritance_shared_ptr_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nested_class_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nested_directors_runme.cs (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/csharp/nested_in_template_runme.cs rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nested_structs_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nested_workaround_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nspace_extend_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/nspace_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/operator_overload_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/overload_complicated_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/overload_template_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/pointer_reference_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/preproc_constants_c_runme.cs (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/preproc_constants_runme.cs (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/proxycode_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/rename_pcre_encoder_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/rename_pcre_enum_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/rename_simple_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/sizet_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/sneaky1_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/special_variable_attributes_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/special_variable_macros_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/template_nested_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/threads_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/throw_exception_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/typemap_namespace_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/typemap_out_optimal_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/varargs_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp/virtual_poly_runme.cs (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_attributes.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_exceptions.i (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_features.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_lib_arrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_namespace_system_collision.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_prepost.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_swig2_compatibility.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/csharp_typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/curiously_recurring_template_pattern.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/Makefile.in (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/aggregate_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/aggregate_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/allprotected_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/allprotected_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/apply_strings_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/apply_strings_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/bools_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/bools_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/catches_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/catches_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/char_strings_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/char_strings_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/constover_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/constover_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/d_nativepointers_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/d_nativepointers_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/default_args_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/default_args_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/default_constructor_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/default_constructor_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_alternating_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_alternating_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_basic_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_basic_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_classes_runme.1.d (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_classes_runme.2.d (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_classic_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_classic_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_ignore_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_ignore_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_primitives_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_primitives_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_protected_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_protected_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_string_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/director_string_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/enum_thorough_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/enum_thorough_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/inherit_target_language_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/inherit_target_language_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_attribute_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_attribute_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_boost_shared_ptr_bits_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_boost_shared_ptr_bits_runme.2.d (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/d/li_boost_shared_ptr_director_runme.2.d rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_boost_shared_ptr_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_boost_shared_ptr_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_except_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_except_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_string_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_string_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_vector_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_std_vector_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_typemaps_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/li_typemaps_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/long_long_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/long_long_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/member_pointer_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/member_pointer_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/nspace_extend_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/nspace_extend_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/nspace_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/nspace_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/operator_overload_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/operator_overload_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/overload_complicated_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/overload_complicated_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/overload_template_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/overload_template_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/pointer_reference_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/pointer_reference_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/preproc_constants_c_runme.1.d (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/preproc_constants_c_runme.2.d (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/preproc_constants_runme.1.d (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/preproc_constants_runme.2.d (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/proxycode_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/sizet_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/sizet_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/sneaky1_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/sneaky1_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/special_variable_macros_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/special_variable_macros_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/threads_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/threads_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/throw_exception_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/throw_exception_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/typemap_namespace_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/typemap_namespace_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/typemap_out_optimal_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/typemap_out_optimal_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/varargs_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/varargs_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/virtual_poly_runme.1.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d/virtual_poly_runme.2.d (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/d_nativepointers.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/default_arg_expressions.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/default_arg_values.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/default_args.i (82%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/default_args_c.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/default_constructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/defvalue_constructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/derived_byvalue.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/derived_nested.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/destructor_methodmodifiers.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/destructor_reprotected.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_abstract.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_alternating.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_basic.i (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_binary_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_classes.i (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_classic.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_constructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_default.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_detect.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_exception.i (70%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/director_exception_catches.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/director_exception_nothrow.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_extend.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_finalizer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_frob.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_ignore.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_keywords.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_namespace_clash.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_nested.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_nested_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_nestedmodule.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_nspace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_nspace_director_name_collision.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_overload.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_overload2.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/director_ownership.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_pass_by_value.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_primitives.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_profile.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_property.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_protected.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_protected_overloaded.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_redefined.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_ref.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_smartptr.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_string.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/director_thread.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_unroll.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_using.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_void.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_wombat.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/director_wstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/disown.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_alias.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_basic_notranslate.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_basic_translate.h create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_basic_translate.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_ignore.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_misc_constructs.h create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_misc_constructs.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_nested_class.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing_enums.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing_enums_proper.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing_enums_simple.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing_enums_typesafe.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_parsing_enums_typeunsafe.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_translate.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_translate_all_tags.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/doxygen_translate_links.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/dynamic_cast.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/empty.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/empty_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_forward.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_ignore.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_macro.i (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_missing.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_plus.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_scope_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_thorough.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_thorough_proper.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_thorough_simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_thorough_typesafe.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_thorough_typeunsafe.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enum_var.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/enums.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/equality.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/Makefile.in (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_bad_name.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_bad_name.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_bad_native.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_bad_native.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_class.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_deprecated.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_deprecated.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_empty_char.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_empty_char.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_enum_badvalue.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_enum_badvalue.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_rblock.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_rblock.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_rbrace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_rbrace.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_unsigned.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_extra_unsigned.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_insert_missing.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_insert_missing.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_long_short.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_long_short.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_missing_rbrace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_missing_rbrace.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_missing_semi.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_missing_semi.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_redefine.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_redefine.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_varargs_neg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/c_varargs_neg.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_bad_extern.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_bad_extern.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_bad_global_memberptr.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_bad_global_memberptr.stderr create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_class_definition.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_class_definition.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_destructors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_destructors.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_redefine.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_redefine.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_undefined.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extend_undefined.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extra_brackets.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extra_brackets.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extra_brackets2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_extra_brackets2.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_final_destructor.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inherit.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inherit_ignored.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inherit_ignored.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inline_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_inline_namespace.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_exponents1.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_exponents1.stderr create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_exponents2.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_exponents2.stderr create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_qualifiers.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_qualifiers.stderr create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_template.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_invalid_template.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_macro_locator.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_macro_locator.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_missing_rparenthesis.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_missing_rparenthesis.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_missing_rtemplate.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_missing_rtemplate.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_alias.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_alias.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_aliasnot.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_aliasnot.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_aliasundef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namespace_aliasundef.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_namespace_template_bad.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_namespace_template_bad.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namewarn.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_namewarn.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_nested_namespace_alias.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_nested_namespace_alias.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_nested_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_nested_template.stderr (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_no_access.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_no_access.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_no_return_type.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_no_return_type.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_nobase.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_nobase.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_overload_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_overload_const.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_private_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_private_inherit.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_raw_string_termination.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_raw_string_termination.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_recursive_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_recursive_typedef.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_refqualifier.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_refqualifier.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_shared_ptr.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_template_duplicate_names.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_template_duplicate_names.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_friend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_friend.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_nargs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_nargs.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_not.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_not.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_partial.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_partial.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_repeat.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_repeat.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_template_scope.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/cpp_template_scope.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_undef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_template_undef.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_using_not.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_using_not.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_using_undef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/cpp_using_undef.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/doxygen_unknown_command.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/doxygen_unknown_command.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/nomodule.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/nomodule.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_badeval.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_badeval.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_constant.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_constant.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_defined.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_defined.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_deprecated.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_deprecated.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_expressions_bad.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_expressions_bad.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_illegal_argument.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_illegal_argument.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_invalid_exponents.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_invalid_exponents.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_badchar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_badchar.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_defined_unterminated.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_defined_unterminated.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_expansion.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_expansion.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_expansion_multiline.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_expansion_multiline.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_inline_unterminated.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_inline_unterminated.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_missing_expression.i (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_missing_expression.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_nargs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_nargs.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_redef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_redef.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_rparen.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_rparen.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_unexpected_tokens.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_unexpected_tokens.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_unterminated.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_macro_unterminated.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_misplaced_elif.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_misplaced_elif.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_misplaced_else.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_misplaced_else.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_enddef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_enddef.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_endif.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_endif.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_endoffile.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_endoffile.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_file.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_file.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_rblock.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_missing_rblock.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_pragma.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_pragma.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unknowndirective.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unknowndirective.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unknowndirective2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unknowndirective2.stderr (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_unknowndirective3.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/errors/pp_unknowndirective3.stderr rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_char.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_char.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_comment.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_comment.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterm_string.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterminated_block.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_unterminated_block.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_variable_args.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/pp_variable_args.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_apply_nargs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_apply_nargs.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_extend.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_fragment_missing.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_fragment_missing.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_identifier.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_identifier.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_insert_bad.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_insert_bad.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad2.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad3.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_pythoncode_bad3.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_copy.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_copy.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_old.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_old.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_warn.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/errors/swig_typemap_warn.stderr (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/evil_diamond.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/evil_diamond_ns.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/evil_diamond_prop.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/exception_classname.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/exception_order.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/exception_partial_info.i (70%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/expressions.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_constructor_destructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_default.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_placement.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_special_variables.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_template_method.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_template_ns.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_typedef_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extend_variable.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extern_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extern_declaration.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/extern_namespace.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/extern_throws.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/features.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/file_test.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/fragments.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/friends.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/friends_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/funcptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/funcptr_cpp.i (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/function_typedef.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/functors.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/fvirtual.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/global_functions.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/global_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/global_ns_arg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/global_scope_types.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/global_vars.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/Makefile.in (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/abstract_access_runme.go (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/abstract_typedef2_runme.go (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/abstract_typedef_runme.go (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/abstract_virtual_runme.go (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/argout_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/array_member_runme.go (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/arrays_global_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/char_binary_runme.go (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/class_ignore_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/class_scope_weird_runme.go (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/compactdefaultargs_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/constover_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/constructor_copy_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/contract_runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/cpp11_strongly_typed_enumerations_runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/cpp_enum_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/cpp_namespace_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/cpp_static_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/default_args_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/default_constructor_runme.go (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_alternating_runme.go (73%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_basic_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_classic_runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_default_runme.go (71%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_detect_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_enum_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_exception_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_extend_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_finalizer_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_frob_runme.go (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_nested_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_profile_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_protected_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_string_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/director_unroll_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/disown_runme.go (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/dynamic_cast_runme.go (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/empty_c_runme.go (59%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/empty_runme.go (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/enum_template_runme.go (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/enums_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/exception_order_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/extend_placement_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/extend_template_ns_runme.go (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/extend_template_runme.go (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/extend_variable_runme.go (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/extern_c_runme.go (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/friends_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/fvirtual_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/global_ns_arg_runme.go (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/go_director_inout_runme.go (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/go_inout_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/go_subdir_import_runme.go (55%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/grouping_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/import_nomodule_runme.go (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/imports_runme.go (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/inctest_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/inherit_member_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/inherit_missing_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/input_runme.go (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/keyword_rename_c_runme.go (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/keyword_rename_runme.go (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_attribute_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_carrays_cpp_runme.go (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_carrays_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_cdata_cpp_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_cdata_runme.go (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_cmalloc_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_cpointer_cpp_runme.go (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_cpointer_runme.go (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_std_map_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/li_std_vector_ptr_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/member_pointer_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/memberin_extend_c_runme.go (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/minherit_runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/mod_runme.go (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/multi_import_runme.go (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/namespace_class_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/namespace_typemap_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/namespace_virtual_method_runme.go (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/naturalvar_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/nested_workaround_runme.go (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_complicated_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_copy_runme.go (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_extend2_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_extend_c_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_extend_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_polymorphic_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_rename_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_simple_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_subtype_runme.go (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_template_fast_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/overload_template_runme.go (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/preproc_runme.go (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/primitive_ref_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/profiletest_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/refcount_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/reference_global_vars_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/rename_scope_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/rename_simple_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/rename_strip_encoder_runme.go (73%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/ret_by_value_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/return_const_value_runme.go (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_extend_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_member_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_multi_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_multi_typedef_runme.go (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_overload_runme.go (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_rename_runme.go (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_simple_runme.go (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_templatevariables_runme.go (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/smart_pointer_typedef_runme.go (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/sneaky1_runme.go (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/special_variable_macros_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/static_const_member_2_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/struct_initialization_runme.go (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/struct_rename_runme.go (70%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/struct_value_runme.go (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_default_arg_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_extend1_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_extend2_runme.go (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_inherit_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_ns4_runme.go (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_ns_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_opaque_runme.go (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_ref_type_runme.go (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_rename_runme.go (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_static_runme.go (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_tbase_template_runme.go (71%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_type_namespace_runme.go (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_typedef_cplx3_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/template_typedef_cplx4_runme.go (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/threads_exception_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typedef_class_runme.go (81%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/go/typedef_funcptr_runme.go rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typedef_inherit_runme.go (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typedef_scope_runme.go (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typemap_namespace_runme.go (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typemap_ns_using_runme.go (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typemap_out_optimal_runme.go (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/typename_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/unions_runme.go (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using1_runme.go (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using2_runme.go (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using_composition_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using_extend_runme.go (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using_inherit_runme.go (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using_private_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/using_protected_runme.go (78%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/go/varargs_overload_runme.go rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/varargs_runme.go (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/virtual_derivation_runme.go (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/virtual_poly_runme.go (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/voidtest_runme.go (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go/wrapmacro_runme.go (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go_director_inout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go_inout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go_subdir_import.list (58%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go_subdir_import_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/go_subdir_import_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/grouping.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/argout_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/casts_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/char_constant_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/class_ignore_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/constover_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/contract_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/cpp_enum_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/cpp_namespace_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/dynamic_cast_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/guile_ext_test_external.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/guile_ext_test_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/import_nomodule_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/imports_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/inherit_missing_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/integers_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/li_std_string_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/li_typemaps_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/list_vector_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/multivalue_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/name_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_complicated_runme.scm (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_copy_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_extend_c_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_extend_runme.scm (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/guile/overload_null_runme.scm rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_simple_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/overload_subtype_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/pointer_in_out_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/reference_global_vars_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/testsuite.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/throw_exception_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/typedef_inherit_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/typename_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile/unions_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/guile_ext_test.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/iadd.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ignore_parameter.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ignore_template_constructor.i (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/immutable_values.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/implicittest.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/import_fragments.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/import_fragments_a.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/import_fragments_b.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/import_nomodule.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/import_nomodule.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/import_stl.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/import_stl_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/import_stl_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/imports.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/imports_a.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/imports_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/imports_b.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/imports_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inctest.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inctest.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/infinity.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit_missing.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit_same_name.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit_target_language.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inherit_void_arg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inline_initializer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/inplaceadd.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/input.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/insert_directive.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/insert_directive.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/integers.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/intermediary_classname.i (86%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/CommentParser.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/Makefile.in (73%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/aggregate_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/allprotected_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/apply_signed_char_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/apply_strings_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/array_member_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/arrays_global_twodim_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/char_binary_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/char_strings_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/class_scope_namespace_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/constant_directive_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_alias_nested_template_scoping_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_constexpr_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_lambda_functions_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_raw_string_literals_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_ref_qualifiers_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_ref_qualifiers_rvalue_unignore_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_ref_qualifiers_typemaps_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_result_of_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_shared_ptr_overload_runme.java rename winx64/bin/{swig-3.0.12/Examples/test-suite/java/cpp11_li_std_array_runme.java => swigwin-4.0.0/Examples/test-suite/java/cpp11_std_array_runme.java} (75%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_std_unordered_map_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_std_unordered_set_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_strongly_typed_enumerations_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_strongly_typed_enumerations_simple_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp11_template_typedefs_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_thread_local_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp11_type_aliasing_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp17_nested_namespaces_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/cpp17_nspace_nested_namespaces_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/cpp_typedef_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/curiously_recurring_template_pattern_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/default_args_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/default_constructor_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/derived_nested_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_abstract_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_basic_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_binary_string_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_classes_runme.java (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_classic_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_default_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_enum_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/director_exception_catches_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_exception_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_frob_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_ignore_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_nested_class_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_nspace_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/director_ownership_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_pass_by_value_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_primitives_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_protected_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_ref_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_smartptr_runme.java (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_string_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_thread_runme.java (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_unroll_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/director_wombat_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_alias_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_basic_notranslate_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_basic_translate_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_ignore_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_misc_constructs_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_nested_class_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_parsing_enums_proper_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_parsing_enums_simple_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_parsing_enums_typesafe_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_parsing_enums_typeunsafe_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_parsing_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_translate_all_tags_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_translate_links_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/doxygen_translate_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/dynamic_cast_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_forward_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_macro_runme.java (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_thorough_proper_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_thorough_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_thorough_simple_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/enum_thorough_typeunsafe_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extend_constructor_destructor_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extend_default_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extend_special_variables_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extend_template_method_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extend_typedef_class_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/extern_declaration_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/friends_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/friends_template_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/global_namespace_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/ignore_parameter_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/imports_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/inctest_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/inherit_target_language_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/intermediary_classname_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_constants_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_assumeoverride_runme.java (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_exception_feature_nspace_runme.java (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_exception_feature_runme.java (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_ptrclass_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/java_director_typemaps_ptr_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_director_typemaps_runme.java (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_enums_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_jnitypes_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_lib_arrays_dimensionless_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_lib_arrays_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_lib_various_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_pgcpp_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_pragmas_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_prepost_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_throws_runme.java (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_typemaps_proxy_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/java_typemaps_typewrapper_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/kwargs_feature_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_boost_intrusive_ptr_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_boost_shared_ptr_attribute_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_boost_shared_ptr_bits_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/li_boost_shared_ptr_director_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_boost_shared_ptr_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_boost_shared_ptr_template_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_carrays_cpp_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_carrays_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_cdata_cpp_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_cdata_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_std_auto_ptr_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_std_except_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/li_std_list_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/li_std_map_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/li_std_set_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_std_string_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_std_vector_enum_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/li_std_vector_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/li_typemaps_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/long_long_runme.java (94%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/member_pointer_const_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/member_pointer_runme.java (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/memberin_extend_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/minherit2_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/multiple_inheritance_abstract_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/multiple_inheritance_interfaces_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/multiple_inheritance_nspace_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/multiple_inheritance_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/multiple_inheritance_shared_ptr_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/namespace_chase_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/namespace_forward_declaration_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/namespace_template_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/native_directive_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/naturalvar_more_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/naturalvar_onoff_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nested_class_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nested_extend_c_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nested_structs_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nested_template_base_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nested_workaround_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nspace_extend_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/nspace_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/operator_overload_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/overload_complicated_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/overload_template_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/pointer_reference_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/preproc_line_file_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/primitive_ref_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/profiletest_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/proxycode_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename1_runme.java (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename2_runme.java (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename3_runme.java (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename4_runme.java (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename_pcre_encoder_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename_pcre_enum_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rename_wildcard_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/ret_by_value_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/rname_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/sizet_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/smart_pointer_const_overload_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/smart_pointer_ignore_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/special_variable_macros_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/special_variables_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/template_class_reuse_name_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_classes_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_default_arg_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_default_cache_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_default_class_parms_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_default_class_parms_typedef_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_methods_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_namespace_forward_declaration_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_nested_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_nested_typemaps_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/template_parameters_global_scope_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_partial_specialization_runme.java (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_partial_specialization_typedef_runme.java (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_template_parameters_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_templated_constructors_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_typedef_inherit_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_typedef_typedef_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/template_using_directive_and_declaration_forward_runme.java (84%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/template_using_directive_typedef_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/typedef_classforward_same_name_runme.java create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/typedef_funcptr_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/typemap_arrays_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/typemap_namespace_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/typemap_out_optimal_runme.java (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java/typemap_template_parms_runme.java rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/unions_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/using_directive_and_declaration_forward_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/using_directive_and_declaration_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/using_pointers_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/varargs_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/virtual_poly_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java/wallkw_runme.java (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_constants.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director_assumeoverride.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director_exception_feature.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director_exception_feature_nspace.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director_ptrclass.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_director_typemaps.i (95%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/java_director_typemaps_ptr.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_enums.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_jnitypes.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_lib_arrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_lib_arrays_dimensionless.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_lib_various.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_nspacewithoutpackage.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_pgcpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_pragmas.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_prepost.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_throws.i (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_typemaps_proxy.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/java_typemaps_typewrapper.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/Makefile.in (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/abstract_access_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/abstract_inherit_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/abstract_typedef2_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/abstract_typedef_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/abstract_virtual_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/array_member_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/arrays_global_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/callback_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/char_binary_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/char_strings_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/class_ignore_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/class_scope_weird_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/complextest_runme.js (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/constover_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/constructor_copy_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/cpp11_strongly_typed_enumerations_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/cpp_enum_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/cpp_namespace_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/cpp_static_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/director_alternating_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/disown_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/dynamic_cast_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/empty_c_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/empty_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/enum_template_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/infinity_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/namespace_virtual_method_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/node_template/binding.gyp.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/node_template/index.js.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/nspace_extend_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/nspace_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/null_pointer_runme.js (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/overload_copy_runme.js (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/javascript/overload_null_runme.js rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/preproc_include_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/preproc_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename1_runme.js (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename2_runme.js (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename3_runme.js (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename4_runme.js (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename_scope_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/rename_simple_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/ret_by_value_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/string_simple_runme.js (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/struct_value_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/swig_exception_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/template_static_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typedef_class_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typedef_inherit_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typedef_scope_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typemap_arrays_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typemap_delete_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typemap_namespace_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/typemap_ns_using_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/using1_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/using2_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/javascript/varargs_runme.js (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/keyword_rename.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/keyword_rename_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/kind.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/kwargs_feature.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/langobj.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lextype.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_attribute_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_boost_intrusive_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_boost_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_boost_shared_ptr_attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_boost_shared_ptr_bits.i (98%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/li_boost_shared_ptr_director.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_boost_shared_ptr_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_carrays_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cdata_carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cdata_carrays_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cdata_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_constraints.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cpointer_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_cwstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_implicit.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_math.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_reference.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_auto_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_carray.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_combinations.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_container_typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_containers_int.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_deque.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/li_std_except.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_except_as_class.i (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_functors.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/li_std_list.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_map.i (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_map_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_multimap.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_pair.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_pair_extra.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_pair_lang_object.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_pair_using.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_queue.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/li_std_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_stack.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_stream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_string.i (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_string_extra.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vector.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/li_std_vector_back_reference.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vector_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vector_extra.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vector_member_var.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vector_ptr.i (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_vectora.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_wstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_std_wstring.i (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_stdint.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_swigtype_inout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_typemaps_apply.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/li_windows.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/list_vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/long_long.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/long_long_apply.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/Makefile.in (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/abstract_access_runme.lua (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/array_member_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/arrays_global_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/char_strings_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/chartest_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp11_strongly_typed_enumerations_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_basic_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_enum_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_namespace_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_nodefault_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_static_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/cpp_typedef_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/disown_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/dynamic_cast_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/enum_plus_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/enum_rename_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/enum_scope_template_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/enum_template_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/enums_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/equality_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/exception_order_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/exception_partial_info_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_constructor_destructor_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_placement_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_template_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_typedef_class_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/extend_variable_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/friends_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/funcptr_cpp_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/fvirtual_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/global_namespace_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/global_vars_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/grouping_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/iadd_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/import.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/import_nomodule_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/imports_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/inherit_missing_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/keyword_rename_c_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/keyword_rename_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_carrays_cpp_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_carrays_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_factory_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_std_except_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_std_pair_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_std_string_runme.lua (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_std_vector_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/li_typemaps_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/lua_inherit_getitem_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/lua_no_module_global_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/member_pointer_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/multi_import_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/nested_workaround_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/newobject1_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/newobject2_runme.lua (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/nspace_extend_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/nspace_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/operator_overload_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/overload_complicated_runme.lua (84%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/lua/overload_null_runme.lua rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/overload_simple_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/overload_template_fast_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/overload_template_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/pointer_reference_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/primitive_ref_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/refcount_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/rename_simple_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/ret_by_value_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/sizet_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_extend_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_inherit_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_multi_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_not_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_overload_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_rename_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_simple_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/smart_pointer_templatemethods_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/static_const_member_2_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/static_const_member_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_construct_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_default_arg_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_extend1_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_extend2_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_inherit_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/template_static_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/valuewrapper_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/varargs_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua/voidtest_runme.lua (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua_inherit_getitem.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/lua_no_module_global.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/member_funcptr_galore.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/member_pointer.i (89%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/member_pointer_const.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/member_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/memberin1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/memberin_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/memberin_extend_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/minherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/minherit2.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mixed_types.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mod.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mod.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mod_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mod_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multi_import.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multi_import.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multi_import_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multi_import_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multi_import_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multiple_inheritance.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multiple_inheritance_abstract.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multiple_inheritance_interfaces.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multiple_inheritance_nspace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multiple_inheritance_shared_ptr.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/multivalue.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/Makefile.in (50%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/casts_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/char_constant_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/imports_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/integers_runme.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/name_runme.scm (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/mzscheme/unions_runme.scm (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/name.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/name_cxx.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/name_warnings.i (94%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/namespace_chase.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_forward_declaration.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_nested.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_spaces.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_template.i (54%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_typedef_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_typemap.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_union.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/namespace_virtual_method.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/native_directive.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/naturalvar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/naturalvar_more.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/naturalvar_onoff.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested.i (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_class.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_comment.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_directors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_extend_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_ignore.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/nested_in_template.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_private.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_structs.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_template_base.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nested_workaround.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/newobject1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/newobject2.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/newobject3.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nspace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/nspace_extend.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/null_pointer.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/Makefile.in rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/README (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/abstract_access_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/abstract_typedef2_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/abstract_typedef_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/abstract_virtual_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/aggregate_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/allowexcept_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/cast_operator_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/catches_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/char_binary_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/char_constant_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/chartest_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/class_ignore_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/class_scope_weird_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/constover_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/constructor_rename_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/conversion_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/cpp_nodefault_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/cpp_static_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/default_arg_values_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/default_args_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_default_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_exception_catches_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_exception_nothrow_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_exception_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_frob_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_ignore_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_pass_by_value_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/director_unroll_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/dynamic_cast_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/exception_classname_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/exception_order_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_constructor_destructor_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_placement_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_special_variables_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_template_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extend_typedef_class_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/extern_c_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/funcptr_cpp_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/fvirtual_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/global_ns_arg_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/global_vars_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/ignore_parameter_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/imports_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/inctest_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/inherit_missing_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/li_cpointer_cpp_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/li_std_except_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/li_std_vector_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/makedebugtop (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/memberin_extend_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/minherit_runme.ml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/name_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/namespace_virtual_method_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/newobject1_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/newobject2_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_bool_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/overload_copy_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_extend_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_method_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_numeric_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_polymorphic_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_rename_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_subtype_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/overload_template_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/primitive_ref_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/reference_global_vars_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/rename_predicates_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/sizet_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/sneaky1_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/special_variable_macros_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/special_variables_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/static_const_member_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/string_simple_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/struct_value_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/swig_exception_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_default_arg_overloaded_extend_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_default_arg_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_extend1_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_extend2_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_inherit_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_opaque_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_ref_type_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_rename_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/template_tbase_template_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/throw_exception_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typedef_class_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typedef_classforward_same_name_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typedef_inherit_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typedef_mptr_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typedef_reference_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typemap_arrays_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/typemap_delete_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/typename_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/types_directive_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/unions_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/using1_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/using_extend_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/using_inherit_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/using_pointers_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/using_private_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/using_protected_runme.ml (80%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/valuewrapper_runme.ml create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/varargs_overload_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/varargs_runme.ml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ocaml/voidtest_runme.ml (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ocaml/wrapmacro_runme.ml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/Makefile.in (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/abstract_access_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/abstract_typedef2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/abstract_typedef_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/abstract_virtual_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/argcargvtest_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/array_member_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/arrays_global_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/callback_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/class_ignore_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/class_scope_weird_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/compactdefaultargs_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/complextest_runme.m (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/constover_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/constructor_copy_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/contract_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/cpp11_strongly_typed_enumerations_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/cpp_enum_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/cpp_namespace_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/default_args_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/default_constructor_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_abstract_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_basic_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_classic_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_default_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_detect_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_enum_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_extend_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_frob_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_nested_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_stl_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_string_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_unroll_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/director_wstring_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/dynamic_cast_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/empty_c_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/empty_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/enum_template_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/enums_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/exception_order_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/extend_placement_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/extend_template_ns_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/extend_template_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/extend_variable_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/file_test_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/friends_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/fvirtual_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/global_ns_arg_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/grouping_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/iadd_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/import_nomodule_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/imports_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/inctest_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/inherit_missing_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/inout_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/inplaceadd_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/input_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_attribute_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_boost_shared_ptr_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_carrays_cpp_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_carrays_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_cmalloc_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_cpointer_cpp_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_cpointer_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_cstring_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_cwstring_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_factory_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_implicit_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_carray_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_pair_extra_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_set_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_stream_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_string_extra_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_vector_enum_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_vector_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_wstream_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/li_std_wstring_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/member_pointer_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/minherit_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/mod_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/multi_import_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/namespace_class_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/namespace_typemap_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/namespace_virtual_method_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/naturalvar_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/nested_structs_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/nondynamic_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/null_pointer_runme.m (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/octave_cell_deref_runme.m (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/octave_dim_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/octave_empty.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_complicated_runme.m (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_copy_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_extend2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_extend_c_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_extend_runme.m (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/octave/overload_null_runme.m rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_rename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_simple_cast_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_simple_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_subtype_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_template_fast_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/overload_template_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/preproc_constants_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/preproc_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/primitive_ref_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/profiletest_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/refcount_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/reference_global_vars_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/rename_scope_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/ret_by_value_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/return_const_value_runme.m (58%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/samename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_extend_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_member_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_multi_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_multi_typedef_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_not_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_overload_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_rename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_simple_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_templatevariables_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/smart_pointer_typedef_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/sneaky1_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/static_const_member_2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/std_containers_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/struct_rename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/struct_value_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/swigobject_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_construct_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_default_arg_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_extend1_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_extend2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_inherit_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_matrix_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_ns4_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_ns_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_opaque_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_ref_type_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_rename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_static_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_tbase_template_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_type_namespace_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_cplx2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_cplx3_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_cplx4_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_cplx_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_import_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/template_typedef_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typedef_class_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typedef_inherit_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typedef_scope_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typemap_namespace_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typemap_ns_using_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/typename_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/types_directive_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/unions_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using1_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using2_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using_composition_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using_extend_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using_inherit_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using_private_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/using_protected_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/varargs_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/virtual_derivation_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/virtual_poly_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/voidtest_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave/wrapmacro_runme.m (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave_cell_deref.i (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/octave_dim.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/operator_overload.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/operator_overload_break.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/operator_pointer_ref.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/operbool.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ordering.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_arrays.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_bool.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_complicated.i (59%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_copy.i (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_extend2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_extend_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_method.i (82%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/overload_null.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_numeric.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_polymorphic.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_return_type.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_simple.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_subtype.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/overload_template_fast.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/packageoption.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/packageoption.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/packageoption_a.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/packageoption_b.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/packageoption_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/README (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/aggregate_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/apply_signed_char_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/apply_strings_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/array_member_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/char_binary_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/char_strings_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/class_ignore_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/contract_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/cpp11_strongly_typed_enumerations_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/default_args_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/default_constructor_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_abstract_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_alternating_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_basic_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_classes_runme.pl (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_classic_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_constructor_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_default_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_detect_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_enum_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_exception_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_extend_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_finalizer_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_frob_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_ignore_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_nested_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_primitives_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_protected_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_string_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_unroll_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/director_wombat_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/disown_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/dynamic_cast_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/enum_template_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/enum_thorough_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/exception_order_runme.pl (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/perl5/global_vars_runme.pl rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/grouping_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/ignore_parameter_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/import_nomodule_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/imports_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/inctest_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/inherit_missing_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/inherit_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_carrays_cpp_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_carrays_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_cdata_carrays_cpp_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_cdata_carrays_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_reference_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_std_except_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_std_string_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/li_typemaps_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/member_pointer_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/minherit_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/multiple_inheritance_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/naturalvar_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/operator_overload_break_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/operator_overload_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/overload_copy_runme.pl (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/perl5/overload_null_runme.pl rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/overload_simple_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/packageoption_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/preproc_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/primitive_ref_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/primitive_types_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/profiletest_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/reference_global_vars_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/rename_scope_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/ret_by_value_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/return_const_value_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/run-perl-test.pl (85%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/perl5/scilab_multivalue_runme.pl rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/sizet_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/sneaky1_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/template_default_arg_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/template_ref_type_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/template_typedef_cplx2_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/template_typedef_cplx3_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/template_typedef_cplx_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/typedef_class_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/typemap_namespace_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/typename_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/unions_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/using1_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/using2_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/varargs_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/virtual_poly_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/voidtest_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/perl5/wrapmacro_runme.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/Makefile.in (99%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/abstract_inherit_ok_runme.php (80%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/abstract_inherit_runme.php (71%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/add_link_runme.php (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/argout_runme.php (86%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/arrayptr_runme.php (84%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/arrays_global_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/arrays_global_twodim_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/arrays_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/arrays_scope_runme.php rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/callback_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/casts_runme.php (57%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/char_strings_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/class_ignore_runme.php (52%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/conversion_namespace_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/conversion_ns_template_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/conversion_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/cpp11_strongly_typed_enumerations_runme.php (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/cpp_basic_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/cpp_static_runme.php rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_abstract_runme.php (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_basic_runme.php (68%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_classic_runme.php (92%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_default_runme.php (53%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_detect_runme.php (81%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_enum_runme.php (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_exception_runme.php (86%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_extend_runme.php (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_finalizer_runme.php (80%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/director_frob_runme.php rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_nested_runme.php (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_pass_by_value_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_profile_runme.php (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_protected_runme.php (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_stl_runme.php (78%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/director_string_runme.php (57%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/director_thread_runme.php (74%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/director_unroll_runme.php rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/enum_scope_template_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/evil_diamond_ns_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/evil_diamond_prop_runme.php (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/evil_diamond_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/exception_order_runme.php (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/extend_template_ns_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/extend_template_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/grouping_runme.php (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/ignore_parameter_runme.php (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/import_nomodule_runme.php (70%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/li_carrays_cpp_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/li_carrays_runme.php rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/li_factory_runme.php (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/li_std_string_runme.php (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/li_std_vector_member_var_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/newobject1_runme.php (75%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/newobject3_runme.php create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/overload_null_runme.php rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/overload_rename_runme.php (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/overload_return_type_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/php_iterator_runme.php (71%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php/php_pragma_runme.php rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/pointer_reference_runme.php (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/prefix_runme.php (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/preproc_constants_c_runme.php (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/preproc_constants_runme.php (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/primitive_ref_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/rename_scope_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/skel.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/smart_pointer_rename_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/swig_exception_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/sym_runme.php (92%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/php5 => swigwin-4.0.0/Examples/test-suite/php}/template_arg_typename_runme.php (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/template_construct_runme.php (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/tests.php (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/threads_exception_runme.php (73%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/typedef_reference_runme.php (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/typemap_ns_using_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/using1_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/using2_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/valuewrapper_base_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/virtual_vs_nonvirtual_base_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php/wrapmacro_runme.php (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php_iterator.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/php_namewarn_rename.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/php_pragma.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/pike/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/pointer_in_out.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/pointer_reference.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/prefix.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc.i (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_constants.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_constants_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_defined.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/preproc_gcc_output.h create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/preproc_gcc_output.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_a.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_b.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_c.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_d withspace.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_e withspace.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_f withspace.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_g.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_h1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_h2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_include_h3.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/preproc_line_file.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/primitive_ref.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/primitive_types.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/private_assign.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/profiletest.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/protected_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/proxycode.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/pure_virtual.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/Makefile.in (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/abstract_access_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/abstract_typedef2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/abstract_typedef_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/abstract_virtual_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/argcargvtest_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/array_member_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/arrays_global_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/autodoc_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/callback_runme.py (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/char_binary_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/class_ignore_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/class_scope_weird_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/comment_verifier.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/compactdefaultargs_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/complextest_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/constant_directive_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/constover_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/constructor_copy_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/constructor_rename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/contract_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_alternate_function_syntax_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_decltype_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_final_directors_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_function_objects_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_hash_tables_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_initializer_list_extend_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_initializer_list_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_null_pointer_constant_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_raw_string_literals_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_ref_qualifiers_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_ref_qualifiers_rvalue_unignore_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_result_of_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_rvalue_reference_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp11_shared_ptr_overload_runme.py rename winx64/bin/{swig-3.0.12/Examples/test-suite/python/cpp11_li_std_array_runme.py => swigwin-4.0.0/Examples/test-suite/python/cpp11_std_array_runme.py} (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_strongly_typed_enumerations_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_template_typedefs_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_thread_local_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_type_aliasing_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_type_traits_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp11_uniform_initialization_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp14_binary_integer_literals_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp17_hex_floating_literals_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp17_nested_namespaces_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp17_u8_char_literals_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp_enum_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/cpp_namespace_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/cpp_static_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/default_arg_values_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/default_args_c_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/default_args_runme.py (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/default_constructor_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_abstract_runme.py (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_alternating_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_basic_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_classic_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_default_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_detect_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_enum_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_exception_runme.py (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_extend_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_finalizer_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_frob_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_keywords_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_nested_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_pass_by_value_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_profile_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_property_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_protected_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_smartptr_runme.py (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_stl_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_string_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_thread_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_unroll_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/director_wstring_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/disown_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_alias_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_basic_notranslate_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_basic_translate_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_ignore_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_misc_constructs_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_parsing_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_translate_all_tags_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_translate_links_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/doxygen_translate_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/dynamic_cast_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/empty_c_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/empty_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/enum_forward_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/enum_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/enums_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/exception_classname_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/exception_order_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extend_placement_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extend_template_method_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extend_template_ns_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extend_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extend_variable_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/extern_c_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/file_test_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/friends_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/funcptr_cpp_runme.py (80%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/functors_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/fvirtual_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/global_functions_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/global_namespace_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/global_ns_arg_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/global_vars_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/grouping_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/hugemod.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/iadd_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/ignore_parameter_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/implicittest_runme.py (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/import_nomodule_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/import_stl_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/imports_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/inctest_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/inherit_missing_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/inout_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/inplaceadd_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/input_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/keyword_rename_c_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/keyword_rename_runme.py (60%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/kwargs_feature_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/langobj_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_attribute_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_attribute_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_boost_shared_ptr_bits_runme.py (73%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/li_boost_shared_ptr_director_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_boost_shared_ptr_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_boost_shared_ptr_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_carrays_cpp_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_carrays_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cdata_cpp_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cdata_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cmalloc_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cpointer_cpp_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cpointer_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cstring_runme.py (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_cwstring_runme.py (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_factory_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_implicit_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_auto_ptr_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_carray_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_containers_int_runme.py (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_except_as_class_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_map_member_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/li_std_map_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_pair_extra_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_pair_using_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_set_runme.py (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_stream_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_string_extra_runme.py (83%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/li_std_vector_back_reference_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_vector_enum_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_vector_extra_runme.py (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_vector_ptr_runme.py (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_vector_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_wstream_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/li_std_wstring_runme.py (74%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/member_pointer_const_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/member_pointer_runme.py (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/memberin_extend_c_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/minherit_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/mod_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/multi_import_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/namespace_class_runme.py (52%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/namespace_typemap_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/namespace_virtual_method_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/naturalvar_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/nested_in_template_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/nested_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/nested_template_base_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/nested_workaround_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/operator_overload_runme.py (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/operbool_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_bool_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_complicated_runme.py (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_copy_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_extend2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_extend_c_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_extend_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/overload_null_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_numeric_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_rename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_simple_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_subtype_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_template_fast_runme.py (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/overload_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/pointer_reference_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/preproc_defined_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/preproc_gcc_output_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/preproc_include_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/preproc_runme.py (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/primitive_ref_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/primitive_types_runme.py (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/profiletest_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/profiletestc_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/python_abstractbase_runme3.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_append_runme.py (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_builtin_runme.py (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_destructor_exception_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_docstring_runme.py (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_extranative_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_moduleimport_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/python_nondynamic_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_overload_simple_cast_runme.py (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_pickle_runme.py (83%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/python_pybuffer_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_pythoncode_runme.py (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_richcompare_runme.py (58%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_strict_unicode_runme.py (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_threads_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/python_varargs_typemap_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/pythonswig.supp (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/refcount_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/reference_global_vars_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/rename_pcre_encoder_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/rename_predicates_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/rename_rstrip_encoder_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/rename_scope_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/rename_strip_encoder_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/ret_by_value_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/return_const_value_runme.py (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_const_overload_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_extend_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_member_runme.py (57%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_multi_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_multi_typedef_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_not_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_overload_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_rename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_simple_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_templatevariables_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/smart_pointer_typedef_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/sneaky1_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/special_variable_macros_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/static_const_member_2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/std_containers_runme.py (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/struct_initialization_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/struct_rename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/struct_value_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/swigobject_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/template_class_reuse_name_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_classes_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_construct_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_default_arg_overloaded_extend_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_default_arg_overloaded_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_default_arg_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_default_cache_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_extend1_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_extend2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_inherit_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_matrix_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_ns4_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_ns_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_opaque_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_ref_type_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_rename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_static_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_tbase_template_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_type_namespace_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_cplx2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_cplx3_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_cplx4_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_cplx_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_import_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typedef_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typemaps_typedef2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/template_typemaps_typedef_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/template_using_directive_typedef_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/threads_exception_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typedef_class_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/typedef_classforward_same_name_runme.py create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/typedef_funcptr_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typedef_inherit_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typedef_scope_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typedef_typedef_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_arrays_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_delete_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_documentation_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_namespace_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_ns_using_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_out_optimal_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typemap_qualifier_strip_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/typemap_template_typedef_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/typename_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/types_directive_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/unicode_strings_runme.py (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/unions_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using1_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using2_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using_composition_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using_extend_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using_inherit_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using_private_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/using_protected_runme.py (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python/varargs_overload_runme.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/varargs_runme.py (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/virtual_derivation_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/virtual_poly_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/voidtest_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python/wrapmacro_runme.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_abstractbase.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_append.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_builtin.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_destructor_exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_director.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_docstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_extranative.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_moduleimport.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_nondynamic.i (74%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_overload_simple_cast.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_pickle.i (100%) rename winx64/bin/{swig-3.0.12/Examples/test-suite/python_pybuf.i => swigwin-4.0.0/Examples/test-suite/python_pybuffer.i} (91%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/python_pythoncode.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_richcompare.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_strict_unicode.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_threads.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/python_varargs_typemap.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/Makefile.in (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/arrays_dimensionless_runme.R (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/r/enum_thorough_runme.R rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/funcptr_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/ignore_parameter_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/integers_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/li_std_vector_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/overload_method_runme.R (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/r/overload_null_runme.R rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/preproc_constants_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/r_copy_struct_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/r_double_delete_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/r_legacy_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/r_sexp_runme.R (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/r/r_use_isnull_runme.R rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/rename_simple_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/simple_array_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/unions_runme.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r/unittest.R (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_copy_struct.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_double_delete.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_legacy.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_overload_array.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_overload_comma.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/r_sexp.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/r_use_isnull.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/redefined.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/redefined_not.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/refcount.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/refcount.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/reference_global_vars.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/register_par.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename.h (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename1.i (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename2.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename3.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename4.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_camel.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_pcre_encoder.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_pcre_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_predicates.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_rstrip_encoder.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_strip_encoder.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rename_wildcard.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/restrict_cplusplus.i (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ret_by_value.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/return_const_value.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/return_value_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/rname.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/Makefile.in (75%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_access_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_inherit_ok_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_inherit_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_signature_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_typedef2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_typedef_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/abstract_virtual_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/access_change_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/add_link_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/aggregate_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/anonymous_bitfield_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/apply_signed_char_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/apply_strings_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/argout_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/array_member_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/arrays_global_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/arrays_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/bools_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/cast_operator_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/casts_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/char_constant_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/check_missing_tests.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/class_ignore_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/const_const_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/constover_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/cpp11_hash_tables_runme.rb create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/cpp11_shared_ptr_const_runme.rb create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/cpp11_shared_ptr_nullptr_in_containers_runme.rb create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/cpp11_shared_ptr_upcast_runme.rb rename winx64/bin/{swig-3.0.12/Examples/test-suite/ruby/cpp11_li_std_array_runme.rb => swigwin-4.0.0/Examples/test-suite/ruby/cpp11_std_array_runme.rb} (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/cpp11_strongly_typed_enumerations_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/cpp_namespace_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/default_constructor_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_abstract_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_basic_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_constructor_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_default_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_detect_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_exception_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_frob_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_nested_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_protected_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_smartptr_runme.rb (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_string_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_unroll_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/director_wombat_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/disown_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/dynamic_cast_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/enum_thorough_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/enums_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/extend_template_ns_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/extend_template_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/friends_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/function_typedef_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/grouping_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ignore_parameter_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/imports_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/inherit_missing_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/integers_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_boost_shared_ptr_bits_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/li_boost_shared_ptr_director_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_boost_shared_ptr_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_boost_shared_ptr_template_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_carrays_cpp_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_carrays_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_cstring_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_factory_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_math_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_deque_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_functors_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/li_std_list_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_map_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_multimap_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_pair_lang_object_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_pair_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_queue_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_set_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_speed2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_stack_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_stream_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_string_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_vector_enum_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/li_std_vector_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/li_std_wstring_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/member_pointer_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/minherit_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/namespace_typemap_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/newobject1_runme.rb (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/newobject2_runme.rb (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_bool_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_copy_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_extend2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_extend_c_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_extend_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/overload_null_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_simple_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_subtype_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/overload_template_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/primitive_ref_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/primitive_types_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/profiletest_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/refcount_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/reference_global_vars_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/rename_scope_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/ruby_alias_global_function_runme.rb create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/ruby_alias_method_runme.rb create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/ruby_alias_module_function_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_keywords_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_manual_proxy_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_minherit_shared_ptr_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_naming_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/ruby_rdata_runme.rb rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_track_objects_directors_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/ruby_track_objects_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_const_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_multi_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_multi_typedef_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_not_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_overload_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_rename_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_simple_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/smart_pointer_typedef_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/sneaky1_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/static_const_member_2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/std_containers_runme.rb (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/stl_new_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/struct_value_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/swig_assert.rb (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/swig_gc.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_construct_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_extend1_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_extend2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_inherit_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_ns4_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_ns_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_rename_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_tbase_template_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_type_namespace_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_typedef_cplx2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_typedef_cplx3_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_typedef_cplx4_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/template_typedef_cplx_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/throw_exception_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/typedef_inherit_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/typedef_scope_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/typemap_namespace_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/typemap_ns_using_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/typename_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/unions_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using1_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using2_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using_composition_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using_extend_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using_inherit_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using_private_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/using_protected_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/varargs_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/virtual_derivation_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/virtual_poly_runme.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby/voidtest_runme.rb (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby_alias_global_function.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby_alias_method.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby_alias_module_function.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_keywords.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_li_std_speed.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_manual_proxy.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_minherit_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_naming.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby_rdata.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_track_objects.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/ruby_track_objects_directors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/samename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/casts.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/char_constant.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/class_ignore.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/constover.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/contract.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/cpp_enum.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/cpp_namespace.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/dynamic_cast.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/global_vars.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/global_vars_proxy.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/import_nomodule.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/imports.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/inherit_missing.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/integers.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/li_std_string.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/li_typemaps.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/li_typemaps_proxy.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/list_vector.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/multiple_inheritance_proxy.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/multivalue.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/name.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_complicated.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_copy.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_extend.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_extend_c.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_simple.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/overload_subtype.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/pointer_in_out.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/reference_global_vars.scm (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/typedef_inherit.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/typename.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/unions.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/schemerunme/unions_proxy.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/Makefile.in (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_access_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_inherit_ok_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_inherit_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_signature_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_typedef2_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_typedef_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/abstract_virtual_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/access_change_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/add_link_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/aggregate_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/allowexcept_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/allprotected_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/anonymous_bitfield_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/apply_signed_char_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/apply_strings_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/array_member_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/arrays_dimensionless_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/arrays_global_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/arrays_global_twodim_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/bools_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/char_constant_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/constover_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/constructor_copy_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/cpp_basic_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/cpp_enum_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/default_args_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/default_constructor_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/empty_c_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/empty_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/enums_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/funcptr_cpp_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/funcptr_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/global_vars_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/inctest_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/inherit_missing_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/inout_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/integers_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_carrays_cpp_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_carrays_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_cpointer_cpp_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_cpointer_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_math_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_container_typemaps_runme.sci (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_deque_runme.sci (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_except_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_pair_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_string_extra_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_std_vector_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/li_typemaps_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/member_pointer_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/name_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/nested_structs_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/newobject2_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/null_pointer_runme.sci (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/operator_overload_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_arrays_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_complicated_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_copy_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_extend2_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_extend_c_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_extend_runme.sci (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/scilab/overload_null_runme.sci rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_numeric_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_polymorphic_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_simple_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/overload_subtype_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/preproc_constants_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/preproc_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/primitive_ref_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/primitive_types_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/ret_by_value_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/return_const_value_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_consts_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_enums_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_identifier_name_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_li_matrix_runme.sci (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_multivalue_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/scilab_pointer_conversion_functions_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/simple_array_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/sizet_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/smart_pointer_simple_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/sneaky1_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/struct_initialization_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/struct_rename_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/struct_value_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/swigtest.quit (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/swigtest.start (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/template_classes_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/template_ns_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/template_rename_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/template_static_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/throw_exception_runme.sci (64%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/typedef_struct_cpp_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/typedef_struct_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/union_parameter_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/unions_runme.sci (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/scilab/varargs_overload_runme.sci rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/varargs_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab/voidtest_runme.sci (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_consts.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_enums.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_identifier_name.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_li_matrix.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_multivalue.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/scilab_pointer_conversion_functions.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/shared_ptr_wrapper.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/simple_array.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/simutry.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/sizeof_pointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/sizet.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_const2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_const_overload.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_ignore.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_multi.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_multi_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_namespace2.i (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_not.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_overload.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_protected.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_simple.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_static.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_template_const_overload.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_template_defaults_overload.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_templatemethods.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_templatevariables.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/smart_pointer_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/sneaky1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/special_variable_attributes.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/special_variable_macros.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/special_variables.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/static_array_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/static_const_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/static_const_member_2.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/std_containers.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/stl_new.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/stl_no_default_constructor.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/string_constants.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/string_simple.i (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/struct_initialization.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/struct_initialization_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/struct_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/struct_value.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/swig_examples_lock.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/swig_exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/swigobject.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/sym.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/symbol_clash.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tag_no_clash_with_variable.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/bools_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/clientdata_prop_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/cpp11_strongly_typed_enumerations_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/disown_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/enum_thorough_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/import_nomodule_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/imports_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/li_std_string_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/member_pointer_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/newobject1_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/newobject2_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/null_pointer_runme.tcl (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/overload_copy_runme.tcl (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/tcl/overload_null_runme.tcl rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/overload_simple_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/primitive_ref_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/primitive_types_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/profiletest_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/reference_global_vars_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/union_parameter_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/tcl/unions_runme.tcl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_arg_replace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_arg_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_arg_typename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_array_numeric.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_base_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_basic.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/template_class_reuse_name.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_classes.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_const_ref.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_construct.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_arg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_arg_overloaded.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_arg_overloaded_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_arg_virtual_destructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_cache.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_class_parms.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_class_parms_typedef.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_pointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_qualify.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_default_vw.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/template_empty_inherit.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_enum_ns_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_enum_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_explicit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_expr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_extend1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_extend2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_extend_overload.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_extend_overload_2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_forward.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_inherit_abstract.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_int_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_keyword_in_type.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_matrix.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_methods.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_namespace_forward_declaration.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_nested.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_nested_typemaps.i (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns3.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns4.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns_enum2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ns_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_opaque.i (87%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/template_parameters_global_scope.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_partial_arg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_partial_specialization.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_partial_specialization_typedef.i (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_private_assignment.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_qualifier.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_ref_type.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_rename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_retvalue.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_specialization.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_specialization_defarg.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_specialization_enum.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_static.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_tbase_template.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_template_parameters.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_templated_constructors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_type_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_class_template.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx2.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx3.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx4.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_cplx5.i (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_fnc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_funcptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_import.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_import.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_ns.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_rec.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typedef_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typemaps.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typemaps_typedef.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_typemaps_typedef2.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_using.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_using_directive_and_declaration_forward.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/template_using_directive_typedef.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_virtual.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/template_whitespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/go_subdir_import/go_subdir_import_c.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir1/hello.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir1/imports.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir1/subinc1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir2/hello.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir2/imports.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/subdir2/subinc2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/testdir/inctest/test.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/threads.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/threads_exception.i (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/throw_exception.i (57%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_array_member.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_class.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/typedef_classforward_same_name.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_funcptr.i (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_mptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_reference.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_sizet.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_struct.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_struct_cpp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typedef_typedef.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_array_qualifiers.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_arrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_delete.i (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_directorout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_documentation.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_global_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_manyargs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_ns_using.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_numinputs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_out_optimal.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_qualifier_strip.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_self.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_subst.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_template.i (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_template_parm_typedef.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/typemap_template_parms.i create mode 100644 winx64/bin/swigwin-4.0.0/Examples/test-suite/typemap_template_typedef.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_variables.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typemap_various.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/typename.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/types_directive.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/uffi/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/unicode_strings.i (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/union_parameter.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/union_scope.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/unions.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using1.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using2.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_composition.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_directive_and_declaration.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_directive_and_declaration_forward.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_extend.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_inherit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_namespace.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_namespace_loop.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_pointers.i (67%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_private.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/using_protected.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/valuewrapper.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/valuewrapper_base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/valuewrapper_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/valuewrapper_opaque.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/varargs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/varargs_overload.i (53%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/variable_replacement.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/virtual_derivation.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/virtual_destructor.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/virtual_poly.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/virtual_vs_nonvirtual_base.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/voidtest.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/wallkw.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/test-suite/wrapmacro.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/error.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/error.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_apply.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_apply.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_const.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_const.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_gif.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_inl.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_inl.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_inl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_p5.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_p5.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_ro.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_ro.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_title_add.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_title_add.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_xml.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_xml.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/example_xml.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/gnarly.expected-xml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Examples/xml/gnarly.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/INSTALL (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/LICENSE (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/LICENSE-GPL (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/LICENSE-UNIVERSITIES (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/allegrocl.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/inout_typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/longlongs.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/std_list.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allegrocl/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/allkw.swg (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cdata.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cffi/cffi.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/chicken.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/chickenkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/chickenrun.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/extra-install.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/multi-generic.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/swigclosprefix.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/tinyclos-multi-generic.patch (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/chicken/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/clisp/clisp.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/constraints.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/arrays_csharp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/boost_intrusive_ptr.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/boost_shared_ptr.i (72%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/csharp/complex.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/csharp.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/csharphead.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/csharpkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/director.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/enums.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/enumsimple.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/enumtypesafe.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_array.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_auto_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_common.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/csharp/std_complex.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_except.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/csharp/std_list.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_map.i (95%) rename winx64/bin/{swig-3.0.12/Lib/javascript/jsc => swigwin-4.0.0/Lib/csharp}/std_pair.i (80%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/csharp/std_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_vector.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/std_wstring.i (100%) rename winx64/bin/{swig-3.0.12/Lib/java => swigwin-4.0.0/Lib/csharp}/stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/swiginterface.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/swigtype_inout.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/csharp/wchar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/cwstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/boost_shared_ptr.i (65%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/d.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dclassgen.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/ddirectives.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/denums.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dexception.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dhead.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/director.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dmemberfunctionpointers.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/doperators.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dprimitives.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dswigtype.swg (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/dvoid.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_except.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/d/std_map.i rename winx64/bin/{swig-3.0.12/Lib/ocaml => swigwin-4.0.0/Lib/d}/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/std_vector.i (94%) rename winx64/bin/{swig-3.0.12/Lib/javascript/jsc => swigwin-4.0.0/Lib/d}/stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/d/wrapperloader.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/director_common.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/exception.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/cdata.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/go/director.swg rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/go.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/gokw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/goruntime.swg (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/gostring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/std_list.i (89%) rename winx64/bin/{swig-3.0.12/Lib/lua => swigwin-4.0.0/Lib/go}/std_map.i (73%) rename winx64/bin/{swig-3.0.12/Lib/java => swigwin-4.0.0/Lib/go}/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/std_string.i (100%) rename winx64/bin/{swig-3.0.12/Lib/javascript/v8 => swigwin-4.0.0/Lib/go}/std_vector.i (85%) rename winx64/bin/{swig-3.0.12/Lib/javascript/v8 => swigwin-4.0.0/Lib/go}/stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/go/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/common.scm (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/cplusplus.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/extra-install.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/guile.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/guile_scm.swg (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/guile_scm_run.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/guilemain.i (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/interpreter.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/list-vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/pointer-in-out.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/ports.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_map.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_pair.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/std_vector.i (96%) rename winx64/bin/{swig-3.0.12/Lib/lua => swigwin-4.0.0/Lib/guile}/stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/swigrun.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/guile/typemaps.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/intrusive_ptr.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/inttypes.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/arrays_java.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/boost_intrusive_ptr.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/boost_shared_ptr.i (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/director.swg (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/enums.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/enumsimple.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/enumtypesafe.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/enumtypeunsafe.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/java.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/javahead.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/javakw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_array.i (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_auto_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_except.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_list.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_map.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_pair.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_string.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_unordered_map.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_unordered_set.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/java/std_vector.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/std_wstring.i (100%) rename winx64/bin/{swig-3.0.12/Lib/go => swigwin-4.0.0/Lib/java}/stl.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/swiginterface.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/typemaps.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/java/various.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/arrays_javascript.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/ccomplex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/complex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascript.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptcode.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptcomplex.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascripthelpers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptinit.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptrun.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptruntime.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascriptstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/javascripttypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_complex.i (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_map.i (79%) rename winx64/bin/{swig-3.0.12/Lib/go => swigwin-4.0.0/Lib/javascript/jsc}/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/std_string.i (100%) rename winx64/bin/{swig-3.0.12/Lib/java => swigwin-4.0.0/Lib/javascript/jsc}/std_vector.i (86%) rename winx64/bin/{swig-3.0.12/Lib/csharp => swigwin-4.0.0/Lib/javascript/jsc}/stl.i (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/jsc/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/arrays_javascript.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/ccomplex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/complex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascript.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptcode.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptcomplex.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascripthelpers.swg (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptinit.swg (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptprimtypes.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptrun.swg (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptruntime.swg (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascriptstrings.swg (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/javascripttypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_complex.i (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_except.i (100%) rename winx64/bin/{swig-3.0.12/Lib/java => swigwin-4.0.0/Lib/javascript/v8}/std_map.i (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/std_string.i (100%) rename winx64/bin/{swig-3.0.12/Lib/javascript/jsc => swigwin-4.0.0/Lib/javascript/v8}/std_vector.i (86%) rename winx64/bin/{swig-3.0.12/Lib/d => swigwin-4.0.0/Lib/javascript/v8}/stl.i (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/javascript/v8/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/linkruntime.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/_std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/lua.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/lua_fnptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/luakw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/luarun.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/luaruntime.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/luatypemaps.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_except.i (100%) rename winx64/bin/{swig-3.0.12/Lib/go => swigwin-4.0.0/Lib/lua}/std_map.i (73%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_pair.i (60%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_string.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/std_vector.i (90%) rename winx64/bin/{swig-3.0.12/Lib/guile => swigwin-4.0.0/Lib/lua}/stl.i (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/typemaps.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/lua/wchar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/math.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/modula3/modula3.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/modula3/modula3head.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/modula3/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/Makefile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/mzrun.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/mzscheme.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_map.i (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_pair.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/std_vector.i (96%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/mzscheme/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/mzscheme/typemaps.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/carray.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/class.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/cstring.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/director.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/extra-install.list (59%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/ocaml.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/ocaml.swg (70%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/ocamldec.swg (51%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/ocamlkw.swg (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/preamble.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_common.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_complex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_deque.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ocaml/std_except.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_list.i (93%) rename winx64/bin/{swig-3.0.12/Lib/javascript/v8 => swigwin-4.0.0/Lib/ocaml}/std_map.i (79%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ocaml/std_pair.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_string.i (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/std_vector.i (87%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ocaml/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/swig.ml (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/swig.mli (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/swigp4.ml (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/typecheck.i (62%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/typemaps.i (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ocaml/typeregister.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/attribute.i (100%) rename winx64/bin/{swig-3.0.12/Lib/scilab => swigwin-4.0.0/Lib/octave}/boost_shared_ptr.i (70%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/director.swg (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/implicit.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octave.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octcomplex.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octcontainer.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octiterators.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octopers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octprimtypes.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octrun.swg (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octruntime.swg (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octstdcommon.swg (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octtypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/octuserdir.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_alloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_basic_string.i (54%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_carray.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_char_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_complex.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_container.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_deque.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_list.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_map.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_pair.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/std_wstring.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/octave/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/octave/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/Makefile.pl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/director.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/extra-install.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/noembed.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perl5.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlerrors.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlhead.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlinit.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlmacros.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlmain.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlopers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlrun.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlruntime.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perlstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perltypemaps.swg (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/perluserdir.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/reference.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_list.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_map.i (79%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/perl5/std_pair.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/std_vector.i (97%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/perl5/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/perl5/typemaps.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/const.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/director.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/globalvar.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/php.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/phpinit.swg (69%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/phpkw.swg (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/phppointers.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/phprun.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/std_deque.i (100%) rename winx64/bin/{swig-3.0.12/Lib/php5 => swigwin-4.0.0/Lib/php}/std_map.i (80%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/php/std_pair.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/std_string.i (100%) rename winx64/bin/{swig-3.0.12/Lib/php5 => swigwin-4.0.0/Lib/php}/std_vector.i (87%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/php/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/php/utils.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/pike/pike.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/pike/pikekw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/pike/pikerun.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/pike/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/pointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/argcargv.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/boost_shared_ptr.i (70%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/builtin.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/ccomplex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/complex.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/cwstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/defarg.swg (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/director.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/embed.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/file.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/implicit.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/pyabc.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyapi.swg (54%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pybackward.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pybuffer.i (65%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyclasses.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pycomplex.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pycontainer.swg (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pydocs.swg (63%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyerrors.swg (55%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyfragments.swg (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/pyhead.swg rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyinit.swg (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyiterators.swg (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pymacros.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyname_compat.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyopers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyrun.swg (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyruntime.swg (77%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pystdcommon.swg (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pystrings.swg (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/python.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pythonkw.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pythreads.swg (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pytuplehlp.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pytypemaps.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pyuserdir.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/pywstrings.swg (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_alloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_array.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_auto_ptr.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/std_basic_string.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_carray.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_char_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_complex.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_container.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_deque.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_ios.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_iostream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_list.i (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_map.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_multimap.i (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_multiset.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_pair.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_set.i (87%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_sstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_streambuf.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_string.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/std_unordered_map.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_unordered_multimap.i (52%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/std_unordered_multiset.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/std_unordered_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_vectora.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_wios.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_wiostream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_wsstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_wstreambuf.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/std_wstring.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/python/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/python/wchar.i (100%) rename winx64/bin/{swig-3.0.12/Lib/octave => swigwin-4.0.0/Lib/r}/boost_shared_ptr.i (68%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/r.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rcontainer.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/ropers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rrun.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rstdcommon.swg (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/rtype.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/srun.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_alloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_container.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_list.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_map.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_pair.i (100%) rename winx64/bin/{swig-3.0.12/Lib/ruby => swigwin-4.0.0/Lib/r}/std_shared_ptr.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/std_vector.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/r/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/r/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/Makefile.swig (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/argcargv.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/boost_shared_ptr.i (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/director.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/embed.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/extconf.rb (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/extra-install.list (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/file.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/progargcargv.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/ruby.swg (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyapi.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyautodoc.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyclasses.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubycomplex.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubycontainer.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubycontainer_extended.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubydef.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyerrors.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyhead.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyinit.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyiterators.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubykw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubymacros.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyopers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyrun.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyruntime.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubystdautodoc.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubystdcommon.swg (81%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/rubystdcommon_forward.swg rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubystdfunctors.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubystrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubytracking.swg (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubytypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/rubyuserdir.swg (95%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/rubywstrings.swg rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_alloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_array.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_basic_string.i (54%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_char_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_complex.i (76%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_container.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_deque.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_functors.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_ios.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_iostream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_list.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_map.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_multimap.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_multiset.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_pair.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_queue.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_set.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_shared_ptr.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_sstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_stack.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_streambuf.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_string.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_unordered_map.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_unordered_multimap.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_unordered_multiset.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_unordered_set.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_vector.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/std_vectora.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/std_wstring.i create mode 100644 winx64/bin/swigwin-4.0.0/Lib/ruby/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/timeval.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/ruby/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/runtime.swg (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/scilab/boost_shared_ptr.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/matrix.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciarray.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scibool.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scichar.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scicontainer.swg (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scidouble.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scienum.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciexception.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scifloat.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciint.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciiterators.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scilab.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scilist.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scilong.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scilonglong.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimacros.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimatrixbool.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimatrixchar.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimatrixdouble.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimatrixint.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scimisctypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scipointer.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scirun.swg (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciruntime.swg (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequence.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequencebool.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequencedouble.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequencefloat.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequenceint.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequencepointer.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisequencestring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scishort.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scisignedchar.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scistdcommon.swg (86%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/scitypemaps.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciunsignedchar.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciunsignedint.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciunsignedlong.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/sciunsignedshort.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_alloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_basic_string.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_char_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_common.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_container.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_list.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/scilab/std_map.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_multiset.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_set.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/scilab/std_shared_ptr.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/std_vector.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/scilab/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/scilab/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/shared_ptr.i (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/_std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_alloc.i (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_array.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_basic_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_carray.swg (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_char_traits.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_common.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_container.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_ios.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_iostream.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_list.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_map.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_multimap.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_multiset.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_pair.i (92%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_queue.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_set.i (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_sstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_stack.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_streambuf.i (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_unordered_map.i (82%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_unordered_multimap.i (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_unordered_multiset.i (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_unordered_set.i (81%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_vector.i (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_vectora.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_wios.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_wiostream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_wsstream.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_wstreambuf.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std/std_wstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/std_except.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/stdint.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/stl.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swig.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigarch.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigerrors.swg (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/swigfragments.swg rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swiginit.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swiglabels.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigrun.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigrun.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigwarn.swg (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/swigwarnings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/attribute.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/carrays.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/cdata.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/cmalloc.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/cpointer.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/cstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/cwstring.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/exception.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/factory.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/mactkinit.c (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_common.i (100%) rename winx64/bin/{swig-3.0.12/Lib/php5 => swigwin-4.0.0/Lib/tcl}/std_deque.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_except.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_map.i (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_pair.i (80%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_string.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_vector.i (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/std_wstring.i (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Lib/tcl/stl.i rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tcl8.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclapi.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclerrors.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclfragments.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclinit.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclinterp.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclkw.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclmacros.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclopers.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclprimtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclresult.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclrun.swg (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclruntime.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclsh.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tcltypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tcluserdir.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/tclwstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/tcl/wish.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/attribute.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/carrays.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cdata.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cmalloc.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cpointer.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cstring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cstrings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/cwstring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/enumint.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/exception.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/factory.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/fragments.swg (83%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/implicit.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/inoutlist.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/misctypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/primtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/ptrtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/std_except.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/std_string.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/std_strings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/std_wstring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/string.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/strings.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/swigmacros.swg (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/swigobject.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/swigtype.swg (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/swigtypemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/typemaps.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/valtypes.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/void.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/typemaps/wstring.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/uffi/uffi.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/wchar.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/windows.i (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/xml/typemaps.i (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Lib/xml/xml.swg (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Makefile.in (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/README (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/RELEASENOTES (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/cparse.h (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/cscanner.c (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/parser.c (61%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/parser.h (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/parser.y (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/templ.c (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/CParse/util.c (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/base.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/doh.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/dohint.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/file.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/fio.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/hash.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/list.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/memory.c (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/string.c (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/DOH/void.c (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxycommands.h create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxyentity.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxyentity.h create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxyparser.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxyparser.h create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxytranslator.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/doxytranslator.h create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/javadoc.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/javadoc.h create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/pydoc.cxx create mode 100644 winx64/bin/swigwin-4.0.0/Source/Doxygen/pydoc.h rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Include/swigconfig.h.in (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Include/swigwarn.h (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Makefile.am (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Makefile.in (89%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/allegrocl.cxx (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/allocate.cxx (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/browser.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/cffi.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/chicken.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/clisp.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/contract.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/csharp.cxx (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/d.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/directors.cxx (56%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/emit.cxx (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/go.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/guile.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/interface.cxx (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/java.cxx (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/javascript.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/lang.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/lua.cxx (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/main.cxx (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/modula3.cxx (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/mzscheme.cxx (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/nested.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/ocaml.cxx (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/octave.cxx (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/overload.cxx (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/perl5.cxx (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/php.cxx (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/pike.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/python.cxx (79%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/r.cxx (72%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/ruby.cxx (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/s-exp.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/scilab.cxx (88%) create mode 100644 winx64/bin/swigwin-4.0.0/Source/Modules/swigmain.cxx rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/swigmod.h (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/tcl8.cxx (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/typepass.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/uffi.cxx (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/utils.cxx (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Modules/xml.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Preprocessor/cpp.c (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Preprocessor/expr.c (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Preprocessor/preprocessor.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/README (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/cwrap.c (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/deprecate.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/error.c (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/extend.c (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/fragment.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/getopt.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/include.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/misc.c (95%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/naming.c (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/parms.c (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/scanner.c (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/stype.c (88%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swig.h (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigfile.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigopt.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigparm.h (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigscan.h (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigtree.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/swigwrap.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/symbol.c (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/tree.c (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/typemap.c (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/typeobj.c (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/typesys.c (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Source/Swig/wrapfunc.c (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/TODO (78%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/brew-install (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/capitalize (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/check-include-path.pike (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ac_compile_warnings.m4 (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ac_define_dir.m4 (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Tools/config/ax_boost_base.m4 rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ax_compare_version.m4 (97%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ax_cxx_compile_stdcxx_11.m4 (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ax_path_generic.m4 (96%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/compile (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/config.guess (66%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/config.sub (85%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/depcomp (99%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/install-sh (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/missing (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/config/ylwrap (98%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/convertpath (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/Makefile.in (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/javascript.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/js_shell.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/js_shell.h (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/jsc_shell.cxx (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/javascript/v8_shell.cxx (100%) create mode 100644 winx64/bin/swigwin-4.0.0/Tools/mkdist.py create mode 100644 winx64/bin/swigwin-4.0.0/Tools/mkrelease.py rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/mkwindows.sh (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/nuget-install.cmd (93%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/obs-buildlogs.py (94%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/obs-update (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/pcre-build.sh (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/pyname_patch.py (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/setup.py.tmpl (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/swig.gdb (90%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/testflags.py (90%) create mode 100644 winx64/bin/swigwin-4.0.0/Tools/travis-linux-install.sh rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/travis-osx-install.sh (55%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Tools/vcfilter (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/Win/README.txt (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/aclocal.m4 (97%) create mode 100644 winx64/bin/swigwin-4.0.0/appveyor.yml rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/autogen.sh (100%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/configure (91%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/configure.ac (84%) rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/preinst-swig.in (100%) create mode 100644 winx64/bin/swigwin-4.0.0/swig.exe rename winx64/bin/{swig-3.0.12 => swigwin-4.0.0}/swig.spec.in (94%) diff --git a/winx64/bin/swig-3.0.12/CCache/ccache-swig.exe b/winx64/bin/swig-3.0.12/CCache/ccache-swig.exe deleted file mode 100644 index 8aadf247b2fdcc9153ba6d8cda67092f5eea11b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183499 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%0DB4Z^o}v>#`imd`ZG~D1Gg{!RDs+_U%p0yRhjo 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 diff --git a/winx64/bin/swig-3.0.12/CHANGES.current b/winx64/bin/swig-3.0.12/CHANGES.current deleted file mode 100644 index 197ec773..00000000 --- a/winx64/bin/swig-3.0.12/CHANGES.current +++ /dev/null @@ -1,133 +0,0 @@ -Below are the changes for the current release. -See the CHANGES file for changes in older releases. -See the RELEASENOTES file for a summary of changes in each release. -Issue # numbers mentioned below can be found on Github. For more details, add -the issue number to the end of the URL: https://github.com/swig/swig/issues/ - -Version 3.0.12 (27 Jan 2017) -============================ - -2017-01-27: wsfulton - [C#] #882 Fix missing filename in error messages when there is a problem - writing out C# files. - -2017-01-27: briancaine - [Guile] #744 Fix compilation errors in Guile wrappers - regression - introduced in swig-3.0.11. - -2017-01-24: andrey-starodubtsev - [Java] Apply #704 - director typemap improvements. - Memory leak fixes, add support for "directorargout" typemap and - add director support to typemaps.i. - -2017-01-24: wsfulton - Enhance %extend to extend a class with template constructors, eg: - - struct Foo { - %extend { - template - Foo(int a, T b) { - ... - } - } - }; - %template(Foo) Foo::Foo; - -2017-01-22: wsfulton - Issue #876 Enhance %extend to extend a class with template methods, eg: - - struct Foo { - %extend { - template - void do_stuff(int a, T b) { - ... - } - } - }; - %template(do_stuff_inst) Foo::do_stuff; - - Similarly for static template methods. - -2017-01-22: kwwette - [Octave] add support for version 4.2 - - The Octave API now uses some C++11 features. It is recommended to use - the mkoctfile program supplied by Octave to compile the SWIG-generated - wrapper code, as mkoctfile will ensure the correct C++ compiler/options - are used. Otherwise, the value of `mkoctfile -p CXX` should be parsed - for any -std=* flags which might be present. - - Octave has dropped support for << and >> operators, so SWIG now - ignores them. - - The Octave error() function now raises C++ exceptions to propagate - Octave errors, so %exception directives may need to be modified. - For convenience the SWIG_RETHROW_OCTAVE_EXCEPTIONS macro can be used - to rethrow any Octave exceptions for Octave itself to handle, e.g.: - - try { - $action // may call error() - } - SWIG_RETHROW_OCTAVE_EXCEPTIONS // error() exceptions are rethrown - catch(...) { - ... // all other exceptions - } - - *** POTENTIAL INCOMPATIBILITY *** - -2017-01-16: wkalinin - [C#] Fix #733 regression introduced in swig-3.0.9. - Missing virtual function override in C# layer when using %import. - -2017-01-16: fschlimb - Fix #813 template symbol name lookup bug when typedef names are the same but in different - namespaces. - -2017-01-15: wsfulton - [C# D Java] - The SWIG library no longer uses the javatype, dtype or cstype typemaps, thereby - completely freeing them up for users to use without having to replicate the library - code that they previously added. The code previously generated by these typemaps - has been replaced by the new %proxycode directive. Their use in the library code - was fairly minimal: - - C# cstype: std_array.i std_map.i std_vector.i - D dtype: std_vector.i - Java javatype: arrays_java.i - -2017-01-14: wsfulton - The %extend directive can now optionally support one of the 'class', 'struct' or 'union' - keywords before the identifier name, for example: - - struct X { ... }; - %extend struct X { ... } - - Previously this had to specified as: - - struct X { ... }; - %extend X { ... } - -2017-01-13: wsfulton - [C# D Java] Add new %proxycode directive which is a macro for %insert("proxycode"). - This is a way of adding pure C#/D/Java code into the appropriate proxy class, eg: - - %extend Proxy2 { - %proxycode %{ - public int proxycode2(int i) { - return i+2; - } - %} - } - - %inline %{ - struct Proxy2 {}; - %} - - There will then be a pure Java/C#/D method called proxycode2 in the Proxy2 class. - -2016-12-31: ajrheading1 - Issue #860 - Remove use of std::unary_function and std::binary_function - which is deprecated in C++11. - -2016-12-30: olly - [PHP7] Register internal 'swig_runtime_data_type_pointer' constant - as "CONST_PERSISTENT" to avoid segmentation fault on module unload. - Fixes #859 reported by Timotheus Pokorra. Thanks also to Javier Torres - for a minimal reproducer. diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.pdf b/winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.pdf deleted file mode 100644 index 101663fa1f5396030b350530b8c48b47cbbb7d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5136078 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

x}{OY!ZsC6CJmVFAN38;)>MAD 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

q}1g+pb*2tab^%hQ&>aQ+l-FYr<>2&tLv^8oB zE}pAxRV#dxtK~!_JW*_D8X4wd_1cnDvm$q%KWdW3NV^xa_X8TJ9Ai{beHr>bdk+15 z1zL)A8)m;MlaYdXClwYriM?UFeQv01kV1*LKYpS>E?9Psi+=hBnp1Pz#(s5pUL8*E zPd2)37lW5|IIn-Qt^b!cVVQ%w-Xi(gPN3>0;?njp`*Y$44V%WStk?1do9t60^X@WF zSu{T7NvzN;)cj1+wMNMPbB|z^y}LQUe>rJOTjv86Rvq5_w$0r% zoJwShhE`YOqIar23>*yWir1%P-qPwwQ)&^~$pr^BX-ZR?5!(H?HrL=QGgIGO-wlyc zztUOom)?Ixc0)xkz6R&^-Gow^o6YYT3Fa@CVn1$^ex<@Pc6OF1^j_KXu(8OL`wHi# z1HjYePWEV*G+OS5KIW6Vt%SE7N)f6Qn`0B_fbq=cC6}Hp{UFf|r?%iPEleL;(c9u| z*0Lenp$V(0@EJ-mYiud;%eP=o)p5r_>RC)M=fp>0pD$$-M#|3(s;+IA>-m%27jCi= zB9gvHKR*sN#FXp}QcSlE*fZ=qH}`~GKm9(Le*erTU>R*(+PIKMK4-L#&z&F;O*sZPCrrmIsFRu;F=8gm^UlaIl+fmR* z!}ci`Xhdg=Mj;rdbbkz@^GN`_4vv7G#nfl_86W!}TkrfTV|>q*v*3Mjs9N4Ij|~&E zhW?~piV$0@cuBlK=@PV`M4>Dl88G{@q=HhzpsaRqh5jw1Ga?1AuhS#(32__hb3`QPMy8kQx;sJ-Iku|JPWQr*69_;l%g*xKv)PF!g+o1R*!9#uN`%xh2X1^0Ku7b5P`#FtgGiA&-) zvvOv_-w<`X+!lE9P@>`Ldx`0Q=U=E3Q_OEAwqjFiX(0WS znwe2zsdQ@t7m8R8IcWwJ)j19~Jk>HpiAg_T&5GE4Z$9{(>J~f7^-|EWN86_vFJ{2z z8AWegB1JFRVhhfY;;542tN{?mDGu1!+X$PUGpe6(g)JT5J_#h#Wn9TxXc3Ygy-gth zAnF@m;4#fKY6V}tP=XB5wb?k9f^B}4w zHxKJL?zc%ZHPi8AhL`R1;GOk+HD%8dWwToonENf;Oij=k&xZS*ZORbbAv8heFha-X9ZzF06vu=`Vdw&sYhX^6Us!C`a*m04F1KTba90n6wD0y z#@?Z^0^+8Lre=CK@E0B*E#%@WxG)x6b1tFcFW>?}<^^#K?h5G4OA+s${kL~_?yRX! z>deejJUk3**K{;1^SM0Qz3$PIz_*A^G@JFf9xtX!lAFJ6iIVaY*x$Di{Ek?#Q34*) z<@X8jw^=q^g7TZeg6nz-z*AI7uKDPzg6=p>9P${y ziVw9jk)YWbtbySI`+oDAGYn3IUoYZ4i<6D%_16G8jP5s{vv0pEo(sApnDT`_YfqrJ zZCLi=1#<47cO&x;#of`AUzE&C&>%(+oO(3Kza0Y)@tzNOCkd|wJ2%bs~_gZIbLipk5q4PT#l$W)5snX zTrQ-&#CpK5qpQb2EQb|IPhXo^Q;)}RU1aBRcKGE8O=eCK+oVprUWw@aXfTf1dqT(@ z?{ky83Tpa9xxvW4rx8>@9AAyThmXnV(lt&hrK}R|bl8&LmUsjuqmX^|=res%^WK;|n-f zGkxC>9Noaj{g%Ty)1P%sj7fr()h7FW+I0?A3uEOF@@}5Q{zoKWcl88ryn12kJA;k_ ztS?1oQ$5pUN|Oga`=Wb>T9#&ypl0S<_HSoAeX-m;$&9h+k=yN|t+`x6gyxkbwe?>9 z-EiQ*AU0oOIU)ArpohDvj2s?M4kGo;e(IGs)r-)&KCApX8Y+r~j;hms@7}eGmxl56 z@DwGD&{1(I^JUB5KL3dOl=IBzp&(CT+G!@=YZ3RVn@ZHC+dO72^x&DUHG0I;>Mhwd zt;Q|0Ja6xrGbx_O$4eIExlcO3>g(5nn-#ZA!x#1305|c5NinzGs;Hc6$5cn$vdb>d zho~>CiB=Ou5#z6uN0S-t69B&ak* zw;r1lwAVNjQ2Y6YoJ?0#xS&yz-#H5rNmOnXsmn@oW?eM#4789IVJs$o)Q0YNeXSQS zBym;r31d~FD(A^Pzn$!xU8A7D=d*-$lOoac1<}V*^{x9MzAvsqRtYISNl9gC{Gg8` zy3rl8f$mA=HW9J69zMK?IzU^g)-LQE*WosY+bn~dmL*m_06-yY4<-D94yo4b&sTXNqQf5QIk`hhr4<&%!@QSat`E?D9(35Qq~ zxWCUf9oDcIhhAA8;Z92%hyHMsnl6#L8+={XO>sl~lE(hkn5vsMGb5d}R$L&-U$;#% z1in?X(S2Rot7r|1TIe>u^PrE#t3O5~iiy3Z(9M%ZuIZy^!ZM>cn+!fp>_e1KsXi-X z0iyBYea|Gu%iGy7!aGBc8pGh8&}mo-*d^iv`kH2aX%Zgx|fc}grhyMt6^20YgmK_x))C9oO}c54f1=c zkl_Pw&;e_lO^048tIRDvN=4Btk)>$gtuPzqNVKT(zJe}@J||p-4H!@=&gx$xh0)NEpdWB zN=c`p_Z=_ zlR%~N@a=Gup91h|h1T^ief3U33G3$4s2pK|_;v#K-8ts{0+rUkq^eLdG`t`TyXF*h zZT6k)LiqOkjey!Q>XIDd%i;&*P7*)Z$t|lIC&j`oZX~7G51ubOG|P@LUdy3-mES2> zyhs;Q+*eQMb~Hu^ZhT{7X#dD{;~Q^;u`NTtXCL5`fWK)&uvo&@zC_lrxZ_MLS%JSF ztzb=>J)~>}#(1>-{o*(@DU6mQ?ebU8p$DS&Y&Dy=)r6w11w-DA@PF>>QS2qIedPyn z=lc+C;C|a#ajk=`zgp^Y3eTC%XIuHfF_7$!Hyb&q8=n3u~|7S-HrRu^RviRmSk12=Yl#P_o@X{UEb~OyT6m_v*hv_ zax6DQS(cwWI~)UCgKta6A58~RF0XXYRI3MX$^k!#KRawnz9o?VegX#)f!{Z=6!=8> zrOF62@&Qf+9ovjG^^!H=nwi~aGr6lMe1q7z2I1vg0&O~E=x*2a2F(`X{)E5>3^er@ zUpGP})#8@;$PLUcL)gobkaW;F=WWIJIx(E)9392O+cQx#bp&VzCc}lSADV)wZ!-t^Ghdfw40^A@Iu~9q zg}eK7d=1ZOIVvS&Cnos~ty1e#7yUXFvzu3(0|rW)@I0iXqtiKKI_3?TV@!c717{4v zI|T$W#)jl*hBj+5$G+9XKXS!5QqqHxS6`rVed4QlMeyWspvbE{{__?~xQd5d9+#HP z9$7QNh|zpNEmx)xd0R1yKMLxEf zg)cLGR6cjkk?0WyaAS&RFNEN8qHrd0a)=V1pG}t&hQAexHlxmK zHk#yHvEp-}A-orl%EixIrk$6`i*7IyqLF%&RhfDLW$kOwr!lRdN}$5(AZMHxuYnG^$%$G?wuB1{dXf4ToO$Hs|}t%4|LR5;ZobkR^sNRnEPrD<#(D8oZkahbDUuL&W+i+2m{b#pg zQ_;9vuWq86u<2(x22wD;_nw~XR4lt62fN&P(Z~1TR6{=k+hg)l^|m=w>g0K%7@i$p1c<)zOpM!orG^$2J|G=ECVRf z7`PO0ojfWf0x=}gB3eH6$)%H#n>#+demo-j(oaZ zG5_SDjW@~nxgy&y@)AAR0IaH5h8{c(T<)MYD}q&Vb9@Z7@Q9-Fd<}-wYApQl z70=r{B0RSX$rR3A^4OPHt`EW-Zr#!?+8Gh!t1!}EH~esOfjS{Vnu*TgbGpf0R)Q&w zyy)?!SBbTOO<0+-Qo8~Aw)$&z+m|g}uTB7`znzvb#B1uI`Xhn16;5AT>{@UkU>xF# zX~?eEj)0V8B6=+q#!vIswYhBt!|N?yXjVeHLC<(MJI$i^m1?%ag*J@3a2`jtIT?qB zUHdp2vhx^ytb=r9EzK_4CXq?NB0Z~_RgCC+%Z&uLM)pjPG|W$4gqia}_JhtUKMYxW zsatv5dPBA6YYN$!+w3M8l?pf?X;Za55K%8%1rE*$WFCe+`Y-rSc=`Y=rvNBRXn(5Pw@07KLCsaC{LtIW~QwqQmJ&yA&G=UU58utGUIEQ3~ z-(?rbRyf7vPQVKPjbAG8@5z)%xK2Rk^;o|1G~+q}E7&{1IW=(Z5K@2mI{~7T8Q6R$ zIGtQTVXVM0$rX_7JgsHqfF=G9*fxQG*R13_3FriJi;t;2ry0-*a}Q3AP$y)~aDjg> z)j@)C@^k*~4W}5&2^hi9z`@)|-_h0y2~H~TKeI~zH!q1aDt?z>0A+i>DO`MjjwK*w z3)9^=b@|1B9e~OVOF&E>$u<04sSc76eivcTa003l$1+TO0N?7g)`|m0fECUoRVx8s z*5AyQNGAAQbODs?asN`OQTL3cT|Je*cl^&wj0#?Ne-1^ZF zpy2})>rQJ)IA8_{pmYr@OZg9;8864*1(7E^1n;kM3&0YvzyVQszzftqpVsnkScia- ztdT|qFUQ}-kSCcjys$D0gpMs2P{?|$Z_F#eacYackBy*j4aaVraFM(me-}q0S%MGH zAVZYAa{;2)9Ej(RV6HY!Je2pubFMb!3iJ8OeNIs8WxFaq6=_V>qD1d9mJt&+t0S`wgd9z9k-CoBSJ zd=YD-IR0z_5h?&%*?8HzSrhCs=+?YVngsN{N@FDhBp^Z?Ru2*Zw5y~bB>^IA2*x*w zr?(~AEybTQ=nlornL|ouBP8R21FjcN85Fp8I2|jZo-(!$t`^P?=WGa;5Ok;JChY;V z12*8GKo1jlo+SkoiHH>ria$JT-P|lKPg0fH-hK=>f{6W_Zf$nMl`xTWyXW=&nl?QA#k~qx;&{s~p zVVyTnKp_|f|K^n9rw;L1tB|VO21S#IS*z;M=Lcjnd|n5b-TxHY6W9O`s*10|LdxejMPRg-hbGQenV{z{O<5%u2=C0H4u;KbCy8`h-Oq>8Qa6u47 zq+kx*atI^v5z)F_e{Tc=-vAUyY^1>Orvs=RA=(reZX^&mNN7>AO&S4Ik8B7ZL)BE+ zgB3}LcZeAw#JeUCct~hPw!b$5{=x{BgN-~F45R{asU1m(c1WzHRJf5q;3A>r=r(Hv zkl(^BjCj)l4$4M|Hot{40)dZ&*5ccw5kT1pPVX27QsKCS1zehllUg_<5I9L_A;L`> z0aT1&D+nPtssPq0Ksp;K1t*&q6C4Lgw~$? z`%jO*H^M=A2#)dz1DP2d9|8^v46(!&qTLoG2)(3#a}^1U0LmP2j87QkBV)7wa8MP3 z4I+rw2n1ddT6OgAM*{wdG9J*B2k>Js$Lb)f4F_cp#2Ppqu{djiA1v}FAz7Zdmf za|eKDesfkNKzRePwtJz+izNt8(Zw%54zAX2J_O@L>K|Ku@M>@Y^b!}7qJh%50y?PH zl33ZGXnUM>@C0}oGfyvXYX^MH1_I45_=mxPZwwgd0K+XH_}ee=N{F=s3~dZo7YiqX z0vM@(>-NEqS0q63$L|E!@9tQrAeorMwLkaABGCAXe;5wYhBk|>w<{WjO1O4zzK9YA zN<%gp!N7?puDB8g@?pf<2!=LfyTOQa$rE}8rb#)7~a5u2*Pm8$rrKu z9DnE}Mssa8X$atOZKTBTasV(S@utMk1LJ?{B}TJ-{=pV_dn#BRa8VjTV;l_Bj1X&P z3~dVwS2tHb7dLNDbcZ#;nt?_fZPpyWb7T;I9hV-0fhrPW&5@za0hJkhTG-nB!5W+Q zK4HHVH^ATkXCJu28i4*I)($YVH9%wnSdf3P#lIC>;x~W6eyeT}P83j9LaaHnjgjH) z`ag_~fAd2L?D1QG1JDnpHtGssAh$rQonL5scshVa>p#tt&3E*`ASDj0_Xz_zC0sHM z0!?G^pv0%tf|(~6dMx4Ux%u-^s0bO??gaxU8Mr1M7^pQN)^;z3;?5A}}aXe6TJ8LlfNq>mo2z(Z2xeVty0%jr@NG z*2R2G=*DN{35V`Uj!ELi>bK)e=ipB zi%GRZud(kB3-|?+DwyY>vuV)Jv7Z+U_(hxN!UM!{eH24Uj!ELi@*YY5m>5(2DCdEGloC~W<9seq%SL8xuZd!XVmF@Ur?b?xi7 zQ9ZG`zAbeNgLl@Kn~bYpr4Mx$y)Q(%{tPNItEvj{|G6~(eY|9Ky_9w9D0?0K^2lAw z$*oR}Cu?e;vc*ppIhw!VI7_va5N`yGSHr4Q%K*4{o7Lf$7~3$lrIsWz9HTob$z0kdSp*e05MS7!sjqHck z*5(Id-u8{X4mv9qbxHo`%DY|H*6X5bD_077f_86Rn#(c^`Zcw3n4*T>=&Qw!=3`&w z9bf_cqGcQuFV7oMtKG3UUz9UDenav3_T%qBv z6P*Ps!*+IsQ#ab!GE+q~USDc@6hRT>|NV1{Ce2kH6FQlM_(UOOvrN+(-!KgXW}`bgQ6~5mPv}~)-P%D?91YtWi<+C8w_b2ejn!1 zc7EvfFz0eX_^PO3fS0LZhOsP1sTIi+rxR2D4F$P_+MU$T=3uhUua2{O#tT**T@a*e z*ppQG;O;&@>8v9jVt&%>%xAwR&6jBKTI3eVP4zVOM2X$7$jJ<7Xb>-jN&fiWQT+D6 z$!B(cO(si0@g>Ik>=So+Jla}JGdxcn;|N{*kW^n@ynRT4=WTJlOsl6yo5bzVy&i3) z)T3j9ZTDnnB0b-l?w&Y%Vw~OM{s)?hC)wl6i9hq6iD|6yf6pHG)@x$x98gnH6r0rA zD(daA>jdqtYcu}J48^U{rvy1^qFn%J!1%J?3Elj`}AyjzLHeD}4D>Lna<`INYu zB9pb26iD!=50dKrEUTC+?q(0!?xy>3#=6sJcE6?_yH>U}onB^h<_+uPUaVqw>z5m5 zT4%pAFkA~ZsLx+H(t2qot?b>i?f3hK9iEsAh43kjx2StwJ)vMio0=5E!clbO*@e3S zHxUQ+kMSD~jE~~f3Y~m>ZyD|wPKtVC zKufk}=)I;Hm-XXb#ENnMZLgtwN*>ekN>?ek7_}QhOlA|(e6u8FW<9xS{4echnq}|X zGDBv`d39N{*)PjTHQeaR@^^$q#)W5klXhPfyvf-HmaF(yqfgIP)W^mYMLdq+QQbx3 zsKY@OR=9_9k0TF5E~`Fs_%7whAK;Bzj>LvCNKxJ93ub5n51~?y^y+sQd1@b3kg_uK zxtfvLO|kdLWqsEu6Vt0mMOSv3A8JAEt!HA`8EG7UHZTYtN$1#+zdbnj*@YihQ*#On z=`VYW{IW#pCn6#zHL?qfb=dZW`;$n?!v%Q(d3!Uf149No8Dh zlBZkmw!P@Om7PZDdK)e6!Rxzx8$Z9~DOT|%@pyU*J#b*)=B13zlUf;V1=ko0zPZ#& zhxdNwIq8J7JFv3i!^oj1`CWXee&G&kJ@DuF zcwODANKcuxUC+HruBW^UEgjV}zwD*qyzR4gn~SjXSu5TnTuL6lhAX}~``L?97TGE8 zI1P8RkbgS+`2*`SVUctZ2O|;bna|1tv!CZXqRw9|FnhWfq^vink)C@q?IwJYgX!#; z!DHvymV%v+FPphbmVap*ySySA@;>P%ulr>K8R>dK(r{mr(+;K4tsQC<3uYoz>g_1~@LD#yR) z$x$v^3%}h*`Y2;{@Hvn4tAWLBuiSUiL>FmCRR-BO7G0DrT=n{*G}y2+=~6}=31FYgFP#Q8l8rFFUc48LsVAp9`n4cBI78#(Y<9$-e)7b6hBAP*>fM>Yv>89 zCr3BfYw4a&FEx2Wx}U?c#=~uVnQZ@YQ<}Ul{!_n5zJ=0XLDE$+3Hv`d$XPCNl+p1V zOXTY%wmUyf?v_Pa77vw~X?Z+1yEEdo!t?wC#V4_^2(lf{mt_rhy9bN7RD2Lj)zq~hgmNjnTZZ^ z9&B+@WPR1N)V(KNegAO*7E`u|*LkhqjL(jx((7lduvbtnfts~9B$Gk6l<6L}$%*)pDn>EdnDb_d>im^IR~kIfI5F+EIb=xu}+~w);Bn=s(SXV0h{i=A%IR+iKvP+m1dE}z3XI(ez zaX#4#AKb5leUYx2W)T2;7Q1=wFVyniGW;rED#9vOLCQC1GHOcp)(rJ(Ekk8-EY8dA zLTJ&{3S~o>w@wy-$~Q+ji-LK>3d7x;@!q{JNj1C;nT)v#-wRG|MGEU)|28P_d?_S%C&>BG&|oj=yB~*eo(rK zVDjE$Md4YPa!bBBo#Gfzy#8>Xao5F$Z8Nkx*~fVHCEonflH{;OR(JfnjQ)~I;I_7# z^}VP?cbQaT5$$mxO!oS`s=@!et`JHBkCY z_GMt_vzvN;DqI6t5pd zwVvj_pS7S{cHSKb zzO_{1kEzMj?RN)lRok*$(`s*0;gR`N{fj27Ou*yw&$3?fhB>J{S5{k*ce39$X$%DI zYwr5FOk-@ht~s!d9Z&%xCzb~_ceclM{mcTRmvp|^u5fjhtA;UgJnYpmR!_Cp`PZ2f zygw8#-=p5k>wEZ=!k&GJU|lS`UJVy_U)htkGnh?He#{k z%?jL5uKv8@U8^gHWFjc{*%+zEGd9^pgcs7U$;?C@V&6e;SD(d~BuckMik(`1dpTUX zk3un1DAm^DA;FuXy(4cs2LqbT--me8%J`GiJZi#>PLfWRm)7DgHIfF^k`3S{i?>B_ z2s_NBxW)w)Qc7*`X!>UhYT~A1*F@^sW7Tr*p-*fU&oVwQDhb``kO+1`LkitFCf;i! zd-*lz=1C`SN#yz712I$0ms`+Ha?DL$=q8w4x_Sdc0y4qo+1gBB1Lsfd(>jw1?@bBj zAJg2Wp*&2>pMwI|IB<=p%`3(R7cYda1@k9nZ$sZgPf=a14?LaHId7g*A+GIjcw_D< z@2RMFzU)W3DgA_+9Q^ccUYbXNj#EM&?IpJMWhA|den!sk_2EJT5sxTdByk*$+%=FJ z#nIrRMg2$+H72NgB>Qk&?2RzY>iAH&E$&9y;I8gC#jBPA>Q{bLXN`V1J-1b+MWu`# z!SsyVBEh1x?5J;;RH18_qsT=^XO`Q=J8l>6H?m?aY_u$FJX+ZJF*}X%fx4_VX?G;> z&tOJYS){k$WpnsZWz}w_?PL7NzO52rRC&;d>UKfkbU6p@tJY9Qvor5B$nA=UJ_(u9 zv3-vd318Dti{%#Mx$_lc2qoi-t$V`PnuB=`ol!hKY=w!lqVBktD;1)Y=dKUZx2EeJ z%MA20Eq{Mu?`}w)L zMq4X((G+CV=YN>DO0^)aB{HOwF$p#j;krE2-j(s%T$eE$S)PQHaltpM#sjtZ>y@=#Wh0vkFaz0~f>qh>i zWA4%sYym|EY5kRI4$YNnV%Y}uVg6C*kFU;{P|+hORo?T7LNel$dy&U9h=+XC;8GAY@Va*>quLySvpb-VW)ji#uf%J=5oGBpMMpK1;KA2UZU&aTFgBix3Orj*A-d^n9fP@G*fg)wvAW$n8t>t$`Z z4WYX*=ZAw?)@!?s98b>k=Wk7L zpJNx55{&0Fxvj>3?du(3)spM6)hdrQRHTdm)#juun>pq&=*9w>FP{hxw*og8O1$0vla}$cy1lNT-JVxhP zd>L6L-Saa!tzdB#A#L;TYvabn8QQLNf1#Zc9@qI8e)BN=?iGf9WsyQ}W~Eq`SeZNu zekGG<7oJ|ph)YHXY_7a04H~MDN4_N9%rHJtC+-!`{waZnmmg(}2vm4>9FF98tpyyW zo{#(MUtHt&lFV>%6Dj6S6zsfYUX#W*@{OKP$>qyY@*2`4l?Pj>LMUQ+jIm?m%4wl+ z^I%>omO}EH-F;ymyyP@pa2{j*1MERZzPuN`^{A%IV+J;Ht0btd+*L)wk^Zn1YNSiM z@XT~M!%me@WA{BLV-3UZJ{tc1q$~RKyX|}9$^uwt`n!f5j~`wW{l5FC%8XMVO<7vk z1G4LPEGW^}t_SJw(Gjv%b$9vhv)N#)>w3Tr{_ncmQ3;=09~| zoxF%wr@1Iv3!}j;D0~AiR%x%P=V;Trt7*#^jpc{O-5gjoq*sVPu%essMosk|g2hNS z$Cg~ATZA&%QLXyuE2altju>}Ax9}vLNH-aY)?)01e5-VEUGikdC0g@a2Rz9#M#3r< zPqiGY&-4pCXyxs$T%|m3>Qt#;L@i}0UOd!tI&Ke3kNz|3<+i}rnbvhjCVhl2$>}yL zv{h!S$?Ww?HdHp$rM`|j^68?XvXw5i&L8gm+>ycb^yPk!Bl>-!meb zYd3ygd!c)vczv+bbE(7AanjR`gS5NoErP}5Mec)_+@}LG7gSvy!>F<{H%Q}HUcf0_&9sD=gj z!pCOLI%$D_(xJO(SJ?GsIMSvnYTLy70#&CW)ct+*vM3YJJPi+(E6oR<7g07M5zhu$ zD`p4z?any7`*yA9Q&-QN;}#jZEAKTCP`FkXs|aO7WBsth=-~M} z6i*5CGZB(huuKe5StGveQnWR+<@tPBpK~>3Rpv=VvFf(ntYq^`3C zk=tPErFxHf?Xvt!5_qH^G0Jef*9cKzPaS%Lo&KrURq4VJAwzG}_@x)188ZAvO^%Gt zrRDCyf|t4#r(R3M7*Vt=#l{ca9OzOJOg31gWCur8r{nsqZ=lLws6p5G{xQrUP;tuB zmT>|0y@k>INIz%h#w)0VsB@S4tqpIE%QSS+n{It)d~7<)JIiDIt_^Ckyvg9co_k~a z`8#H6W8!2?T|f5j4TqgXv8lYU&^|(E#e!lBePKcShkGv#W9w2RWM1wM^!s={xFb>j zeo*HV38%6TUH0D?mtRV zx1iFvQDGo1^C;hs{>nZwRuAEJ8l(^lheF1~wy(3`-!{pKTC~Lz995Au`v#|HO0(k6 zBl-h1p4|@KQA9%G__fsJRAzL^mm_C*Dfy*cTTKVtT5UeYP`;c0r8Koyy!Gb=my*(z=)imQA$OVe36m(UvEr}@$|{dL z*K0s3A-`QAG~=s`w)Z$I+l!17N_!QpsGo1)My-+RMwB4bNVeK5V?6|W=VY_$qk$yp z^EAB|&8jT}NmgmsNM}OLD#Sii&OR%?c`m3cl`nB5^RvkZvovFUyO98%@t@auJQrFi zkA4W+q0gMvy4nPs4Zf5zX6xv{>qd;6nttoxkiafrfqkm1v%YowrygwXXI~Mg!)JDB zO9@u*47x1Mieu9(jG9{>80$~5C^MEaq*__-ld89-kQbmspO;5Bh^l@}=>^e{Qp}YC zu%|MWU-S*JvQ%hxTJEbreml_S`BP_%iQ;vfaPWNa$!>xl-O3p_rK%#APNCJOgSH+$bG^D?V?{VL$`gk+bq4BwsNiTi%7@8-Gm zY#y`UUQE^&AGld!qhPPruW#3ueBFqNwSB=^<`GFh@O@a2U8&$_7xv0t$Q0EBt`Ftd zr61I7$peB14pX$*mi&csqgo7=i*2~-Ca@K;} zTy)r_M@QeO6frCe-2QZOX!?v?pBo~P$l6Ejw_YU592$p#&Hu@<`g zt-q(r_KrAznR`v$<%T5Itl5>0?S2`ai7Ky`zqL;ExXma<)84FeTA3Sn>NZu#lRcCm zmOp&&lv@VXnbRwtb#3Rfl56_Bl1_+B7?J2u`i9DVupK`&+^EpwmewZP>2nKSq&=9= z;MT8v;MAF0$Q0+$z*{o%H&?h$1-#zzqW@PWeeLr{Rr5K$ePj8>V}`{pRQFT$R;)hD z*SMjI9&}7l%@t0|53@Uc|6<{MgOc-stW|0tb0Fnx=oQP|dLmZKS+5uF^}H5ar(|T8 zzVqJ*PfTJG%2pylj|dLoi9l|?tpJIS@C1cSxV8dfMtGuYnyhVXExet*{w!9F+Orl!=rji z0NouNWrvulp6FpgXbm$@dkYjO@^begz(YuHzP|vU^eF*4e{s?Q$lrYj|33^9Gdmks z05K!b50HlHVg7yuQF~DC$@F<`Xpqmj_TTjdsP<%50wEzn{7Yo8s z0hOTr{UpKPY6)ndfQN~bx+P{BDB2v@=HLGw8vp2#;tdUa9w=yh-q6A)W*+E&+2W7m zWAjcaJ{}Z?=adpN9u#d8(7NX9_otR{>3{S~@dpS2Ar$b{v5G9jObEpc5Hu&%%*DbL z5T#vgT)psRMx_7IKgBl)J|h$_h9hQ1DB2)+eJN%x4k(lx3W(F-8|4qh_J8Z9BJhZz z5}*|tC-gq zIQ77(t`ajabYrC8s|x(lF8}DU;;pb!c;HZctr}tmhobG`;Ob?Avi;99WpwY|-><9q zr$Gd?P@pG(>mimRVp=HL5;%4_e#DOiJmAen{Dg$i-|iSO6GG93uz?`uXqiz5l#LbO za}!$RACFJ*CkY-U6rX)Y%#={Vq49@R1BvcO{rkCse<&n{j|c@43^+Y^Vn&4ihe4ob zYDk|KFQ!AHJ99T_5eN&4b=g7Czaa((SqdwGMVu$>8>@$zjjshH*g{~Ce>_ITpEF?d z1*;GQCg*|S4-t@~A!@ba-v+@1HH2|L65Xx6$uR?yFgyZBNomKpC0^~HYf?q(@8VB0t;gOO+;P^4bX%rh@D;sx6p4ZdN7Ukw* zwlQu9CeXimtOWiDG(vD%M@Y%vYb=zh!i*x~G>nC_GjQa+zz%FfxVrwEmr7`h4ec** z4)9xxRSM*4h+3@}lEw!D&Q{)@UT!W9=g@M_1moi$k5=&}jwD2z+aS*Y1y1bB0yM#h zTd~;Q#u+*l`ICeR61I7_RZ@Bbr~?)f9A5>H_@JZ}MgxdA=L`CH2<*OIHm;svIl&(u zXsM6QZ8nnNU>PT0ECH>h*kU0`z~v%p`C@cl=09-uNVL|;CJg}=5*(`&sMLZ10WGGO zt(Q0l#Kz8IW^dtY4Mj8rV`B3een}~u92gJa)`Dsw?D8QAvNXg>>_ofmE;e5FZq{ZN zR-lB8AgDuY-u(Tzz~56Ofwtxbxf9~KV%JYeU>IU0ccP8q<>2mV2DVpwR|gMof|5EU zTKebj&4C}%NrHny9K#b19lPW3l@P^|n3qonS9fnOGdFK9=;CgHvH*jH5V`^?H#U73 z0&!e7B#iL@MW9xQXsMp)QG!+9#EHrgtRVm9loE^*a4?3A-gqS7zad_d;J=Al#n|e< z1@(}ye{)C)>;N2$4a6tlHsR!pB_W^}M!c6e_ZDwgOE+&6$GDvZsP_`Jf-yJ`b2kIw zo0}CnP$Af9(JFC&Zx8&P77ixJ1^^Veq7qm|PPhyR_lcAPirHyF7T3kXozM>dR&R>G zXuyHoCJqHE0Tv3}sVN-fV2Bk3inar;p}`#m_T`E6htci@~7nrHLgDI65? z;~=3D01}FeSipXRi)4s%O~si92<3y~I(!rT*WlUwc`6)$ys&W_I0E@y9|8wX2~i6j zJDzm`{Xhx|xRxMLb-ihC3=Sw~*w76a0T=`u)WSi6MuwQ3R3Cc_FEa<=wqsTl0&{HM zIfVnb88&VM&?<}E}H#0{FuL|8FTtYVQp27jG3mdzEqyxyv zU;|t@$j)Gc8=|(0nT3}Z%E8jx>pv{Ac}EovxMtY!4a}I|jw)m+qRvZsy4zSe{10#* zBwBLz@0}5XO&Amyf|_>lKj;hu!0vEM2uRKlbzW*?>VO0c)GQr!h8CP=B__ zzj?0s9=rrVoneDG9+)KJ_qq!55!gtFI4y#mG`QS0;RxBht11DAXV^#%Y`g%Lh|Bzg zoD5OtqcEpJ7+}wzYC_N&-J6>=zyZNUb3AZRfrvX?mH^Z=hkdtjUF(7;p}Q<;ps)NHKWlFo18-cmxjw@LGW|j;j08l z4}f#_G{a;(@uv_PgRx1QfVwJN5=#OB-{|3$0NEUDEJU1Rb>B$^8~G>Tl;b1}07;U#37Ws-d0Pt) zf?4x#N2CPC0Qj>FgeH`=$0p-oAp1hp2u(L@YY0JXO*l(7?^nV=cku>86F5$|YHX;d zlBgM)kc(~YW@QG|mV!=wLVIl9k%Z25a0w;}U>n?-1`HgM5_N(JS4avDi#M9W@FxqJ z`}OxL2mWC(46L5Gd=rRTH)?EQAn`)f`6f*40bFY{M^}eGm)fE+Xqz;P1PHw_P60qP z|8^E&AUq@L^wa;)zJMmdZPpYZ%)+J+AjJE|tO0o!qRu#3+gN(r+5JatDH?_M_l6+Y zR{+F)BhiGvuK=7mQ74+PZBGQtC>jO$_jUlGCB|O{IVDijg88@*i5J)ecMJ*xp$0L> zTAo%Y2X}%q8#D*;?~Q;z7{HM@=Ch)W@ViV96uMwSFCs;(VvJx0^#-1Gu<;?-MgHx~ zlfW9l%fcPYz@P#_Y(5F7B_Xl@O_bp`)*9|88)s0|0;=R32-DJ1|K^3_Z>->8MiO0M z40Q+MmDPg(grTh?PMjcjtVvMbuCCB&r>Bnter-Mi`QJg?|4QIRVwj@%1YRI*3XV1a z;1jJTE1!+=TuAjKGWen9!R)#e)$I2Ed4E7s5B(e@ zmi&vvl7BH>QQ*&E$-kIx80akEcq8xh5>#LOa4V-$-hV}`4{MDVtx-x{zYQRzep_k z7n3T1ejj5$%rQ84jV1pgvE*OOX&-bS`#eeP`@@odky!FC5=;I?V#&WqEcqA6zhd48 zmi&vvl7Ep{@-Grg{zYQRzep_k7l~frj)Ij4gq_gP#7tM*48sz6LEH#E{cni8S~2`c zR8>#Wr*EWvN2)^j&Dmnr;z_t^Y5A+eFVZ*O?YVmKoP{6#uT|ZT35@(#V_u3JUyj`R zMq9mv?XGrX=-grQ=d0JuetjE%zCJfUP+<0JV!U;Jxxmb|ZfZ;2+ThjIZ|YgqukH+e zJM`F~sQ>BunW|?4fkEGYE`49}TU(z+ZtbMJ_Po*TzQ{-F^||rc(plS&rK$6+1wriV zi$P**<7Q1+zn10;*4fs7e3Qsx|9TeA(tjv0eZ59{)OM|A{o3ldnHvD|UV9#+CEodL zW#HsdlXI%g80Qztim-1n+y=MK39rOu{nzgTR4ywZCf-BC3= zoMIYts(o6uxaDzm*r3{+paJa>#)fR3n{0`Dln*i$TBbB^$s`NlO1IRP0Qa)xRI}Oo zQ*5p??Z0$gU9Vw_W?ZEj>`jcE35@*UYIJNVRh!86uPp_SS4-YmHil~a5@;$jrVVzn zY!1^C+^HgZnayz*v&wc=RW;I`bq;8|7GKHv2!nM+&YK6bJ%zQ($}rV|C&Riv7F(`( zy1}&j61Mu$+6X&D&uW~mi+9Y|?K@^)CZ&*LG%3P&)XqxMv%+|lU-x?krKA)J@ zZZ#_`^*x5XLc5xmZ};WMujW&ENDUrcO*^ra$C?ox$*~ca@|NTtT=wDTt-PRjarMJA zZ7J+YLTZY3y_)g8zVH4WFlGPw^oZ6wWotBhXJ@AcuE#{1eS#fsJQj3VfQx;HaEc^1 zBK=UU+Oj4oior2NMs!ua65d(RU9fm4;#gYmjbm!x!-S8e)mD7_ywJqRdPT0$poB^% z%jt$K$&^5RdYeh$8D9VFYo0Ii0`vSxjN1;>DX*Z&9%s1q%Btn=&wFjop|JieY_U0< z!e&T0)S7XW?dr`3DK%zpht`IN-?!6tE*Wa(8)Y{=9HzLHkj5j;FLl{3>clnApftsc z3mr3`O7gybP-2ZgU|$#z+D%D+OYVr_EMnqVXzG}%3nQJv^_z%V@7>p44{vd6HPj!s z96jf%FVugt#^cjO*Zp$l?Z|QUG;{8~r^9Y4o<8@wAjnfLO#R8Iec`=`>DSs+F=W&k zo|h@wWMZq!`C=J9$Zh?~G4#z?#h1e}*pn`Do{Ds$6O2MZ_nEm*Y_+5A{O(*CX;}gf z-?YX!)jU%^pMbF5t~GMfj`v<$eZiQ==T*y+b@SFRv2Gm{*q(!P~f5_nu<$k-8Pa7j&8OhB@{^B7EZ?cUj zxSl1SY`QGf`aT`Z**n~Psv@l>R7!s2C*PvY)%t$4y)!0GlhZF^#vJ^}MyS3G?@fHWx3i8V|W=NW%{)@+i~ZU*)0rYhE^A-( zU1zSX%fE5kxHaLbK{EI1a|-#t%to!NQ*XeiG+ zt`jA1_nF!=sHqt%W$?lzpL*)TFOL?DMBCa=#(2yyF7@YqufD4Dg!dK|UjR+xb!Oy? zZdnfDRi~rrx3e zG`Wzs{I2XoW$%Nl@?TsThFg@yp2~EZiHTnv=M*y$T29->6y5tvHz#7>`}gAwlp}{avKmq@|L!#>V1H z*wJFjj!q5by9IIN9i7dLg}rs}JDZ^ql-{cXZW`qk#PR7DpK#K_ z&XYNYmfY_rB9136jyJyoT(jPpym9=7xL-W`*Zua&%9Zu-L1CW z-!pT6L^{5|C7W}w6#3L5zNrf|aEK)k81f(rlMZerrb($+? zb+;*NLn-quufr(^hm{k3hI|tOsT!2IvJ6ES{4-M-f|>Xw3ROiU3dyg~%92tuzQpVs zQmWbLn>XY_nuj1OM$n#m9B5bXdoVKTY`uZL+KHk?nEdUnaGRChxbq?Y3&)!2K|EECp89`z>6(Q?Y&(0ce*Ijd0aq^Q?}Ho?!-$9L35ICM!)hbDzA{eC9uk|;=iz1y$~F`vY%vjTdctO zA)1a%-It~n*I0jeYs`$WPs&Fs*nD&eJNiOujQ6mOCF_2ngABJG)*Oz&u5}5f%oQ32 zyHIhteEKh>rVdA-pP6Lp&!c_*2-(Uzy({?#p9$|@srJ49@YEyA$)d;1+YYmA?Fb;d zWc+PAo5r{8>O8y$V@TvESLBYzUEK3FfNU#RtzIE-0!P5$+x8fB^*D;;#QTP-2(xq{ zL*7${VR3YhiL7RvFVy9bvk!Bt3Ufc7`#L5pmw3VLfYn1I&Mke0SCi(c^CvGPeA@Tb zc!62^N}w$1G0K3bz;n>*Y)C1`@{_zxFox%c4Db%F>lrHT87fF*h7=$Lw-V%ZIKp_!p_f< zhlNgiygj)!PoVAUT^f!M-e8pr#zPDj$muwPZ|^cD3;zK2yWXzI2nsr-xau4}eW@F7 ztA`aRe{r4frZwFyEpoy2P+^+PUeVda`Dw#*&!mFi=Cifs?lPy>-Zsj7fZQXj=BR#W z-3?Mdr~5Yr^ejz_pA@Sn7^bDwJ1aF=J~7vL`IfP;L(=KxTl75d=qgSTwPz~vCciDY zxVvNkc(pf*IwY?(I{Puy`+fM*KcwH8E9f}GQuR=v%-AqhUeDKDVOUv5N<#V6Y_vMD$ah}XSgx=33OLj zFmy<^-68U@q4CRXE7BycCsFURLrYw5Js6tS zNOhw)&+k-ZYRB3o8*}%I*uF8`SnswpojYH#;urlRk-nHRLq^L<$(>Hr zQaYT4e8Qa^m7Ljxc9^G5np|aT%aN&(;Rw#iF9742v2A$nlW+3d5vn%E42LN=Yv<&# zfUF%q7VJJ!^!5bD$u%#y)ry2hkVkqQ=-lgFhZqueG^4eTwE-oZ>LGbCVDJ)f^9>vabMzX zK_2M~m)PjCrD{kxf^Q2}j%+~>NuwS0?pwB#Q@WGi&NXi!S(5p>{OL~a0wV`cQSQSl z*@H%1Jq5W3T&vE@#XK=i{aksl*$XzHCV0&DlJ#RJ=2piZa6L$R%+~gm<1%{Eywn!C zbDACUQKr#8%AJAHcEi+nc}`vt60N1n+R3q%!m%*_l!Nihzp_Khn(Qkq4_j0Q_)Ih3 zzdO@yEZ8=;Yp}ga{;?e2&jtP>A0x-3yFSdd?!VRW)>vVOqPBv>r7qe$u6o+ya}4m< za}4S{m%O;he1XyKf*(LP#as9aDN{i#r@F|)6%!5a+SMv;Pwf+3e)ZOV_8FgXj@FMG zpI^JIy&S69`5w3mYh{h><>@~ZmXG9Lx@Q`kew<%ppr)te)Rz`*vWJfwnNznu?TOCY z%@*CKwu{S&-A3AheVmHF+k7`)`;HE~2jC~rT{hfZ%*K%7XuiVu=u7w)Mv-?1=5_a4 z43WwYbPJ2V)5y6msJHwv*;3Q0h1(#avkrFY@aJ08}i$vu)feQKMFic(wH2)aFs(+t9yPS0IX zx9>Y@7&}cm4aBqg9APx`8zwi;r?R}fzac{M{CVg{w9& zINqRAo~G*BV<4$ZI|*&kAx83C^7*g%DaLnvZk-4hIi~G6;MtT>vv%xK z!P!R|J@Q5=3ybsy;N(L&}x@p&$T(L z(ki0XDss5hd535T`2QXgTjZmcmXBU4P?*@pWZU?0rs^GJ)GW`FU^%`%&bRYBUqhVm z_10r!*F)Y;FzHPV{1Q5^oa1Yv*5WC0HEF^aTseX-PhcaLhR%n^e$kv7e$jjka~aTJ z8ID_DlvjuLmik^SY47mgcSlC~!GnDA`?a-ObJ8Oo^)JYXoHuu%vf8=g z=l!GlVWp5dTbBN9dTAx;yO;NH9A^ltV=Po)5Uw4DHhCTHuWYpzGD^}M!INZFyd3EL zxSMk1Xc*sM%J9gCCY_uO5 z{*0wgUU9ziqh~&g*CW=Q%=&IraLE7Y3eYX`K2>J%;#WY$t#^45qpXMYG$qcu&6KY> z^ExP;HPRNOX=2n!do78HFg3pwGlBcZg=!Ur(mukYitV>u-Q}hIt$0$g_l))V$?(z` zt?**He&xQ79*Ly8Mk%gV-CSneiF$(GYQgnAqV*$FEE)j=jD_%RP5}exjS9Z4c;zVt z7y)yO4lf_-?l4>SUGP#{bk9wBl-HM+-h;?~?(@Xu!P`fl6@)7rCPkxb3(iup57(+m zcEm3Kc$|0K^aii+(;V;6^AQ!xLpq;kI1`Icr*>9fQk}hb;k z)!n`Ixyx_C3UT>^o>j7U?x)J88wFbtl)1|kyH}d0ZD!5L*tH}dlvnNS%?&PH{;^hd zigD$f8sB2b8|^1AkFKTk`wwal>@hsypnmpUe6`g>@4@KH7S-aN8keiJ`F7T6Gn4ei z*hJ>dJUoq9>`al|D7Kk-}2D&1Z> zFVC3wx%Su=R{>)8Rj%8sE^sL&U1H8%0G1N%G%% z)=2HvUz(n__Sk&i#LMKP_0G4bwn-k{4%;7*tJsPOu;HhKLP(>Gl>GE}*mITKHRLVH z&)h=6MCM$y##EB@T==63RgH}8!`dR9JJ${2Om)J2!a}urPZz!VZ}`(3qy{HPHug$J zm!hj#_;y~FcG`AI1p7&BK2bTtj_w*)vbYL;kZ7Yzfuy~brVaTI8ko-vU90+BTC07t zHM}!;Bw4%KdBoH3o{U?Pz`!rFK&^O1n>7!lktNQA3=A z7GEcVDU~I(I4nFT?lbggj?^c5jHyqqsojiOu%2|A_UDfHMsZSINU)^)SOc$1g6tYiLoyYpowPVlpEK88MVa0n5dO$VImzUtn5{U&CCd9LT2LzUd_QyDUiRJFy7 zM<|k+!$RlSYHP@$rDNM&V@5jk_$O_(qM{rnA9g1fdJu3}8ok>KKY*4K4K|iXjMh58 z-d8+5v+6*Xp>xl>GhmWKUf^tG=>9DCoEu2s8m{u$>&-7Ty2()7dowDhU&x=LTKXX7 zkh-e{_pKF{r7IU`l0IVmG|!xl70)r2r8pr$vU4=6au`RgNZ%nqr?2AviNfuZ^QrW8 zlrtp`4%L3TVvo}13+7z>_wISWFYz2)F}Ii2(!hBue+1ZH(u1WUrqKaUda&`1bP^EI z2`-@nI!k}KbLZghJQ3GftCG(Z?)$QIVx~lHP4XCH9Q6k~+4c%O{rkO#L*$>`y9<^; ziG5ec^Vbuem+k5grh6~-J!)KZEE!3_ zVN->QAGOQ&_Of$Zf`6!%K2p_(y~d2=S7CjEOSb!$Y*oIza_voT=uJPr^-B~z<%3cd z=1kE&JF+Hqe1E{rS{Iu?hkQB``XZdu(Q1hKeq<%thpXJGaNCN+O0t55T!{>_o+FYr zqEDU;J>oO^(2(m;%(~_KUSme{xf9HaOqYWi+6< z^~xR;yo}sAb82LGB5A@Q@TYUBt?6kVV~?82{VeJd5>v{8pJ+lGY8Edt!oD}BGAcQ) zmR;^%@&H$k;55eKw@ZFdfCuN}J>J)JFK1Y$E(vV9XbK zHzmh~l4I+3f-xAD0lk~V*irCq?sZu)qqZIC?7VjBv>y^xEPLWixE7f4XUoXf?q?n{ zTSD!t+?ykJ{)WL}|EJDlb5>3s4?j1-!{5O6H#>Of#H*A=?+tecSB_vuk4k}X^k3CE zBAd)n8_XXrP1-&3Kp^~!=g@5XiK|mh0^vKnXf*bPkG0-!lS9g_>9!B`k>B@`jk~|L z^i6<4Vc*Xl!D-9Z+sg}#_rL)o<=%Uj*Q~|f>iYl4nbw*5f|A>3Y>*=R?#$kW1GJ8_ zbSA#=r|g%#oP9ouWagCbK%{9|I2^dR-E;q!WGxGW0}YK_2 zDn@&ISM9jdwG7@YjGPoXbGZ3FuTBJIjG*sJ(el?j9qdHuzQ(P6yYcbm%nQ!ljQ1t& zRHf-Si-ov8lu+1dy~((#8nO_mv;L8mS@mpU#?u`X2ZgLc>J{fH>KR&D86wAMq)A~) z*riWO$@20z&E;UsO>{_MRz2F@PENhl8xS1e7UebZL;t<-{Y$TGsgJ!p!yIp40V8vVIG(=M{;a_^gaB){idFu8N#yl2n$aUx zEtoX3os;)5T}n!#eKX~UaTxZi?ouhbXq~8j;SA)Q@GgMUUBf*sZPWboKlje`@9N%C zf4n}*aM@?)6lFQtK-%{(nqb#g%}y>C@>G`Pe`bf8o3tL3p$HOnE7fN{|AKNYbKjRB zM?asso~MTAJ1t)bpE;s(vOBax#N_PxA8?D=QMhSdQC_#KL9H87U*KkvCmmI6Jq<}Q z_=kV4ma&kG)M?}*+E1q>x4gpYnZ=kDzKux?eU>wF5jaj{r1Uc_jM6;s5S)4w7dR?- zzQ~_iw(Ox<(xw6j?n&DVBtN`i9XRw;?#ic~IU^CbFB_8NhTLD$qx^ch|75{luHBBg z%p)Ym;)AX&v@p$Asa84?ohoTs{w%rA3yR6g)*-Q(w<4t1GL8)Qhc+4a)Do4lQvm|}7_Xd{z-N*>KeclOA_IF7EVmN4?3g|c|jN7u#( z`pnLrqT2OcMh4pWxc-iu{PLH@Cf=6~G^#(>Fk2r#gCw&ueGDSb#yeK&&|qjdT+J^1*&d6!j+nWrFHh~T`MHz;!MH7iM z)FtZQ8BD}Reoiy(Wr;9^1_u#kYT_bJ>XHtc0$9|62ZN~T81~vB%5YaJ&j{5s?J2Ig zKKeMDvp&r2(gk0i>&{w@IHhcb+84JdE6kZB3!fZSzisv7VV#Z6t!}^jJ!!F07EGbf zB(dI^J1}7nI+GhJm}_rWx{^96DM~Z`FrT8|cpJ!Ondr9vv$?OQ?NK z^5*yJZ-2#0a%9d%G!OYE%Qz4oQ2TOI{=ArU@I!Lt_jT8ON>1kL6y1+B@F_fO)OCNi zUe`BL#iB0sY;Ra}A9WKfiTbmUqg}!EH)FlJMaRoleFXx!g9EchO|T!YN`=jE$2u~^s;n!ClYDA zL7ffCsaUGb>)TAOigcf!AHEcjU;8=O>XYwOr!pdJMfiRl-0i^o;Rd#EMr8aY`LzO* zrAdkLw5jg73<~r-3hB-n2gnvT)6AJ}8gf?V(T}Nf7VY`w;&ha!lK4$M&3($MN{Wji zqpz6+xfgexFp|vY@rZ6dJ`8`*EO6wX6MN=-(os?2>?y3fUEKk(g3$y6?9ZBTrdlURxG6~iLo>3X&Eq%sCKljH)` zu6?4-$_RND8nzl5vV6r%>M4JC=sCW}rxafN6d6!Cz*e{1xY{TDFwES){BoAY+pO$c z?>(O0ytU?di=C>%boJ2F;dA$riSow+IKRK}_)-i%*+0M9`uI*-P|WJ$Yc0Alo77vS z?XO-2EB!P+sZMCzcs9OE+(Ylyf{pjIw`Y7v^DX^br)>q7n9|o+FW$Vr{&Jz!`Pus8 zO0_7eX(WgJz^OYbM~pRXK8R^;t!fSgt%j_JC(4|N`ELw6IvWLNNy*th$Ay+ zFo`P$z;TBionN+BNZ-#IS)$4=r0L}Df=ooS@ntu|PSwN4u)|@nZ3Y*88ztj=hJGt6%fI>mIJ^Eiq4>vpTRe%#H2D5SlUm?>i z!NmdK=KQSxyf*OgaP`@KX$wj^0kjvqR`jp||JAZ`2Nkv83w>iX6>!TBSu}(4HxzXA zbpziJQ3nMzkRr$e5(n@9vS}AbCcy2miHO0rIT&zIdWtC!038)mhKkS0zwStXoo#P& z+AzSsE|AIhhlBwPLbv-3FhD@3MB{b(udlavR#>n?~rz=>)5$j+u0(GWdrQ2U7T<#3B>=gDh<1(U@_WZl7A=%_|9mD zMDg$m#BLoD|A;rh76OaTj?G!dcRD*HgoCdOju1PCae?e;Ow}$hxd4y@%nSoe4)ED$ z2oeH#rn)*o{<{A|SCRNPV*~7|7gXF}DtJNV(VwCld?&SI#*hCYG?UnQ*ow_+hk@w^ zQ}m7RtaeBZ$iDr5U~)<9JY2~Apgi6dhf#(q zCfZqKh7D{-nn{RY`VH_>z-Lb(Ous>SWZHqI0{k^_LU>eR)ebemg0>^e;QJ(l1( zv>npK4j7pOObAYo`Nt>~i^T=-517RqI}9`m3=RU{;qAC$SonZ-F>V7vRod;afnc%Q zafr)!&TfY^arUwKV}gj&X;4*%f3FF4akx0ZhHNkKz{&=AhoUMDRg-+sQLx_BB)^$l!%K1Fb2LlHX%R0g}XZ(M}mI~OK~Is9!%TB zdTiV!Fs;H@Zzf0r5gZA29)*el+a&}EZo+r+5hwJvhT? z0K?JX-*zyu!(%bb&8ori{^z#R$tlnI7XSJ{QWq9-3LUGr(T%Z0BbW&6hQRwl|rJ4QUE75M%l#ty#m;Qp(xS| z3EEwPg9RcCLtzD8QFyyR1PUO%DABB9oIN*`QO*vPKyExj%VX@|NK_mwpwMju|E5J$ zTfkW)pe%xRr~rt8wjm=}hvZ=Sh_SQ9Qw4C=2q<%;9V!5fsJ9XKVAY6;3q-}Xmrr=A z0L~HtWefH93gC>0$P-}9hzM+*C84oF6nUbBUN_^Z0@y1A5ZdiHD?${6#28=*42kT9 z;zUu9ErGAV5cHgYy+A;qtib-h4dBcPfWd{Kg20e1A8HSxNR%pGkA&Fk1BCFu#f3Nu z2uosCgTO5i*fV3=0LY2JS8hGJ4d5&f5Gen*9X0~wz5zM}27os3u`v>WYzTa%)k6|s zuMQ9>>$`uD04oDV1i2)D+CCh>KQVs)V5x++r*M!2*x?~U_}{WCu{(kYU}<3%NH9@g zrV1gYL?rQgfdrNaFzgL<1j_L6A6fy{rkMz!XJPOiFl2-TMaUw6iHooJ4rD7p(>wgU zan9EeD96Vg3W1ChFy{RL5VZ}ml-NFF!qdG2?9MvaVM z?@$DI(L?J8e3bwvOh$S7?ywbr?1De%Nq>CCML>1|-kv9+#sWC@E;<5bXS_oRK>y!9 zPXZ^2+W`{TKf&AcB(wxLVKQvzF(Mpf5@6sQFyzK5v}GUyk}UA{JP9oUPK<~$vEErL zfP+keZ72sQ#lozZ;Q-Enx93S{32;^lDF5!AO0c~s!pTTON`tq@Nk|E--0XZjt!!|^ zWZ1u*FvGA`jc_muU`|!wV8;ZL;ETjI4LWOc*AA{xIBRNy%4MHH;y?xk%1+sg+k}^;_GL}Sze-;MLT@_f4nT%;b40SW9a|`M-zCQrUp)7L~xduC|uJH zCHUiB0pjUDt`;zWSH|a47$5;oFo_~n{k;S@Jpk!dfjNHxD=f^3EDRh<{NIS_|9?51 zpd%>}oL~|K>H2#KaK=H=?Xo4%5&oFHAoDcv`}{=&CzwR>$#y7#$oA?9XI_MXe15#G z=Rs{XiQsH6pwMhPlmHNbxAE$rya^Q?ft`04IF!KKdLFa{IEN1?D&5~pfStGu16df` zt11v6ViuM#Joco}^04)DwZfec{w+Sl9t}a{gQm(OLjf%FiEU2`JS^&h6tHkZEAc;J zUlAxY;omn3?9mY5wHCfk{{QKJg%H_!pa`-N(CbL#hye1n zFrx$5enFo};UNkb(=cp2+->YUeVshqu~$(jI_1uq1n4p7wIfmtNf0nY8C^&d3g~OR z3!b;dKzgHj+k>rnEHNa+|NF%De9{69v# zMSo1>FK-6i@sMRBfN+ZPB1B%1J37cKvcM8~MUKqKD?~~~IckB|C_^da6-};{K-mW& zUqkPQGK)dJhTcyCdOwJ)D*=&pL9m8?e~7Fr0g-hjAhNCmMAnsn$hyG$5&C)P{UEZg z1Vq*a)|2S(Lu6eEh^#9Ck#!{?vaSR~)|G(Bx)KmsR{|pINWL*SA)wzXy?Z5peYLMQ=(V??dkg zk#!LeSr-A3brBF*7XguV5fE7y0g-hPBGCImWL@+C4&E0c>uwWm(cKZ#gCL?ULKNAl z|B7g9@n}NaJ-q(b=aWJyOjB%Jgi4VwHT81#?b=P&b3utMVZfFC;>*1DlfR~nQ|)f# zahj#ijEP*~YcZB3FHB865@NGBSt}DBYDImLVavNdOEHmRYxNtO&`5HV zg>uKGxvl1nsjaiCQ}s`7ZEmhjZh41qa4q~KK3UH|zR6afxMi8;H5S&ewNU?is55-? z+ajC$UhW@@;bG0YJLzOZlPo4LJ^mrH>8O-`Ba`5m1>@N4tq$pnBVl2yMO*5N+L}I= ztIQd;*}3~YI%L*giO4-;6meYEX4-62=B<{|VmMB5`Ny{yvW?b^iPo1k>=T40v0DwQ zpGIvSjsHySupH%Rmm0q1l}&r;S8#~8$8_6xUCDG^$#~t5iOk=%3ylFXbs_8L7d3v| ztFN_)@srwIyb|m`8yP<4V0AWpt#hiLf;f2V(Ic4+>8I(J8+IKo35aB;C)#+i6gMi( zc-Vx!WRy}=#FVnrVb9v>IyD`RWr<_u2_0sP9phhKvQtmr@Slq2dzpA)_gCD( zyGmB~`pz66U0eI^ecIeAB}!;Lb7S>Z4vN#oX%zS{m7-9?F-;*$@BdJCMSnZ$@QevqFQ6Z5#+aQuOp za2a>9%#c+dVUO2ptk~>9ep&O+3Y;N9ga`T~v}|mf?E+}*T4PDa@dS6^~$)i#I+ z2O7?9fi`+>*;AvrhQhKYw->4%Td8cx zJ4JP7L_P_(osmDJiFj5}{w!QKQ=~USLyxNY$)MSz6M{5%UBcRx1=1BP<);LJosYXl zZw;fWuX`;2ake(u4&su;bJr?cz7D_sI{c-#=H_jm8_JVQjCnpHz!=*D5E>PHKi0Zk zw^|ae(aZ3(VpYHYONrb}e?e-hjDyl3JfZ*0B&@_rpE`Rce37IneV^fq7OUKugzs_t z#JWzenl9H~Rb)9?ugX;r#;oSVAntKu-htn%Jk?~r%TclI} zP^;TH#fY3^Ny4q%{I0y8TGL`jRfN;o)@&+;go{}o)5Hp?eT%5+idGJ9BaKpL(3R&( zWG{$5suQlFSwI4u_*=*4P&X~XQ&5jaJ_X)L+u?6>aU2CCXX>Q~;(}HTD)JlzzuFrs z@pFmHZ_E_63MUxYFc=o1u7N~ns+_JeZ#$Pakxk{nxvbfA&+o3kWdrA#^w^+yFvC>gU0?=*e;`oNB` zJd>>WM&#j~B$!f9t6op*mz<=VvP{pB4^2dvtEZKLXfTlI1I0^{LG*8DZ@Di*JX8JV z)N@yEK4Z(9$ED5~$Fcmb6b%By9|bMsp+8|_i|{n7?YjK8S6NvMwJ>^iHR z#){~8cU67{al7U=AU)4^47U!6RG!HG*!`d`Cf`;GrdeHL`GHK`SN69~@P58{VTEg2 z``FDaSQhJYvOC_Fx(_zr@6x**yLa_hS6JBP{oSGccXwZjrFU}(zi$6dGW24pcsW^e zyaP|;Tr-`V~Aeh$r?xf;@3yC)+vli0_tn(W@}v$M3NQY&d; z8xx)d8+WIoRTo9{jOs1@`rnOw?WlclQgtAx+g7wy!zz_DrA^cE{JC)gC+~&vpPFFphTr(bWdcyjC zF~aY3{Nfbr$a#s|Lye^@HGONasx~6?B%L(6n08F=D*L4DN&l7*c9Ejf*SoCXUP5=tnLSj~GsonoJOyX#cTdPY zQ*wtt?)#PesKRFJeHiBntv0==qphml(;e>ZjduqG+GFMYJ9Xbo8?jTrfh9+#?XhGm z`&JS&oqpTd`Z#}=dy>uP=UUdsr)h1ghUp(URCNop4DAux5@x9nc+=}k{rHg5Y$MsA zMI^(u{7@!_E;FO>D`k%^lpdvzJT83}uDqGiA@3+!l;~t_bUIhmH1=X1ZCQttlP~(C zaF=zMNU*3{`;a&=f3wd#8rt8?(CXMe`@N{ zczUdsLRD13@5x@_-2MP|7B=SGXho6N^M|Pm=7jx18j!s=^nza79u+$YsbhIW}0A2OnN_r*wG#(2aBL!rfB+|lfB;eC+PBjDUDjY4Yu6U4DEBnbBC!<^fO=fO+BZG{ zfy$YeOT9;R%Z}{H88Gr-UQ9|kMEkIKBR%V#OMO}07GLqkLwXaHpQhIJw-X1Y$GL*J zIJud{1kCg8`pg0IRWb$ctj&IxEAcWJdHgQLH%*5369-3fuI<%1&FIHqLwivCfah(e zQJo9!Wv@3j8v8qz27G!QRRVkbg36?4ze^_jycP(U{U9K#_~J=-bn{@oenisL{)R7e zBdYZE-2|1w%G~^%2Zf!k2@<-Rlk>6@zi)y%az$q!VWr#5TGS20hps7$CzhsWSD&15 zE;TUoYK7&(RKKJXgbb$>oOCB^m?Yy=WkpXU$5g*mlKk-MEJ&pIL=GZX+K7Ga)!>IK zsea77iC9ij`sw_QU>?v-gUjd+z@o{tyq?`dQkTv zJy`I=)Ag(CAN^a8S*S=m^b6L1Zg-kVq)`oTel71PmX}30vR9Y)*?}m!ksuGfg=zdag1l^fxH+EJm%RSvWOTqkc^zsrr z-%MADKl9VBjg{#mc~{&W11<*Eq_+}qmk-jZ@oLBL8)olS;?EIijSMO!Zx+P@sYSXiRTdsb0w}9iv1liSli^FQhKL<7jZ@K)q+!;|%&1KG8LQ&FNOvbW8S{|$^!c;yBMPQ5 zz6)CQb)GA6dA2W&61*kI_td&moUnOyM)L5&nX4NW_tcH9JNVIAdPtZ($usnh$ZydL z;tG^^Tx6z*%#S(N_}Yfa{%O$-igf7V4)_RjnV2$wX}zRen3liphiZLWUG{lNB8^)* z0j6_Y!7Xoto@QC_w@68Gi9WQDq*m3V;sSq2Qh$*=4r_y@ED-S9nAUsq$fu^ur;1NoXxwBYOzw8PW+q)xXB{ANq2xp7(B-KipCQ**U8OUW z>TD&u)Sg8MDabqaYsfXwSH)lbrMLe_3vI#K4zdtAREVIL)<92Rwx96`u|-n`;uT4V z9DKG<;~YuIz}wCloB9)id>_52s_)5$skG+T32qMi_EOnr2A{qV>F-=(p2BpQnu=W_ zgmiEI^CIu9t)-uxPcFES1em40BSp|IRo^}E{awBYU-k2=QycSxW^B)aR zy_uX}PPAf6qoNW~x@YsmY;WMjQOZ_k+M=H3bKK=YqSqtj^{&YtzE8$8PS$t3mzF0w z5Udh|MQcg+s&#>`MzVmob|X(DRr-g@VtGmn*~GdshTqtq3oU>>7Q zBx|qM6`*@UXVWp%F4Z;Rsy!xC>6~n>Vc{wuoNMTVkc*@f%9T~8rc;fl*mVd!cAWMJ zB-^Ezl_Q(rz@vlg=in`|;5iADzW}9>i({ zAE4>CG3Ic;f9HrZ4|!5GOF#92%jGly&?GLF7Nb0z%v(S)7#GY;J9&&&EKR#7&aCk2 zS>B@sxhvP@uQknb?lN3|N#(l|&8H+QT_&U38Q}JPXrF`1A?KEn7jNH-`A9GJsJ#lF z<}vT+lnOYmrLlE&9H@C@!n0`tp=A;W~I#PMHvtAkO2QPuX#RdtB9d{s?Vq z|Ln={kH4^7`!Uy7nr}h6&$zbW=7v1o3_Vdx*kRfA7}<|PBwxY~r!0}{mRrQ}qAwlm zF$Faiaq8f5?<+kK--f(kZz=JfMz+|o3i|YMt-0X58WuxRhsqRl$-th-p79dw@SF%$#tkpo!9-$55h@<>F#_<_ zf<3da#8?FQAt@yhDifzxulTOPlf{0^jO_>domE_oryK3>KN@Fo9-yUUMr`=+{nX!2 zROb*p==G)UY-hhudEJM_iz!-Vj4d;80$S6q0`|b;ar?8WqCS0Nhf9S*k6wgVJ@7cG zoSkhT7$hb$!S}KWwJ%)#$Z##Am$<)sGTK^MTf zv(!ZZzFK(3D7@Si0e(nIX@tV$+YPVybPsy2vqcl~ZMg&ezUN3rF4u&1pWr84yvjhq zUCw(m*W|8%b!NJCrg$5CCedz?q?1IUL{pfH|IMxt#n|?em%`kqq#EIkQoGV?UMqgy zpFhNZj&9C{#_wIe4U3iSZ2nU8*uB*}4IzrzpJwEvKSmMK1w;GVoR&;13vG<8c&=aPH%|Acbcgna*>*Wtb-Hx6bacJ@q_`J*p>;GI@t*Amg z`Ghj`r#ek%lIE!J0@#z#8*U9>SHHY3IscU-<51YW`MEpqj|&>skdz2pHuW;?Tl6Lp z+k8nb!RnmyEhai!)?JDMy#+Pjsz9kQ+Nw~@Pm{x6H!qx6N=ANTZ#D9^iuK^kO*&^9 z+e-2|o{QfaGrX6cTtDb!l3F)tEpKB`AQr#3;+Rs*U`jy`t*QY69YW|E6!;zE?YpiR zlP#Oqgp?+J@8v|M+wyM7iZKquD!Ma!(im3+tIoA~W$QomchoK#epqd75m?xzH`%z0 zyWII9mmlk3`gf_9vfxij|2b&jdr(tpFqtcG|K|^q!W#d=pC*BKM#hY~#F{UA2ATO( z)vZ10Jf3Y*;eSNNKEuX{_2JDdvZO*ghV~66qmB(GW$&$QS;LE3HQ~r*y;=nY-^3;* zt$}j-`aUq6Um2E3^}6Rg&jDMibape=l&-5<{z0DdEbY8eEQgMqrF;=Dxt@-t;{BWk zQazndWCmAT40Ixp^Fq;Mo&$6YjRlDha@Z5&e`@aCo053K@H8`_T&3YEAL%gbosO=( zoayUPzx|}iM*~%U@LJn*o#r1X3%dS#&wQ?PUv|Lj`b$3Ewsm1)^8tFPyFy5cM0i`i zC-PePDbqaYrX@9^M+f*vj2sNeibPT^{jz0CYM}^U`9XI9vB?>Qc9Xi6`TMfJ*cuJU zEJd9q<>?Q7?us_rLqXc$=nL*#CrHeeWf7JpOpHUWg@|`^Mf4I7GDt@rw-hE!BnMl+ z!&4F8hzV@&x=7F5s^7ck!M(0`$tN28@052t_Pnv1SvsRVZVzv>QU@zIMq!d-(YtX* zrU^!a%*ExjrtwH6ZV>9r^Cca2%s;9lV#!_ZJ&Ig4bVW!<7>Q>@&YUk>Ec~+Of9934 z@d^1Cxco|dS`$Pqs9xG-CcXD;&dREYLejrh|# zJ&*hsr~IaGzEiw?uafm?c`#47MTN)-`D?`N%B)M%d%5_{N``xmIB|=vQK!@LzgyU! z?jqUfEgiW+J%-*OUZqaIR$|`Cc=fVX4cM-6h?+RUD6vL8dn3y+_EfQ9;OB--(*v)P zw56HfSK2NTO!P7}&bX;QlA&{0jna=j(wy1j{DD)F&cW`RPS(|NovfoeQ{49yyigCq z?@GRcmr;s>SGH{NjSQ+50aO_5cSS|E-EFG!%qv~L#h;tE@6EQ)wBJ>rt$EIL;$Hj+ zia8aGi| zw>&}yz2DbOO_khGGW3Bwtib&e%V=-MkvYl1@-g1Br@db!5mI!6r$5iM%`iXKMC@fOy} z>{Umz8bjpi00jN`=gnsgGs|oN1Ea)e;8Y*f{F5r&>Sy`FA7)C=))38nI2q8%uVStw z?^uzNo`3$U{a&|P^`R^6dAv+|O%tM7vfz30%;7xeNsXmp7+8r@WQB8HN$M-4@$ z9J-9&7FXo>OuEZ+NSE=dT;q(FX4cW&Ri%k1l1NVwx!>~qRjVS?{q(4ho3pfW?u@K6 zd~0^tjEt8`rz{WddoHszdTdwk-Q9Kt3w>&nwS-kAGM?ZeH=+_5Y z`X;%8Qzx4#|Q2wKlME^*QM z2>VpiTiR2d*UJJ=X=Ep=NyCS0U7k=1d+(z-b1Vlu!YhZhMCka$x;*>JKTA-@9c{jQ zmoWo5930hmzCK!TJrI8SO(M{sT1_g`!SVX&v%mw+vnKT{d?77Y2E3*WSe)GF`~vK| z@Asdv)aYee&L1ToEr@i`xD~rnc8npg^+Mm~ROM9&nHNjpi`=LPbMPpT&mvl7L zL85msM;q>9mG9v}H+5&$ z#-Sm;mf+d+m$a$Up@TurbKUa2@AZheI4z?jq`+z2v(4}2$DY?VyZoMdGkMo7@P%C% z=k=Pg+b&=`gg_#ApY5c&z=L{HPK2KI(u{S;oVYa)N2k#OujcjN78ZZi{5iMNdoKI$3o@P%ciwY1q#!v-U1ud$rtc(e zY0_&ClbK*e%E9H#mDZ(@Wkgku+#aKwu!h!E1fVM3b3F4+?nwVe;N7=%VIiyG>Dspi z{~N4`J`_csluC#o5E!r`LKJzxj5$9w*g04c%LE#q!HV0-AfBH8Q#uGjbmtjlNJ1dS z1Qy%=QUZ@ziWoUOz3p6`+??F4yq$0hS4ENe20LsX*d#?zzKAJY#b=TtMh{>I=?P$t z-Z;fLqR52|T7JV${IY<6z~G zA;gf$H#=+?{|_<~F;Y0Wd-(Z!T6tT!;fV3y33dM)%L+T;R04~Y2nVT_7(aP@W+h_8 z@bI<;!>23GfFbs8UdlL9VAB$@=tTHTOTBjv;NQ#k=fYzj77vW1-n2f{}@+=oyVNGRK!1Ss`yMr#E1b+ z9Taa+dD!%Z9zB5+RIX54}LR(vh+#pqyfXXX2! z&Wd6?k2Z1mhuBg8Y7f4a_hO{*^tN(vv%+Z<;yaHtalnU2r&-8;RUD7OhZrTi?cA)q zU2v87w?GrS!b=>O3}WycpssJb+Ee@w1`+=%H-da@9045^d!+my>NWni@Dh93Ar9*N zw#{de9`tBd7rQtpfyUReXRRQ8lm!0)sX(CWE&e``z>xulWk3r)ItE`R4h#tKwe)#g z1~gU}r$PK%aEYS?Fx!LtqdP00M(;OI}b4j4=rj0|O=GK81IKBSr%pe+X2G;SMzbff9!C2&%)k z!$&b-U5~GfM~ntI1`(+8%AINeA|d%FzYHYfI-GrQ(lY)I1Ul0($c@z0B2qR zbHTPNFZOr<-{yMYZC}8#h(MLq{=Eh`;{mW-#9$s_AWjg2%#+06+h7m8)d0tZ6ID{Y zLk*B@M~qE5l3)Z`6N|yN$sTyC0WQe}RZsm7B4AmOiUJd2;L8sF0cLU_dc-WFu;7RI zD*}#v7^;~3A4I^Sc;K)Ov04H?vkoz%A}-1VRZ0I3B4D=!EZiX&9=G=t@ELcwEdoxg zh_VsbsR)18OmMKPfQEjuvy0*}@o-xNoL~{{uwjS5KM3R5j?b{eZ4q#yMU;WW z4n@G?9g2WMeoVxS&%DEJ5pcpqlzYZMh=4sXVj~Z+HrenQdAKbCPP~Y+4*3TWum?uu z*U(lo9N6h?lfLkndblkDPQZxrP1&IcpbKm}^Mb8c48#DR!H3%-;6#il)0iEKfWk%J_(j>cwv ziQ+K;aa#l&=UJ3j(#~1}4gwJv7_;Lu`*8cy< zzZU^}xdaF42HO-!V9qUyI%WVT4j>f+Un!8=B4EeLk|@j99f|<*4KU|TaB%*H@t%f* zL{5C=KyHhG9V<%;|6ArFPD=pE7?|@W>_d1s5C>mLklP|)$I6nz|5h4NG zxcK%)GfV=El<4GMJXQfGTtHDBcB%qw8}*1}qN17tlHT&itpbl#z=;=7Op6_=00O0L z+9MV<81~1b0)JJ&Ifs>m{ad{YcGLs|xf$C9P+%;;oWsI^I|aTLKy8nXaGZDn#WVSb zwt$tK0Rvw{OD1+WGSMF@14BAd;A{O8q=FBq2=uk^^gvnH_*nQjT6x>qBI&_cbq|s# z#LEt)0a*!uj-~#vu3&#$D)6^#JTfq@gMe*#VB&%rJ1k6{JA z>f-JW#|be}z@L9;9awwwFp$OpEv`Vh9Kb_jvKjt(Rp7A-I3XqqceGO#wij0bfd=52 znBWTJao}%l5N3-SXJ--xd)k=_IJiWx5r;Xp+%~DeLqy=8sRSp`Mxm~DrUDKj5t;7` z9pB+IDDjU9ID3;Q(AVFqfPHEOkjdyZ7YHjsZGb4|93P9Ehgm{G8{6BOz#Pl49|0jv26z&yLc5($p^6Wy&u2#Nwigq?0 zwy1+@A75`fU|JTKHFKux(TCckkz4hjACUh#Idw5LqLD!8TsuJ-4>hMOy%N3BT1?)t z>;ABXIXEm7&K72s<@IJOGTeuL zD`%M$Hw|*4wI=k_L&WFP;WMy&lk<5q9Y1aE8ZHV3J z$&qSbf=h)u>ef9t697wbzRJA$L;wVnu4Kl_-`Bb0dB{bk?o&nF3fdP-1` zjCnk1TRzV%6%_Sk*QMqPGGey%xLac`TP-J5Mq;=|Vw6T=Ud@fKHzmzI8xC7@yh$3i z>J#4HIsao!V{4XfZtFXn`N#U-^P3iD+CFYAZ*-3Qc3>pU;~-h;rXAPJsd`ZL_2ZR; zA6{kW1YLzE@;&kxO}M+7V>+ zG}LmBtJ-!y?NV)v`QsM?Us4^0tp)9-D~=O+T?}Pn^g9eY|LLI5fE~EYZ`DH^XEr^A z(yzKl;LCphjIv8EtqGKmTgR&l&h&hUPWd6^YsQ zIxXM$?I3th%vR`phR&2c4^h6?3ppod(zGw6eK8R<>I$I*Utl%VynFJ!lyXE>as;Cf z<(Ai6T9JI{ci3`YT6)~s^IPWo^0`v4IZiYw>hE)$$&7x}W>&#D0b~2|wEqgn%Zy%O z$*94*S50Y)`?&92?cS|;$fj1250db;I;CWBU&40+=;YDiu=|W%U@3u#=WiZ zX89y25AYeR#2MVzxu&GwfLJjw)RA2~^J8#Zhpb zgF2pdP4 z8j`^-a)KOgDPPP^u1s?JM;1G|TD0a1#S~0qvhAH9$uw&^Kctv)=7w;$;C|c2Y`K({ z%Yo{zqmC9`4w_TvoIRtE(&Y0wQT`>t1@haOWEJY{WDSQ6s6J6A5HKgpUX@KE*z=uO z_>vl#Ex4D8zL!kUHmvfS`5kZM@dKYeeU{}iA^7l}a_jqUs|xm_cI_|fmQ80H%w?HX zj+07#zy8Riqwf3C$!ghFI$#5+}LykxH;4 z&Ta4As`n*H&vI`XuN5{&tDnBca{61RVAX5n^#sx7#azng$ky6XJMGOEIsoh7IQ?xM zJd$2@w)twEw{}%F`4)$#iiCqT?tF>5lCg3{Ad-8C)71ZGss&8*{S>DYWb(7J*-d{uK6Or(kT+dIt`$zBdm)yEKP!GE->=bqcVuRO zV6y|q)Z&tmjk-l^I0H|xPV9buKZ$phmcJPvlA5)jYk2(Y@c!7*&O7T?nF3AwT1tD* zDlt4bB(w6{P=<~x_xIO1jpeunX*OfdoNr~&i!pC8g577^g zudC*&VpjqD=7H{y-u~n7wPqICBgehOnR%TUXf&pMH(rMkUgNoRXZiqlQD$stXPaPr z>_EWB#K}X#R*xEW&rrY%1^2*tm1UJx*mt*8UDl=FFG9Lo#ZNLt*N?>3m&DpLgb6Lt zA?B79s`F(WuL~vu2mD2!svCA5u6wn2^oCrzgJaS$&G*IT<}Dp9hwqsWQx8mX>k7V8 zRz9Qp($YXs(5ItimmT~532!&ozL+FN^ZVve$GgnZT*SofJ9kg#PWHW$480ON#2x+l zL4fAU*^SC(o6oDxl##NNOLW{>Pg@Q31J4~Iy}6R-;g_`j3=#2JUg!+%LHgTr$G*P} za8CYd&-zf`Gwq4kt&3FQox_QikqoZn?TMct)kLBuY8V^g9T8k2Q7$&O1zlf$>R@a< zbi~>&$;o77;{~OswL5{`+C+zM!ky1$t|dyOtp2_tl_9!e`tOuEN6^Stam4TWyx#k4M2#Os?!9+Mxf_-N?d zUgALFnw(MwI*oIaS~PQ2=5C0&SX` zw2kb5p)}m4!KlLECn3n4$Tbp(BzZ|VPV|L9wIPc`ry?3=Nwr9r(RL?2g*=0pI!$H2 z@FbXfl?i>~+O9g^zj(+u&h(+W(|fw^X?`JB7>i^t7b6cZRoyjXr$>rpi{*N>FRkT^ z_aEBdzK5H>eNU|7f+UflyomBbE{Lo$(t5^^tTqUDaKw-Q1hemL)sxT1)VV}e^0+BW z7ha7upZv{!F0Z6rKke$xrEKN_w}E=I5(Z;C!huia^?3)VwrUVRML7dBZoXI^(p+G+ z;`CE|U*E0^mr2&O4fD4ZJsW;%!DPg}(B_xqvgJzcMFn@iYveWkEMzr)BvGT7@v-^c z8Nu;`{Fs~K-xH}6yR1QNRC^L-R;z$3aa!URA#_pJG?E^J$;^K5%2E+(8D!L={O=(N|XbSA!ahN0^Tk+%R<9pJb zyLc{<@GpXg$WcN!U;X;=l(glyTJ=XBoCiC1^UKCie$=mpmG-WgmPS z5mqw&Ed4VRVp&v@Tw?3#C>HVc2P}r-AL$^ zv8##x(TJYMAd$M>(Z?6oa)$zP-qrK1CXTpMhksRX=pi7apd2SqASMy^B_U#PoGF^U0@ASnlFhH`XJ6c6h?z;t8+hYkk5s%-30`dJcSkBRStc zn<|%KcY$m@>3kh)S^0;Wj0qaQ#gD%gm+aG8{6*-#E-=50{?K7Pu&9$WF)1Ip$G|^0 zTSV;9sQJoNr!M`kL~RYRW5+e$KXUjSr1QEXuR%uj)mvlZ3F}9%&dXJ%F}r2fpHgi+ zIBwp3RCxn-EnX+y$wWz*vdB9l){x|lCrOkO1@vLxl<;0~GHC%V<;@RdOVK2rucm%e z^4&o5_UGqcbFK|hy{Z@=3;n_SgDj-yb^~1zx3H2g1?`fymZx-v_2PZY4w{yTj}KDQ zfCC=lsbToTpbdsLo2Bf+qZ-m22PlNC>c3WTG6bVmiC+tqEWU1{|oPhPS~NZ9j8~=?qr?tZ?LdClP#dX$|nq?ZwXB= zVln1hGG}1t5f`K=(JtkBa<+8BMlO3dgX7`zjT4Pm7pcCfSzUWHq)umXi>@#1Y3b2N zw|Lbb6{dD$GMKa}qfv0|I?vhn$K{6FW)kmbn)8{=TJlh6r zaz`XwiaNcVzJ9Vc532h<|Ar;Lpz@mV(H`&Iw<1>cU%z%n8h(A*(!i_T&|76ky{viA zL-nF2Gm|*&lFQ{f)(5s9S}eK3mn$p2mb$mxFj9KkGHN4|EBIhH!^NV*zoIq8NPaju z=)Smk^tqK7dM2c4at@Nedq`gUK-!+-SmAQAvFH8N!k4C+oFnFE4c?S~&vZL>t~Ncb zd@rZur0tixvR5~YZ?9z^qU|o8Bh$P(70f*;AKtfoC$>~d?4=D|{PWNUX_Ov%bi6Ca zU{(%~JuSI;R|d9j9$OjEAB(z`O?{M{4Ly@nv^TBSi|mpK=Dkhf*!U_J9RW?H#w_3F zvFY1$NBg(#kDpJYZf#UuBoFJ3t{ZF_Gx)tRl4Q z!9?@zs~Pz$%U~M(dgZ5iI%sfYmpC=nd$=i>9h};v1b?-!%BL?~xbs8$3%hZ%srSaP zmwsacWp4n}scOzgpO0NT#BAqujfmFS?}n|@99bs+OoLjwzjjWow7pXsY7F;B{=W>P zRZ{aq9cf$1F1yPpq%UnANXxC|@LkX2PrSzVdN^hNSm`mR{Y^n0mF=em#~2>vEhq>* z=MiE7>k%zolIAhq3!`32!crsF?g{8p!dgHMU z-6zr;3%@1Vw}|%}wxjwElTl`+Xc;9hDWBE z-m!Yv!yc$uu*l5Mk$rwb@>QccyvQswkm?ya+CN8C*?Eqtbw6t>clLP~+SUQ3?DKZ7 zK1uQ$qy?(h#lfS0Tb64o|S6;;hLTN;Ss(D)_`6(wXpXKiN zs=HQ|EAQ#uwDJB!Ta5W&`&gFDE;0kUoQtFtLC45ej@VL#(4^ct4jT+OTQEhmY#N&@bx!J zdVSW`eq32G+LV%e;B~M(cbSRyuDmm9mA}wYMTRKinn2w>c*lABgG__bUJI({Zyh!Z zl1bpOx*p4sPkvbD1iXOROfjq|?soZ?*Py+`F+J|4=dS9ekA3iyB{HF!@!e{{z6L37 z8i^XeXFawz=SU5nFIIQoLIo2v7OKr*(Q%J%)$?8qRH%KRkZR>dc>GeqTHv&lzxUbi z-uAi1>9i&E8><92N0_MXIjn8StT~=ATXURo>Jb|LVGi;AFgzfSkSfRfH7H^)?460KDJ z3*2g_dN@^boL{Jjk|D#=g4ooF9?o{s>*J(~l&A?*OJ3@sL351jf=a>Y_j3(p{lWwM zh$Cd54=*-S6~9?4EPUs7qk1CC;p_?zVSCl6xgK?vMgnv9#7`cjLH_+&E{?=rY!T-) z4=Rj%3LYbwxctc+xtxvmIm~Koni%tRWseC(X?FN}??D@dndS8J&3o?h7aHA{%&!~C z$R?}cRni+=j%NPBsiq#Rox>}3w;a{K?;8l_hicoUsSruE!}6uSbA%U*htD#x&vWoq2`c^)4gB>@@5n#_E9=Gh-Z=B6sPp>zZe=>B!pSpq zT*^e{_UCsWj@P5*?4>E_dd-mtywM=D~OMy9Po+$DE+Bcr&> zE315)-%-0WWjH51u1tB-Ide~jYz`mNEa*S3peu4isf%B!%QfNp0GU`BjkEZCMtS$R zj))Vf^A}Qssh4rr(OuxJKpz`IX-ZHi(L~Uz-}^zywCp>F;dAGo_Crws%aeJZ(f4JmF~h-7%4-EZ2) zliJS4?f&6;ak$RHhB<714x8_-!@*HOdz^DWHY&xsevspdz36^Ak?jdbyNu14ZBT z^5CvM7vscb*}KTcN|Jemm0mEqPd+kEpMNx5^T6F8MWYVuqXN6yI|yFbz*Wloj9uc3 z-#;d<%QbI{efer)W#YnvSr_Ac=k9bi&DmA1Bh0s7Jmn8rUu=qK*~e!%af5vytMhce zhqc=RVN~d{1-Ha1LE|%)$WteUtw)eu>~8xW@Ap-DB(6c<8h4P-&q|ZQ1<@PuGJe9~Zc1avX-=Bq#vmlZ{&S-tgY}cqL#bEc@lMQe*JF z5xrUC_}uGEuC+d2+f}v$x;{|Llk}cGztC{;K;M&loThkUiArAQC-rQmBfc?a=Q8+A zbz1vJ_ z;caMCI(qPAKzv^6`|o5{E?rgEDlTmebNRG~u($WoJ+YNLJEWa0p&7mLRr^8Rm8V-u z$IDMr{$1u7GaoKzfg#l)b1`PUl{c~9J0AAdQR2q?xmOvMS`d0nq=hSNgyC zU|_uqf9f?kF%_M0*;@>S0ail*bnj|hn7(3IR&zM)D~7@VyMGW0ube>@!2G`rTrmj( zrlpt!C|^Yv?g1GJT^@-2m+E5xY{y?1_7(I8~S%t z5eoz$IU$AYrp6Ta#$^*RGzeH+QS$G&BG&5w8i`>D%MZ{V1=n&#?hVp7>>!2)0gEh3 z?wu@Rd52-NmrLWYcNiK3EVd}QceaRS8-~$dj?1=TXb`aIqU7G`B8D>*c@(OfPKKI3Y$7#ajD!uUT5-2W+Ilm?O$e|)kq7DgaB zA-O9=g0q1G1dB2L3%7e|-~od6h62ikDDh5dAUT1n-cYESfZaj*mmc?6JOLaZpv<8# zX|puY+e-s^1(Z7!W_!If5S+l(4lpzbSd8&sIND2rP9Kz7A=d5y z^agO%9tsTt7GwNNBYVu(K?=xCp#7oXwkRk+7$C-htNu`E5U?2IUs~8>(q<{p_=eW( z14qug{a>7%QlP^eS2g?4AYd^@L^IOfLTM=(ag?+MCqxp0R%(+1XH2-N*@p%Ji!uJC zX+73V04^YZETSaQS`$)0i33+P`_Ld@F-Ali+CQHOSZe~H%1D!CAie_R1&}?VK<64~ zHT%#YU@=BS58fU@07?^Rw_)(~QBBfP032M^>_dZq#TXF{h_@SP>PM<)sRMhmICPrWK4m(GXaY+{-q&3*6slG zG|-ZL7`h2k;P_n@$3tl-7Gp$oT>tae0TTpCxSlUkJVXLWsGts7LGXl%DR6ftU@^wO zbfd=t0q&`b66pg6EGV8J3B)6CJ^2E~VvK+3MUMpnFats9^sjZvyfph^WL&?X6F%8)wXI17TLIHuSZLSJLAAfN*!tdcEB zU`USC0moesuoxpkTx5?R0D&E}R3C=25D27jKKUYv#TfsE1-&GE9YBW9aJ@>D2Y@6L zg7e82Ni4?rFFfcaf%gYWlMl-`4&)sb)1sofI{!8(BbaFh{YKH(uN+BCqRKm7BWx*%I|*^ zo}qB%F&t-%l30xKFMa5-K|lve00dx)fYcy_f_wySCtvKHJRR)3-95c9$->{7(PL;* zLV=hsGFswg~tgaUAIJp&_! z#hw4sj2=^&6bdRbP*D_cfY`N~6$cKZp!)%5OV}JeF!#p4bfL#&2@;?R0r@L|+&`#P zKvpL}L5T*==ARrr;NCD;2<*LtQ35Q1$SOT>lz`!%1||bCrougTu#12dHU@jIV3Yu- z2k6`r{A?LH3nV~!2F~W5kQiXE1Ao`?g7qeV6g1i{3e@PA$HV{>9v~w_5GP<*rh$|+t{Oz4)&s2L zw0~hgF9C`&pvW2}%>H-@&=j|}L=gfi4*ukt z{-jyp8AzOM^w~uKYioqJt^Jiq0A|z#kp$5Zsx=%e2#ECnoT0(HA%Xo0{MI=JrL~RYAdJ$*SOh^zg zw?_cN-j5U^pd160W`Y2T2=x94Iv{a2&4dI2b9V$F?EOp;0xAxWMR}k#9GHrtigdsk zE6%2wkRV`2P5^|zJ5 z?E3109RZjjBC1n>w-hk2LdH+HxH~vqK-fSbWd_0T|2v|Hd9n;j_;<5x@JRr#$U?@_ zpfY7QqJrVz?g)PWf5{B~Hw6Dz`#S&{!ubo+{|>wyaGLSQ01pfxY}x*S10M3fMHNf_ ze`bM){Gsq~e;U~SA&>!AIP(PFW(fI0_!R*LxFS8)5K?aNaridxXRd{EECELg)nk_wZc}ens97q4)s*d-&@OzasC4^yGsfJ^5frPd*sZ zlMjaUB$E}dh)@Lo_sK*Cm#&y$p=Gv^1+avd@!UZ9}MZq2Sa-D!H}MOFr+6R zSgd!y7t)gthV)TN;5GE@S&_O3*d57}&qx`!FK@5Uf8ALAUD9Ki zyS4L7=_1onrky2s13t~GJL~JeOL8?Q3=6+>z1UgWS$}r^$7b&KfK~359VK9Oryi8w z{Fwh6=jMd_gi`HT%R1xNXDyjmF0C(oQrP+6*Gv`Ax^tzg*!0z*+4kRSg@LQd!PT}$ z6pk|aPg$;Bao#zzxtw5lg*?H#$WLK`z1I5W4ujmLz^B`Ti?$-r9_z?wu*c#3M}cpJ z+WX^+D`Y<@rVY%xN~Fo}7~R4D6d3p*l3FpDTF+TI(s0aRRhsIK$54}1&e6?%L97ZJ z(z5Fh+Ll}ct=7h_S>*<=A07(WUNPK$VB?Z-Wo!1uDS!O2%@`$x9ag)|=_^;ZS01*C zouCV3B62>k8DDM9p+k|s4}V(BB2?;@NN&x~DqETi#;Kw=g<|b~?eUHa*V8Coze|~^ zAQW@%Z)WL_`5_p*J&@2pc~5k|g8XJvydhx%Yc~1zub-2>iPFakxLh-Y_B*xWCDd|q zss%U}CX%PJTvr2#1H3^Q(P0xRx>{^uh`O>fU{h#_#*NU7q)57jL=&I20q;tVylpE*i`LuV2!DYjZ^HU zR}PzxU04WIto4w!8R@CpC*PPE@I~>^tFRrS-w+e=q=`{EGK<2S-n_R2Pez~9P1K$s zmb^vjiuWy~zn$%M{cTmrlY4By$uawDP+F|UeHq(XB0?Pd?uE>4gcvOww>UQ%^(=R z4Y@koQPP-DlaUnHtQg9j`|uObi*Swjv_l%Ph1Kz8N**sHq&N0yKCo=KZe#RFnDTka zua!yHffuRgy|g2lYmY-jI~x;SB*|Xx)8!gAqZN&Nt-92^ubfKT^%d7}sj;?n(nzAY zHkGTb(n0c6W)$V)kF|q#NAG*s{!g z1KsH8+f?DtGDaLaxzrNvYwF;nB=3GkIzIBL@l(k;7#b8ot(||Nj=m`%{1gnE3%v~^2X0@MzTCSI3fSON9WMD_sQq#e`cLFN#Km4I-&>u z(kb8}o$2Q(QP(OUG-h4y=g|d&Kz<%Rcw7BN0U^+zH%X{>Dp0dOedk4XKsTl6imMre zyL?i*H(w9UzO_5Ig)_5$sXv+jx-@!cE9K!uFHP6@H=a7BvZ>_p4BqBaTF+NU7|5UA z|4n7;evqgr?*j52B|dXfB|ooANPoY8KE>0>-8JSa80C0bQ9r-GQ-3TcjfqR&Ql2UA z!nON-D;<4}1q}y&zN=X8-q-r8U?X;fL3*EE8NW!~KI3;aE}14)vVJEP%@uk4-)5Nh zKBXs0+FxO$8)?S*GLbV+PbDLXD+)ec^i%{6s|jm6^XNtH2h-)a1aHN~N#ovrHHRy6 zqsN>1FJ1P2T@R(pil%(0cK*X;@Trye0mZg2Br4g{%*=P}sn_*tF8DMRD4wa5aI(+t zPWxG+-my+?-lOIq?(#yCGKk_BwDqp;uxT&L0TG>Ov(viKW_n57D#|rRyk%^td=@^RtE^^e z6Q`?-0CjVBq}zxJsc&mf4JPxEQD_yD>EmUGeK?d6WLWI+;^{-LSA_gt2Y#wZb<>o# z-=sC2*dOW~77~96sv?DWYIYw}@>tHx*4$8$fkM@~e^fh+j27iCUF@gaWf#Zz}_ebP*$_TjUS``)EJ zgZQ!6>!20a*bk3fZdy(y@;vAMVv6Tf<%DhO*~cEpveN z8WOQZthxt2v`~<$s zVRd%k6YQnereV$8r`F~sjow*U3r){~t6Oz8NjHv*eBD-jgnu6n-1PO9?GJiV6gaZjAJBJoox;)n(Q5$wA5S^1j9#w$hz_ip+6Olje$i{eD%! z{9h7(@sK-My-%!IXVI8Au~komOgK7>tzvf}4Nn&eVLK~yhmzbg7O`fZoyAwCYW=CN zLiOYG>{x2?W5XxJRfTxdu`y2`5x&)(ol7k_vPp9$UiMniDz{@C6Q@pF2!Z;SV&!^f z0d@NKc<=D<#KCNp@wu0b4P1?`JA$t)Xw()$5^_CI%#HlO%hy}Wos^Hy)7Q<*$qip* zD)w4zB{)PJ=zXA?D!A+A*kj_w4!wiS8EIi!$ZtsUOe91rl3B}ziTqF;_=?Odo4@dz zcs|8shH05wSVW7sms-8@dYG9YY7sWAb-UYawd~lSdFm&pjZ1Zw7I(~rWX&F)8}d|X zUc3cO8@zYvj`E~^INspBI9Gb(d}BhphFe!$mjk54q=uAf#sX?8;?#uLq&?1n;Tgg) zGeU05hZlP`xmj0k{)#ubR^k>VQ`kkm9XM;^Llnt=FC^6t@A65i$FG!z-`r%Z7Jqd+ zX3Ww1^XS-23q^^DK4(eO8;#z+G&|O-rltMLv7%Xw2B!n=@a>aTbcH=au%WV8(Q&+x zTFU#svsg!kZVRueJ(_9kq2ys+^x?ggeJQJ9KmWl5Pt=Zb&-X!M@UpO35bm5|&D>1kF zCaBHw>9(Elc7ElWMO9pu3)qi6FmF+Z31!O?R%Hi!I* zTk79%z5TIJ*;0?3I6<${$d@<0Ra}Pdi-R>sKAwD;mi5$nhJ2W!+s4ooBqFu1Iz3^I zW34`sgSku5dBSaEWdNUCa~6;I2)G)|;)RFE&JH2C&9QhPvpZBq;>ILQL~X~f0Y+6y zC0=nczmPnbsQtZf|GeG8<+3NG2{XT{6O2iLPW4&f7>oTUQY}oNs&F%8cIl=cAZVAXI5&Ry; zKXkZqMd`a|lF?JsUO84F0x_}^Vd)Xvi^ep)!$$gx#t5?DQmVU{WRx}1F;)yV0sgRb z@I$*JXG!bTgIuX^%!l?>O&bl4UfXySest!dZ&zK~qertQ}PTsL0sp97+`T#@N$y#(e2*{xlb5M8V-6D#e7| zy_jC)uo!zlnx!%8aQ-y>DaifI8mg7Bhz{^j;Ifb|uReKW{F-^s8BMP$e*63P7k|n6 zy$F~c6`Yfnfw*&gxT9A5zCP#SPYY=dB5|EIu(ZBR`a)48JV{Z+yB5Zo2QfET3q!mk z8NzyN1cI=d8K zMQo+qP!hbUS605fjeeK=t1gR=T$dsq2V^d|ipA6h|C*N_ zd@`MOeO~Rc-_ZEeVs0Nxq1vNE#~}prLMOx65Au}T(IlEl?e3-~_l@rp$qVt_iQDhX z2A{b@kcx{o_l@fh-Ri!6;(h)5fy_P$Bg-gu=+~U}x%i{+*niS@w>g(~^f(TlI$GAH za?mPXouni1K($;cCsPXT;r+T~VJgJ1%CBDHC_pn&xXJL#o+#Q*Vib)dAVuHF3JB&aA26s-oOrpkEV* zxZ~LpUGNW*M%p>^&hnRxv}=$6YoZ2&Y%=lrj`lOeDh+3%RdzB(Pq9ekkXxKNMt4kC zg)G@vS^N%Xp6EV0zEs59W&1QjM^GOzcANj0Gve)H49~PRru=efUWP44Eu>*WDCf|6 z)kIO%8$)ZA%XPh`Gdq(7}^JWSX6lH7l%`gckBsCzo+sCU}Y-;F(+&5y4PcHbG~%S+H9 z)`H&c{A}0JnHtY^L@S<)1pj3z6>?@4-nIP7ROy+-(h<)^jU>>}yEYNu<0a(FNFNSP zO&!J~(PfYC?>;o!q0dlX(#vRdO8t~op39ZK2YMO!#_wE0%b94|C}jek7;-h9yy{Wd zP?GORL&Q6}ANfa&I*O8i*4(&C0cmooWgd|&YOx_a70DVLQ63(dsYdefJ^!qUv0R;} zPNt2B(oHY&^U7C>Cp+=y<{G2cxo>Ab<^6V?MEvZ|fd9AVFObp2;-X>Z5 zS)`TAi;($(prBQ9ch>bq>U7cimJm084-0Y0fWNe)b$TwA;9p-N<>)-;GVFEFam6+{ zUa)am`eEkB?D~QrLxU^Sj{Z<*9udY^BTkijM~;LYa6Z#QTEoX=Lt}L69i3(d;<P87S9YH-)&ucePrcJ34e_g8@^yMGRuk0q%`=8XI2d-1#o*f{x$14O1XB|> zi%F#{>ba5zGZXb+dmUkgV8a{YV2qOJ8F=Gb#XqMbHsAGfn5ss7>$QZGtoj_!_%n&^ z%=EemCTV>tC)Y!!lQu&0fEQI-a>HnG*gHH&ov7?b#kBISI#Fk6dhr}fXzLIw7M`Qt zVc!v5XPzS!@a>|2whoYg{N90y5BdaSzB)Z1G;uC9nyEcq+&K4SO#7BEMSuP6r?!BO{>flnULc@Xl#rz+?*|U_M z6rA90e$y{v_DY_ztWBOWe$gPj%fI9r;@mGZ<0413^|iQ=fMIWm*c0n-n>j-7ll#zUV3}G zUBEKI+4Rn#0RdxhJ((bfjIH(Kju!`*7RpK`4ir)$*994=b61%i-!D8CwE6ZeUQw`X zz2kvej^D54t}-4=uI2a1ao_LC%jo?`XWFVy&TBUcV=>_^g{0)Qe<6}O$5#r;_}^m+ zL@IIST%}+AX65^W=I@xzz(fMxJtyYNPkIBQ=lDyyhwY+GB_fSqW@PEMzcQ8BXY!Ki ze~e{Z%S(bBF_kzUyEaeoQYd(^Lh$wPQ#C{hS#3AN65|PRRrp{&ARhb$QC$76w5P;o|CYSn<_t@agvd9-~%qvNEk9N8vTT_GoX%JqORYc zl<-d8fTBQMh)5-cS*NJAmoL726@}R=QES2fF~$*grm3u)B5Ul>weJ}LY`&rK$u;L0 z66S5x1LI=FURUsZR__Jp3++_;d6f6`dLsvjM#|;FrIAN&@$65DT+KAVKay~?gC7Wh zPaOCoO_UI|?H@athvrOati9q^#&`RJ9kHOp4KY3egKfA7AVhsoftUP>jmRaZuV zbJ|QpDJ7qWdTZ9#^XpnJd*tTV#Tk5LzVU2@x#fEd&3C1W0qR%J?)Kf1srBUEcl9cb z3Nb^zhKHVO5X5m`T$4#E~&2f_bOgjo93;# zF~9*oQ$D_x??r8N#Zir~?=3?=5S#NmO=O+t;fzQ_EIF&SM+bxp; zhe|7V^H<5|exrBrVo9tI&+aX%y3)*Kgn90>hKD?zYkPWQrU}^Cc9oU8Wqqz(cpUKT z)9e<@th$?zNvvNvv$YXK+=r_*?SM0Fmu^4rSs`uV&QhJ-VEqYExQ0VDB&gvB7Hm%vQ&dhPLzVT$5!|E-|}_xt<9=^Tr~#74?c(Vdi$&3 zi~Ka!vy>|QdL5aYpwg9Ohade!GsGi~en=9O`)r2E^`V$ckY-tj2yykxtZ3^P`+c#e8xg0#(3Fx%`1l?&3I1?=9$$VITA`4O} z6T@^;m)-A+z3+o_e!@hT-AwMvyuO{_V%|G_I?yH{W1m21gPYe@!=!G1j*dNRJjeI- z%c2)r1#;4k+;LY_l-_*RrJn$?yfg7aUG?K9PpHuwfutSl|4)wpPb+NG;K}=f}f`pKguDPx2`x=fC^$riMBmGWufQr}-9v zR8dQH$z#uw1lckgCRAX@C;Ig!6T`*DZd)>*CtrwF%1;q%QTaMn{7y`K`?~jB%G}WG zdCL`O;kC66-i-b3A`5|~&aBzuseyMN#Ti)nw^%vnMkO16Wj}j4envScH|m*LPt}V? zN-A&beshYzxdcY?*Ocwux{)iktIIdf{@z^sx`S`nJ=6T(ewWDHE4*GnMiPcLyaZ(g zdoN7Ga=gT-)5K}V%iT&8>K=!)gwBzM22G|9PkiD0sVLD!d zx?Qvm22ML(?qYylp9uN8sx-{1EKJ8s%q~ZqcD&rh0J}U9^511y|J1Za2E*|Z0@oEp z)^Ovr}*wu*;%;J^*x4|7)MF0F&4982Xd4S7~m%A8XY6F3v1TWP=703N02B4b} z-TRK=Wrfp@m%A8XN&`W}CHCIKAcN_62@18*?}7wya@pM@aIc497XvJ_M*sr6B5aQn z0rWH?yH&wf4W&@aM|(_2?A!jCjjB^ zs3K<3wlrwoK#QgUfh5rF2roY5L|9?s>g#aH+tJ+(Ll*`h@OMNJlORX~IUJ-x50*W= zH0XZBSqT6H0{>CC4N&+ys)&UGurWiseqt1_OM`z2XGH)|C}0N-5`RY)F-d|nAV+B1 zPmCo&8uUNntPB7O1?;dvV()ZO8kiQLgaF{(uc&SoxCEz^2cLzN05Ws-zT< zrp8$bYBUVk1RBwH_0M6zBu;=dp&dXWz#SZhJZF>wZI3uB41k6Kn>iu6&i*+Jn9NBE zbUC6uKrxP(Kr=W>WDNJhYBUVk)Ctjaw?`PHK{$o#g~!m=lLFe*IO_t6h5`G~7149J zM;JgOI9eV6JEE9eUyS9yY8A)V3}6{sWDWjfx|Fhvq(g@ z`5tEj5THiOGJ|sm6q%NSr)+W6$OQFLNMN%_M6>?&X8rCg!Qt6} z%_0$61ABx)79B!i9mz`qJrSH0XGYHkY!-=-TG%5DK#Ll!(2VK$C5yv3Dl`n(EE1tK zu}2u-K40i15}ZjQqfJQ}X;iF%!!HFki$n-*>=6bjbO;4lBshXWMwpUt9eoousQGG=HTgMhYif$6Wx+f zbfm=z;%`yl_5uC}fB{qkXRSohE2)ePHV%KsHZf1BBthi|%1som=PZewERrC}fwOL+ zXdJLZFoYJ-U%V$6ML?3^r=xN@5O7q3s(X+GSq_}f=}2IQU$fVczOqghl`V| zledkxle^o0pz@c=a4b~NAsD9w{IDOH=YRr)a6H|ELdD(J!PCXv#{NGr*?Vdn3Va1o zV$cwP32LK-g3mag`+;Iw%K_cay%$qL!I>^f4;s@<2?`P*IG_80Vjo^0r0V|pI*Pfg zLV@JtA5rK(ve;0N48d6g(%oJ4f0=JW#1V3R{~Qa<1P~NZa&!U+(}xsnvpDNRieea0 z>=O)xTHzjH08-fKdOC~>BB&JFXa-lAxSJak`ve0a*0@I)fOP~a0fZ@%4FwqyoKFBj zu}?4%T9tc+0UdvV(EX20HWb8YIG+H5VxM3jq&oKq1E{k`YeZx4E2sqMMZopbO(^yW z212QHk1zlWN@TEwC6x^Yfho=>fS}kx7(%FZk1zmHY-F$nyeR)f9~cguIJ`t+2Vn@E z+J6oMCV9ZJ4YC~qsk3&*`*T=12&69D3t$m7_gQ|45LoC z8yzb1fzw8vXc(|rBtoElk1&820hIv4?AO9+uTC@!*envEPrpYPFzq@)k*PHDSPrM{ zI?*s-vq*$I{~lq$aO{MDT?2JG36C~$zf}jDMIzh@_6P%pX(u>-5fw+x23$7n+?@^f z4(DuqT)eGpJkMjF&mv43{y7|2I|hb(Cj>YUfi8bUz7MBOJW(%))PL}Yy*GMex_Cms zku|Eu4rD)ZJ;CGVCWXx(5EdQ(d^TWiobV$Tl#M5rZ6Pk(c%o+mHh(}klHWktcdKVDkrrKg~af0dtAO^76zW)evbM z_VPr-fXyEe_B{U_2CTIK!_ZR#oI|4ec5vFz6Ac44e?Yhs?G=VUmYzTgLljXL0yi+j zWlK*K4AR)APzZCTJ;H!#>IrIwP`m-BO+C>tV4p%Eys7pG1BR`q1egJcYAN_^z-3!c zGz{3MPzY?r{O_JzAS3gGI8!^WOy7_eC+!kKK3Fko7HVsvrAi8aorZKSbT zB*K{OpTmH;VPctkf}l?cE^vsd(Nz-EyMQ^vi)0Qy-a5qex-x=ve3%VjvcSgF= zf)Ui6k$$vb1a)VmBP|#~-5Kdg3r0|PM!M31l10>=k-oHG1a)VmGc6cF-5Kdk3r0|P zM!M625!9WL{e!7L1_g2GXt;jG*QQ(y$hcpq?PovKAta^sEIRP~REpS_?){-x=v!3r0}i8R=XL zMo`}w>0Jv(P~REpUJKq?)SZ$3wO|BwXQYEIhNCQE6+peUXh+#yXWM_`D65yiCX>|o z`{B$oUY|i@7;m{*Q_>vquksLU!plr^Hu*nZSzA+T=Cp2a=}(0-?@xNJRVjDR!91im z{+xz*)hhAJgy!oD+Y==_LEGP+?HP1g>ORtMM@%h=&t%ZG5N4MuGE>Pv|7k~+N)=O)#gpe(H)c53*(Qia<<103GPHSPz!%2Os+c9%Kxii zv~FjPc=LINjuO-+{Yv=>q4S~Uw+#CDR)4ld1lxG!#{O{S?8hI9+-MTYNJ~&8$vwY3 zcxcFj;P-+4gyPrldd_IAvgJ;>&y|c_wt4frC2Zj;$HJGcIO@iYwXby?4_L#Lb{w_` zB;p631?POq9$z-}5}W$8y|(u0cGTA5LXXl;(3-_b{M_py4X25gXaYZt+6EX}kUkqc{QP$tQeJm|N`hg-;tlgmL;K_4?NAIP-6pf7kbie1` zIT9PQ)tf5=n~Tc|s|oIsQk~Oc?LlGz9FwC244ZP)X)GDyde$u^^v7iR#cvYR^XajY z`rtkKY}0a#fG^9*){cQDL)i6Ed?p^>wYVcTEt6+#mKtT51{2DM&uf!fOZ=FW3E+sC zk&%dr+;orR7Pt_p)$v+MqiE%taC>ET!a9o|=Z>x;35#6M(zDQYnZzq&r5AdCxOxA2 zxqL>#^<(V456on(<$3Qi$@J@o=L~5-9y4g`>kwQzhx{H5H$zfn=%R-*i2F02NS{{X zT0957N5jo8ekyYhbR_4;g zp{CKmE%UNcZVrb25RY6^dC236P;yq5)%SgMO7(K$udBysD{1aFIb5V{{&YTl86k)Fe$nLK)SWvgpw8hMCigB>tt69}e6yM8 zymKNml;-=8;qLCh9M#q%EmPPlex~4tMDwG4CW9rsrs* z{2ZPY5^puJ#>u**@{4Pg^KvA$P{OBi-orleK6l2#m*@<8B4tMMHGZ*Nd#WhQ?og5E zSsD}NAs1FG%ic^{GC^ct`VcYQ+mH4?PZ{@aQA8*s9RxcXZz(aUqm+VE$Ej3+J3wdL~!#$UK7*j-NNV5xa}XI)=sB_(l0 z%%LQYb;#LTa5<94WAJ^9dFPCSlt4^lgM#7P&u(rCC$}F+Eml#^NweGj@b$=8pbh@b z#~(^u)2JsjUdLM$m@e7&P@8V842g21UT4ZeQrHO1jRjBFN5P#6zu`ECzFeFKH*)BayvT(&sPt%hmM7z48} zx!N=tft z4$Y&#B%QWC9A8Bs>ZO-{edp^)qK59$A($a)kd=JF-~n%Oh=on_S1u7(*`k3ImbX=1 zlv-KiZxVf7?ekP^2{#hc_@s)8`SumXM^<0hz3F7)$xH8Q6pFgek6yC6nQL^JsZZhY zO@1ks?vQJ59}o^j9z3I!MN-8=A#`eqmh`w>U3Q!9S!dN0Iehb%$Z6P^l%B|~dzhx6 zpR7YS*r{p-%Bg!Jj^fmk@pRN%UxA>Q4~Guci6mT)_IW-}Tq6#NNKWQ^{!&Lx7RH|^ z4w2`-<_%xqY>l(BB*R9o%RYgx*dfVk(q$1*uf05Ztc|mhMH75ub?(>y%2|#fonybe z#A@RDKKRt3ADnvkpL3O}=iVayP;{IALlK{<3=Ci8)5tzmFoEZ0OiZHPjOhxcxt}`0 zzgAu*cst&d+*bG?Nf7kh#MiAVGb>-xBgZ7V<$mRnw#f44oMNYhZ>7)D4>T0Yc03Kf z`MxIFEpO$Jgz9PbABssNVHShWb%e9V@0iKLuXIL(&wrcA77>G%q{CR`~)B-c;*jDgU$xAHA4E>sIvm)R<-FN>`<;CKA66WOA*Y8Dli*gK} zh&yxjOT#g>2(u!ob=?_Tt-ub!nDBE;J*RWqxEd>A-a<@EEbjM*S%T7Gs*9uSkJXI6 z)d^3kyC%`qq|nts_?;E`oz)EbjSc$wV8``f$637!-gy;Be^H-T^CWIUelvh5dC;Wu?_>aW+{B0Ym#XzTWd~e4dIc z2Fe7*Y0?r#Tos`rM&xEfzo_|WH>QbrjhvCMrcEAwIdskoMr`=Y?EdG1KBLIlSCNlD zGt4cB6~3e_d2{jR_ZCb3CWT>sf6h|Nb^`ts#q0DA)L}-y43yI!3NgFT5`oKO z5tV)fm9b|=T-d1vF56GEI0#>drUXR{JyaSbBkjTaVPqs9eAuQ=<@S)9QN+A2fn4xF zw=WNv@2fwKn7GJjxA@BAvp@4ZUq{XU*~?Nsc!2p)okH-Ho+k#%?2tsgGCHwR_F3g2 z;}H7OseQC7it)fZIP@0r4vJ_12jW>ddADo(SKOZ%eAF&Wz7)zl zCHEuD!jh$hC`<U}v*atmB8 z{ve!>;g~634ZZ!G+PiZ1V!5fjF-{^U9Gu5duo~KUeABv(=9ymmb@>uKCoVay2Ooak z(8wih4YM%o6<(LSsbSRzF5LwWgBXI~uQzp!JwuRw)yy~9n8sh`KYcPZIEHI!8DuJF z5<;Fwk)}Y7pEWo0zN-6W&}Hq@ezoo!>p6Ahx7Cbd*ffSn9~iqtoQ#O;6|&`dCrtxP z$69%`ioq~Z&4G#odYKP$@mcc+c*+l~Yvybm=n!mI8fAr1G9F?f|NL`wlcVxLS5JcL zn~y9sYvML4BKw`n0%Nwj+gjqkXrFw1;GrZpWnZ3DW}Nj&rYWIDc5~8b62;UI~t_e!+m0- zqwr8z79PcSrq`0Jsq#Zp0a zWBh=e@S%LCAEep47k0*k-bVijsu(Ts=nmz((jOG zM(dla-G;jE+j$lo8n6f|qEykg-U2p0^ORQjMYPi<@HiD6!=!k%z%`xSOH_;}lT}J< zga+)D8vUfWOtj}{>(!L-*s~w5N`8sv$fVeDW6pbh+&WzB(!?>lP)aolmkj&eOKnr+ z4`S(KX4b8}1gw1KyBE=No4`;?I)))}>f_d}qXOj@8DmrLv3_E^0 zm@KxNcy}*tlhmNT#?tIWkx$slSIkrQf?rweW+RmM4m$xGQKRKrm zMt9npd5j-r&t>R!+PFWZ^lWSC=l6l*txqhC?9QeSM;Y}cXERC1w$(7QP<`N*bzr=F zrrNez5x!bqOe0f?aW5bV{myoK>B>%8`%S_(>MTYT|@5M>6l)x*wxkdZd zujY8!FMr%|);d>mYAU@m{(ilD_s48U*hf~@Q@tKszm7MVe|tOU{iO&>PVxQgTT@v% zj_xa2=G-?1WiKqfii8W@Gb#5O>pptJ$GpI!7vsY$^?MtYVYuQ*{@dlj1*jn!P!y-G^3IZ4ztN;I#+F(=;a`&OCD0%-~C9H&0oC`6xmS#i7qkxT zDCTvs_*9=CIBqda6lS6AL>uhvBedD?OdC8)L~k5Gt)u}DP7>eVSu~;G-Rvh5D6*zj zQbcfuqMtX_qVd%~WcS^j;x7zb`jYmf>@!|*;7{@Wb}Xq*5HpWk36G}mR~;`$Cb)4_ zDVo1icVpTw8n$5}71w^1#yz4!k<{)WX*bnzd8PINwf^phJL6myzV&OWQ|?^1e(75s z@gJ~MNKMRoG1uH3rR?$Iv}st=q^70g)+q=tg>i6@hux%6_x6XXmPQJdS= zH0CZ7PY*U^N9;r{NUYHF*t*+i%#(3F%%$txm?`U9j#OSPjc6XqSli!s@`*@>mZmoE zp)iX)U6l|aI+u6C#013GvgpbTu+_MZ%Cg$N9LLI7-u@-X=#AXv`!=5f)_3=4Ku35?JTo|CS}6ULbjFHkJkX`K9e_7(XQ5BKG_W=3@qZ`1C_ z9vfHP5T3Lju${U33;9Ei@MPEa9@Ueo$p3ovSIz5p7wPWD{v@wmoNru^QYq6X>adW$ieDKM!s+Kq zm=E8{Jzcq#eba=(EcFQO2jPLfa#>Ia-tgMNtg(h8iKpW?tfos%M|Uz+n@`oJobS6~ z*6;90mMAsRA$IXG>yQ|NGhJ_ApD$Bf)6kQF$6PMRRzqTW9e&IqR7(K zweV6_jiE^OfOl4U^%tF4MM@XCjwu+-{k|zX952M=XJGI#_}7{Fg<5{5FS9iMtn-~j z`DbowzX9}`Jn+VK$HCp@V{zM{$ng{(Q_X=lWr%HcKHA0d>p~mZNKMP9gHD5Kv>og+ z78Y)jxlz9z#k@zA`$x_C_m8Td;4x$SGT~|Zow$bdWGtuIVOxgtcX(%vCC^>FunR`m z3GQ=mB%Gosb?g}6V3goB&*IxMOrMRlXSv+@;)~jOO`_~-w(;Cr&0o6we3O+0BI(*J zvZ?EM+3jAYx2YZ(2@03`kSGrUn_3sHz6cR-f?2Ac-3;9DFxwAL@KGYZ4MldyQ^KL) z7Bz5IHTaY;=+vWfOXumMkY|b&ta#E>%@d*WwppW$eSh%3Lg-Saio3<-|j8mJPVPP%SS$rq$@Q_Q;Rt z(VWUET_D9Zza&LhmxdhWU%pJ^~Ai6_nW@2 zgAXzvvt9S{jUe}oBu=Hk?XQLlzx{e?3pRk#eqpb({-CeQ6vZXC>i?Y_UV+0i<+1+ zrALr^5zI1uF}TVFhxP?07-QTWYcsfth=bliI-sUz!w~wO_g7yV+c-JdWsr}UB#gyi zY;bq%r$PQ9ctrP3<0h1THYCN*>Z{Wgz42e;PUA<2HJ|Bo{BjI07&*X_V!%n0HB~3_ zxz06d;Ze%MBgiLLzsC3b0v{g^e5}9pA#Le{^iL`Y#Ww&ir_BT4dod30G=hBQq%FMi_$$)3 z=ab-(M*ZUhV9aB8Ebx31BG&ol+Q!WHWX`oy=JC>#6Y|DWQl@fj0hiZ*P{g>*&}l_? zOwy(?_7@n^@|`H9PZpxLG0qMtFq}Uo1b?1dxyK-PRB8DJ$OP8EbQd8IW(b=`Fw|p;i69E6miWWQ42S@ zcExp7I)*o70tzeL+=wUWuNtjEuWY8ypSKv1t)YO}p%qq`87lVocoHmbei<@(=pk_L zSLrcpsdti36Yc}5c_DICi-FIF;}VRD)Wf=9qht4F`CM_%`1g&g2l_R=IWED^HEI)L zT`Z%dhcUrT=OAN6%pGdNvt)({5g4PlWnE=ns+9PcXzR?{gqkW9;X(f?+rX0 zYmYO3HfYCKEW%*gt(ZhdtG+}}#tq|A$qIR;h`n5_DN4}#d*H5lejWSN6 z=oCQ$4PDhdS$vJMQ8IdXFqU9>gWD+WZDlCsfdc|yp`XAH4FkX5@=~O-AkSk<18`Ul z;b63l>rxP;rnM&!F1?z;&3oNckXD@l{vB2K`_dA@!(Fvw#o9D?;9rs6)|p?03LY*~ zKxEazQn*e|32^uiFusm@qv`D^vIa5d*K+Vq=8WIUXa=mpxg}3K+t#RvZ+|qMQQmB} ziVB>ADGvzl({NUCRo~zF_T0DgO?jNGrw9hJY>YaUMP4XOQPau2rH~%I9S}3fZ{f`S ztfI^IEt|sYB!TA?2FsFZi;~hW`^-A~hB8VjY15p));onRf zM8unRxoHRWZs<94e@UWCbV5uS&UA1TR^ss7AW`qYyU4TSWwn*E+!f}7Mg14K*91&1 z4?3MQEQpJonS?rho^=m?RGzx>d-gDog@bGAH6O)-jA=sNTyQ$X<=HYUcw>Ang)=Lg z&ghzeZ#NYjS$XxG@i}^a#8`)4_wHdB)$y#cIUzRNwWWa8lutAbr>T4cvSSt!zAU$pIJzoLw&=9v(`@VT~wIFvovE9KYcNcNWr|9W^_z z!`gckrnqfmdcxouUDww#OIJ1H=G4dhRyA6q=Zt+uRj2k*I4g1|7LpO)0e^jQY#}Sv zir8`_fd8(`>e}r30yN;oldOQRY;5}A83(9m`y`}GB+r#AD*v_eORbQ^nIn`jV_VM-ResW{6dy+Ct zo}bR#><{vD=m_%T&+`f&UZ_L-tS8My-|LQmbCsFK4fwC}_{2V3>**%W(^DWvu=A;D zwAUv%m@iblHENmWS#Z1gpcP?YAa%_XFR#%XR&HMdREn>KMP-dOr^q#jgDVXGhY|8U zy)2NC#P6S$Gd8?R)bpL+A5I)ZSB%6ztPnlSQa$=iGB7V@#_9vHN`{foqOyl{EO9&= z)3=^L-G~ajX`7TNx((IlszhN?*CBt+TTMCgiLdaHGDr@w+X3VXbo^zgWJb(P=dtT?9dt75~ z_q^}xzOK*uekY&4z@@_Ie|(TvYm2Pv!3c0ywT3h!a9>~KRJyPuQy`xkIU++08*SVo z`_N%1de^bzgP1{A<+|=W?k6?OdmJU&>>b(Wqn{3#-W}FcJ6Kzix-~XrvLID!-yY!? zEpi(!Wpufp#)Wg#V?J6cZUn}LWgOPnxVaTXb7Cb*#CBhOux;M-uH9Yw@aV$E+Ra>A zF?v2HsuUy#Z;K9p%%9ygUwWjK+Ea$_rLJJf^WXyg=YA#Rb3bidSRA->T}D9n3>JFMJHp{AsqN5O|>PADADcW(dC=LI6L9z&yTXW*Il-L|3+Kz=44H`IqE{DPo-ny z1HY0l$oJB1)1S}uZlz4-aH)PR+LN*W(RI-W*z`A0*OkKl0`@f=RR63^osY1#3N$<8TiA$;iU2zg8=?mC|poRsKmh@eP;g9tJTcZRO5Uo+s zmO#}P0a{^KVE~OyB+i>|V`u7Ojj=Z}u`)8p5HeYUBC_@4L7?zUNFzeh3coAU!pPXk z5d&x}?d=?$iTZ&-4cz+iAXNJWoMaG#gfuCu{jTD%0tWHiSU+i_G?C~pX!XK#Axo38 z=>p6#!RizlIfnz|%s3o@Yqu7D1psg8~Gu|4HfA#va@-n1m6` z3@&*dW@-X6HABEKCNKoT4Tdp-nV7<4Wnlb!yDx&qdD&46eX;xNZD z06~l&C_qL_;vD9G+)^hjVKoueKOEO2@%Ok8TEtj&;#E>}Ba9pd*-_HxezC{%1U4~R^ z2}wXuz#Jrb_6zAhc7pX=e<;w}4XM_`!Hxx4!YIIfK=RDx(nRf>aQOeh<^#RUtE#mG zLKrB}+D-Dz<w2Q5!iJd92&y4Gn`+F>a z>cU82DskebN-vp4vI*hBdM}Xx5&-EdRrD$Ifk0Z(N59R=| zX@H|S_#_Lu(>|r7Q_(>Pgm71bf2&*cWkZF6+bq8$Dl{^Wa$k0Y*F} zza*9zjkMQ9BGM-~j>zWkF(9-KC4rLw5z*t+8CJzqK~ROX*F+-5CpeD7=kGBf+8eP} zG5&kwh_CQ-LK3jkld9sd*2=R0C$2@p@fZC)2t*SBRGi>tynulqDTcsX%#xt$fK=6m zArOcwk#O8ie-8rDOu*)hp;b{52zuf3E|Q?!fK;W0ArOd7MI3L{`anR+B36@faO`#f zJr016o>Y@^5D3J!B960bogjedDdaN|W?GPdZk<#!a1aQ@#v+cdY@HxTuR2IT4oEfQ27y2vN5OIQtrG;WBS1>QZ~zFTM1hn7fmYJC7vaPPBaWYNy&$YQNx)7( ztVYw2pk#qmb%LRpKx{GMxEa?80yew`S&V>LS{9#v1luFzQIM(!i6FKZalDl41Oc(? zCK1mBz(0?7DM%IsVv7;S$+=Dt0KGaS4h+Y}k?^wu2}%@5RU8=qI3S2EMjRjMIzf(|-vJ5M2U6{HS_J|9#{;pp z95kT|g#g^@tHQtpGSLW-c_7s;Cmak)Xzi04=tC~HCeC(_PDHr}93SsGX9ZxF$2(1c zV*R&z6&5DEe?gjyq!L=q8RKa5Ke1R_a++vrfTdwI4};A+;N$NIkeeX&JPff`45mtSwPZSl^8R#TzRG^Z*Tz#>a&nK$;Q(!qfO_zyAtk%rUkY$3JR;actddm@ovr z3)sB`?_%*HfXM|_G$4Q*M&cP81hEs2V=7+*2!u}!m=93O27xVTfWr15jUltLjF9Hs z04ZEzCmhGp{`VjdhG?;0d^Kky0Sce-Q3(X7Hi6?Ck#7;PloqxR`th!jh;3iZ`CEb1|$krrw!g0z3>jXh!)y3k4qrlyV%n6X% zC-JlmlGq8ysWPk&1UP6LUrpNpH3eP-*g8nH8wx)Kki^agPKx61zdhlK2nQ?@P|p(_ z@CdAwHUTjskiz&+Jx~AN%AHp-cSvII8z;lDP7tvC5%|mVK}L+b)o^> zMk%Nk9`wyai7U{oEQVM~Vv!~qN_O_{mbT_-BQ%yI0N_Ftb;4xg}BoDAO@Kp=?2VYwu58BT0mRsuw_@oNdl za;zkGNEHN2TWCTMFC1&MG6|qqrKrF{0os#z0X8ch2&rO#T{%rGFeX<21O;e-_#fm$ z|GQ)=*j2$Nw1^~AL5gc-43bQRugEz5jb!S|XQ6rd-zJ&5@l=HcGL>sqdmrQt^Kx|TrC68bpy?qJ`-u^{1IKxf8L>flD8GebJ9 zD-rxj#`ptqniLprT1HQv}i0qL~DA)QuW*W*70>9oQj zomM!c(+Y=lTH%mRD;&~kg+n^6z)8ZN2hwSULprUX01|o&LIcuig+n^6a7d>W4(YT4 z*Aw~_bY@7W6%OgN!XcejIHc1Ghjd!ukWMQc(rE?0JpP1`PAeSJX$89y{w+wS6%=Se zBhWQNI;|iu0=)&{4C%CjIu_`ym23Vjkh=2BL(eEAkP2T>Z~YsA)cQQ0B8TLZd>Io8 zg}6q(O|;}^)k-%YXn9A-IXO5fAM#Y*53SukINS1B=$%!9L63|Iq+PC~`x#j8wR^Fif`TY}iCIQoSry2Ik+4XJ#11V+2 zUfxR!(^EqxvlH#?8<*H?em&nT#IAJd*WAyiaVgZp;sHY~i@!#E7Rq#gEKKy+`MNJH z`MUgCGRhI(GB^E^`Nd{m9-r$+cJ(f?{Mw@M^IN^|@~0nm=UBbac5|~&o8`!y?r@@q z^It97{cQEm&%=xa`o?Iv?C<(&@N+3#+?OuSIo$bn9j?&OY1wBEFSZjwYuC)wM(|iMP9-A!cv>>ullQS4zA^e=~3RBk4twnW(MCb zn*3S6dEc*c3O09R{fbPwd zJw7#4?=8e&JFl{C)Zb~M#G7{NZbYW|gxS^`^kZ*4`wcRxmuY16_S$vLs$Ak=NZFfS zC@pfreSh4B(=;y?Ua(UKjFinBDcfA@U9Y*G%^g|jnK0QA`W|Uj*g;PIQ@k#d!*On9?lRsN-aev9WbK5( z`MXmGkAHk~o2=RB6vAcKj7OEHeaORfWltp?+N|JnKm2;HAW|F(VmK{K1LeAYHa-19 zxiQ1b+QLiRO+L0Xu4FP{_FhaUAG(mggGMUj8A;4PP4su$ZabtRS?R|d3ZEWK}g z%8G_`&37~%LA*jlp12N6C^rlwlcNwyD5Yi*cfz0q~WlNz4Gw~j{TKf2kwsEMhIjT82F?P9d43~ zHIcqoBrI82q&uL0o3n9S)PO!kD8*ii;ZFROeakr^dy`=~dvn61wJ`FDHuKGMUfp$% zK51Z{`_5I zy5T{1!qiTod!F^UF*_lB@9Y4Bnv&4X=C8&WLebZ_nfAx^{j%4RjhfQ^pgEK&K#4A< z7#*W5dwa#GawvDpo)0A+6wM74I|lA(Nw&!CmMdm|kQQ@>8(}-eSF^_e-t8GvE}W<&}$634e$3!l?G;Sv(1-YKS_P$dg4*(Yj1{#e0s}99y#Bldowv!zU~jSCQE%n zDSj+1QXk*%>XMn(JSOMve&9kw@xmOpd%9Xl4y`a7S6;eW)%NkICeuwHwiH>GJUeFF z1uy0--eEWMpzDHCM(dB}VGbv~nriMg`SY(I?0Y1%LAyTQqCQ&E!3 zQXAgf>{n%pdO=eriqP9xo|oXv(_&^`c`5zsfuiSg$Gw*LXJ^&s3jOj%zI+~`+g(<6 z7&V`oa>f2-#m)sRE@FQh9}3S$9P8N567r zeLgT6L|Y;!vhVypoo5YC*lsjk-a4;8-qA#7nZcQUYFi&qPI+G@uU~=x#>!Vrs-kar zbDPN~3}d=4Yw+d{1{!71rnfF__>jhybtKqDwH`Z%9)p^ z*w1K{=21KlebaR6>T@ApRKdY^RqAt5hsLPy8Qn(+`sKk{b*}L>NkuBQr$;>B^|{?x zK~k`(RmP~5mi(NPZ@R5TRrdM8jk1dkofJ=Dqm_9L=rbY`Lv8tU@0lx8n$`8cbv%;K z>rR)yW|Pbxo@BIjNO!TL=@sWzPV)oX{J3&L`Z-U&;7k>aBvX{BPq?n zt%w~Bf*M1gm5(ygY8Ngl=~wP~cCzUG1KmFNcO@POpg)q^+QH(eZ&_4&!&4{6+lqxfBJz4PBFneb%l^pB!y zbGCSuSC6^+~#V%C^cxF>Zd?O$PUp7nhXJ`(0zWT(r%itF?Ua`8Klgjbv)N zn=tg*FJ3Zc=27ozZ$02hgBU%ZMjyHBy4Elb; zA@=$^_dDtur_~&UZd-hsP21e?%_ifVwM?j-xX4)XtF#6#YC1cXcb5=BCyk70SjUQM z(;9X<^+_n66UJTOSLI~!aUYj=trXPt$#%y^I)fAkgL-}r?Sq+9j!LFmb>6Ow8LDSk zL~gc!_v%*d%|-Vk3k^-l!^|1m-g>tMvqUgyO6S%xY0kz?D@sVb7_H~fx^#s{BQU@+ zuiMZi)V@g|Fu*pQ<2$^+Z>i9+QYB8MQm+4<34Jdc`Wx5Q+Szj3!(>L@>aTIApK3!_Uf9!e1Q>@6p@i#Jh(^ z7yo!~%!_$cc(?EFRUO9>)dXkDGlz22o?Sq+?iH9VKPUHHWd8n`+=tBeTc=-~jlR@j z&rz62x97-k;MR>|RoO7F*PJe?MkZboF)Y zmGi6SIz}4kA=4R6`9^mOr*5**4jHdc-CMqRHvh7X7@ARzjJ~(u zaxSg)Azz3XO0xQz#T&lvf;yFFmX&0=rI@Dz%DLgt2}--@J8G27kfDLx>eC; z)-qS@uX=TJNZ&fDpVP&d!DA@8=^?`zEwMMJTw5MCGkr{p8}h!y#C6)pSpP!Ilfube z47-bWamZ*G(&dMY0lSQz^~R?B=GaTRR1}x5B)_;9D>vfOy@^%0Uemlh{U(iB_}HTN z_E!bNUt$WRY|4Y?W@f7MX}vFT+&9^4bJOqz`j(0qPpV|xlE9$O(x11yL zLQ6e#&^YWzE?wK9#Z&fibThLY%qMZ;5z1*7+~j-;Hh*Z z!PG2e_s_@S!)`~}UtOh|HA}Sk6fK}|$TOHBH_6}HJg2(5p+muws$#F;UK6}w`C26Y zJ?Fg>jyviaI!a%6Xg)-urX7T`4D}241!&(L|M>KBSq5#M-Em9bNBc!+;(+)7&Yx}f0-a8$5 z$tqOtaWd%co1|ts6ik04F5-PU@^-wlnX{%GGEvREqP!wgXms~otXv{3HUXJ#r&^oH-OQAR3`KghQ;vbJ{DM^!X z;Y9Pyj7}99waebG55-DmX*zxzV~sKXStYGXd$iO2-X_`h;55;CNiGld=7Paf+6qFM zuHoC-HQuo3v7NkFYmYgvrDl0h=v)fd_r{E((+b5JN(0vn*|%%%Z!O$=f{UDjHIiX4 za4;{%`U2gR>-$#j^QWB>gMp?LiHoX%gIMJF_zx?5H z{V~qC<(0pSXTf~X$#L_WcU+D)t5QB?7>Ln1#C^ESc5Bmf2WxAYea$nHN$qoIW%8$X zCrNY6slE^IFIERDyTr8uZ?UBI3w1pF{l(rm55|62_5F?$)#Lhusgg@bgFPs z;e980rFv6{3TIYO+p=f^!uFIV=hG08fr|3Q{KV*~JK#L8mvlcxJAn7L)93t}!Bhva zV)jitnEyI;IC{$CSMJ?oy(e#eyLRqeL}e{Z$x63zA=l!J(%o##;MRejZQsN#^>6&f9Zzw&?QY zdpG0#!yj{`t{!SPU%bhX`>a4C;UOwZL%%*c+pzChK@@@w>ltvyVaM(jhAStG)rWrJ ze|2(jK=bSiX3X8NdXL1gnX1k`T?;pbLm0r`)vLnWSw#EfQlEa!!O5KZm7~Akth@B3 zJ{6Y(pH04g6Jz%`Paaf=WGcqa0TzGu`Dc$Bi;$Osw6#k!y_fS~JD<2ZJhdiADWD2m z9R`smuNy)m8bjg9oCEuihvbll6p+>3uRAa2Lqfehq8Q2Y&^^OLWr z=P0%I3hp>_>&USi_5+B1YEG_gMjQN(K2!W8*v;D+xR--tchHK3NV$oraHBLWs-KaX z`YN~}dqjVjS2yjZ>v5XT#$^S3OwpDqjJ25Mug=yMDq+Uo+>RH{@3lbrZl(_7mVeWG z8|ziV4i9~r=+QP&IEnC`z#{Z*wzej@_HA54Zi=8a|4%K0U9-3b#^!zRhye)MFC)J{nXr_{bDaSf5m6_~HJVfzj|AU!8{qaZ_19cv-$pmXmIPhi7%2a&cF2qt|zVZ~kmUx-- zA>iyp#mR{Z{Rzdpvwg@Bd0T<1p8^s&!$QwFg7&tNp+39sb2lH*zvFa5&g1)oG-ek~ z1b7~kbOyJygd`m)xRtiz;iolV$N0gRM!_xY1iQs1J5PT);!K^q@5V94!MCzBF2i3x z<=f_Vxo~K>>^jYOefi0=fl%6n?}k(I-!6W18@sXNnusQSNOJB^vihgx9X1+8+&c_& z!WeQj?j>-KIBPOGC)W9C3OV*2U-4%XbcP2HWJ%3N)cWC|WprNP96a#UQKwu$!;?2@ z*f_JNWqv|;K&*wL+tI^M2ZbsiZ$(VK=}emYw41dz>FCR+_=~4#{q$1WTwpdL*ba9l zFQ*yKm(ouiPgbxUu&F)p{V0VCrts@K;XA`D^WBck{yHz4=+4(DD-1jGr8sE}ZlY#9 zFMY-91lGw``~t=(1gEJeXrwgwdbMau!aNnfY!{vG@qKoT`JL#ui}F_oxE$$yebb^F z_H4Tq3xY(N7y*wa_u2DBWxl@#>WePlJ|xm|n|jB+I)OW#Q40N$C6$;Hd$V2GL%QNJ z7-H1H;~Ty^9os|zZ;+EZe+A3n-|iP|rmr|H0;W-;<@aoU)BlEx#r zw)p;2R{dG!lxwwlvfKMVUU)jAoPLa=LFdRf#H(RDlggNAGs_7txn&uIvhh=R`cuck z#nTD2?p3C$`HqNmU5y}mY83Ofm2J31x%OTX{bq85P`)6&uIhF28JP3g6-niUdck9E$D3t)e zq4VSQyxHX00bEXx-DUW^+q8de{g!&u>sjLiXT$BW_tT~;Etjq^OOVZP(+UqIse>B)-h#a%DcRYcb3)OX#7Z+-p_mN6EL5U{(9TbVIgVIAiO zzrLF1pg9?3w?puJo$w_-uox;oniP9i2>#n$ED8+J?^`~sY(Ii>>>n6~BXNzwBFlVxz5^|51-w#BOF?ZV|{ z*suR^GN^x#(JZ;k;CaX`Fz9PnpU38sxec$?BM~Pb^h*@&E^5Bqn_T=8MVN)KOIge9|ayxP*vU9+;ehMLB_ z<=%U5P~q7pnP|@U*|d?ZtQKMCL>Vo@7*z9i+|i|0;;h?yaH@glh1U+HkZZN4PAZ(G z&#je;+}UnAbInz!@;GL$^zDO{r5%PHJCYVL-{jRha@@>1i?>$l*nPVKt19N)`(fSM z$8>y+nY_w68;isqe%`>w!NqvQQA>}nPHh9HTHYfqwLIzLYPP~S-(N!2v1bB1D)*_} z5e%+))=`7cuPX4>osyQw`7Dz=(b^rAXGxLxG`POU`*fxqqlwaZQH|`(R|igJbvp45 z&k84ItKB#=@b$#@IOYd(_b>|F><@y#j_6nH+07cP*Rw~4&p4SW7Ol|gef8}7(zZud zFAI%0tpg6ZO56Xac58CXE7Xxg74WeaItJ(uQG@?yI|e**3^-Y+2)uC}-2d-(_vLi+ zp0b_fjOG#v6P9)v)QP!a?j!IxOGl5hN${3d|E|*;_*J%~Q-NLafEJ=c`Bjo3p8%_d zzuyK6yqQWCi4cl+_I(zvEHR2TQ2f<^2}f23^H<|JK=bf=Tam%t?KiVSyy_>Onn}JA zc8?8Z$hCN*KUrfs6_rr~m2_Ch?xmNr7#9E`bePkCu z7yB#B{t-89zozQB^bzhlt>!nm-+T0r$elfV_j(fZ3v-3g=Yg&AXC}7M=bfDX?)?-_ zr8>Ji&XD!~gMNG6Qy*snz}a#R*=x@^1Jr^;HJ+xkck}q0RXvWH;;FI_w(0>P8kATAnR> z%Q6@@^0ruD-`?*$Lm$p6>`1ToLfn7SX4kVxN@&!DLYw0z-|)Aj9q6BoTg#BePDvix z2U|u)-Kx5R7`LBM*is+%GrI5v`baP5;d6z@Oh@Ia70SNs9bkR$_{HSC2PMyli^8DM z*!vdFm@nm0I(8vpMh-uxG~Si?c+LBA9#gsc5Av8RX-;hNQyM7=|1FOxgUzHuIZ%433xGl)_I=x>sC)3}|B^FLLQz-6$>YM5tQSB zB^m1R0A!v7Ps{Ii2-2)GznG^64ubf z0pe=(uV}1IgqV{zjhj%S~>zHO}l@6V%Be;66tYb3*bpvh!gjy zKv)nwFT}gc`i)Z}^-ThC=D$(jB#HR}Opt$tW&KtvicsK_pkIWP1wL_8#S!z5{tIZ4 zTlaoTDC$W_H&4oVy*x( zW9y#@K&lJR*SyNIcUz2>z2c zoiNZeCAJZ9ZMti)5edvADZp~Mnh7GHmd1iZ(j>wF1Y#QzzD667a7_S!tfqee&%P8i z6F?$_#My(Th)qRYd-mVY1VUaTDZp|GWqm*wv=|Cn6F~MudL^Jus&)d3*iL}2(PAW= z3E1=wK0HgbCIG!I64!A=5!(syHCl{>AOO8CX^7VdR0}{1S5nx_IVtlR0cBreI|2TG zuowX#tF*w_H32^>q(Ewe#A$(1f7l6Yv=|9?2T4G73DE*0h(M4aZCYR>7iT+DJCi?l zh&5V`gg{{B1|VW+0w5%TW*13Q1LJ`p-X(B!9Dlz{5azNZK^*C~sN?U)LK5pwkg}+w z8OF%j#Sw$X140~Qz|oSd6A-Y6;+-czCl3k*@C&CTR_JhL#*pf^DNSre;wV|x00O~| zAqixvep3a5S%DWilmr@HB(Cr%O}s`R)@DT#8c>p0RYyqSk#Ow*i3$=|c$E6%aad!( zk#Hsemm06d0*E1h2U;Y7h8IaIJOU;}oFoa_&K2WmZD(W(`0ofacnBOV(K;Uwz>2xb zAWRU41Z9Y%&LAvBY+57MZ&gYHR!qDz1^C@0S5q>QK+}uF8HA;XO=}z-)!)wqqBQ~( z7q0RL15px4(@PSRL6A6&uoSUr4YKlUstzJtBS1AW-kAbwEP!DgPpB-3Wz$^|IV06A zQ;OKM#?g@d{Y)Ta&_x2u%T*d-0=iU5py@^8G{REEAvhcb+d4r2QdM|oiil7e3Gx&q zuK0)|HlA?wbL$0R)tMqn(;~t4N#Y3_6tVGyquyI52tdFK???d<2z35{1PO^NKB9=7 zD;(|MIza$(R8WG3aA8COPFNC8(4dGdNF3$j--CeFJcWD)q~vdh3KUKvSI5D2NvaN& zwuz;+kuj0Eh~t|4djtrL1SIlziVBW34Dg)^NT5_jswt`!1km=57;8%#OIuJzi*X{x zV{Mir5gs5z1<79m!p~Ks35i&BxJb@kz~kZQVrz>f(spvQB=#n7#G`*dJ%}s^P`$7! zgNY5$;Uf-6P+I(-WH4beNSLt+Ohy_8H-#CQz%a5h*n=s?)(Ivf12aa#jErGMQc^Hk z1Pl&-4+)bdB8W#I*KhVAfzkh4ukv?T8411*sivC#;Wna;T`aA!-XYq?&eX;F4|vuX zVkEGN5ug;|w}d4KH{zQJkf2V3RFhEu1P|VK{wH*Bl)CGi^ax-K;k`tnWGzB=)uH-t zSOd^5PX975^ozg&gH*{g>c(I zfMNzn-4gWIipkI;g*2_^&U_%3y@8(wiqBl zUo5F6v;Ker7ngIj#JCYz6*vO!bz%Z=fO1=Kf=~0@OS}nJ%KK0$OBAHPiJcEM{1x?f%tZeK`SaK5g~2Y3=Lo)uBgS)@~;5~LQ4(QL9AxG zq>-!Db09?kRn?KIEdp&U=#|C`G`8Q-$k_T1Uk#^Juug11?Fb~B32Ie;YmkG^Pg0f5 z{B!v*0Y-?kk*%{6+Q`-vjj?sHAzoc^`VDJbLCt@KhiJ>e zX<4if6s)A`YI+Qt8CnI1bkk#hg7OcuWR3mg1Pcrhe1Tj(ULYhQhFk@NbW>%20%C7x zY3ux_T_Ux%>^k8Vj1}aDGG_=7F@TarK-vd#e*SgQ#l|}jCNNnUXBf!8!AvBuQ4SCW zF@nR4Bw!Lq7)BCiDgi^FU~m~%n6wE@+6*RTN<6*Sm=Y&==7GKnE1zG1cX2t;b2ls~q{np9hl{t23YtBa9Zf5;P?+*r+b5i}oQ zgZ%#~-(?PykOAwWI?NP-h9S*hGG-_Y%*Y5PWvuFfja!37UK#_F1%Yl13`4w@<5aTN zc{9QOf%kNX(v(2h3~~ubenrGS{>~U1dut=-KNbL-YS=n~0c8uTIT`{9OCYEQ6~+Bm z00WhQ5pNhc6}9yN11cF-Wi5gF+3&|67`p!{TSF>)D0ar!8rfi+?12dCAIPlHq9fQ! zLG8y%ItZ%;i>;Q$Cp-XRE8YMJie3KG!ic$Gg87HYHBM)5eRBrXJgj7bu*gVBiAmrK zq(Ba2B@^^tf{c^1HIWgGQylzzNC<=Zpd@6aIY|OQ0s{N1430AR<|GNy;|#)27QCwT zAJ5JDO;AuIB8h8I15h9c=##*z3&cUO|ByTspiTf(2{>E2u28WNK?9fhpRU&bt`>_} z(XAv>iv`IaP@f1CWFfU!#EOFD->Ai|d={Fg|7~iqD_<0Q^;or79DyuW*A&N|ihF_W ziNd|Wrt)zwa8QBY!Eq#FM`W>GwYV3M$R~~r4mX0mJGd9v90TqJb}HjuKxdYP&WscO z1#hiz+u&Z{&%DBGf*Zl^Ah;L!Gp{f{;70IgUg`YDjo{C`(gBVgfkbOpI)QN`_-jVs zIzn+H(3x?afw&Rq%(xCQ+z51LNVFE%=J*SPL~Fsr28}@142jmRREJ~FgR79ny}+Y^ z6>whpf{NVFCKiPj<@(OQstz<(SGT{9$FyHbpS{acV|E!aZwzYK}i zf(!*T0$npCT8n^0YY~uWEdmm)ML?pp2uQRR0g2WkAkkVZnaaxd!bNqkmjQ{^A|TOP z1SDFEfJAE%kZ3KiqVXSxL~B8k5*mTd42jl)#v14?2o1bw?Qi|ql~n+GY9aktkm1CB z@^AEGkLLHtIQI0S9oi|rTls8NnYczserHf{c(>%vMYUk=4-wTtIgX) zdU^bss4QEaX!!aI_4E7F#gt{Ix$(xl{qOt6k8<7rHMjVE^DE(&%FWAVpT&L4mTGo< z{lyWKTI2KOm+vjZXrs$PQ#SL$Jiq34ycyYMz=qN27Qs~V4o!+J&z9NwJ_vUn?!g04@+@ztPYZVP$F7UtO1uE+e&P%Y3$* z4a)7&Vzr)g{Ss$oP~GTT;!x#X(QB8&*l^Bhq4C_tkMU(s(=hP6@q?frwpE9O~WinnNR(kGM2|NPn?ytuQRFLvMw zuV0^xp6Rav)a8a6n}tp1D?0s3bX*k*UhmurFJTbXpc?q0RK77bs?e~Ro%?dsm@i`Z z`M0`#{@VO^{In%grOCLdFMb+HzjbWy-5bk?T@-5{ZRqp1BP&ksk!IdWd(KVo9Xt1- zz|^J2ul_To_rsVR2C4V%ufG+gF3UH4nDbVTDo5-75B*BVS+^@}t#GiozbxcZ;n{on za8pMKZ+QOP^x}=!O4k`<*#0XpndFC@i($uKmcWXqsA^8|FYM^QH^zd6h zo*p+!(ZcOR+0#@tMpR4T(+B0>pYZwBw&YTIckyVpXG#^>@ejFsXQ{T5wQFeJ6OK>H zZ}LiwlZxM*H}!t6nZkEgrk#SG-D4O9*JO@F>lfkon-f}#$jB@Dvv;Za1|5tvHxZuc zVc;t&>!;&w0p$f_Vzo8+&C1|%!X3NML)Fz)!{vrjoJau^yG`ozT8i)aSeALp5sQ_ zmcdvjY5N!#4);B@nvd$C3OLq;5U1m(+;k}GN-+kWSMvJR?A9AMici#SR%0h`)nwR< zY~$T<*IQBKc)KdM5EDPu$qJ@m>J8Lm9n>!r%G)21xr~TxIGJ}nO!1=M`S;KK#>wv7 z3%hxMtzAp9s9qqYt#6lqiHK_&-@%>Fo$bdzT}4qo@w^t-5gTRcLlxeT6H$6ZCPZqx z-$ikmQorb>?8u6l{mvc}cDw_7+MUlR*KHEsM$UVF;S8fFm*^qa*vDRw`*uL31R1eNcdLQYN>AfVj*7^~9!*XiR|+s&!!ER@^j!Ctf4+C8 zPy4-r!^vs7uwRECrB?;FZ`o;(a)>2Ci1*6t$NX;Kq?p+;4?$3pM za(Ax0dA8Z`w^6>e8?N2hO_?QhEUD+)WvaX}UL%bQQ>CRasV05w@Zn~L!Hk@jKGD5a#x!u_9&#HI5Ay=(n zmh^wcTW-(&{y+!KoZMC!e=sD|RsoagLfIzqT^zW3TZp?gBU(|3yT4k^)lHqHM^LJY z`pM_mTM^1!g(J?_cXXMkMP+h54XX0>bkbPnBVn?7eeJ3V00(-^jsdPt+qqCLHoLgvw-q`rEf z>gVlj3-cEX%r~@9So%C-^xY_oO)rF#!PvsYUrggp-|YLM{rkFY&m$6#)@~~xe^fYr zFuAwnWpG`9tS@gP#dN4O<09qZ4@=KQhR*x+Ztc18SeYl*fNIo1u+q`Te4y$xpKwpF zu(H*zm|IdY2MaRU`j)OGS{}{cJn6D~kqbL`OYg9$)pO&q$`#(kDBZS)BEW&`!zy> zw70#r*SUD&4*Rx-K*=O`x@`^IY5kh^OxbA}{U?0J zx~1oQW+$s!2KUV!3F#AU4B7dvX@Ai1%EvDo6})E0drK>TSf1UMRPSwG6})pV^rym3 z{|I+`x9}kJgu3Mi+=soZPR_HT4(HdssqsKuO}&1qof@-%;Ex%tXNn%Jr(?RO@YwG@ z!1Q&_b5ynlx+_%!t#eWD$AfEJ7p{-ix4exwB|UiBXY$L>DKk#GgbPZ=_NGId!aQ=~ zrOH1n<*;rS4T@+=dr5b_=2gcb%5$`6zi)c*Ei7R8NczPipC2Hez!ljAPd2?Zsk%>L zZL0XwL1FfA!E0Uqnw;8_xTm6vnr8aPiZ6s~^@|jllhMf^p+9p0g^GorrMz@6uV45{ z$K*-t2iPOsG%K!@?M!;PnOP1$Ryd8N7whg$qv zFT}gmJ2B5c|I&3iGfVi`+Y*O(S*8f>(fh_P6KA}gxz12#@W$2JysnLYA0GjZbP}~g zpHZKFY$y$*8bl1C%=oM1_?|uhIGFdLK8=oSbacNczng6S>znRFlU9|CPdBz?9V+1(! z=3;i<=|zQ%N_7cQYoZfr+Jzlsbv8OkC7(d)bkWsXHMsyD!1eLhuCQHHYC)$TmdDmK z>*my(3(g7;3A{ciDq&cfYHed47#L9;z{^}$PmSD?Q*@j6?E7=L-Qn_?_cV%pk#5(I zqzCk=e#pMYm9?X8e0=2Tlg;^kWED?0*J~@GPqTC@FLoxrlPFRX+2y*6i|XY!3YqI- z5ykbRRvy>bsOolwQRVM-*ETyU-2I5Y>Dw#yBk1GjHzp{@UKil#QoI`xV;rC6V#E8H z!i(psfa%5{*Xxcs6vzT?uop4w9h{-0-@~Q3EBtZbqMGl``~FH*9N(zLyA%sdxw`60 zPB}8|5)&I?s@HuUa{_%lM6ZI`SjFF#C;eg*zeLYi*UGN+GK8{6PF1AMZ?p}32cb<& zqBk$v@*HxwXltYRS?t8rHl`v6n@-0f?FN1WR|bSepp5f z+)3Z`PoHkS6TM@5nR(M_j3ly}J=(v)u=#bmD)I=EtjQRl8x+_s@}qh znBz%p5{ozJv>uAMjeZC#dw1uA|6IO`1lMC%vhnV7?`Y8q6USgmZ}>dAqRU>7#xR7u zz4xlfI!nyp{=sbtG?C|qecpuSeuRH8k9hs)5tZww2OzMhH-Nd?U#4XoK z+juzkg?6#dx0ZscwA`JS=c?H(sZ!n^wEtAJUuZP-=)uy|dSSFZ$2qGAw%JFjY3dY- zKTWR1F!4TFIWy-uCx zB$Cpy58XUMyf;==o^;U_~YKiCT}o}p(O;Gi10U-ikD+h<4Lc>LxwyHABy zdg!K7oI4q6a(F_A+560Bq6*KjJocm0b?9s~Ya26H!!ZUuYrc&Ks;2HnvWEf2c#=H0z^ ztTk1sto?5Me)|DA3*{293zk!iwYI!%kr=AaN-~b0S)%w5C*C{1Wb+~X(*^F9fcR+R ztB>VgOC0s8xU|)(tIj=YsMA_~PVlVOySdiSom)>DVwlo7%!250LdmVqd?FXcej`0= z^}FS-cva|;SLt#zusdx~C-@sr1~=s-8J}^L=R}2E*(b>|-MPDVth_RMno9Sp`<6tO zMl;11(nfoNHA)iYH}OU6g++vLlR*+iy%KXxwa7*f;UEyfdTK&obxieYztRm&Y#C`$wDeDg977w1K+! z?EaS%U~Skmr}aaLhZ0;OS;h>?_1NK>@ z`dLQ_*o(cis5Xy{Uqz}>d?N?v=(+`HZd@%0+|foY!m+6&FyOw8M$@H@Y|h1lhVuw< zbINeLljB!uW2S|(GUYWs^zjJ$=taG@mA=|=h`N+6D+c{ApsejJ1~xd@`mQLsgQHCO zD6epLgM)wk2P571js}O2cmvS`?+ddT0hX#j8V-HzHjeNG$FWnv04Eqc{WbrU>OabdyL&h z%k$mkJjeynBSTxtKWCj-_NnBVJ8k+hm%*Hk)2P@tg1P#e$|11?IR>tiOlsWtViouwbM)} ze*{&IqQVybZ6{P7hlN-q388jp)W<31>rNijLLYywtwbdrugX@;kv{TW?3O=!-U_6h z*%@>O61J10^1Cj;A3IQNJ~q*KeA4*Bq}8#BBIz`)?D$vTj<%Z`zM9=u@qq81k5c-< zsvk{1)c7u6xxXM2ao~8cx+3!suSJL>6a5KBf0gLUm01oS&}!N;#4CJ@oAR3QWh@E@ zWN8=ZqXTN&V`V7fsN&LxI;$Op67QbhEyX4}({?NR<0d}z)wH2gHzZ!NpB-VxsLEX1 z)wbZ|$`n4`y??^%T4_=R)2{N~wzPpueLYr_h=}~h4p)pUuZXx;Wo9{Z?JoYf#pIbk zllcP~*E2odu|rqo_gTb#shPz*I#|s4(*AB970uiT=gu)YMhQPUMtc8~wJ8UvXbx@o zz}Y}W^AkHAKGSPc(Zv5AEXH~=Mab9e+%iI5XhoF|VGfF_nn6_NNay$|57afO()cUi5yl(>4upCQ0y{=KG?3>dPNz*m{H0 z>I_Rb1a9(NZW6unIm{rT@!&7s?_Vb}J`AUxaM*dj{&mdhO@*HrhfTuBuQ**s_ifPN zT*%||eP(`!o7J5EL}EHmiLS1mpwHXAdzG$471WzXx?&G9YDH%w3+g4*ie9R9VGt{a zr1W!Q;HUWXa|$Yvt_jDQeL~WLx%(SxGoCo?4r$8>!i+?pZ;L5XD>OT3egMQBcH0X& zC%g_6a}adqG(Q-p4i07q<78N$YpfhXk!ke;tk3DeA*(h}>{~+9F+VEJ^YfGRLHc?H zfr3)=9!Wt-Qo6F*-R#kPG{d{%>dp?afP+JxW8vVgIHNqrD^4->rYi>--NLhuG4&F< zgQ?~@kTr1SbgvWtH zXiI#(z_mj9mU#7~>a&6?hic2$Ly^^IgTO&M9UeC?`6*6W?{oX+;%#wuKk94dOPjYv zFZye3`B?l3km&brrcDaoKTA~Md)9JLK>DhOSExun?YVEAk3ZQ8{bB?&!v4r4cHfrII6Bje*_NE4xJt8lD(Ueg3 z4eQ4izaTq0<#qrV`BQEaAS@1TnnF>UFr(_ToR;_5OOXNpm+%qY9waP=CT8yL zW`3|;aHKS5yKbEpA)sA?q)a|OX(Gm4{%Hz)-nanL($fX}_{TJIY0PfmdTsNYe2Ksa zw&9ECiJ5%)r-_`*Jl*a7OvI92f61RT0sWFN<(`=7mw(#i&r~C6%x3xDHxXE>5dr=Z z0mMkK$yXo~ivxOVE&^)Oq^Y?7P4~3s5Zbe-=)`|-Yrdl z#Y6yURH$T!n6a4uY@h#V9WcADrS-tN69FR=HtG^FBNJ~O8!KmwSf-VwiHC)|o$DXf zH8Sf*G7yq7VJ$`i;9GFR&40`y7cj?^Z#f8{ECnp31gwyn0%k}jLjiLnKd6@iRRWk= z04pR?z)HgF&*Cnb^?RR$EK3B)%#_BLME?!T5>wn|i4w3z2w0hc`UL??a{*Z?Z%pNa zg_O6efTg7XQbs`5Qouq|Ktl4kfQ*EIHC%pBW^FzqVe2D=P7-P=5i@iW-}+oUL5+@y zyOoEFm;0Yy&_CpkViQ1V#r3?*F^RZ*;)m^=9Wbe)7M^^@gt}u=z&ucChYU~-fpo{P zEXx0-?fthB_4O^_3D($b&%d9{U=0E|!?O4cd_vJNDNqB5N5%ZduJ>R3`k=5MF29G( zbNzc05YFdPXrMcYOP~gvZ@|uj`ZB2bBi7n=&;o!7P%s})W^Fzm%mkoEK=REXe|A;K zTME?o5vzPN&IE9E2buMIby7f}8LCEyjp)GT#p`nsX-9xdHOs8uag#zw{;oflA)sdh z31?!JYR0t!xKJ}TpM9NU0njMMQ*Xdn05mP|McY!K0FYRPnsFw8%QRy%`PXLxNr2eUehMb467;rGAQtN(XL#6L8^WY^{)!ukS;h(gOGLRCdcpbtW<;>7rN0Cy3wMQZCD z6M+yjgwG`0M3BU27!WB032y_qkBF_$Tc-_>tBWE~qx@S^QW67nz^1!1DKNt z7JO?8;laiOptuadGZ6$raFW0__$36f&I>Rv5hbzykewt(a2BE-5deR{HY~J;AXXc| z+(eYbzi<H1X9!M?h9xj#0-fLBM7vjBqe~j8&Qvm zNSL1pRLa+H0}Lz^?g*6$~xF(hUDN)ZA4W=JCxEdzWf zTtJOjZ2sP(IBw`k_{$YFQ74F196XuFh3C`vHn;h8e|7R zn!$wnM`+1a$O*BI2XH?TD>Sh_Um1;BT^qqv!_Z)CAXYpkemsEtiHP<4iD-~4u}a4T zU;=1!1r2r_h?S0sw*lNwM6AtEBwRbA!Pfrj?h1j>EgEb&5clp167DBrl~vZ+7eLy> z@9h=TDy#wx_8f?Ndj$pe6A|n86M=gKt&IRAl>nCu(j16;e+32i6R~h5 zswl0q9e}vWs>Uz|0E&wp@u2{*g}Ap^P;fsHv3@@h1(M@dMTIdSb*L|Z^%JpTF!AjG z?k8fkv;Mvv5Uv+cKtLJVV?ltu1}TVY29Al9f{C{Q+)u>HhON^EAa=A0!6evsM*$5; zVufJhZ28$&_E{X`&S zw3ak!*t|eUjU;RbL`;puw*$DJh!uwX`*uL+ClaC|vB^k~k3__1NW2Z;ej;*h@kE#n z2mp|THXvpIB;E#aKM^Yj`uFXCurDA9K#znz5;21w@iu__iC87nzqbLb9S~9-0gnvi zq10x;ASBirA3{UGV+^SE#~cwD zO$dlY2XeWg;#`1VfO6W1x@*7#4OjvEb+!nw`S5!~3QVQ=z$2!jn^-rb2wMa^%^jp8 zu6wDC04WvmE5+Hv8x5mQ2+b~J5_=<7_ zNP;BRA|aS1;4UVX1hh^|K#MF)c#fce6ckV5)*?iRv4dFx?qgz6Nb9o%$YsFg`C-}w z2=(xR1P@#?9Fd#gkKA}H1nTciKsbGZREAX!CLnx?$>PNoz_u1HC63rF0e3Ffh`T4W z1W5My&AlX`I|2*g)*-}h37B(Yy7LjPx69|{K!gW>v6ICR)=Tpvhz0P7gQ?b5We zv@_f9;>%}@S=dN|3RW33@+2&XjD0WED*vzH`fy(qbN2w(htt8tpwzJPkJtlDnj!W8 zYY@z@Fkv9<8O&}P_5c$Gz#c$MHLNZb<_uPh344G^Tg4t=Twv@0bY+MU2)2=+UqM&K z>S$nJ3|$#w1R^0uAQD?&k9iHm2n1Vl`0HTnjj_Liu8gfb#h!ug8Da$D3h}_NaMfto z1N=SX>XNW$@K?rFs9?|FuZ*izz@EWh8JD$=IRh~QQP})t>>23F5F-$UP3Oe^3U6l= zHn9(T25$`%HpL5j25$`%#0Ui03b?O~f*64)Z0-Z*#SkM9h1~_mo`LQeyB~@@1Kl&k z2t+}QK-?Ay<~0x_5Ct&;Q4k{#1u+6q5F-!;F#=K85E1t6&^<$pKorCXL_v%|6n1%p zc`?KYL_v%|kbZ;zf)FDR1u+6q5F-!;F#=I|M&NHaAFj_seH4Q8p>X8Dzk&0ajQ^bY-d~==t(ok4gE`e9OwS!04c$Utg_!xxP!R%*iePq+(4E(sN(V zn*O3$HQzHbBrab5e0gE&>!9BJN}hO?*49fw=S;*ztb>DAem#wMu^ALc4Q5?l*}Oax zls7eFQmq|yW~o0YtbCbmFpAFPlzjW-*77$iOuA}Y11nZIgMP-x2dz|(^i(nZ67>1C zB3-pHrY3xHWZ?*6sdDS?VcI+mIi6QLsv4@od?w3RW~PQFuhbMvcjy!zC4~5 zX6k;`37LbpWhPXp&O|qS=32ZEAinMADT<$`24=Ma&rDP@?kf*i6u2ZbKb>5iC$#7G z%7W~((uwaqmlz+I1TD9W?4u8z|C|gCM}8E%p^%ganU`Sxad6%(zF(l9T>;5J$*L3~ zeJ7W(r}~u~V=aZv^!}TvU!?bImAko+@3f)%!S%XEZvMhVbwefRQ^Q15=|twMEmoT! z$NE=81yvafX@sf)ii*Nbm5 z_rxA;PRje9|7|fXHhyNJDgGRF@13BVJMu2?dw=%%vz?#aHy3OPdS*6R^XbGd8s?B! z;flSJHhmBE!(Ym^&i8wXE&IOo$`)L{B=44Z^F^{|P159s$ke`T^RaIX0=hw?qg@hu zDdW`oCYX_~$T8DuMMq`tATwI4gs)XSo<$_8n=z8JY^&$1;U&`?rDzK4AE?V2$X%@u z*~_+Cf|Gnj43$xVeHZ$#wGUs3<^nHY*0>XY;-L8tWw(QR9w*K}&38^MXTJM-;8(u0 zc>4Pr6B|!YW_0Ntd~)tc%!w%3Fy;^R1Ix$NZWqloGL3b zrzrLJ>4s`Y^-0c+?-?}_8W<7lVHEqV|)2cIEq8nN*NBLOx zr}cR4;$XSwVw866SpCED`Gl#%Q@zEJ&FR7#BMA@dv~TX3JYhvK@wmL$>CTYEXIBy( zMe?(}?xc!`z9b(PA~hXoIuQ1X_Bu&QfEdZn8n&JB6lbq&h@eiP9it;zAhG8EaEc@b zr9|h_N)w_cIJQ*b70GawB8qBmv%j?eTU2_?#V6szUR95rX8FpLw(qytKYI7AMD~kY z-1>dHLp2VPnG}4a6j8!h@Il9629e2drR@U2c^z-a;vA8~9-XE3k2j=TeQ~nctIMa9 zsi$V!3&Zl*_<-+QWGx!Bp3`$pd3VLCNt;%AwKrx*+^m|EdARcI`{eUy*_B^z`-pSP zgrD$@R~CC_QTtM@_jASWTFR?t52Gcyi@4oCC-up(448vQC0I+@>}De~u_5MSq-*}g z`SQhI9plYe@9uq=taM2^-*&^*my|YAOi^iQbBgK51t!NwBs_j-=G2EFR;0AZrzDh> zn<6Yp<)%oON%bp}HtNWn4OJ_@=pL~1UA&c^mUjq`K~Djr=r}X$J~dv?z)jvC?F`K> z@~Bz))9M5!7RHIW=2NHG*^~1Rzo*)7ohe0KZ;KqgL?Ko1R{nZjzEKUbAebGg$3<7+ zNmr3ocwtAhM};0&vm3ya^id;UEIqQwSlp!PRPdOYn&Q0g;Ud=pPPQv~(_@N99=^{Q zw@xUDjW5{3D0s-3G!FcIdDZwJ+2sxP>dsi3zamcnCtu@Ex~n^Xv}_zIlIG18P;3g6 zZ$J6%)#LMTat@T(JKj+3sT|o<=Z(1Gn$gC!ka33oluLX4R7m-KfsNjc(YxA}7T<*M zRLLv1wg?38Zr{PHdBFBQpIE!nC(LOJUCNFL%EcGt2PkwXrN!DSxq~YdzH2R(6q$;P zp$9oO&U&hxwC*DJ@o+9Y{d`8TC+;I@VBr+KDk}?Xbj?l^WY+7OzaEJlL*Acf3 zKbq3~;_d}SX^|^6x*VHFBDmrdYXuD`@Ak_1ntyo1T62N*UVikVl!zJI@&Utdu7zT? z59!ioES;VtdnG?EvNzfvCqTK?LGJ97s5+U+Qg4qcyl}#7t@O6(R7Q}J`&8!x=-?HmO{k#vE)-hcTKWAb3^Msm7^{jd}0;5XHj=O zH2vAju#Ow%!7th3gWbuGB7=Om>!454bEK-H*RSz3Vi4D=N52eP5Xl zU!rK zR@x&!;!%nDeUCo0+)wKn3aq_jcx6{sJ=f=jw(KwC6x~#nTIcJ_)n9JuiPA_r(Xcc) z(Dj3&cS*Xt@bebqj%#F>X$n#`kn_5=+yTOZ0E|b*c+@>u{0iMguluPQUwRMmQ?^~H zh-cO2-T}@=?@^9>#`e6k{L!?0>bK6LYO-~LydOyVw##=AFD%W`K< z@3pph)3>ecrG;$bl$@;g7V*}m8I7{}y0%mX(GA{bWc}!!q>YCRDFLVi-eBYkKi|E(8p`sE0cDwSSvroq5tRHlg(giXEbKR#u zOVf7Jiha`+(^$)d9TOwuKEl_vbqZ(-zE_q%8}^%d(etAFF0)JpQ)`UyB4y?x>@6^n|)rk z8)!K@Dt6YTKISz)y!A&-Ut`_IVG7;h*Zx{mNsec<6IA>k30-A<7k*UR=|E!Jh&z+< zfgd+?IG8g`hp2T2-Z7_xe+7b7Uf|p3wlub44+>$5wkwGOhk;8nz)kwK2(>LzV2FB= z*{z)YXV>EJ)Cm)@Lq-o$oGsl3b&OfW7cR7a<38L*X;9U4#_7hT*UzPXz5ecyk*0#! zLH4OlOa5j=qmfc)n?{^)WKKFors7oE4g8>1lo$7n`cm1grP&mXpfd)`IkITg=z*5w z=6mA>8r0sOj^WnnWIU0mGhwRQdPGL(<0 zf<`jW4?Oqeti(*+T4Tjp0veCB1XzQ$#|~vN3x+Dxl*N|Hl3m@w`{{XCae2NA*Nt6A zYM3>$3rt$w1ex5`A71t1PN41#jE@#D0JvWWj$ZzO4e7j$)!Z#2j{Q9QxVG8GOhdeg! z0uJ-NoS~b>6nDW4Z>b^nc6SWj0{7g_h1SkK7QLQw$0G+EIhmruk9L#iyxw*78l~J! z$XqCu!R!8K)of2@dUVM7^%pYCm!!$~&tKlz8f39eqFn#b3O(k+7ftS-Scy{HbV4=c za(2cF)m5eBeuHxTYUTjT9&w*>EA+sz!bHEB6DjsZrd_V>26=gDC03#NmVSN)g{d7K z2|HD&3wU=OD@?sw>{y-u+O&IntYbC4E$lV=@`%31SXlqO+9UcMz(v05ls$m5rb@JkO(DA$RX)#qTs6{Y%lA{u zZ|!b}a(V7NoIS(cn!k<7-8RgeUQ~!|E-}N5@;Y$1K6tp(i;^96yxA5yupm*LhnoXT_;E%^^$|1x)Y=Z z6Qn!mNw@>f?!x|L3pl$efP_||Lhmf2tMGh`rCQ)yM7nqU`4sWPXfsEL}L& zjm{Y_Po!#}sq`0k_|V~%zfk0RN^u|V_gR~?Ik#vUi?Z!CQ0bwLYdZeeU}ta)`AxLL zIV7{ulh#9`Y?w!W=t*m_!A`T0cV~r?p6pKmlL$>?dUEO}4fdBAihAxHx2ey}9o2WY zG)Wd(tT5qZv2DnHS-h38j(O$YKFU_(IkrLSRH?B1F=36Nk}L`l@+r^ez1wl?ItS|4 zUfMMJR0ChrPuIO+-Jo?=eu=J2uPU_MrAkXBu5XTk-)7*2&n9vEo#Rcz7TJccuf4wK zXA!@5YYW|`_j2cH?W=W^oLKZ-zu>0Ntu3xq6ifF1^>$Qc=jN|RAC~Q_g7Zx z#}{qncMVP#s|stAu|}UVK#`Z-w+`>Ll0@a#+Y1DrG`Qu9b-R6!?f$jL3u1d zcB_I5*!76>Gw@=8-uDl-JQb|-nQxR#T0DN&_Xl^&%=<_8wG+SRw=tDhDo$#M*YaT|*AE%`3>@f4{!oG7(rd?KDm5|P;iSe^C91iT_T@f) zKT8}LEe$W*j-Ni+=A1+7dq0ow)43y?GY9QeKX7?xa|>~I_poEq zlZkIsw(KY(yK*2NzY@G8Hb&xD5(Lo0RrWPX$NV#w6?O-(=zLZ~?|HnUnrl*$OVK7j zQuN^%#{Qe@N@$EJ@&WA_u6>??VX0qo|ee5ZI&*SSUgU6nES1Nc^#lN0X!_0FvO~v3B zo7%3VpVkC@OR#I>*P<4;H_QRnJ#Mr0ISP}<$F`RA#z}rkYO$+%$YRg);Sn9e!GpuR z^%31eaG?)k9Ol>ysTLH2Ux0pP8G*f!G99?kkx}Msi=HFmyM4XtDAR{VhI}T|dnj`~ zuWjC=`*fkvIi<5d-|VSgvSB)9EGNwe<|gMkxee!O3YeQ7pH6BW8uL2dFy;juP39%{ zJl5A>@yW@2X6#g!*Y{IHYQ4-&yXWL^o?yiC;h3EMiJVS!rl?siKmT}hG^)X){FhEh z8^_a{*!T~+NfR$ZqCPO!xfGi!QWr4OvfmyK=e|8m6}}^yVsolBE+!PE6Z4Waxc@>- z--Z0X3yPBme5vG{=;Qk?Y}#P7SM!9Nh~ty@VJjO-UXF&-3v#mw>6hGLr4yu^KKzbn zJ2{OinU8Am*)WVXHv4#P+rT1MsaSQTqSFoI5%cjkyJhXEJET;ly!5tVr*z!yx3h=+ z7Qc#=bL?tXSK*J2(-}#QG`pfTn6H+_zFC%~DCjQb#RHgUy^vK0&I>;fsN9AfL{+x& z_$*|Jr7>sC4>^04=JipvyX?Fr;Gb$8H)B}Us>ur%u ze4TMjR-hy)dCsk;HH!AR7ke~N0VlaKctp1pv0RV({H1 z_rYIvv(O9J2%gcGQ}LpXy-9tvSF5O4anT0Zx$DM=j1QalIEQ@LA~kF`*cMD(uKhq| zli#AKneanaSUmVb%<9(riNWR^_{LMabC*$l?(btJ)_DlPDtZ^a4%`V3Ng^i4dYS<2+F&XAN z$ji6wtVmJIr@E6SBF~(*h&bkmwYXhx(xv|P<{OeRa&S~kZfoLk>D`Q^1>OnHL&_Eo zTY7U(@_p){^mW*xW?Wj)(LrhZ&*yw2Tg7yoN1H#ZjeBu6#&{nuZ;<=>{hMk_CQZNTCUTQ4Lm^LeHL9hu`5*tB>ptU-TpYb2;&`1o zwRPp#IL+Pxe{G7pmdnXMZb#sj3*T0XyIF(3-H1+~djZ_fu?s8vl*cbj^xBYZ-aA-y z5oO~qnLoVQZc3$kcSd;W_6B_?;Q+5}j@+uScD8Kwyj^kQkhOWZqN8CJCSazOjI4Jxcnc=KkpEEF+Fxn@wW2WJQ z`^6O1o*dPl40EFosbrF6jkK)x%I6Tf^l#9Sux8&be)yT>FfKyWs$+&EIh-Q$Ae3AJ zEEBVYQmf=iN$#9?KYvkg|I5Im!3$N6yOU;EBnNLr(8oDzIqjT$eql$`;;xchN8s=- zCYpB-Ax)2@9RI=*9jby0(ixRCSXHEfHQj~{7cuv&{;XjysS(>jH({eEL4H45+d6>ej67T{`qXruf*44 zP2?jT63oMXb8oPL&$%R@^GCSPUY?acfAYNR;8A@JgRknT_NQ`>Y9{R4T=uOqy3poC zh_3``@)cVDcU9%vlXtgIUpMQg6VliE5aQL=xUKD^fDVV;_N!x@_&d+EzcTWGIh!tt zMcpSVVFyEEie4W_i9^_ieP^|{f6myEwV%^N5?AtI}rm~4;yydcH3qeXORo@2)(~4JmSejUA()@G>JioOu8kbg%rDFJnWIg zKz7uX=k@hdyOJ1iD|ox&mP%o3f9tH!4M#<}7WR#Qd7tS&veBWN{{Bp!f1&%Ly>~tM zc|6~JF*xRs81wzk?y+2lU% zmb+`Py*p52@!Bn${?J^CPl&g9)^V3E&Vv3P<#FG({CaWPQgEFqZ35fqWn3rX9CBA# zB#*0RQ*Tlh_rA8-2HJ7FWr9qMgE-sW{QBfDhV4ysUT6U7!{1)E58Q&db$uEPHw3 z%c#e<9MmE0+=cLk7k1G$XS})>O+1xDzHO47ji1qkVEGOW1R@J3$o0Lf9;q3=3l z*K`njzT2?Hp|)IYH+t~KKV4&Nd1l4ExI4PP$J4DxA}F9sn(L;P{$T4}rFYBcj3ohK z`Nx8T#Ar@H#{}of!mkVwOS+so?Khg73Jb%b9vpiYMXK^Wj&N4FyT0>0GGf5T%M+er zHqFX1{B(Z-&DZV|ym_t(J#S3PbzN8-8T`>--o7*0Hg`Lb*W?!++dkBu>#;8GI)W-P zUxWtJ-*$%x_iXXI!(nrKqNdprcTD^vJ7n87G%&frZy%>lcr z%u5HV63qvSli&R)Y10;8VMK<@(*Fa`6t{zo+1HkqK}ca5m(|41CGPeKu zZU6BmF^MAUFv;443JBA>U>sT?&;aEE6ElaFFx&AD=}#$4z6ZvD^76FeYb5d#@@GM^ z=PF~Bh%vMip zm`D8!QahYBi&z!Q{2SWrf8P=wo@VZzKmo?Y#mf_xz`sUVJK@L)yHo?qk9+6s{mLa2m?iMrGU=b{{_(pG~D%EBOe}S382FYabSUT*6PAc3h1yBzvzRfm4~N^ zhnJnF6@0W@Yvs-#=-@oUuxpv>E~!=V&i3JY2|3={D*PY zh@2-3_()2vF4XuCARLO_=mXn+l0fm6SgEqVjbmwL?qy?xUERB4d^32PStEuXW)=XK z#jn}`DCRd9LQ)D+jv($e3>v)(DygK#;XBL{fYAWs6ndLv-25uF_j?LfYW z&mSY@+FVjtZ;$}H&G_^XK;s1iB<2qvAI3DqIzH%GxZ8pG;tyHyf5E3m$%0uF(*-b6 zOMu317(Z>Fn!pg(L#htKApx4NzhuHxLJVS|Z2*T#@o3}=Eb~tQj?r!Gp2R8wfI`?-u7BCZl zxc6^3z;9dz0d9@xOrYd$!tswyKlB>$^n}d-3D5`7zA%D7!I=QLMsy}nRyMP+g#{4MYlPFoEC4cdR|EDS zrUvO1V>Wq+Rk>No(b38Vc#Dp(Nnwq2dYBPF$|)49M}P!7DSQGZ5`X}RHCC_WZ0YV| zX9+jK`aMM?$i{_YX<+krbwEUd1q89i=9Tqq&D>q#7J%wS*6t!9L7mKMD2=cYfZ82m z4Zthg+F3YQ!J=sBHInIJ{Q!JzD2fIuH*lCB;2a^r42hp9h;BGM0Du1L_Y9FBP6ox# z2)Dj52wq~1pQ*xP=^)s-?w|qie+UC-tGQyBY$<%c5Yat)RWFbL1b_VN_XrUnawq{2 zk$`syMUW9-$%xMjB02+Tn0cGQzyJEZK?Derq4803!e|LXRszZfBFgXYfej(Ut+4(O zA_Bz7R%2%b`5p+6MoX-*v%_{C@JVou40^&D00Cl$t1&Z>%K~LQAwcphv0^n3d%-)w z8u9b6uMaY2SL0;_R8a&784_#N1$IefhJy8gHPYu{CIC?}C|ZWWJVE7~2#~`fiQ8Tx zx^Y0$-vca(oZxf88tL;e8-R!*piJX-kr0U0tS?Mn27aADbT-hoFmr-0h}MXnhZ|sZ z;R6^xNPH1GhF&5AtrCdP0G?*ve>8#hdxIF1?rMw-vylh@2Si&)p=0Il2&BzLB?rv0Bz}jT2njv9u<3t| zaCyR!A7riK(3hCUj~Vwsx+<>xff&EFmpOc^^j`qwL2jx9X2!>6jsQS3M9l`dskj9J z5q^I?3p+@_92LkF z1n&T(DP1cM7cX~^fdH~^aX_8lI4U#_tn)WGD%^V^<&^(xI4ay1#R}&DUr!3-K4Ex3 zSTz{z0cKvs9$+RI>;Y!2jXA(7L0}Ic77|tm0DA^&V$5qGeiOC`8v85E^THlLSH@O; zV$VQVhGKMtM!|M&<~{T@h3cXtwzEBhO@caVBVaa-n5Wd}VRLYyRhQ{UHyB?5`_j z;VXg3v`oFYx}PwvoGM?Qof@6_R6i8oFuGD+w)0!J%r9G$OG5tVR^}I;#wYvt ziU`S;|XxX{-Tf?0W9$?>Umy$8IXZ zC)vm_z7jsBnb-IBAg9DaE=uAZf-sg@mE zk=^1!&L-cQtylWvXY1`(Y;DXw?OUE-5ZAn;u=IH*zTCU#J>UE>+HNm0cFKh$_NHfB z1n9iTf*yyZKdkSnK8^A?CDM{q(aq_yOX~G$6e?!vmy2;vQcIrZ`#rG;_dCe*%Y&k4Wy-b9Fndpr%f4E_ z=gCpEo&(OGPG2sS?U@+9G5PXxmuS0~Z(`qg<+s!K6GeAv)1h{34UCyh=YE-1=?X=4@iF~O-KuFK)At|RJTwOT??-93v?CNYv4Vp^m4I)VY{|zj&O1^f6-u$+)8dl$Anl~xwM|mT zgCiQ8-$=OC^m#mTvkI^;atH_vxIW+cP@-#7{HHO4gO|785Q?L1JsA3M8|U$$T?fd~ zReGtf(^9#x_xQ?ILO+r!wCbQ}OcT>9x@p19^s!N*cSwJnyu&Y=&dW;w^Xfx6&uVw= zT$AoEthId}OWO==<{B0b%*Me4>gP)-@kLSu>uWF#ADBq1 zXE`7pUc{i`bcu#6^%`HtOi{ksBMN5lAr#m7n3DOG8WVK16}B0dS}EDs)9jbcDZ9<+ z_~GSan#7~=9Gvwc^irGdds&LQa#IQzON-1(L(-d4ijlWb&RwY~pa z?_<`TEQOndD)Xu+pN{df?+c%qcq;atpPiArkCE)*`Nk;HOfp^aYTl4ZO*6(y8F4xp z@j0dv#O<7k&WdxVsb6iaP=C|sq-=PkIYC8}$K0rDDlS^9?90JNS?GJ>-&+rck1V;0 zBqyprvC`++1{Gil`WVMWRQV6U;A>;&!g$tVAM*?R~mS&X;UN?S)$$zSvF$~!RvW*Ngg;J{@OC`HX}nSPG5_YfqHlIPbPF7Mw~Kvb zZeeh5eMX1pXx-*FVV8Ht(za49D&(@ikyxC>>fQ#x35UO*vwHEhf)z`sg- z7M(9q2y9zIjA2ej;!eIoAz~SpWgkSj`H+l!WbMEBDVob%z9;(LIJ?2#fa1VTa)rJ2 zU8n6|)v+8rbMA-<%0=huTU)y<_fM4(3!=9SmF_*h#Z^BwusfxiFDB=Z>aawUQcl#35}mjdWqmR^I<4fBml$dL}(1<>P%CD<=v{ZCp@$9P>ZR+n-S?3_d?&R#0}*WG1}y{ zb4;CXqR7%!^vLX*sAHt4EpMWj(=|PH>@5y^WKuMzA({_THG5;8SBw;RUN=MSt$dTw zJG3*M+ONI&srKQ9)YiL*G6Bv<{hp;EqcwN!m33tUGcDAlCDM-OHi1#3E9LAH=0h=3 zX=k5=DrRzBit)xahLTE_^r-CgD7xk`Fo;;jc$@dvd4^s-_avUBSRPY%A@&F5x5?Y_}np&OP$REam|? zgmx-yZaJkeWvjot){uLsi}`qIw88_EUqc@{-DMwrW+$(*e&LuCN7cR0dN4|EE068jx1gpuB*djb>2ODT zqgu2l%~gTje8qe*O<4kh@x!16vY#oTczs0*Jg3)QnCGM>2Avn8HaLZNFRNcnHHAl>q9&~`LZTBX^^$h&cH?l)%vwjLg|hEkgAo$i!}Gl zf)7{vLmBNgbX8wTzrR(grsZ$}-FM5WJUBY4=J~fINBJ(#xd^F`7K=SSD?g^jKC7Q{ z81AIu4Jh>N0(g-Mq#QwnuyR?xP)xPYmJzqPeeG?OA5u z9^00PhZ*8lc20-LIE6%%st=HHGLRJ)W>C}bklR^+c;J*nLC;ESD?>fdu~`5u|Ft){ zzoTIH-uWVrOwR-WE;xSd!9MX@0#D{nUfbJtL~0u;&E=2+B^ye?!w)EEVp(HcnQBu! zm|3(i&6!TlI3(;ft(pwAW#dO`8g04xp(3f_&X+M0$ge5gvE~gN^LxjeKGt-&KJD;m zUh3qUp-S;lrYU>=zFui=&l90jNkN?yJA6h(4_5LRnh&VlcgkLB%~Q9DMm*?A@!i

a>&s10BP~Q90*o6@9$yZ4m46i?XcQ^p`RxSB{s&bp#n{VmyVi_UTM`Q~0IG4k9 z*$NL)@d}1N+DT_|Hs|bn#Y_9|96Dlq4V{8HBd_$?uu z8s?M3$ucO~F{3>N;WxH6@ab~R8;mH8o*b>=jpVs7p0+!$B*|fR(9y5fZN|Z2D(`Js z`1PD~-&vodvuZ4;s#Tsyk6dJKwddGw{jArv%7wJ#V6(7zA8P3*t8&qHecR)*D%#*pXSeB`#wCOrzuF$%<1^RenKi?^o^0; zp~0UvykC$D-vZCy-Fk0CzD`7;)Tu06TUNK^aAt?%&X14p#dmq^dvN>Lok9}p`5(uY zZZ}Pjxsh?C$npQ|9=uNeMept9LisPk9=l|({Mv6hpPwkwd(4g9piss3St-xyK^1Fh zY4R!;g{TC|1BHPmr>$xa&VEU1lzOpvgU>@eaSW{1zj$z(&s-Z}6;rY+Yd)Dg*{O^A z(&pH$EH*p!&c-Ekzo)}EnQ}?2+o$JD7ug=}cghQiTMFu?FZS>~#7ie#>rZv&?sMIw z${1Oxw<$Rdy~;BhftQN!T^^Nu9IbHGfh!=!In(gEiqF@Q4?Py)FYY|vb9%{GZ7fqY z(srCjG_7pTkGYGX_w2D9y(*sjsBVBKOsDc>u2AQ|X>q=CJ|-1U=~t*tx4DWQL^$s- zHLuz`)7kV!?~eD6sh%GL7iNNsa(g6OT`XLm4d?rYtv>08}G*-o!Acz^VU z@p$#WZU}Cl2d_pAp85E7DIL%UCvnaCnCtzDNNu!tm)6D5Q-sUmkTjQmlF3tsB=wC4ANTy|2 z%y23)Iev8NkVDufqu8HT?Bs_j)2Y%-u8RNME^Bu7#Fuz8oIjdjay&o+c|Cb+LIsn0 zWGA_0>zQKSQ=hKp^2E`#^R1o9Fw4Por13Cc~ZH@@z4he1E`Auf+aiHJc{F3^c0F#`^BxhkHWE5nm6lR@nkW z?;J?j}>T>vew?ZttMC%+a%b@tr0c!vv_) z7e|ICQ}3O@f+|ER>pzBTd4T2|KhfonxU&O}Rpaq)X$%Jq3<5)AAOkGac{J94s~@ z7L`@1%UswN9lKNHvtT5J77GQ^+qOboXj2Sl#KX|-i3d_E)I$_sF)+xyPOtJHH+;qL za-n1Xu1V`&+XS}dUS7{*iCe#I37~rG%=IYS_Wp6t(41b^7e=T0MUC%HDl@<0>9CRv zl*V>~7hs;`G&y#pe?#yk_C4?Cv7;OZLacQj<#X%1+VVoy{!!WMiT8TKehEu&`fRFK zX_hseMm_g(TW9^Y&LNee%PK`SDn(mVio`d6KDGI?f_T-LT~&KUtCmn~pG!C{PT2pv zIX*ZpyQy?}vJ2(F)EWKg)JpGFp2mqcVv|(5Z)6j5TUB4V@Augdbg;5%XKSPd&GEQ= zid>58OcdK9OR??NG{QVr!zjeyIA?8s7=8t0#io7Ufl=Pkwn07RWX-#8-i1FioHI)= zYEYhEYMvlFeoL1$H)>}}sNzBf2ko#rw%OhU=QIWAEh(YC-Yl-UE9JxaOKm%ZCm}khwAX+h5B5lV3${scb3?J33~nHfDup)!ScGdP?PyH|6rl({khPQ#=)uvh<^c=jen6 z_px#_aP$q9XX^gU%iXyWsu+HWr)~vvkLI;HIltNj>sI(;_?4A^?!zo2LV)p;V>d*EKvz}0)n9bpdwZwyp5W6I!Iz|@dwH=< z&DH~RE`|!(c?W80P6~azrMIU&za5*bf5)sK6JaA#<$r6MXU59ukh9ao0?imn67ATh z&1T^|k=6lHmv~R}=raVhehl9Jr7x@F^taB}9DBT+_7tU%Cmj2DtBtHKdzx=wtM%S# zzisaE)4PKtjCwdjH_^KdztW*8K?tVY;$xDob*7U5t(V<7CS0R2D)k^|ZOSeDll)BI z+~_--S`xIUW#x1Yi)gu?v&@u7dcD&b6UQ?bCpNw1ygRBo%iZ-(`b&3bb<)YLn^~_} zIEl!V=t@N^%f5SEOgHSb(Z%=$tii@^ zF&00cd=EG3ZbVK+$t~%>5I&#No8L0MOh4MQU4qJTg{pQ@x}ve1{|I=d!#^^X>2vkZ zB7{bI8ZYBU3r~OcMd>$*-%bTKw%nRHsJ0-NqCu%z#(cnJ!_HYRl88!Qf2UYY-j&lGF}EX^ujB-s zO+g4r6D?U}E}vpy$k}I`C|(#aRUB73YfDM`(twH2SV^&)mdsp~+BBE1SNOP6#e3Sc zZm*drxvhdb*!ebbdn+`BlSDdED;DyfeMV3ELW-iIgXyfTGRaFR3cgQFirwKP=3Hc^ zPSm}^9ZVJP!&4aU2kxlXRlCU;wj=p)NOkwln~aJNf0ERGA&-&XdbT})#Auq7>FtIT zaAY}6T6>F8(NTfq{!bElm1)u&Y9m=sdiM?HSh-X`ZQ-R5+r&NVq~vyf+e;q7mptx~ zdk#eIk%-(w9l3{1c#KbYEJm-BU$-;(NattaonsQZopb0zZ*Sgn@ssKMG|?N@sCC%& zedrOUj)!Wts_M2iiH*@$8lx{YMu#*;tL)#Sv478(Fz-uY-j-qB0kr$~M2F3uKJ9wO zV&PG=nhPphBIC85hzz%Wh|pz~oAMer<-ef)E}{J_(SB@bzg^7(N16u^S+6b9UkluM z-LKa;aAaJjW7*=+P~8m;-%(E8%Fj1go_X(@>Nqmhffy>V7$^|vFSyfNU~#1_`f6LW zY#xt59uG$zPjX0Gv_RgOFA3Bm$yL7$me8ML?r4IcM&GseVJ*MvYyO%<<>)KQ(U+8? zLzJUc7-TgVWWR8`U*dMR7*Qk-J9wb*)BCpv-&%K?V+k;c)Ag2tHQ$~T3o?DgEx9jVOeEZ(Fy3$W1K32y_ z>}#va?bdQ@d)PpK%dqDp4~lt|d~zoA_FIDtnPH%Q>Y;UUGmGfFx z&uhstCT(L(VrNXEU`&dX_q;0aS?4#*<~RJpclZaJyeFsM@ae<=ZHHgjwxw$@xqCP2dm(SH*K6S^&*p7|8Fd7py8q>Edj%QZadsdcdaZ9ax zvR``xuYtE@@QCB(@u-E_0|N#JK)-a^xJ`P~g-*c>o!3~4g;|O(Fc+&c73Zi82&oTb zCe~_RsnxtxtEsItka?x{KM{k4{C;pXfM zP1)*=**R)=gw*e3CLYwha&RwpaAj~Xl=sW+Hnmr#|9Nn4d!&=4+{K%RLv9{cu}7-g zBM0AGM!vT+e{ae1-cm$2R$Vt%I7>(`U5NFLP>Y^UtX;ZLL;8u28(cSv`_!}~b%#5g z-fd84e4$jbt&l#C(Mj(vqm#h5YCfh1PIpk+Afhf&ROqBJlj`&Y9rNLQ7cQE{34!zttftkO|>2i%U!j~-PrxOx}W~S>`$S21-W&Z*Hg4>{&@kOa8{cfU*g& zH-_Cr1-orn{0oeALVyGzM5Lh6P|3eB^fnk-1qswTA;~!cvI-jg8_2SzPs8jQ!fq1A zsF4K!gA$=(p9U4!{PRtM+>zDHN!Z&kd!7IJ)4-M^lwJ)t31*k^KfetLa@L`uCD^Ay zSpffhlae5@8xjeDy$!QB`ky}y=wL#HAn=>S?03T71_U%AF(TUkXp;Z0mB1c1*mH#n zFJPZ0`9HT36v*O$@)ildn^e*Va8J;*gh0sPb*Dgw0eZQ_s)P!e!r2*~HT@6SWB(Jw1$=W{r7&iE z0QJ)N@(5hsq?8muU*T#9h`2|<)Ctk6+`4r%15hfxT0$*}UL7B$z~n)!CDgy00ZeEf zEeTEN>o5bTB!@hb|3}?hKxMV<{laufcXxMpcQ?}A(%l`>jesEC9U{^xr8G)Nw{(}p zeME8VIeWi%pL6dw?*1GO#~kZ%t~u9#&02H*f{BCa5AAFKljfgFqy8fdzd0HKu%Q3_ zGyzyW{&1ZDfV}`y#t&UOb^x3FpUS2FBMiUU83FXa|NAfic+)?{OMk%>vjbLo|5QHp zV;CGwtxXM`O!aN;{zUCyS0w+F!T@fXrHKxg4cOxOV{ z?0+ih`Y{fcwg5*XYwLekr(*xl)|E`Z&}`WNo#Kbt1VHT=@Y(gKkPRTA|5HD;9^>Km zUCtDs@cUPB`Og-azr_VWzkb|}VEScs!3L21{io8hALHU;Yw7+!1m$t7;_r2y-+}_* zs{iC_0~*eE#aDo0I458!_77iq+ByACF?rmF`7dGuAZq{k00S^K{}4Q61Mt`XsRZuF zhVspg;a{Y1S^s0t)jufvYyiSG=cAwnV8QX|{=^1QQU9kBxgSGe>TYOb|F1e<|EcRL zV8`ZR*$JRC0p#6&?)WhSy2{V%0H?ISo^OQ+e`$c<<*FG}2pQCrrC`4OLr7`i>}=1? zz~JWQM(^ZiX-;qFXwCqTrZTjqw{W(xruw#80Q`Nl1!w&a%~ApHiSx0d%z)j%$1O`H zfMnO>!igF1VtQM#J*&gW>;%(e~gv z`Y(*O?}V#g7;O)xi-7+mXKG?;C~W6WsQv9T2Vm1e$jQpA`+Kwfb>9Ae!f4|pe4rEo zXh2+q4{Rks3cw-a{6-{t`~|@G`cC=!R(A#s1*2!C#?Ie5@V|D##|c;a+n4DN-WTh` z&hR&4(!<{9L*m;i?jiB*@gEY8Os9u!l7}k~g@4QSP%A*<;bZaJPY)kS4~cKh?;-Jn z1;_fZK76?Hc;`oc9qWVH_`^?+cYYZ3zFm3b*Rehr4L@A@e&=5}RKNMn{^U@7XWjiB z4wcN#Toc;jNKvZG^6^LU zFl?D?=?0Dua9=g}-t83$=-=Nh?u;;G-TB-y-`yU6>9Q?1?as2gSX6iqVQ8xidp}v& z2>toC(f7*p%JtUu%Kd8V?tZW9^Ihi=gPQ}k(bi$R{+-K}2j&g)Yj4l1)~{3dl`Gdg z7dr$~0(S$qXDK!9`=M1B#-H~I?s4xr!7+MoHSWrqFW;{tv^U+om+L&eb-llrs(!Ka z#sYhBL&D>J@mR@#wm~)e)5>6@eWLZ8*3D*BN_%75hSVH(?|idGUWXq=l<^#=c)cxd z;am>_X0SS*C;?NLSK>3Pck@~9ak0&*qA|V_6Kbw09*+rVB%uh$4S->s}m?RB>b zL^hYS0PVH`8R_^tpl>v#D)&+G^DVq=5OxY=LulqQADXA_abY4mO1099I!Qioy$Sq$ zCswX)$0NUagzoi~`2K0^xsa?4v0d$5?j-vV_em+~_9bw^& zCrXZ5cRBF=E57Q;&QRVfzqQqpACFFlWALD8*!L_WXky4tLs@`o z>zGrR8Mhn;6XPhykcw;vnnPH|SQ1b44k*d$DnOA=@RsDjiC{oHuWN@E2kpVGdTZ69 zoqqFqBqd9LQ_rd@>wbfLOdBe+o!_tZ?cN$i(FL~K5yO-|OYg$X#`P5e2EE;UM*2c7 zqu$l1J`)F7AkFx>diiH+bDEw7mX^IL)&|=Kqy9pAMeW3=JKwT^K6bWn8GwrsHyJ>mZGmb7aO}9`; z-dNLLjz?*dvoEeNJslOaCd7ST$?G1QW||eW|1?<6_NumXg1o=60kv$g@&1Et3Vw>M ziH^-%!pM(!3om$%)ol8-gyjc5%2j9L1)>wQs+5|UUp+aYQ3n2f!xAWVT5*z)p1>J z@6_}baq-_ieXd&yJ>VK-*8<4{JtNw~(MxB_6a|)s$P1i$CF(6*#2jS1SY45tCPb40 zSMmWUxb`W3l1m+gX$5G0V<_UFC&PaLGYrPGO$YrO0Fad zZneVp=W}7YL+0P5(+_GjT?V2J^!ZWi#_EP^=V=+qwK*W_4|5ZyBXBTClu6nwc{-m> zMTiEqduNc>_c>yf_O%KiyV^P>JQgQknqsUnyb<--X>*BkoO%`rtP>P_yo}$t+vOL; zqO@-|mJxjnCk{t~4zbmC2^yOs!h`wd;6-z5olmnhB{`I#cOar`G$AR%;WoB#puHUE zS`mG(elG=7(d!Dt;E9x5U>y-j#Cbl)nUH&kP2}LD#1dHYFx(z9UKZ?~H`TBQpj^W8 zG4mkL{Yv)7+w|B`SM}@p?>rJ?iepWY zW+N#33SwMBRxsF$ep8G)oQ(I_vjd2PwEft`p6-eCP+g=rNM^w{m?7le?DN(5pO>hD zr=lA_)nAcZ!hJx@j4IpGR6zX%D5fz2iC>+G#ua^P7EIJmm`7%j^$?CEMduwJRN#h*mZ6V=xY)??k142rypthQSw0Z-> z+A?%<9IaHqPE2iL$N)W^Y$ULJzTGhSlf*SdAG_UT#y8C8Q@YJ&gP|BS;7ByZl@d;_ z4J2m)p-v)9yNz}dj`mtXtx&s?x*||sOtbMDfS2Be7ktiHH+72&6s{y z;yCnEQS3UU_Wu1A6OZ?qp0s`)U|KBMv!IUYc!(82#^e_4RRB`n)Q8III->|X-OE9C zXf~A8k=~Is$`~L57AZfx~5*FJpF-EbumYVYkQj60D~9x5WxNH(cW7pW!k9eU(Al$biCy zdXFuPCYLovb2YTa5|`dqmI-Kj%3nrm{qJb?^8{!>XRDcW+wbrgSY#lCe3 zH(9{!6+N9=oVfI1y~8vg&w6zx3ymz^q)!IF?MsHoJzi5c$Dq|{ElG;k8KuA-ID)(Ug%q0AB{?M{}4BwEV7MRCl9m#}O_)zm>!Z#WGk6d`RX)~i@&L~KG z8np=DOR7&*+aqyMJ*2NH-|kbe`aZerN4s|y4hx|w%Lh4k6lGrr(W>vGxd!6>>Xkqo zc_}tPN$+Wdo%1yA(GIB0%tLHxz+FKUpwCGX5$SiwLP<`RUO_BB4>u8T-&-yYbZ+(p z;Hbm-pmINiPlpAj6K6u~17RKq0P7<=V9VkAj`VK>t->$k zMtj1MyhfZM!V&jxA}VIA>DtB6L%zJt9g0^Rnu8G;W~$tU4+@WoE(}}BC*5e0Sg1tu ztqIgPjrPxiS$X;nubUZ%5_>6qpd=S*HD?1}FI=4@S4(sz66%smn7!rRe-x{%lk&3O z5xIn2L;Exr3PSuD13ZaK8C8=La716CMg*!TSbMbOx}5!U*o&}Ypzdau194mlm*mZAPoJ!8<5ic9Cp;2qCRxS0yZ zFufS`1ubW5w24RvY~4DPi7x<`St}!T+)??|Fi_B77qmaju!dw-!BPfcNu{bzRxb>h z2OL@t`9tiG5+X`T9e%U?G3tXS#d9;8@E2i8>&|3&prEM=;yqZcaJd=Mp>jMf zY&0Nhr)*m(k`=iy)*9>=7{E;XMBvXFF8M4mX$xN}boPbs@<1KPe29?DeX>2t6}FJ* z{A8|S)2Iu3xbiBPiZgcfaD4Chh|$HT1zLQFU}09(f#g{QG&?bvgvd0T%!hsO%GT%% zp5P6%r-hxci7HB_0(3_0_$mSVX+5>^gzNFC`ZC*Bx7D*k-W!6wQA_6HnR>coDi=om zE~F_@_9wTzJ*nXacV49-qF><_lG&j=pnFQj^CJVVszE_ot-+f#~^4 z&0XTD-*;SNhfY>uRA2RR^zGHQhCG#<<;&5PDGM?C)Y7pCHZ=@-5Td2#hOR`2rGj(> z$&Xyvo|PF%!PAhra!Fl7(TwzBtXOtK;K&^iucd-lPdy7+^=anCnyNYyER^y+b@31w zHxAL=p9^cyT#Uaf`;vH~NzA&Bi9BXmb!eN3u!Q+UX5db=3uqfGEX(b5+!AL+NV6$5 zsrz{(od7ouJs101#UM!mK5}zi1t^QBHam4+;i4gzTSPUmEx|)1xU`7hCxELzpLJGN=%<<52I_+%UBA&Dq1(}@kFuVU zZUaLErx3kyZhqbnZi4qx71=#xsf25$ZfrXdwNB*l4RYU*5E*M}20hMV1f$9%-OclU zBZdANe~M}bqp36P_!rMaBqK<#Hd#L+$CltJt5!iQtBh15ER!5OdohIEyJ$oFA_Yx2 zorJi6#|t5%=BvZI%&`S6T@~BZQ;8nK5<+rP8csMvf`PF!NojM%4@_FqsUT9yphuZ_ zsf$M5Zlvh^Z(Ejd4nwSxNXyeoY+frAAn2Uh2YE`q>LU%W48wYr-#R)Y-4N?$VOHil zcm#ittDU=wCyrT;Tfo@T5>`w0G$s&p28W}ecwCutNuw!lrzGWT1%cT!gb`bJ;3^FZ zX{;jd@>eE?2(#0hp!+e>f)W<3uN%X|0*+i53!tzk1&deM4^v6+664JD%ySUXEi5KJ zY=aq+xI4aRPkkLDFBLX+u`M>pWyagru1QkcME+TQcJnJzU8Hd2Dv$6N=2GN3f=u3U zsA3Vh7;@I&dTT#45_YtO__$;^?HXztr7yUl(^ufyo4)Q0dt*6su`OhosCKTdF!DqF zqBOVBE4&*gN!lJD?&o#7PUvrXMkJBHrpfo+WE-XLd850;gAyx05hFmmtV zJLzUJq#P^>wslo`xsH1jjmsUdQuB3{gXa#sQAY8KCvYDMh|WxSqh8gtol{@!n|t8a zdV0^)o1rOE-7uVQuMf@^*1j&jr9L8qe?iSwOG70X*0G+kTM~r&K4C5*N|%#zLUF`_4w4!p2EI56tiZ)U4#*TZ!0>zFV;~h zcb`qNQeV7dH_b_ojt;l<0SxX8f?yCPlFr_a)D{I<&MA)?Cztuic3(q@DLC&ed?Lb^ zKLZ0w1(fM}4T`DR5p}xFHpM9$+eR60C8-o;+k(Aft;)PYrRd$46t8 zewQhTO4heA;B6t%v@@sUFsvOVPP@+X>sz;7nl3tR;MYrIUz8Cfg&}*Y#J#g}$A`qN zJ(55Jrb`G4IFDJ3wi=JKT~9!E%IaatN5Y|msJMl==HYc5ac6y75C<%I)R;ToL_L2U zgVm#cjW0U<(y+7}DbDSBP#C2vMo&4C#s?(Ku2BistmgXt`uf5#Je|~HNRb~#iPn9y zfoP92MDc=1Lsy9S5)BTxDsyEI_7iKK_a#Ya0qocex_jZ=K^R|HK_V9rfJ@*Ooe>pT z<3I?c0_LT1M4TZl9CotqJuLxP^qZ4o%b@U&%f8Vtjf+BR8TFZEoKs8_0`;;wJU~1$>`N96P(zCG3y+MW2c1P?c#)-0^KtZW*JOk=Lbs+C1N!DJ3Yxw)@m5{M9)` z(8T04u#w-=RybUnwkTL>xK}kHN)?$WQUK)z`N&PlI_Yfp8z*_b95(Y$ObAnadQ?Sb zvq&L~AZ(yW_1I6C^7E^eI$66f7>GUSujle>AnJFfGF%{L7F>1pN#4Ac5G{JL#|3U^ znd;ojrRS2r*~jK%ZmFBv4-#=A^vt}p$jiHyIyP_pO~eO5n0=?9I?`_GNzfHMc=u%H zSKrcI-0@TAR3`bY$K#hIZZ23lWxA^ zi;p;S=f@7Vu`{kboOIlE!peOreCVocuBx;b>D&h`#Ow8OP3p@5`Rk7-6I_&1HT*_7 zX-Tnb79?Nd%WsQAc*(#*4$|m=(t4C`?(y~oIfPvB1 z2F*)Q4bgqbuGW`18pgR%%!lDzFswypYvIs*(lUN|9)p(!1RG&d>J(#lU`Ad_LY7sz zJ#)BT_Vc4H-PCTclI%iDU|{_4L|-C^F(VY3*<0uf3`PuVw~oA^f+-v0{wTvNkV$z= zPQyn-5lt#VwsjKF_#TrjsLYnyFV8J`OwEx zLq}KJDEd3<^(?w|0v{udR~CW9BUiRbDtnwq2~pXwb1`HxBQAr`NZD@hDmsNIpdnw8 z;yMpHj8gR(N+4~`E@#VFufpuYgS?W#bsY?dsfy+Z=?mC|h@H6hI(hS13W}fN!&^GH zvC+m?{CfO)?OZx%<}o!pms2TKlzx*&{jupFof~;yEl2l~n=Px*^s8I&wlQ_dRNB0! z-ZZ$*mm7S9tA=~xGqD4Y(duaGUz5aPsD8Fz*jNvm1(h~7%L(D#8#n^1IJQEbx~5lq ztX5O5Kb;js=UAUG1WYq|&Xe8Jd+;jMWuL#W4vgDoF0T6X2v28*}n0|aOF z9GL;_>|tZ&Y<`fr7<%m&OXY^JV(wo3cF$zrKflWN)oGK|zmXh}sv=;xhXkTln))*e z$iwFPH}F3j7cpJ?e-X)_=JbD563{LlPm*B(8j6n? zyx&6d)4cu9vjOt|=?nPjbpGerSbi}i{56t4?ZE#$8#6$R^brX3Teg31CBHr!2f!Wo z$2tG+&-U-F_vQ~c-Tw!>8~lk+ zH~>`fV}ALYA^1ky`eE+E48Y7i4n_|lc)Sh(X#8lk|F=LHCU&-l&Zd8gYhe2ijeWlv zuyFn8Q_ReNxY{xUPVNbrS=b+Y&i}2d|0SM;jqyLjldu3r=`RBRI1m5LrUT%ye0NC&Xn_Ne{Ev(;X25X5{-gds$zOk}5dC-YFh3zwe}#o% zV|*Ot|6bLL{!=__y>+%2qbFwpYb~AJ|1wfLl zOd0+iPW3nm{P7I`GoFX-yFBo33e{|k-|hl{?>x|x0Fu>g--Uwz4xZMLtY>>GDSTK;pSj!F|&<8|Blu7`08q;+wPucx;rcM{?_|)XEBsOKz@YB zXL+iq(oVkphWXB@yk`C|>+_;K#{Jo8$|9aGPUz^XEU)Ve9;>F>;)KwnJFCRa=ozVdef#pKh8!}1-%7+scIA-`C61&)@Y*RJj(hkj+32~D=A`s2>Y zcQV{T4C?w=6YOf*J^M~p&neDrJhnb>j7}|u`%fBW8YkdSpvlo3rk+^H4rYY1+4_ti zeI6g4tmmG0elu{GP|I+pubk3)lAwUhJJELZ!7dX=z}w^c&IME4!`&30V>ow(r=dNJyp18hCT4kjVYHMVcuOKGzEVA`bF zt2vlMT4KRlJUMzVNND+WK5H@{PwhoX&4z8 z&3O#e*0}~Gd?;cBAPeUDy2lp6&0twaE54wk8DAB7jwqbU%QjwLS6LQ3 zobu+?FCo%D!e#d+y=)8o(xRiOXk{is?I%bOyLe(~L>%If3gruq-@c$L;q3raqBeHn zsR8aQ2z?XX@eZ*|Y3;5kB(>&V*D?AsK5f`X;|2*StxDo%DQF`Mv7_*uO_myYYgxR5U*yjY7G_^edz(pSlVi$_qs>h1w_hJS%GJttPM4reS<^d-kI zBX*hMNW?4ioIR3Jr<68nlbcC^HnX&g5 zvy{hGwI!RdwB8-i)RoV7N6G5hUpr+co3t=|0MnGO0K0;d`bgGa4Y83!b;unf01E|^ zlvum#9h2I9U}%Ad+kl|D0tH`Ojm+WOjo){RTFbS(+?4`0rQQ`W?R3+la-(!v88Eek z0BjCjkcBLX#rRZnHWI@hUzgCi6z!dyIiAmq6EPejZSnG{11pQ4v1!)jy4;9gLhFl~1DJgMDeD`GSf^$SU{ zBTsK{V3kuNpmb$;!BV=o$BIBM5MyAHN*G4`nvX%H)d&>vKt^#8VZi)ei5?<3#<>Ic z23p&Dv%mGyJ$(z}MP)59%|9D+Xz_yBP&#QKq;(IuQ#}Kl3mziS3}>>Ks!}#4ZVh)d zd+JVnRhFt!ILB1((^TJ?$kerVmCti)*C4l_I2r5=~y}krBD>s#kEcph`&p zvcuKNXOxd~e9D`VL>$^?E6ULDq=Q9VxHweMnR**e#>F6YD#Hm87zhm*@3}F3qrpY` z3ne)#yjNj@EryB^F(`_5z4}w#t1Q)$v zwg_yjtQ1w%Wx*g}UXYSUO^+L(j89I@jTc624DLfx> z?T779M#RJbW)DBP1=Gnf&jIdiI!-6%!IbX_t0rh8#g&6ju>@aHy)w#tG(c%Yd}2hVmEtF9t3BEJ}d+3K$?$GwZk!fRZnmdH$` zNXJTmmQ}F7HF32sTyoa9iC5$b5IoB*mR-J#fI2fB9DXXU+t<9$X)+RUQ3ER|nqVc2 zRgq`C06Fa@k{>Q0N;Z>ZEEjRvV;b2@wvB>1Vpzu9Wi zw_C^>B8mqD75(*>(l1y~kQPu6ii5Y?K!_L7&E%PO)L#M1JlSIO%_7c?z@ZIDS^`Ec zN$T&{TmsWJIi`VDG7RSqqg`Yuk_M-^gPt}P&VH|gW#y!W(3wF&Xbc^0j>@N!bP_P} zs-4?fx(hRI~nY=KTz}GJj(U7nPxqAVVq86}Z47w~?>~+WB z5_Ck~U~WP}T!ti&lC|8;7wu>t0v$o&LNwmoYkscP4^w zTtK)>JfLwTK?5eFT*$Bn(zD=1d>XHHIx2(8KF1qNwGGKqZAqQEJ$*kUUA;tEvI+L0 zk4cjZw?^ASLbZNKCxX-iR8R-6!2+s}%23Ry({Gi6o+MYFFAyf@yjO_!CKr3^b!sj(2Q&jvt@y?q*@^JJ;Gno zQY90=!4o@>-IGk<)wMG5WZUgbefm*S)9gk5N;+g&nO)ip``bR^m}ydI%963LYQMld zJ2J>H>y#zg>G+Kbb0;v@d{BLdPVfn0S_26}jV}46z;of|OJj#>FmKuxEFk2aae%uTCXNTDSty2UF4p_i3A9R=uPmQt1^w-g}9` z?h`$wG~z7P$cp90)$+fnj}t?spr@cxCf1KK8p%I>pA_b%qSdm4A+a^vXg_Z2CuRZn zqEU*w01QPUaFt7)3el=-dCgunW=E?QQD512`qfn-7#yq*Nn>RY*gy$9rOGFXH<8Z= zE#H0d=Ch$%BbnTd(Yt`xe0M@n9Obkd9M`Oew>yEBlDooWKoAxWY>?%E7KQLkB^xT$ zQKtm_1_B;dOVD+R%+h`mHb(;nekq`X1oe{<9XDz`HG83WR_x+Lw)&yhXw8hQhs}Kb zr!g}i_E`_g;40+N-Qc&PEsY}a72Npzfemb83?EFSBn?Q$YCR+ZY?4hAENeLo$ISPK)jvH?RRL=3zwI72^Nh`23mS{e_+8krPF zS|sSsS%%c>rSl2T)r0Eep)6H$r$ccl9REC~41EI!xHGX9t_eZFCtq5wd-8ZFrGQ;H z5>b_8PRVpVT_H@lwvCk<52(rKf~_^i_;Q=}z=I_#U7V1ke!`5G7t{P2$ap#7nA_W2 zJF4RoP)}(fg~$WL;0k4wX2&T`@7~WJrqr#Vx+n%47rvF{ycL9s7%{t%PMYn#^o;20 zvsWb8j7W&YQH-;gNl#wcFYA%#nc#lO8B;Dr*^Ln}zeo=-NC0W^k9&zm z?uC4-DzmGKH-qLYXNQ*ILP=9c7)8WINu;t@aq_pEkd0cRYhz5TiKK&$^hvzyvRKd9 zWWe%Gj0c-`S6(qAp&Lo7&(#Ob)PfUgB(2F1Hj(+VklY<57ONOTEoLN+HZe+AGf9vWw`k)vaAQYRaPX@B=27SOrIN<6Nhh8MuW&j-`O+|^nH*cChs zeLySA#|-Gw|}WumTr7P{}9W#--CM zUm@)4-ZuCnbaa%$=-Pqo!Ys1JK*lSQu@<9ly-AcBjQc>E#!G1}NMFerf(p@wMA}#? zz8EWMck4aE(J4gLLX~izy}~6GKpg3=>)d_XSun=2xt+ii>vMh!-t&$!lNJ+ zs!#MfgP;03o)@4)8S%WlPSxo+Ri61`{6Xt-!%X zoMUf)IEgTu$RsP_WgTy1P{jM~JX91$wHd?Iu|%gfoPO6z>5D#W*_^&gS?;s(WSCav zY;{=Ace(1)r-Lk>>)@?{Bc~+B{FlZ0H8kjc*iE_Ux*U zt8jT*a?%+u^PB?Zs>3#^UV0rCp=~+PACh!q0uQsp+@$8@z1hmCr<6H~imv$-vW4xw z5L782fbSex#WqZcb<#=I*6+?*Mol@yo7mlepQR(o{*32IQ|>__hbIUf^47K#O}NsD zGxmpFYU~!S;-DxICh&%K-Kqil6JMw|)XQvX+zO)Q?s~Gp&u-pkuslP^&#JjWbf-~{ zH>B&^{c5Fu4n!fYNRX3&1nk^O0e#wmUSJr>8IdI_(2MJ^@r>SJLFTo9ih16!YD~)H z=NTy9cQ#*DzIQgmJdr_iOeQd0WFri~N@r=tn|)1*@%)7AE>wc6kf3 zcqVAdP#G{WTAbUpIF&EaGNzUxQP)Q~BmH48fz4?mhazHG#Z;{p*3GsG(iS(_Hp5%-B3(F zQ6M{O2h)jNl|-a+O9T2iZ7#5ybe)oW7GkgySRJJf;s4$?T@(jTIE_xep&jo}Qerl$x?6f|Gt1{D zT~8xm!mGa6mT{+iDSJE3)v81UhxEqy>shoWIs&4|vMX9Jrx4?5flq{rbYdiWohF~b zK=@}QSSMjFllV55H0(2R)XvY+2*824B1cx{{!ZK=LAft_2!POYHD3eUg9($?9R#hg zk~xX^G>@-A07-!9l7eNtiBu@sq!@OC4k#|Z9%|&FNL%1MJ;$!H4@=E*(^Y4f>)3h? zTy%E802d`~Y$u?R=Qm~v<&+zzVgfBitHE6TV)dwK1%;IxvJuKgQOkx>AnridkqGC?VG#!Vg`CE&Yh=)0 z>86a(%RPg^Tv!lrFXerbi33pO!(Cu}eb`7_Co)uqpy+X|?Mz1_x0y@phk4(u&Wbo~ zxxRygs%}g63hiU`#bO~05h>i_#Jz6``Fs%Bv^%>l*Blh&SP484KZ&oJD76i0(Witb`RTFZD|7RUJVs359=a3%gdzIFXXgw z&_SPwn+jGVa6479m%|k6O?P#Kt6$0@m&zl{;|7@8fyc+CL++Lp$h4>lB87m_Vs|E2 z?jEUF?$e=wEXUb%5~$^;;2V~8hpEMfdceHFd6F4WLoS!U+sJYfy%k6GO7@UhvgeHS z4Qnp@_+X~156X#Felj>rf%$sfxD2PQtWrm=yr5D2%9r%+o$%lcUeG1d{RsOKG?Wv^ z)pQx0AtlZ>w?LbhuiDg&9TUzI2allhY86bJa$lYY4pzQAKM!J4oGBvuAf?G#e5`j? z0lBIZI)&aUV#9Nc7{M9Jxi?0&k0FsJ?lERbVb)SyKQ!C2#Tty|l24i#%6E~0JI+_z z2G#B;t@}h5F+?_ASG?IemfXKx!qmZ4lglJz_{`@31|z(e4_}on4l^N5(I2)nLcSEm zW9RGBm(-F+hEXUobbTD~7vPbI?$I_9302W5gB%60R1{$yOYHcyg!z6sv9TJ*vQ00G zGC{Jrk<=LVVn`X|D3!+tu#tiLo(l;CTVys7(tI@=R;8lDnxe*m|HK(C6oDA#*znwb z9YoDXa6qBWFmPT>-qjZkE!; z0YVE>4V(g8y3SbG-a*N84BMI;`NoR2w9lHVyeMIjDx^Uu{G(D>v$jt>13yWIr-!~8 zYqLrT)Q$Jfl(IMo>Uad4s<~puF3e;jGL~y8N?TyAKZ^* zw$+emuOjZV!UTh31K(WotHf3lUrWo*w!)YSFD1by0bM9c)-5k ze%SmV&V`p+?_WW*m(Ha|vV~*3m^La=9~L1^xKNHN$+soXjc1cGHYpgapU?2*YvSun zdr~N=*bEgxfzM8?nngl-T-Y5azvH8|e_f$yzl z$;?9|cokQ{7;=TfMj~h&ahskUM^)Rp11hPQBqp{FK{JQk^D4NOns#3}^m!YV&g{~0 zSbliTc1r}uu zx{G;q&%w}e!V6+kKe>9u&~|^w*X>is2-_;E(`vjz4T%M%UFYP58sePS@WHJ2PYHZV zpFO0kBAW3vBd~NExddD*H_VgH5Y#E`MGS?Kxkg4gs=Qv5{Ih)de#zI?BEgii^1!KX zR(Zpx^X6g%^xa*G!R_1aacWv#8zEdFMP$~^t6y@A1#sr zq0=x2Ni17+cnZH7Gon61R?SsIKWLWobW#@;jnv2Hi*&5s6>zf=fc10frFEK_;4t#! zHnS^Noj+H7G|h7%s4CqvXZw??Q-UOwzl0RKv1%6yX*rXLqUcCLF!2=k(W#p9MTH2X zRRG)51|-VksL_1jSWrY|3FU2RY1FwT4c@nry196QZy8odlg^?~N(;-VyFT_n<@byw z3!(b5u;V>}HNESX)M82e_GK?ugI86Ajn{J&IqYlU1~c?Y9a5aQ{gnW1Az{X6(=fRi+0=?cNb5uv$Iv%x=jU@Lr^zPbkJ{c*gByx%oK&#q}ymk17u# z$i!(NY;D=lwR^2;rR%HB*qm=Q#DM^uVcW_zOuWPJoUaZEPCxTZ<|=UtWiuK?_hNTL z0N6P}VuiIWqnfXBd$mlY=KIPM3=&Uak{g-t}a2k!=jF(j;F%&g^9e2DACc`Ji1{Z=oF|Ine57o zdlU>?ZWIgEjNR(Hnc+UPx=ho&g(qUo=Ce$Lb9P4r(5i0N^Pe`fZcB0x&U^4An{D)% znlh`UWs<@UP*(9H_vz$CF8Q$p!!r*6IPkRPx_(>2w4C^6OZb$tN@AK zf2w+-oSliwzeu#OF+Jj`{y5xzIHCSasL~H;0RXDR0YKwCLhF7vBxm~{Bm@60w&0sY zi@mX<>B9;Azn;mnJ-Fk3YbSrN+ROmOF2*0w2Y^HGPt+VU04f0xi3a=uAg=&QZa;8| z|A)AO|2-_?!PEEeSN~Vs6AJ*v@k4lzkolX)*bl+6Uj%dh+v+<3lyOW`fi% z4ebGXKJ>Q)eSpsIw>vVpSeh`XDt;4dVdi9Gq!SjAl9Uz} z7XP=`&iII<{NuI%Z=e|8O_P6zVtltv{soHh-9GtmK`|ckKEApCCs2(4K~UwV=*r)e zR$+U1@Q2|RfVW`!4yphoeyE&$?`7Zc7C$_wf5BTk#Pu-_Kk*iT(f0x5@;C4nRiC9D z7k1Pw_&T;~o3FqEfu{Og{b@lk+2h_3Ms_3)7})cLu|(e7DiXVp)~e0xR@o}6voAT( zMwkec?&#{@9y93QpIk29bKV`FpZUcsZf4o(BYZ4*R`zA&=;k8!f?)b?ZTHk_ii3hD z;~uyDp7VzHj@O&Z8|(hogK=-Y_o~nR=sMy{!2RXjMK{C5dxQxJ{lz<*o4xy(^UJE$ z`#aa03BM?TJ6?fhjC;?^3jy4Fe)ybr-iw<9f{LLQAnp)7!G0fqN4LqPMlDD8iSfZ{=-+qA8B{@!YU`6Hu z;+L?7)G@t&Y5-|FVo3L@%$kl6vT*Fst;26P1(mPU-7`>g3;Mi};s$o^a{2Re%1E~+ z+4XtK(YRREOJDD=4#gvO2VN5d?YCE#3VElj_ue<>4I+NnV(M1uk@)PoCH#7osoRsT zg$FM`qnUTm%&!j?*{ufKt#Y(ws^~kTvt+!i^W-SiiM+pey^K)K?g%Lv$0*dNlRa}y zllIY$wY0t61NFMf=1~jUdAaTTrGutWS0KOLdo**`lz)(6ARsT?(D27V~yBx)g3$8 z^!ca_6}uPav+2xl4ez|5y>O1V`To%(cP&zkuQ*1 zAbk~*7Fa$x$4d%!_F;TAY;Jy(=MS__t-S1j*Pk8JpY zF%k$rgANM>AHd|mf#M1&?X$kohrw5fKcUN9Yz_@U<^VZ2^7rd}>g7B|8G+gRBw^sX zd`kf_KK%JAWd`^EK3JR)uAx|}ci(a+bZI)gNG z#?())twyKovz_OxkzE>&K|PhprHtKF zUXf7R*YHa)vMzMxOG0w0X?Z?N>*mJE=AU=lnOq85#X5?{(M8~1&|r;wJ(A>{@;Rwvl9 z1rvBe_;dNUht~F})s&Bn`ChinoywTCF`(DU3`bROuC62?CPL%VNV~Jm;{=2gZynQ+ zA>^8T!g!wR9C_mH#Lq{9phA-D=mK7*;4Xg zfVvSxdmKww>E;&%mj>k7qYp-+g7QhAy~7FgQbUE$j8i~;8ylPx{kL5kcL7f)&u=`S z$oXY5vH?Z93rWw@o%BklJE&x#&R@UMaCkSemj0q#h{bJ}&Q@j*{n=MI(I>Hr<9nJaA30g_RBLd+MX$Sk6q{ zUMqvR&K^tY!l){JuM{ zd@;1#QzkaxRdPs+?2i%E*vn;WRS1aa2#_Pf1Cy6_kJ4TX!)=N{(UB%?HZo@xEpN9L^2V$Jy5XWv$C+jVrf(XfxD2E+Cj@nQ5eqMjOiMNbPnk}{#LDIP2S|LvxAjOjqIi`)&1ZS;P zSjODg{gN7%xmqgWRTbl?#e%dbxTgU!R3Co`Q?~?LohcZF6Zm)w42z){|3;JVKtFN< zh$yV;fQSn28h9Ru^qLWWcw%5;+S}((m2*dlpyEsw;Cq6M85C}uJXWY?)VY-9J}19M z8hYQ6nhxeCCQJ|6g>?`x>8Y8NP{~E+e3Bw6o0-+d#65Y0maOV1dV@tw=$F)iUR0V8 zzfbm(C4Y_42YaWNeQ4Wc7l;=kPlyGTcCQUZAzAwgkNnb8S+8u$D3Ps!6MHE+5X>AN z_(gLzIutqlb=6g(({SfxIsIbiUfPg|w5OAkQzyxcB%(VT)@qnF_R{@+*^xTRIx_P} zOJ)ts5Rz0y_C{3T5D`GA=#u^5izum78F4txxmYszv&pX59O%qKzFjau6MD%5sTD&! z2DFqZrnPM2X)#5k?*!sb-;=GM7Rv~%Hm%>a)M_K+ho(Liw#Ab8D)M%6394H3tB`aX zIeAJ{wnBV14W;k1WTS$)aMz@9@t7~M_K}J({VV5KEfWPw&XV?Wm);2paDM5Xm1{8= zfq$2V{wY#&3wL+fCFyhfR1TVeS6Raq}Rt3z4NKDd=4q+EA zqig%f?Dd{3V1o|EN|Y%`C5mRu9i1+viHJd|EzL+LW`6xH<=K=~xY-c9bd8AxN-nYy zOx)lQP?6}=o=tyu?7~C*EE?(Sv7+kXE$#V!8HL{gwH>w9Y;uZ#(t}<^BNZGah61Tl z!b2H?cXO0+A)27v{m5Z~OoBgpfp+$J#Q}jFps1h?JU)gG`7E zp5r~4tAPB4cMT?Pu@n|_ROJ8+D2a)ul7s-`XHLo+vWt5St2o@!X04EU2NC)_7#@F< z6%JzWujwC3;0jl#ved>muO(4Y-pG{KIEr@b6pGtyg+~)^bm)VY(``pH3mdlIFY1G{R~gGvNWBiVIU=ftS~o zAXBD9t$Ig7sOd;lfGzY~8oV6X`;X$D@S)Pdnvd_bY@TBhrMFS{Z2Qe zbI>1my$+@kvooiw*@sLYKHD8W7ID|E?Bp|j-_?)CFnhS%`)H0K6f@9 zEIxh9fZfLTeNEGntIV?Y2y6ZdZ%8m?4F@wEJC5P*Xrqgu+Im0l1aA#{ii1TTYp+a{ z3hB$B1ktWR)Ija2bf0R6K}AO|VuzwMB@JfAnjS(1^Nh$>R65Q>0mS`?MoSg*i^EVs z`}<^LDu@G6aNqWpC$LZV?UvqNiJiCD7IZm@C&^3xj6nc{%Y{MjrD`L(dRX*_oKKWW zDCNo_M5ka#cjwqM^d2&h8vum?dC7h+foUBdadZ^!PMDFB-CFW8`?@%dljS)N3!Os@6w?O~P*cf98 zj}SMtqZCBYY8up2A$D52v5jIFqh28s_^*)1R_uX-=!&D9ti-nDLsrfDCOxCxBYN|l%;Mxj7uE^UrTAG#iUQ~?2 zBsS}S`zUJm2&Vf=P90nB1~31C{bMuv-SVs;%7*uoGo@q}W4c1q?iU~AQ)^$m;d6A4BWTu$Z>q8e7(UIK5?=X|izj3M7MTunHEf8P4 zU0V_n436ncP<-4vjH9T~f1; zBcEne-)n`V$1|Yz2-;xgE6X@NYSAoCpa7^7WI=<857O?b)`OaD7AXdLxykM7h6>lx=dukeR6X~e%gwZ`@YlUrS=~-lr7=1Hxg0lZ zjqg~3-Ltng>_!8j26m^6ouHt{0v-I`4k&?_+$Y$GtIq}~<>nJ_NTRT@ykNcubuyup z)}q~zYKr$wcMv!09dxVCDKt~~UX7Q=5W!^=v8Hafc8CX@kaB56uq(iGz`0IFH4C zh6&S~;WkQ+e4#riuoS=$L!aP|Q_isxX7f#h%Q?34e;+d`jm}~c1dBY@D%JOHayEbz z8JkU=Nbqt{&z4d;>kYi4gM?_8bOk%)>}QlzyBJy5u=iTT%;n3@0X>X%6bSqE@WBn! zjwi*-$m2$7sI$i|qX*-AIa9gnhB*v1jj*~WxjlfF(+lIENR(s%uZC<{lbg~YpA(?4O8i;A1o+9W2h4K%QVw` zmsY&!OKU-7s*SR44*j4aK(B!FJp?7clIjRjbixeO@u#+ z-Y2(Mz_;pc;AJI^d?i^zFn(%%IN{rT#fPjWmDb5%Fn86p+T*p3JKgkhDHSo9kAMzP zQ9WU@CIh*Iin{MQpd3t#28MN`uowccenBB06lIxM*OejrR06=~+)zi8;;Uaq@p*meiQZ{~E`J@!8g3SZR#*<9nN^a@{u z2jAz>Ct&A2D%j?UJlh@?`b3i`Dl#RtD=7RdPWF+U|GNH81Bf#ZCu!wECr&8@+oeXm z5NLRTig)OI8;>Z)8*1sTYmGb79st-(kEY%38)5zUY=PKig)-F&Y~FW^aF~HzhAU-Y zYiKk_9;_cL_Sw(z?@V+~sS|`FEKOK+VjAg0idE9L4?H6( zvC0ZfO3Fc3hNFF-bjU}yd`FB>67k?b{h_vZEGGJ_3#=-btw_0N z;xJzPiW4MC;(P@)84f7$Nkf}!%y$OLHSqlv{n9dQDW6LNTZN(=^y6Snw3j!(SS>YF z@T<&yyJ@6U{|-jDXg~A*kgSG$G0-d{1xdz8mic2Law@9ln8^ft^g>(557kl8;Nu;G zwP;>?7kbK7sG6i{0+f6m=0PGMQ=bVs--cCGi{K8~=)zhh?*)p2)Hp6STh@jgnUVLT zl3qzynI%2{Y|^EU*yY?$Clo5_-Ne zyJ-M7#H@$|WiZ#+x_XjG8$|sgY>W#X!XKs3)0{{QuE66MA20+-bDh*tX8&a^xCK$4 z{9Ty=y|+T%)uK0&AnS-*(WHeMoug`;uuSYQZ@oB^}5X>1=+hMzR zO;LEt9FiH4@N@txyUYth+Af#rF(9~7TMGLH*|7L8!<60&uS!sc_c3JKX%dp2=IhCX zS7n;Ly@N#*a76{*AyZxjToNEYX*b%DY@|pMcHD=&XD8w4&U!i*aGYJUiBHPVO-e%wj5SKAsP?7qEbSZX3g#i3@z;K2){1~!>Akp3$gM1|I`z((rr2@aSK{(v zvsBss@n;Bh@^h%?0nW44^vwn0^;(@Q?yry^e9DT!w+IwFl!;w**Zs(rvtKDikbZRN zbT#QMO61jj%ms z^A3s2SnPfJxYKHrpF*<~5m<8^<${(*q*ViK*J+rIe7gW8JRDzcVswR_Plm;KeR$J~ z>bg$Mdulk92Hv)qu&NZf3NOZIqaZgho|w*6-FTt2`7D?`3#fO#W$J;x_RtW``Z-1_ z2hV<<4xR;!fxA1TckgX|$~yKEyah;v?jX{e7`#MMHE{9i-%tp!It$p(k6_G~u5}&j zv})gcP~4%Wf^Ad*W2GUFPbY^Q|4^4>mbW#~jGXY$Lb zl-3{)jbOSEnBYr(+xozt#wc-+0^FTeqLyV=X=FIDy1wm7Upem;@5vyc3${di^@dXv z_4O86<<(l)>qYg+PT?5Gq3OlG2`ngY&|E~vrr5z^aTl`*iS@k{#Mt_XBtW?EA*@jz zrL~sYqXrit>;b_YX`XaiZQ{21Lvq;1fTmU($M3xT(~$ySB>JTWwqxNTm=pzqKSAwM zWy74(Y&LFLyBS_1eXCzP(34HCVUi}H(lAA@QF?DV9v zXtr(T=}MTSsj526^>Ul@PPQqxG}}QLFgq#N!p7$T20Y#|M@fXG9G$I-FC1hQ2MQ>3 zfwmc%5mg>UvH)7hFi&-P%03N9gp8OAfsdT8R(&MFMip)Jp}XFxi7YF1=CWH0N`Mzp zUywor-O?ku0I&F^`YJFZ#|B;Wu%rFo@e{#U(x7M$Mww=*k?9|ieI;rKKt3rEn{*y% zL1EtH86=2MIOuQ#8Xk+Zkzq-TNvjC2Ez3XPj_!pR*AhO!xkR7aPEx5+SKMIwfYvj1 zU7TI)^?wt~bA0Z6+IkEJd2@Yl?68%t?TyRoY!>tF=42vd%DLMedP+{_YQN}qcVcR? z`lRraJKvWFhrTeG&mHjm!necX*Ap1vBl_fa%e+@%y1SOALYDAF+%J}Irs&34 zKGqqF!q+VAvWU#>l1K!e^P!wpuCI2oLYzfkP%@osMj(Q*xT7tcv|5c^&(74cuj?)E zFn@~NuIyv@@&aAT8Fl>6AdsIEct57~*cn;b|Aau8|G`%P=Rg0e%Fz!n;@8yqU*%H( z%)j{x^?zE8js2er(Eyl#GYNlI`MP7hN1<;oKpNE9yw|dAwuLh)a z=z*@)zz5;qLc;P}FY3?v^8Xv%@i%)^7N9TFPb~(Z*2-Ufga7o){3o1&h@qW5A%l^r zxgiOQE(x>IAAcrR7KXqjCsT8CQ(X(-(houc_|MqX-o!!g&)14pR_1p9cxeD+Ht3m{ zfv-iZ^nuT^x|Tq|0J!j8MN%AC^e2b#2UNh!B57%F3uIh=8vp$79?Afg-)Pal5ew!& z)u5Pw>L9;O-q?PaX8s{@@}C|HmcJUr0IlMGVOIY}EP!o+<(Cx4Uv+wZ7()J1I{QzL z#otV&0W7~esedgNfAw=?1NKC}TtNw$faXuYv-jsI$o9iD^N-W+j_3U+XFUnq>iietR6h1!_g2Z4*4r52LN>u zng3`x|M4w^`R~E__mfWm3(zR{M~(%&&S3&-3jUVq19r;)vDE$lc2UCg_e`AmzqXA3 zhG=H}iRu2GXlDJTbM|u}`XMgI`b%x@zc-5n{H*(XJo|r4H2-NE`L7bpKX>%U)&tEU z0Y5KyfAGpbul0T|{Ag=G7kp}Dk)7W|R>7bv zMTka=I;YA_*aHf$i9hqFm6P48a*2z#cHOpkyPgf!8b}-Cf4+-Pf4RC`d#Qf{il@Ca zxTn87UtX!(Su7eo*x@`sZaE4#s*vS>UL4iPeeVzUp!K^75E$(g(fQ z_7FUTI_3L=hpr>Y>siZ-OmBNqe<^=y>K|&mX?u3PpZa|L`MXP+RsBX?-Dpi0|1;Zn zVF{w9=e`^5t{xyf{T(U3?Y4Y8^a}CiC3||Z+OYiM@u2|wWr^=q$&7~L)Y-IXz{cmi zwcwZU<#lb>cBKq9fYAN69>>>DPQ6^3ZDA;yZF1RX2y|9#DlX;LpXErbw!n7t)qFAI_{cO{uK}?3O?{t=jJ}c{dtM%2}W8 zmX^kl>i1GHaNY1_?DBcfN}A2JB>DE!;ydq08&cagEFsJ$&gzo2_b%An(g}GOLf%4n zEPlK1Yk2edWbq#9?o8&+p$d`=x=hr!ic6LBlL^YZZq%e^NfU8_`}_Dh0uOs1#)lzo z*DxNb>M8BEr<=S-f|iuL>z#Oh?dL+%>G;pBPnUDgisfQ;semnut=K%ga{D?^Uc~)k zXTi1&c```fhnO&++nYU+ueFbPmA6}=;t}3)b_%I%hi{PH zuVHmDZ-%aqd56;^;X@Vf({wsvX!6~4eL$< zL%2;4iDILVpmajOt0thO$KBsZkLgj{gec$B3I_xl_U~laz9W0OV`U45F&4Dw82h<-@q_9 zBhhB}M9_z$wJVzeX3``%nT(O{qn^m*di}J7h^B?)!pwtM3P>5HrS!KlNmY@iac@59 z+AbkeJZ2snRkn|5oR4ezF8M$&gq^Q7U$K6bvz}qOUQV;w(`kxZ zsd}SSB0nhfwMc@^Ul1?OMuP)ZFhL|>3e;SBVdN}+w$@`dpfaPxiv+mPbI!BczE#zv`XH7o}3 z?G@+~a6~}q3`?L?KS(87?qPhJ!yyfMH9cbdu4I}5j8|p|76z7$G!^FPv}4s%9h3ko zy@ni=Yo!r~;Nj^D-`k5mB7-I3TVmSrj=H)xV!FlJfeFKU&{B)|zTOZ* zQK`Pd6Faa3x%1vr#@bU=n(sB^y&NyliBZileQH{(eFHh31B5#$B{pPg8)=zR8`VQu zAx{PIOSWN{d#q`KB3LB9$2 zAKsIPaLHvif$|xvCPlgJO(Nv$nNtQ<*To0JM1QF98DM;q=3k+5GTVa? z`VvG>{xQ#dsjbXHDu*< z(%7q2g8hQ2C&6zKTR(3Eo0AOP+E#N)?HjF0v71@DB**lUgtc##?y+={8T?XV?gRPY zb!PP}4S!p3g8q!<{`v9S32-GV$P<ZN*)AhmahibC%G}xR$Txk7l9WEN93B4PUQ781l8X{>TZof3)P(ocQKMJfS@e*2DfcOBV zlD1F4W{1$P7*4=lif=rdV>iHE-<3rq447(M4eaz7(LVHqyFWqrmSaSYw?GSzWC zM&()aHIoTj>n#U`BHMi%8wv~}<<#_vGwI|t4H#G57tfZ~GZGzsWa4$_ z@QXdh=hsdm0!s;gmUC20;6aL{;7*H@Nmh=0>wLJPxFW%wa7)#ES|#8O&P0tM48BWU za8zK;5yYLr7iqoe*$ZWr>wXxH&zNVkBhZcWjkXR^KQvY147BdGh^_SsK6HVk`jw( z-}&v<*o66@*WdFt z8~lmY2#G%w!MblAhJPd|qVDH@d%Ujsk}l?N*8i&v7*XDfDcW6l)vrS!VnJ>M8&NV! zN<&bsj!IHF=TK53X0v5Fyf4b!y8yFLtM9L&z^)b&=<`63|_$zSw1Cu{xKCTrLuaIyGC&Yuc@hOVNY?Jc0EutHXgDA85lt|&{szr*T-GFaR zZ-B`MOgo1!%58k^_*7W^VI))MT0*`jmwG`WAwFL-Eia6&DDZMI(tAUVU7(mp}`PPS|_M?1O}IM)IwM(H)QQaDPi9HD`X~R zQ_3@gmyl*Fwcua^OkW6(O$1m4=<^biTk33pO;08>m-Cv|WNe!rY95=~b8M|@x)LGW z2yNkos<8*MZn%kx9YfQoFT9cZM0ge+J^5hwd$r0OkRvqLT z-E)|j*OZ)yioN`zFXDQ(GE}aa--{?xuAm}SNsvSwR|Zza5E?uyF@`l=p<@5UG}Oc! zVn^+1Iww^{ae97+G6fotZe#i3B-+YRUwZzWpe`8GmucL;iGBQG8I68t8 zYSh4uSEZp#@-Opj$3sIVZ8BaO%W5y%{iZjCi4$;v+{RB+>&$dJfhVA#!qKHj}d z$Yd@2M<=DoCi^nCa#tv6O99`U<{kl#Al9wi)rXIz4g+($2h#pJf=Jk0evF#$gR=Na z{F1g!*9}h@9S9}dhcQl0v%_af5~i@zX>oIWo%T<8Q&ZsphXa1n()5t9Ct05V0p*->7JB&Qgd@gp);-bW# zYILPdRZ_4QH@671Cl3;1waA%IXldOOhI(l^HXc3iLqxOi6!|2vn_v|E*JKp(nQ)p| z%m#`}GyO=J3<}7KbaZQ%Fa+pInMk_?y=6(P?NC=3;+y#FeqDqkAyG#i*Vqny=shFC zh!nH{JFcd!!(v~8>3cnQmG~_3LI;*aq>>64Q1A|aWWEpHgt3lt1ST6WON2!DB?@-i zV8I+@$H##NO-YC1ZBAa#@{`=f{eU{@JG^j_ujt2KWXMwP z#!%v7`zkS5o;_H~Eg{JifGU0Gdq! zOEChN{GD&U50wzMn~UA&yPgj|aCYcT9q!l(cqPZA|hi>S}9X-_G4FO?RMLG zjDxqZa5ccphWZ>937p7B9!^?bJ^j3~y;Em8?X4;$4n6X{Z=YKVyWbU7!I(~rbSKLI zjZ;*9F=;FK23fYEcaXOzRWD}{@z93I&NmL8?C1+v)p3%KN$WJJ0{5Y3qZmeGsWdX{ zqj*q4gH}dPrxveTG<7ncewL!qBRAOn{_?l?Bd=q>4^IfdkP#-)da%hhsQT>=s_6qw zdttz#y{*y~Gb=*2l%fU*B1FEv22C4KR9UMx{8U$8;bv*03to4}h-^#9-PB|C^H4&6 zyj|YRLRjAH66p6@T%hwv?!1Sa-V<=N3Fc3;IRXgnJKG9RiV&s`Uvb!8N(RTRJBbzP zqfa^5dSI34pxb1)t6*AXHh--{LL2r&KAJqV)WrJ4MFX(iCl@Uwy_=SKHA7GMY^seF z+>kuuM&QSZGR#y#@&uvTa0MPNQuoGryR)4H3mU(H^L(ETcswg4s8_VsBlo@Avvmn$ z6dQjQ14GJCSZ{yE8^RJ_C)LB*oA=rvui^o_2jauHZZO=f!B$hd;nzJdf`6J9; zXX#c+V&x{z<6Tj{*IH7NRA_K*ptySRaSJ;9uE6$yA%N738zT|u&E;?qaeB?ySAkWC z4yxbccAwB4%oRTC!89K&{ixIkd~Y_iGAjUHjdQ3Aj!@ll_0%hP2`H; z#1M&am2GWMsS!}Es(FEJh!J&9BGw}23ZJ`HodvoOLfI#5qV0@-ljM^R8gwY1#d({!;V5Sq?iP!` zo#_FC{W;;a$y>kOW=IEZp4>7c6;?8LBb#@yk%TG8C5SMR&=Y5H`i_LoDAEQpA_53m zZbo?gmL7Kyfu@;PmWO6vPYwfJsiH2Ag=Adl0<$*@bUf(`vr#(9yC?h)GF`c(^}$(% z&R=;)MNGKogl(J&hE>^e&Xj23;pzc8Wi?bRHc;A8J~hE?(A>4=t2ySlzjmt&aFZE5 zmjtYI8qcWg`>-58-M=0aWF&biBchPG8suiRtQCTw-PVes^M}Lia)x}-*To~k@fO?( z6ENPpP4AKp0-L$|HWNk9IwnxBU3@3>DYOPnlCiH_AI*@frXz6}kM8RmH$O(XqHjHm`qhMN zd+i@HaqB;YzkyesoA#M#L-FfT)36CQ@Mh7(I*++k_Io3IqKh4*fR{fOHFqGE6q!rv zjFv4&nC4eVM8neH7D+F2V6G}I0X>F+yCld)C#nPema6OHC~9J_;EsNChAIeU5;(0P z5rmeM9s`$H*~hUuvAg4K0T!Lm_jHmaL|#@>h-Kx2-0>bmQ4jrZPwJnM^@A2`lx=+Q zGf0agkz4hUuYD96^2&COkNZ93C<`PIV{1Tp-6wcNwJ3I)C?a68cf119X&FM=vli1_ zd~1Ar;`|Fl&@DtkSA_P1Vj#4Y#U4@OMkH51_6i+E3^mt{_vf=}k-`Pwin@9meN$!6 zDrmqZ&s*Slueqey>5ZJ!h7-_V;Db9D07`hbxUz}QS#L{gj-DbKh^fl17)92e54BcS z*v$%>R2hRk$|!L4nnd~oAa?~7<|2>u2~(akINO)SYSz@SBUNc<2jI}0=iVt`*BCtA zH2W~2T)tRyv!!9A;tw*vszu%UBfonjVc&pd;V3MgLH#o4wQ2&%Uam9b zM7)#qx?W&JhJ<}eB_vD-c{cp{qpYqzQ$?0TaS^Y!-8*T!kD5z=W2Yn;2pv9B`o0Ropk<-nU$X$=9BfJ0SeQvTD^7RQ5v zgLG>z{Bwm7PpvMg&(|3D_e(5o#pMc8$*Xlm2fU(jqxRHT#19Fmy~?OfN>Qpwqr!Zg zB7zPJZ$6FR#-V*c>}CWD)H!(R!hu(qdW$mQZ_mX+wtuL#>(du#uxIT}M7^XhR4iS9 zmYc^Ro((C2zw4zXTF}<1r%vX_3e3@b=RYe12ll-mT}>^^YFkN=kTk}#cpBweJa(9! zAm1-xfrm(S=>0WrIsvtn%fE)PacK}9mawdDHB+Uu349ynYSdIPit#hZsF$GYc##<_ zDnNAUoQ0+IOz-yo`pw7ihIM9 z5Kr?LY2Z@ta^MQ8LStMK3q`IaAfQ18G7=*v&E%uuF(yiqO&Tgdi~E8_Ygng*ghIGc zup^Dk+hE?{T9QDSuUm*zK)Z(g{d4SO z5(5fQLd8X78QS|qreSub>U9YTv$p<7-x2}~OqUT+0J2!L<46!9_P?@`Ly_qKz$$LZ ziId~0x$A^)i_fxC=Y?;O#Td_@6(y-@;KDNfpBKhjATZiA| zjW0oBGL0|tGL6@EfPELBghKq4qiMq*&xYYyH}-XYlyBEg6s3l_4;&7I@9!T0; zL6`SVWE7H09k*wLaevJ+Ig3eYQe(hdjxTqpw7=}R)@t}Hef~z!g984=voW3STcD|O zCf0eQ;J2q^xi}KaZ@El@IQx&?`PN@Mz2JGk?Wi`+ElDzsnP+KWdUWaXEiD`MdTCsS&~Lnz8-v4k+gb`k)nrFe>(C;k{Rcd3))4f8g#!FaE&$>yruEAOmlJo_X>IxePG5gX1X<^xc<5+#*K|CJ)4}CYPy*lQgHv{@jjE%? zgFjsz!#YqdphL|&7DH*~+P|e;CqztUhb)#;k_=-mLKlY}Kpa$mY!K-c&i6YAVc0t< zIgin@e?=iQe*Q$Pf_>^|eb}ijShycz5~8Be8j@|jEL>wgU3--%j@NJ@a4R~$sj4*5 zXA0%)$jc&9D7f3CO6`q5>y{lwjG>z{ncltDs5m0&+_+X|; z$R~;Ni9JE3$^01>AvR1&Z;96b$!C4!)~t$>((gO*Jz==IgJtI1k5jcx&FGzm2=PZTjBZIo?95lbW8e%(WD1xlY~Q;F+#HU-8g5vSR%usF-Rtp9 zU+e}HBqvz$EE(@FMX5<5z*N5={#$| zsHGe^H^v%Zbyf$|j1_R45q7;4t1f zyswrQxje!Iv@RxL&pcyuPw0H=6>up&< zOOMEdI$KuR@9)-o@26{X3})>7!?wjenCikt%Cr0=TNxO2rw1DPnt6(!u3lptvkcQ_ zysz-BCgR{Bdjsv|KsFKPU}noJId>-qMf|NP(D9QT`(jh5P~qfGGl<-gS%cZqfs;?v zu#h4svc4i1=GG>7LaoT$y|okJS2V>5RTG_op1g$g_kl3tRD<^zo)Qsixr!oUnY&*G z#0(B(L{Rf!D{08YV(e)u27Bv>;l>9RstE31!WF{njWo(8_`tb5H4&>4bVKOgiMq5f zrog_bX&V08%a~%gMQ9D5W-i!>RI^?O#MNCM`dZyu1TF$=ennCh$hPXAm%=jDP z$d)LYIj*#cZtP?nEtFl9#(;c6eONX^*DKD~E(#n31HwZJf=xjyAryg?841JhQJ!BJ zWrTxxpTs^wAWy?fuo3I*G-IezWx_fzf7X4ED&(`ZA zb%;aU^^!B+D@PkP?}G|}vBPMlp%4|EDYZkx%4|_#6@-nfcQd{SnJl6G1}gRX2Hl*| zKRyQ*A+u>(5&(uIHQSZi%*L|@2LEiFl)9gV5XYP~Fk!0$>6%;C{6aH6Zo_T}s; zB*RTYL^|_H4l>WOd3>R7yX6@7xwGzin!8=ATFeL7JXWV8UL2fHkPh)0&N;s1q_%=Vs4o_;uv0Fk(oCUHI>cJmEtE0MIdWY`5FeLLd5v+L zCkCphxx|LPre7&@hcZs~wB)|TXm;|yOl5dNaWx{}bW?%2#$%Ch=VeL9-d);rdV`Vy za_IkAn#5ZyzF;cNl>M|?a6i?I`ScT$uJH!D=dDKfJIK#{l6O>OL#9reGftHECu-m`tZvss=e+g;+V{L!EhXUxb_z!aVZ`FRYIse18{bs2D zc{OG>AjtoVjsDx(e&fdfvudorZ@u`FxBG9H8Ne?-M#0d|%E4CO@CPCT_(^;GMFkM> zOT6x1U}k>S{f&D3KW1i_Sb^Ni&!<16_x@yPfcy&Q4~XTrDBr)z)cg#@A56_(@Rpx3 z{Jqcrz*_*nK%;*_@h^O<9;NkB<*vE?qexH`B_Rys7zif>_Au~?6XNRvEoP!9xm*8Q zxcR^-=0UhYY*5VdmYPn}Qq>(L=FxZOZ~1S5Vt+@sTg7$h&vsADFYb>A?^GOA-oAw8 zzj(Mmd(|ps=WDwyDZ6rf=k~aFy>onWymP+ecz#(DblAh%BiQO1LZ9+%`+R?L{xRu^ z@zdqOiFWVWv(t1RfB5I`u1`yAeFXd?TdA$*-*mp5UJte9YsV-rhJEIFIk`TM@6!Iv z@ytfwk=Doi{Y88wX>?I(=+5zzQtFG_Gj&2SAKM_?iaZrBeHEVW#oA|l5B$DH`mCyz zC!o?FV>oZvp6&?8TZ>*lw`h2=!d8|~sg37a;Uq;y9EhKs%tQEdpqpd7rWr|A znA~V7inzfw&b1F{jBkIq`bdh{L9oB|TB_JxY6*d&$aJxYmnoquq%E3~U?LA&RS^25x7rND`?w~be5Zr=sIO*O?PwyII^6asMZ z-l7B7P8&oF|QCi z^)j3#ArQY19W&p9M0=V|6D$i3o})2kS$vB!S=z;%s4W$K--o1;_30r@4PH0xtu@i2 z@(S@HiM%~|0WYxhkK+}QZnBhCmUp*zI>2-HiZMqT2j?==Jdjcy0u27PaP49yYqFUL zB-y?s|Gag0(W{RCj21?Or|hUi0D$60EMV1KlV`=_$&VWs9E*>L5}5i)jOlv&t(rB4 z{(2s7)+rwQMpUcVa4>PUjw=R5p?utYvvfYmst!b%{{`Mq=pC%j#XXq8gDHx+7IPIV zKB?T|tcVcpVch%x$XHRr@UR>H;Pd z?No@$@@i#SMn+^4evKs4Wyq3^^Mge}f#WN4dS53_al*imuM09WN^`}KMS$`R*1Oa| zRRpEdMaxS0C(>wNOs6>HoIU%CPM`W0dhMW*0f-0P0Z0xmh7MK?>{V_`+BD=8<216t zE7tWI*SY}0LXlFq$X4v!gP&uko zbpm9*6@74W*tD`^0iL1R%}WiICogY@a=Phv$;?pfefV&l-FKA`7%1AWahJATKEMou zb-=zwW>Z-fK*^`=VW{m4xz&@!f#|7@$qYOVGqPExq=ptFQyr*PAW&{6rC_i8I3R}# zpMq<$9SV`yU@5?C*?5nCn`#$Mbt)1#Wh4rW5!8X%^@^(vicHj&!X{(JzBnvZ05hR{ zIGmrE_}ABz{y4)}F!-y?9$(xhQ*CqX404WrUgHkR)l+5Vr|%2~G@4qIisOt)csSSu zG`XI3bX-nuHEfdeO%N74hoBi&(B7uxQlkiQZ4$qocxnxa$&f#ZLVt(*dY)s`)RcJl z&VFyGX#5*b>k3a^?)R(h_5xMyz&E?6f%=m3)SQjk;q+Nvk+^GvN%KqgY^12R(K`I? z4XjJn{UIS)XCYmb)&Vf$;i$ULs*A=lDagk4iSd42%`hRnuOm?yS8D7*o%&1#JIT2_ z&(mN;BMPw_ka||Y+1PuyXc}CbgD&ubMC@~quvDes`@^e>-_C`gyctg1DSOgeY98b0Dcqs+=kCT|beyGI{rk9p&Jzk`gH~ zpZhbNy1h`0==O!*T66=$VXB&vt8Qoymj3*yo}n^))YNA_ju2wBMizH)`R@Mmk4Ms+ z0eYbK@Hn(Bz9QbVEwP{xotv;u^t?w_p+xCXaTG}lwNmv|8oB@}hHz~` z!bVatbrs?kmPygmiCo`K40|~*Wtu#XG&(PzXnd|Pc)diw#nWw+j~WO8l=N}+7*oI8 zbU%O^LDQ%=;LfL8XKCcmbJ>y0yrsBaU6~I-9joK|Y+L~4rgb)z23YK;&9{%QnK}JX zWk--}Q0iwx6((#;_7M+q6MPfbEVL^=atqs;SdS@6)`^gVh~4hHB+MMHFqP<}X2*pZ z&bAA9B#amYgHd2?I926-y%-iuyVmk9}96)itr&IichC0`j4A z0!#%htd>{A*e~n`agTW;4OX}zSoipnO=`j{!2K@CX8%oV5`a$(v2opnkXrv^;2frB z*ggPGgM2t~eUZ@~4B0Qo=&U*CDBH6y87^aIxBp91J^B*WDPz}0sGiX@hr+xi4A_01)=5pZ!8n-I_WMoxZ&lGo8o*aypZX^vP!W5*Y?OofGbpy!#b0V^f# z9u@C8JppOPdqJKq%wMoj!k(}VJAw5X669cdG@?LSc zx?Cx2+Ga`MeQJ%`6bCi3eG0IG#r20Q(Ku7P+`6knt zvLO>4h=fjFPm#RyWwilLgJq(TqDMA>Yf9gtO50oO+idaVf;N}CR>6y991lz0j$Bru zUP`FtR;+8aT*IX}?!$f7^V-VRVp;Z`%9*vFBPLPlGUokmcUE8cF#Bn8Vokn$gBv`> zIPURqaA+^t4g~rI3Xqln$fr#ThDc}p`f-&3d4k-Hq!qz&hyUe<-Unf6vs*<_c!XLK5?Jmwyhe==u zgv|4A6f8CkN4ej13t7`(6HFf|Rn712Yt!n<-wf>Po>W;ci594@!6PZshYf}c>=7=v zCJXFEVYRgQvOrJo*e23_x0a=Bk#4+-AS6KDesx_})M9qs_O|vhg3vC*Rv*9M>E|1% z(h(aKv}Wa-`f&q}3es3yAF*GfElhvU9381Vq_g!zR&;vvUf?i{2{au25JC6(SEyf^1ZWP_D3)y$enYWoh>BjU>4t zh>K>qDzfV?0*n~?xe2pWq@WTLtWoCK!Y2;2S@}H@D2RN$esW1{J>))kh+_#YI>QT# zUiBF7l4*nR2@ud~Oasd|E)zMjlj6tlo+Vy#p_LAWj;V~%v?4e(1I!5}Mlwj6$Pdzc zVIu%?8}wf}Z|Zb?D|0$03Hs`5-XT!V!SG&H;bOVK!DUv4W)DBOdXfZpK26=k%_ofcz|eAn`W$wRc|RPQT~}bfZH$w6W@yW*>4vGopF=DK#e08IcErQ>N?$nLyh` zO!N3bW-V$uiN32Zpv<0ou+wk5t?J_S3}QMFa}gb74F$m(`q)5w9Z{*@OEG%$&}vt4 z+Z0f@>y%wLC@O*QAdO0=U)|Sy5k@G(Y9IJauzPh*{c67fO5puB%UQnBkQae9Q^NEY z1YC>L-W=vEZbURIwWCn8jPx3z;qv(m_>&RiBG_x6VeR;G@voAGVte>W zgq!=lZRJ|Wi^!NCjdYRraTz9)6y{ul15jTXSnddR=U#4l8M&CV7I}#atbaV+{9n}l z1z43!*9VN#-67rGz1fI#hcr^sEnSk*CEZAOBOomxB_%1+(ka~_&A0K$QJ>@c{?B>- z*L!{EyDpU3_h#<5OPeeHt+$Vo(NtD%6vX0fH^L!synr~*P~;uc`5gBKiN(O7}gWOhP{C}mE1 z@Qam=*U)`fem0=Cg%I6ptQY5{uT45UjKz3?C1@#2543PM$2n>A@iC~t3&2Aw@Q&T4 zThQ{oRM$@q{L;o59@`h-&;{i5kLDs$CkRX_#P!xET2M9^PXdbUuu#DfBRQEAss(R* zXBhf&}Akl2WSNYI)SiGvZB(QL?P=500EjPKpY{$&tw* z>W_@UW}>uIA0MKY%M7vI#+dj%Miq|>2(c0{B62De!@gjK$x^J1AyM83uP%yfoC7%u zy~Vi7i8-e8>?OBCJ8SWby;}`KZap)suIAGXI?^wT!xfC3q|fV-BHKmbBA*Pt%?WgS znLtH7c2YsJ;;xAjdb_YGq8{HWfeM~YRSb4R2Foh5yae?*lfWsJ zF&8g=@g%lkAieM>5mJR!6od@Bme=~l!ubhD{Ejy%ai&C#dgtI zSH`$j1Qe+OeZi$0HnMPjMpzR)%1CUj%8vk~(mmrJ9i`#H+?2ozVvwkkFFa#$-A043JaA^%1e19Dx?x^%;mLI9nfC+X?y@~x7d9+XI_2|qJWn%RwHC} zcLqLSQf?YI$ZNMEd%ACZC-LJU*z*!C)oMPSq6oojIN=xip0QNSw9c}ITaquFH*T++ z4XsOw2r)Kip-`Nq_u@N4w$RW6Dys^ztP(1yMnC1iQP}0Mfa|2DYaxN(zP0ANalQih zy816|ARa}s=tA0lMJ@GwSP|Jqf!K^+?mR;@Rv)fK7VNiKOlO%@l!j5It>#o0%7Ky( zQN}c@c5Q{D=e7L7U-Gf?Mw@;!N1u6#^+RCd_DphjyEDw$Af@<8!zU*Px8vg#knw77 z{*uw;H=kDHL%@6GJ(tAN{+b41$B-Jg+IbB#XZwZD^f^RnYs1K1gX#qPG}Cf5TVQ{| z>n7(l#+b6x1AIftqDF5uFgD`{3ZJnawZ1AOJ2q|Gdl2Y>)&^l!-@2YY9Pfz<17XDt1<7cuPc2-dA`g`*8&tYM}kFfB4wVz|xplJ6!qr|T- zc~97&1xl*?>q%AIpuFpQf{I_B_JjZDA62^#LjV40|Dz=DcLDx(>>BVreEW0kn)|Nz zm41p{bKmtV=)&KKU4N^4AIJTFId=V1tolEq*#B+p`kNr`TBk+&Q|$Vi4DZ|gXY88$ zt}j4B`#Z7g8Bpx{Yx(*S#PkD_7)esN1-wYe6|~k0A3|S32pd4CSW|FS(AD+2P)%|! zzY?S3vy(8(R*nZ^4>W8N)H|KMF0LYvT08|>+;6Tjj?|8h&X0=fu~dg|dFs5pnqIVy ziS6G^XvX7|O$&S}pO>2-nwQUz%SiTW$xt72;uJ{k0v8on*wgjmeYfS4aY2)jar^1& zw1q?9_U-w6`InaKcjpJOc;zn^r=>QEuUF@7h9-b=9B3Pt!GZ> zNnBNnOz36u53WH|o0m-^gnFk2oZ=yeVN;UP)T66C0eJy#Lv0#6MeK584Krx34Df8Vq;>%}w7wU<$#mL_vv*hAWN>gtMQj4Dw0Pm#?fG z6!L!#upG`tLf;oW4<>cZYY=m&L34jEh!{j?oS^@CszNMu^CcQ?p-}BPBtNXW+i6vGgt(;Wp)_VZloKbUh#5X3^H) zET8w4({wTCm8xhzFLz=R8>=bYg1jMa?rluCP%;~S#M1R3KUHYIq*G=>39zQhrZZP9 zIb73oFlPD%{C3^fj%EnqE3z|EAdceKavh_2+mUv+xcw}6`OI}TMQxz+UCHVMj3bf-eQ3WH-mzs>D;e+PD3a))EIl3TH%apxFRhQmu1nIu zm0MJuU#UD-=|j}7hB!Tc)vWYB$NWWlneQ0K>120LhZz1U;M6sc361w@{?I@V0|U#u z`nl>yS;MT@5Tk)r0ALTPl>P`46*pR^1I!3f-RsEOc^&;o6Ks6N3YK__LFS)ueGE zJTPZy7#}{`jTm%h;`8b?LOFU1y67(T06sOkd#OKa6KP!C$|>cEk`n z0;My;PundBbvBn~JyX*8tb^hy#8Z;TSYpYU^|Mawd|nV+lR@VVb2xBKY@HAp6|Z#% zcb6-3{ri0V!%O^IS8~?)z=!F0jVy&QdL*Vw44(->^)IDFPzONZmoW1NU47S0A}A?#I-1v&_$frX-!)u94Ho6ozHX4;{n=QQPW7u$J_!NUsmk z(iQbhu<7GWL%nfZ80Zx?ie6vhApD41-_t@Yipb3%Ws`wtsx6~h1{=#_@wUDXBU`y)O^B~C@}FiUkDvUKV3a3 zRN;9_XRZGc7kUkbt~;yWuHR;_?nthWtij2ppo{mN0cGYzBwWN^8jRz(>x7vF@<_2I=O~+}9%z5e#dfJOqrH3^32ECsc2f{fBYa*dV?_FJM6d zUv;yxV9vPt)jdv)OePu(+VObGW`Fx`fL`Z>Itw8$N9(n>XS?Q2yarSH4yIcirK+Mt zqTrOo5|M+CmJR_P8Q}~DtDp;?I_B~$OFlpcb(9xk2>+9cpwJh8psZdsa=^>PAl4np zSNk&+0(g_qOT!g*okG<8WRo@l9GP&WejGq3KI(NP(WI*z-@*N^m4QMq6ug9NhU4rNZed)QJ$n?@k&@)iWEdYQd0Q|#txtlY=!1fm&Y1;Dj3M+N z04Z|XSf`Ev@ZLbC+775dS+Y8cC$rTA`k!Tj%}-WZHBnP`UdKR6_^qDs#6WV;z}lyJ zPbgDxw>!$`%zdaz)=Nqgnc3m%K&Dk+sC(**Fp3khMQx9# z!Yu+XEe}s@I(iJ(ilF#2mXXO92`xxHPkP&j8+-K39dF1A6EY)kT|Xi{VAKQ>2I3Jg zq;tn=*c(l3Um6*j(D7i1n7t&6lUD+1zvP?N9P~kf-6`z$dFLG1Mt~jtS#;hm5PSJe z#3e5_E`=+Hf5pdlcvY^HV%yVB^-V*9jo_;Ibcb4ciftHRl+kMT%VP?XupR<ov~F*7V4m8E7GUngzUAnAkF9vF!YZ!za1;rPJEDxI%dTqmGT^{DHN z+<@K{8r0mYl?t!4WqWzM)Kc58)*w#dSJ2)M_ZP+0I0RGSs69fCD}Lv(2JOtt@|KIq z7Mrvg1jiKL3e(DfPjpR+G*f1>bD8UO0uFzYSv|3~cn@rUId>*5mTKJ8yR*k}Xz!3K z3A>J)_oO#(MW^iDSMi9HnS-!LY)`A3pwM-`Sf8twW$ES?FO=xaaY&VPnp9?|(c)Dh zi=`8I!e0^Bv*ASs+DH#7ee_niCKIzm-_)T*5-!?8ZxL2ED+E?PrQq{gWtgQ)uLyyj zAnLZtEq}kfu%-*1YP)RXF$)f#T^PI$<-v=_g_O(du;+NhWh^dftHw!`tXjJPH%h0e zRA|(EK=rn{OifO4=WD{+nclFy*w&s{UPvtbGI7aj{q|l`7yY2=Oc%Y*9B3?4fh+N;C&DUv$LE{$1>ORVOl@)W z@o{Lz5S19k;)CVg5>vhfqbM`m5GfRhfZBna63c>c({meB@}up*O| z*t8;gL*Fv67z}s3EXN|8nax4&M^;X;wNhU2rpPNL-i@tWAfB7*AdIel(TSf3TQGoJ z(7xc;^J>1fZvta=w~Vo&&e^RKj_Q4afeGuHZpy8bO2$kbs@v^mY^2o4i-}ip+5F4` zc5xm=E##h6h3oipebidQd`6Lq06rTUq_?vJ#Y&YD^&RIzA0+FG&%rTvX*44&LfrK+ zw$bv5;76igk}Ua|QQwfQD}2n0U_ZZxPFsB3m7)kPq4Xl^v%6HWfC{n-muk~7S|@m} zr4(c|0TA-d)Z-{69TwVIvH1MTdXea)L$}8x?-(R(d9)?+Q}VQUeC?c{$Co(T=nfAu zh=jx1pTP<33IvWlz;7DKJQ_IlZdgM)}bAB)8dYHR2Hc)YT_ymWtq|;fZaW zV_dxsvRYy<13mcVD-iTl?w^Lnq1KuAT0T#nH6>`-i{Q(JZG8=#JjGGKlw6Ys z$0TNfs#F9!6b}%jw^Jq( zWoQ^4&m#9eIm2J_FxFm$)}^NsflkU5KFOcH-~*{jQ*v}cm@yB%G&sN0Wp*XD#RKG` z0IT5LwOW${u*a`_R5Zyo2~4lG^<7^>$4d%(icU^%oR5JIfWbqMX+4}^g2aIG7La^%*hukY@lY#SGQ-+R) zKJU22t>5^MLDx~1GI#j#;DE}Ki1H0b$O={<3n?NKw$$fR=AHsm3VyA zp5Qr{pPPXw0Zf4{JFeT4w19I()Qj@WFUV~HH-t1JuKzUOob#Hj8d>kf28q0Je_c6z zGp@NQE{hNBTUwo}QN%dK=1CaxbcP_rgwjVP_9?oxTzU9hVv1BMwz|5PaK;uSSq0UR zMiKU)dwni=A)zVKqXp)7ihdGziXIP{>ALVNIm-%c%Ywvp;J~Lg=9n#E>FwNz zNqqbOmoZ-_SKjmB&yQ^1=6|mYIT5#tH4*m-nv}21e13Qw?K4aT|AdNMcmv&6+YkIk z&L;wpS+D&O5}=fuKB+aFcSym*VU#)%yNgU}nT`9?or8V+LbM9)0({(F2OQ<&FuqCI=U#v~YteZ#iX)m2SGFd||ps|EVd(RFNODccAtb$1=35sW;sl(oSn z7@2s6Y4ce3%ofx4QJhR0hFqF~NK3;Nt%*b;R!Rsn-I{3PXV{1<$3MEGwI`B3KU=2Q zHd|%~Qo^&rxthzr7QB>M;8|0g>#REMs(3zQcatPi+OkYh9F&c7j!hv!+BvBLU^Q2( z-B_+X?b2lCg&wCNumPqQ}DH_O}-4og?v9;20?5t9)h&G#r}?d;M41 z!X#{oC0#oTO-ssIE>x)s9+$07WB%}+k>7f*q^m&qAcQyT?9^wg*bXyHYi%it>N4g)1T$*F#9<{t!s7&WPxU##`E>)L!2Cya< z&#w`+fp_&a$_bawMFw9WZ0#IS>|FV``+FeFtI5IfQ2|k1j);fMatnQCGHg;>zU(2( zR~8#`94&9vX<%rdVO-Po%(s;t7+{SharM1=bl6ucQ`cKXyW;Il+!8LUHloW?)8rz# z#bsouzG-e+oNl&3B@v7`G3djHDbCEIDle57p=^t_oui*|zI2~r({S=daX^+6E|1KXA#FnCbB;PWum`r(hQjGJjW%ornFmyy@IOBANHqett;+=kMdD-1iiq zS|E1#Kk&>yza%@y4-VX)!>z#k0O*fuKR=C~hx4~g=D;8E?)#_xTn%{7DGFjq{N-ss z;@!Wi#ttIzX1^2UfAkyhN4)!Y)&9q)-D}B@;O_rM4a?37q80y+-R1_c{rM*B?A(8{ zqTWTVdH#S-|LbTTMHDQZ9Pa+H{Yn7}yx01_Ck8f9(?R6?-#UQ{2qJR4XUGNV>pjyt z7Z2bbLH-*t2$BBuq;Kr+2rSB^EUHRU2zURH(waFs+JX+ZcXoDWHnnzQwy`&5aj-FQ zbk?^wX3=+Yv@x`?Hevb8Y4aew^dA`dpYCpLZQ}^Kxs!q8H|Aeib8Cw`Dn>&`QY|*n zJ92#Q&Y#=C&JF}I{r=xJz)Ii3_%{u>Hwb^P0qh{kf9~Hk;EtsBd#C&#w!_lgz!7u+ zz;BvyZ=n8OGk)RGz1z_GPBzR5VrBo6FckQw3H`s)CnkM+Lo@T|AO&;LwY4zSy*u;Z zkAn(+y6{(>ySJ);udSfnvmb5Z2APoW+iC1vT+G1ltg&1m2J-KussHC~{Y!gz?#=z* zY!4_?1n_-o2bd5ezcZgTj0TXf&*-fvg^Yq#kBZaT@ghX1i8$HoQxCIwJd%C|}4j!5;J zmHk%umP&GW4R4LZQK% zxsx%L+k=x9)Z5F*_bepMH}i{^hhKxrS;pRM7M~9-9?$RDcqyWG=cjvZ2c4=%76=6G zwY<9mUb&nf9vWZVM&gX5wbWm6X*WGGXkHX(zP(;eJYQrvvT61_dw)D4fO@hhP~dgF zvtMwVd~5kX6d;Grq2sIyY!g{@YS}@Yt(tLH`9MmE&gFE;Yl$P?NEFWq~qj`0E+jM2zFyVyWouzftnt_?lL6}^-nJ<>q zD~CAY9*ie`7B!4N;#^yDY82IX*w&8AgO5@$t0?Nz?_SEE03D~ zYa79bolSKur}2&A+CWru1`eWi&x-vo9YLI`%KK#ek&^r!2`)Xy)X%EfM@VkTbnT(4 z4xk;l)BP>ymI_o`Kb#>=%cR|U^y7T7}-s*RP zK6HJwF>B+MwC?$2?nrk&|8d5Rom=chxg&JdYF&*I*|krh#gkNAWl6;e+v;Bj?h*cqD!r z0+WNN%`=P@lpN_^Y)zio4qn6UDJQ!U2M#maa4L|`qYTq}B zolxu0iH|2A?3Fpeepq>-7WZ<1*OY3G7t=m$1F!Du^Ov>&hD3=J{;lW`f6_lU-zNUwT@+Q3b+X5gPswZhZ@(F1?=u27O_F}jy2x5O$tqn)5$ z%@P1NL+U2%XnDd28A*C*pjf96rO(kvJ71`%@+1e3&=}jfpWQzyjCR$f9Ew3@6r%ER z9LGUh)n;w)HiWYXnL7@mL8-auBL(cla6QIF+_xm{od}$>O~Zo^^vU0{duJ<-SUu1k zwI!rR;l;R;mACKmBVf}|V1x?LExDnzojc*u8gYuS?1Ovg8pNq@W6YHz>d)+RTPw}( z5Rolw8H35`3d%wv^FTwt45ttovAIPOnaWiI(7})Oqm`zMV{jl%( z=_9jtMV!~Wr27HZ$^Fy5ty;MSAJmH_Ie73taty!?aZSOEItvCdOM66ElLlio$=jjM zIg2-8ZcIgD*sFIaBc&nRUW4+{4GnEO-w;s4Coy50p>9)oQ@B$~3h?@FX zoR2Fdma2@GCuxhM@$&W6)Ai?FnJuCyp?Tfea5Iuc>Cv`{q9`HuMo-1Twy8Vfl@&E+ z5NDh|h;Y|N;MHk}Aqy2UbT@nwLlhJ1fRvpy>$Mvc+Y-i%F+kPsc{0QQ;f)>qL*TR1 zTS{2vX|nVu#v5z#vd|mpeHQ1ZK}!)ypDXIZZ0SX%zhKaF;-ujWAae!hQ)ce-PrtVX6Y}tOdB4o8^C+G?G5R7-_XPWA*gaNFDm(XXdtb zg7z1I^3SE{FMH40Ug08+%v0#?yu+oYTa4H0!E@1NO?v3Ein(n4YCQuHPr|T{dWJ~X zJKH?R8l5UNIX#boSO?ww;7e zcDAO7Z5aI(Uo9E*Y^l%EQokCh0IWuVnMLg4%j;pObIQ@gTvOxxZV9lBlyf*`vPi)XylssVs$nJ;x7^Oi$uakf8y#Pp zR#qNDB6izeT+yhh*w9j5#pJU=x{qYe5a!S2PE^s;4!14KW_+6oLe*aK5occYadP=3 zEw^c*`(o%t+OyUIiBK;;Sgbe(@4*CCBMsJ=^r?)LM=C=|(ibqJn|^t&w%aJec;M2F zMRAF@PhTs%#}JUMobP#fKEUXkInyhG^B7U4{ffd~?1a}qNlJpsO7i{-BzrN=r3 z%^+$eFRmvDnBnZYjh>RMt1U---k#&EdB2x3v3ud@Lp5D9)L!3|qNx1N%+4w3ZP`w8 zUq+doLeY^(Has=iEG@Wh<_hU5X<6teNp9r5p!H9Xg8{+|j@8)d+~hvzQOgK@tXeZ<|3N& z98@{hW>Hon%HzR}=00*J*k$IeK0B>7Ik(X&A4AF$RW^E9Ql>@9N-R8&R~@!ZC&6ht zY2+i=D0yzP(QpyQ$<_9yGbcjKO&|Eqkx(jCp#Y0pE`uG%5^_4hrc#Vex!%jvuA=(08}mAG-|_yc~7|@ zSc$>2!ela;q!iBp);1BzfIz}9MTRHThP)tg7olefNRXP)Y~t5EpNf3p`B)BO9euX^ z3Fpe^-e?<$nDhsX_Esdi{4Y6Q+W-vZ3Q%cb3o`UgF!7(VR}kzUCxDqdR*XAs@4S9x zTPL1{Pyfc=(y)9?pqQ3FVk-+0oIVurq>$$garxWFzGs-75&aOr`ECCl20trH4pPy} zS`C}y!-VBGCxpbIWsEiZ&Sg(S``$4;hHg2EI7kK8*;t5YtArQ>w^>f!hA&Pr)TR0` zw$zr6S8#N)`rurHFQ!#Wn4>y96wkhsauyf7;O zJA>odCTML08XZUIyR<=?{>Q{mHaEZkseJpz*jClL44@K3R3M>x4d9TTq4V?*kQL9Z1}=p$>2&^GsiIz*VTC0SSX!G zIZz?Aq^pPsfn0n1jtJl^o)iTvd1s3%TOV;RlTT{vS|+KttR`d?C9%;*sSDmH!fr%n zrid1Hv6FJq;9~nJDv2lQEd*GHv!8pnYhoJJ*>6`6nZ(J&TXNU7><3F)isk|&R>0f? zEiP&+9)jbE&0Jb+u;jFSokSy=5ZpK?9F%30^U6Uv6JK<@@RyS(qL%&Y3fWfTnCpwA zK5a$s58L=fhP<@-y=nw2w>i3Wa45>W)x?7u^}}jAIX<8Ih8sPnOx`g0cl6!-QDf@xVgh$1oe&s*Tu&;Up-(uoX*MOdA3)_oI0HuvIfp zNVN14lVuk=Q{Y~t`F7|wlhU0Yu5Nd5Z6Jtg-s zAO$Q+QCqs`^i0Tgn4N? zGY{1Rlr@FTk{LPOG-wEQaJ??c9vakcC`x{Q2B8xMMM)+`A=&TKW8V(v7FWSjN#XfM zh%#6@XDU*4>_l_;qiR9JmN^4tl0PKXN)er6)e8nOZG0Lp4z!B_2P588?3mT0#X-1; zf@)Pag?959L=)|vs|eUsxFTP2b`fPEq?{ZwIFlp$2KC+(PTYrcEbctxvf(>H9Bs^^-d5>6NAS7RdD zuZqh=Me2q3rqSQPK3WHiNXIj9Q%C34dwu^4SayIVrwzkYNJ9Zur?_&R#oGfom~fl- z?N${A=sjR4`T`@iO%1PbjquyiG+n5`2!n<4*)mByBerKru_$ijAUB>PBVwfc3AM5n zlIalKpadp#SZFaCV63lTaK^ilz&(7qNXvlq@Z~xFuCPAZ00w#HYZilQ^F{lGzOg8k z2Q46kn5+w8iyvxc08;3l2`K{s?KAu6+pd6pmV^rJ06GklqWZzyIk0wJ{vt2#B; zQ?1s*?#9-IDDS-9SCtsHzzTKKCc6CT(*iq^YzNi@rZ#;T!m&<6d}ojT+ONZJFki-_ z_Yu9f3CU?tms;Rs>h8U^z<(MSpYb>(9$^To@I9**oK>t`-WS~D13vBu8Q3nV-0&%^}+~jA0XMOLAinzII9LSFI^XEpfv_xCZ zH5dg-0vX`;X`eLKpCWES6GG^RWg@4#)kAm~ljxXD?*)E<)W=M1)?Z1pTc9TWwBP{o z#z`)^HMXco@L)BaMomEDWnSrP5a<@vW+f$;uZaffL~u6ZMS7%Ce#U-yB1^FxSU?#JW^Y$PH8WBmon(hPG=ubn-dz@IxVh!9T;>(*+{r|c~Gy(=G%=>>W+ zHy^?!_#zF;9Ls8=Ca!}&vLf-Jgd~3fA2mC5Nrmf*O7j&mE>mHX`Qzoex}Z9CPVB>Kz>_)}Rdrv#2$s3U#C+E1q+g+H|I9yT*%hf}q_ zpQDbi)CtW5+bDGA<=5f?OTUQ&1YTByH)za1kH9YAg^KeNOj@WhTF6lbXow(NA*azG zyQT0)h*2g7lv9R%b%#N4xmu$A(5bwU)rACaHj>d9 zFTxt%k!*4x5hwj_#ba^uhB9hT`)%&a=&Y{|aWa#uYd+V)w|2HRh~;N>+8)s#xN1#D z7>)(ch!c}Yop+b`ZHrLq^B!KYQ=2dF?g#8zCi!4lJ{Ydpc8_9=ucc32#xrbm6_gi8 zDHuv!MzY%%Gi~se{rClMI3{&Q$YZ<=Ns}2MH$ub~9(~dTWc3+gC$D2%#T#&j8JAv| zPi3?4&Qir(Jkk85Xh!7JnE=7?IV>6|&j!QdU~k?IJafDSqQ#TDm~6vr8}nXcKH{5qR;Hq4Sdr-G*nOiG2ee z5xjf_@acHv5zXdu>9k8}7>-~P0*##`24hdV8@>KI@WJ(2{i+c{vC;FF89lAlCxvV) zLBR&lNf#&v^AhIrbX#@;_!CS#!*UV9FJw9`6GDcEP`R0vZ#}9k;Bv&oXms)}2N+2t zI7un8a}P9mF#FgcZs!tc3iXJzJaRN#c-9n)>S=S_(iB278`?r38cSd$^f(4lsAz&_ zSJ?f)>+IE>A9+2<;P744XgYl2ocpZ(N<^60Ti=edTFlPPVoA!f33M>Uo1ngZPP$=n zm=RawU~rOYj#c3H5UG&w2O;9rqP-6hOiS7cjS1=Sq(+JAn*$X5i`V<$G}RdkVqZA7 zq*5PG;S;1aG%iu)`R5tq4w6?n#QT!-yaK29lzj3f0;&b(@D*VW^E)5D&pHJ~xSA3i zww7>7Fq}8tJ}~q!809@5vwi6Z^{}CddcU4cb<)9j zR+I``hSmjD5^AV%4Qk^}6h<3YtAD&0MARr^YWcc7gWwuClgvHDixbUlxUt14bcuLJeso5#K8uR>l3`ERK6rMv< z0TMqgmMM(-!p@o5&AR4dw)L{0@Ee8TsZDOJobRtc-RMH%eV; z3|7Gyvi8214B(w5ir6HTq@+63ojK$RI-I4kq@H3&@p#~*NvuQ#flu1;4x=A0EyhgD z_(Q_=yljCv4)_1UQZZJ{%2$(v>bPp0r1Ne-&s=PC!?|#j82^p05_qtA`v&DlTexHG z?u%pwnw6yro*}!#{WW`1F?*B9mE*309EZMCrRX!>0=JY%-gl}bwzjm}tw zEXHgOeS${JTP?$)e+DxXwGAgXq;RyW=wjkC1nJ`Vnb!q#*3N=Ql7LsQIW-{_!YT?K zvau!K)lQvx_Vv-cf+LQoi9?TO136jPwPv`$V;vrbSBrU=c5BfeLtoDvBpDKko}@DB z8AkY;g6$6cr>_VHaVy9zdiI)pI58gQ2SKe*_FG|TBXYG}e608Hl zUN#pz)Col!38D_JMn~%kP(p%^j0)TR=>I6ldOJVvLBvJ1k9u)29yz4l`F8+*QD5c((QQxXEX6X+Nr&5Dn~)#7DlXVY6RJkhB}tid~#bMjE^B{QQ(b z==o&H86|ZrD6Uyh5}@Om-{WkuP1yAw;+2R}AQJlHO0;Lb{@tU6l;@vfYZ;N4Uv8$A zhGW0PTJtX6E&sHR{whsr`Zl!!=ue(Pcz(+1R$$RxGl$N$r}{`2VgQrU#f^(Gp+T}!B1|=jC_Pn|A0otmNHGC5I%OuJ;EKb;w*aex6$SCG0ttY{Pcmtt?Q^U^s zTjbZHL=V@{a1^`<)4@gELv7mwP5xiq}WQQ`|BpY#1S7?hT z#vrJPJr;}pWT%~%#lG!p>IoN7@(C-?;l*({V|*dWkT6m#Z9J2zdMTtH`Dgnt1u#4t z`cvrfy%K5QaWPpEVw~=RTGpZ%y=XJ3C{)7dZ{^+>!G(lN#$iqCt{#*G<~v~dSwCYY z3+{`OYu;bxd}uTFq}XbpBTYkityUpiLXlGM1xalqijaqY^G#~FvU$I(ZOSS4bG5f; z>3JV}dUYHa1Bp)E0FKgzkV8k6(Hm<@zGIC94G)Chvy2kyJSt=PG$9mB*fr}uyM`v3snJz7aDAtiC9sO#1g{8?)<^ZB=ws~!7J49Rpa zBVd{*o($?<*=iz+(HjApd|pA-2JD@fkO<_DDfiwIGSBYGKf|}mzu_(w;gGo<*qYm& zmvjj|jg}Ku1eMFbu+#eUYQ9^Q(ly0nUPa!LaBL)P{E zLUuNGCbWrSLO#NWTQ%(HfY_N;wEfv}tHID&pq>A74o%V8<02Y}dHI23=dynLa`T9q zMmm`%@A#e%K48ROn{$9UOGEcGt;N3lY`7P|v^#6XFJ9Mj4kyq^8^LRHhWEl$A4GVG zZ)#s+q%;4@O9sIXz%uIxw+VZKhl|b?x8kX?3~}hWIw~Z zI6+W=-{I?c?g1`;R{ND46O<{;{v9>&Gb)Vd9#Hc8Y8;@0n7Tf|7aT<2pYusS4jd`?-6hRu-ZLB>_@eqv4fmkAW8m}FBHJ~S1tMZCI80` z_=}eOl7`L&g4l8V6;26Y{fm}>(1L8=gaCpIB5(l!zZc10wB(oW=KQ@*0@&`g@>Af%SVpC64lm_axscF<>08$;0lkM*sc^esUJWi=@Y z&?P4;V{1o!M{^tNKM+vt9BSs)MmEk4y5`mnj{26C-@g0#lxP6kz54$>d9bm9`sNNp z2_a;`j0}b}=?|a@04lH2zf@_oMpnN#hso;9_Ow zzCS>mi|r>Vfh6_WqH&uU67Qbi)=MNLj4uZ@5sWG5~)w%zr zDBF9@cy8_h8dJIsj!s7AHopqw-U$CqfpBpDiMQnjnKaJt_((Poi2a)xyc|Fx2EH2e>RxOdL}8!>R%=0ZLf|Qh<8^Fx-T`_(-SK(hP2OCE-V|!gg8!KCo?{ELBZv|q` z`X?zbKl_;g04FoYy`Kpx-^2LtMD=~4`mYs6Vbr(nytbaOL z0ML~4Ju&uQD+vQ9b4w$T!O+#WbTqcN21PKQ|Hnd={U3UtKZP&=?0>GmNZCQ@ci*O2 z(7Fu34)VqRKeA}o{hhA-GdJ{?`GxJzg%~M2XpzGCefkA4NZv14{!o~WhGJq1~K&j;4ttuBtI{)@1>u)1F9RJWU1tm7#JD{AP zS@k|<|MLvP35xQ3j|Ki~wd1$5Eyq7|PT4_T7Tfn3mV*Z*i$9D6DaYNM@_nRmg7{Yd z?N0i=Ui{8@aQrjp^p~N+2AWXr9T3pjXrx^1T>nde>z^c)-}T;a^GJFA>LL8^d87c2 z?>VDC<&gq7?(Xta9w~t1Zo2(jd8B{Ty-$+-_vDfO$FXF8Ilv4+`bSRaot2l9&#?$Naw55*ZVz17IW$azd*#7+M%cJQgpK)jLATJPV$9&}4`SRdsbz*0t zZz8dL=ho{T+LS=y?K74LZ6ubf?nqEpCconid$ouAW!uHiBFDIPa!^1tV`s>$3!m}-Pm$x?6WbxTj@6WjSq%Q=H zBz&5S31Uk@{E%k6lEZ_Y^S8%`Uv^`a#3jDu#mMCb%H-kLrE# z_>ksFq~Vc_c zBgv^S~o-5#ZdPa*#7GE~N&K-!q`v>R|j2KUfG%$UcQ>2imWO+b*DMu>JPBrm%s5- zygG1`y0SBN`Usd@DsK!L(AD>BYhIGyw=@4xfw=3WoW$!CFsB!Nj({+|kMORPP40s#45uudd};%2PtI zrMEn703%K7@04cq$h&m(bsTsr z9`56cZ$XBDY~&neI{v2u-Qep2-G~dY*eDnn2g7z-2f8Uk1_I;_hoaL&-R$&SthND} z>nNqtB<|cH83!=BvC*|A#vMwnQ2TxU0Vv-u)vjq8=2PnQbxTdiwaV|MPmJCkykIa;qWBc!IyE2Y=vMBqJ#>=nLgwK z*fa+S5I#>@Np$IWA*dMEGH?eX&AdxDrU=07M+mA23RI_ZsmvZny-8IFnvj-a*TnIJ*+g;`$Duva3AQH{WcCP(=urJUDji3EvAz3@aM<@)tJ=)l9{nyFJ zS(+?$gvK!}JiWOUgvQ!_uTMgT6#?#`fn)f|?K~z&*1k`1oNH2(g@nks>YHlS=&)t& z*t8|chq<)s4WeHV6q0v*EEpkit+|BUz{HF^%<^rk{=`5WkvAvL&qWCd&qOmtBpFrQ z(6d3iQk}^5HoQrj{QTW0oWjI1_8B%1tdc4_Xp?0PdBY=Tj>J3e1Wr)LWBL7Icv^py z9!4n*K@vv}SsGNzby`tz3=aIRjBggNqAKc2904+Pw6gV1Orb3?ZcU`nQ0i6ywAzc^CnDm3UidGDql zEdl5<`WmnQRCfgEFDcA|_B|UAN=9r|U>{>0J@os!+;Jx4)>E8~S<%C39J(Z&RrVO7 zK}CXwu^KQD$Y5OlIAmFzPbuek&#lcaM-#^SOtk@~&u)b4q%3Iz`y!E@kUQi9ba%Kx z`=&SiwB5-3`?Ye`7Cp7@@FfZq!T_CC9Z7X}yH_x>^eDVOeyDn4G(P7N8&<&!Ay&eG z%4{KC*Jj9fvLOOXXBVxLC&R~>LvxHJc2Ez7OiE1-0jov}CKDvzIlGF>9l=_q9aLQh0sQoEtR^JrB> z(GGT9?_rl!ptqt%O$V}&m|!of{QpDTJ4aWRcKgDyt%_~iwq3Dp8x^x+Rcza~ZQH0g zsR}Ck()D)r>Ar8j=l1#T9pnC!?2$d5toh6}pOuXLQwZ7OWgjiJQTms>M2rrl!b1?* z3da6+8faQ_ZA^8|S(4AH7iQn%l0fhLbY)2KAV14DgdcAd#N#0Cet}Nh_ATP| zx}pVSw_+6>a*B<@mJAxB!~w+g8+|xuQ4{Lf&Ztfd?556QO1f~v0EaBqlQ^Ub8}ZJ| zrR}wTC4Qh31Ur?3vM6wAUZf5eA{F~hy5(@6a7aqN>qa7Fv38BGQV@03#gA(0#g zsqJFXC_3mICnBeUjhgd~v4l1z92@OsQd$^HF}=d{6)H_FD%6jLqX<4SMdai3&>G>( z4-gzN!0fW&9HG}5Ay}IX;$@n^)aebN=!6j25H(Ti>T9F45o)x284_VyI6Ni z!ssr5g>KRc1j5~7Nuf0m_b^!>2O}aL6SNni4;2LY-;y}>lqPyI9wYtl8D-igwLrwa&gSheR%-{s+f?(%&4|*Em zZcM^8+V$w>i9``yfbR?hOT25D@KXew8H!=E6lYozZiBV`6$|QB8m$lkY}Mp2E&_MH zP-w6UQV9!l3zJJJ6yWty(Y2~csvK}iX(>c~F^Xc4Mu1U3kHQ-d+6tF%boq8g@iFb0 z3esd}}GaIEJ;IRPJ>JCK;C(dab= zwo5X&kWl;nyt*>r@uYwOtSjTBI{j_SWK8;a?5#2_ya1XS-Pgie*7N>xtUG?RR)XX; zq@Chn%Ow*Yd#<1bd}S_>p~;-Zr<%xotqL-^z|{)nWBq7sYO|ZAbj=7*Ug^t^OpoEq z(zxw$Ovj1L@6o7WgUjUccd0X-_KhH2RQlR83e_!{=Gmsq?)7+#9YN;2{MJ1jV6G~z zWM{X~P6Zx8gTh7f3dTVfmS0s|!H(IWw|aP^+kx2a?9Ek}hux24Z@RJE4w%@%h39Zi zTZ$~Ls3Y{Gb=BO`0#$N6=wy7oA<9b&>o7+HWzuJx!h3$yX1)Z{*CVXBy0a8rZR>(C z#*hV*N_m~QJ4j5K*Lo+H&*K;OF??4-0}3XkCH@4k7X(w4pFl!F5M9Mk_JW28 zd?7!W=30pzK`(Y?pV@reQFg8W6*eRE~HKmRR;EpnyMGb0K}CMhk+Tm4M#Z($YOIPl-N= z98r;*M4FBpXjogWs2JP;pV!+2Pn9T#^rNn6#+fV=S>-C;_VU@}z4`qbN)Rzb7TekG zGVwaGf8?kUxuUvKhX(0ho#SVvW`Ul558X|b47G*M_KjD_sY2$0o z{D8EJRUj6D$w0$w?J7DJ$K38x#mheWKQvq5+Q=OBJW=3w>@j%fhS4;qKB#3}X2P3F)!1_BXY z&SxQXUPsWnbBbJj`G6F{uyfDxl|dLXtDNNE*#l0x0n%JD3U7?=mbY9wc>=Qz{Jbcd z?YVNiJ$_8gDt6VVKvipuA{3MrLjP$P15$AA-Vmc2Yh3foERK438;*UoPBU5-nLZnp z+x|FVE`l`>=?BMYe!+1U+)shNVs*al*OCe|31n$Yx+>D+m|$jb_{7Q(fx*sXAy~M) zVYTfWYGU+-#j_~tQI1rKhPcS>PA5W$yDMQ*rYtlBJMPiRU^tKof* zQSL97i|CA(7xt+lrWf9H0;<)r<3cDIf3Yi#>j@#*7M2Aa67VZS4&Wy%1Sl!L=w zs7`xD%ywa&Zd5y=JI!q)7mEl6kkf3g1@W=(1~gWel1}fSEi1N&zr=;B;xnD;%Yfs% zC!=zK-mJJ+4*Dp`X}e6MUW4Ud0%IbjqNU15k>-_X*N7&#!Cwp$y8PDr@u80KI$3xt zRE!XRgc#gR5+{w3^2o8~WcFwqAL@E&*%WK&d-`MlRUCH)8>x~HBcXd^YX*hDsHRf4 z4jQl3WhNJ0gm?Hf&9jaRNY5HrQyb*=G@RRFx5SN!VnXFXMKNI^XF%E53&(Csvc_g! z>f!u^PRTm#;;K%GX$7zu{Xz}ZRZ8NgZpnSSkJrg`L8i)=BSAG45dfJuZU@_?yH`K@ z=gobFE-Br-(E(MlD$6q~QX$1_N*N?r3z@mKYQ3qS2rq!?Qo{tHWZSBepODmrt(Fqw zeq5P^sp~Yu_>4nr(*=zHX=Nq01dqT!E4sO;41(bXZyTEpC}62XvLluQ6A)(6A0RsJ z>!i=kIiU~zIFw*E&Vhsx_lMBGRcQ>Pl!`;Tbd8z2jN+FH)zFazCj53tL1mqgKpV+C zFjf++!1WPez!A_{!Z=^w2wH&KrG?zb4R8=JDNj~QnZvmX4-I)Na#|BX3a>|^B%>q% z0&^^{jPT}@!Oi^WhiQT&eY*^v7yZf1JI1w}JMzTorXvEutPoy!gobpH>~T8mYj8~) zYV(;({L_!PG#-uao87i_p91x`m{0fW2IB~#9KwrvpLZ1VY3cn}k%=9VmjqyKw|GMd5R*6rG&V0o|y$&Ap}lonDYo*i_@07dY!D$45Kx z4)`=i#oM5XY(jEnMP5KcC1Nq8mmnBk48~>!yU|xj0uH?bo&Z}*lg}vq0+B=44FiEy zq{rppm6b0r<@N1BcjRSn`s_D5qnbQoH)DQN&4a`I!skW1jA5gz#ERn#2M{3rRbY5D zw0kIbAJuh7ZOFn!YJ3@Ew;;>c4=^E|Oo&?SaDY97r$_SA$24vNcSq5L)mgptSwp8G z5jo~K476_3r@rXqGKDAdzEG%Afc27oe~hwmZXV*tLB#kzM9BWMe!^}>2r@Ma}R4nRtRi(O&X8ASZuaq=s zxw`4(CpVNdNln6%F!5p_1_afMC|Yz!Da;ZNLb98hKSE<}^+-taxPs~XLi!)v7`UlO z5qeQXV?OEF62eegYcUf@bt(&cM**;jrF;v3wuV%jiqu-kMavu+J{xt})NiZB*j7&! z0P=;4(XS2NJ}vgmH>`|z!C`aVVNV2g6WPt0fw4b<0^Tajrb21YJ@P)01lD;3xw|c? z2O$+qhTff~eA}IY_m64DzAo1M;vjCXfhKr^NPgfRWeG1qDns$LF82mM``U@B$VlCP z$EgM!qiPvqNB3}fK)!d5lrf;LZ#ZIPx=$)Tu05UHF_%{7lb+5+a6|sX32l!ZWblCp zOXLW$UXL&N7ZhNvR(wl0?h_TiZ;CQIP1U-0>^+qf=;E@|Xi;l3;MH_)A3=gD*$=DI z3T*0RtF*>)vhBe906cD`jiEt{*{|5-?H{nOVZ4F_Rn0&t$+Iy=1@e;oRoTl4{eta4 zDP2I?f$o93WPI!T^pXKsAA2wgvMtnmrh$r!d-E#0F-WdPd&;ihc!8@Z9(X{WapNjx zL%%SiA`TJAEN_P5uYNY#6$fhsHw>lNQqdVoNnA!Vb@8-UEFA3E7cJ=su$aMeBU$56 z(P0;0K?Z@1qYUy>M;{O3pp`EDz}^94CazDr0BRNpa}HFrQ_@Tydd>i$qYxiam%yWY zZGi{bSUCcsiKjN%ZL1l}KLAfjq@1eccKrr?>+_KCxqUx!7|z#pRb*=?Rycy!awSbL z#WN%cqjmB}z&8ehG73I&Nm6jZl~x@$EehB*-Otr(}ua38Qze0ZCGClHj5v9 z%bC(>9NGxBW35swb(X6uhe{o>LCW=*H9aZh-8jJ;DxgoNV6}SfbU=M5+Tr#15w$qb z%|q^cpkSbQfpvH2Z$LDu5N$QDwS64{fNSX8+JGMXxiWo;d@0<5zM950zBoQD+~gz; zIk6pgeR|f?m!=gf!^J*7rIge3o`>fi!!qYHWN3^S&PiX3{D_RiM%|F$+JddUb=5|s z7#u0IpiP6PUx-!-V~|wCWnB*9R8bPvh7FP_Ln!q!zs&^uFkWqs(lHnA`~_E4r>6olR4$T=W;~%yLk~|Y zgr=$)(nyIJ_3g=?(Lzp&&#mivJzi+=l;Wxr6?KbHNa zNG8U=S7|Z-A}#%~>@RvZR(9rJ6pFug@)xD&@0b0@z5Uyi{Ieqe`zc|2SD^ikDw37u z-=^d*d;5>e{(VaRJj(y6CGTkZe|Njz1&M#SIRE*+vHbT_@*kJ|nv#D=;C}c2{zW!q zVtyy3{(cr2-?>(Q{QRBM{`>g<4MpUCLIwC2;feO0TKm76O23mqfA7*itDBMGUB>sj zob4}l|A{Wh^nb1HpA^Tx<1nzY{5mH8tn7E;$RBNex4ox*7d!q`Z05aR#NE*x#09o~&3-re4fX>E+1=Hi(Jgh%iD8B_l{OgL2?|0#6a&mUrsO|C-Ruf&Y`&^8U_0G=_gC!vFfq@!lquUlf|3Ps-oO zFh8F?KVSSJ=dk>|_HS?fywsok;8}lm{@-{qKU31*Tm8THgO~WcK92EQ!m}g(O9`3; z2?QV=lOHzFU@*2IT+a%`qhLDr%{@_rq(zAiPeX~M;?ywMlp5v2j|%zXdimCN*Yu|S_`T`;?bZIJ4{r_6XYs`u_ETqZ;nz=( zrf<-D5oLFLb6c%ne7c@rKP>q)D9PV{YV+}-2)7w5E4(&*PS|*pN`MI};yIT<#{K zM0&Pay`F~HofI=^g1xreSdR?tO-NI)l||i8!Ba*49X&WSI(<_`#WPrNT|KtM&>;cI zn^zRuJmmQO(9KJ3*w=uSD3bt&XoI3-k_?k1K{zl3=Jy(VCu2=Xxs^mQp_~rxMNtR* zIG;b!j%t;9ji1!j4S=gcPmZHSt_<;qd@U_^;~0pH9&9SVEVm*79x#y!!aXcZHQ1C8 z;G|GIXQnbXG!=p>@5P+`-65t8)ZRNR)If+)oip(c|}M*{f}MjgW|#AzT3C)T;@l7Js7_YJ823 zFMj`;+)ZFG#{>)Dbp&VDNI~OG%%%7tPwBjpk0r0Ke54nM&%~5JH`VrH#5Zc(7jti| z{XuT1YA322_K0p1dsI+0phZKLmPiuV6sVZjNZie~ft4X=4A220=VaD>m^5bK%A=ox zv_0P+DXvR89z<{i*FHA^?9x{BYVJ&ak(7yWw1R#LGb{g4GXh?!-WPat7eLaaw?2rr z2;`zen4%RhORE=+!K+!5-Q5{VU_u{TRpcYwoZp~o7;MQheS}PlT43K6KLHZfkiG44 zuy5p*T6@2Vqt)R07I*YS0rrKgpJ#x-lbVJzeOP6p@W{-$18zpLSqStaBNmVwj0XT$`l7ChUu9w%a0h2F|4+Ml%|6KdF%49zMfs`rU}OP?#_E>CY1mWrnet zBpyu+s<<z;ddc! zt0xENl7Z3ZDU4Jvc^sAXaMkk&x!$)<{@frKSZDl&JkT8t&9SEIiE89-1nDOIxzJbz zBlHDK`r1@QKvAe=pb&j~LxZH7hbS@k!9S!&)CY)fjh?jC^R-B%vmg`1Dq)E1oDNWJ za?a=ecyj1lIEkY)I1oQ4fK6>(Tr2gS`p6Cl(fa)Ecwc6j>Nim=`4nv5Awz7+V32AK zh}b|SHLcjd>%wk!=ns)OA71tR4n`u8ENC*tdi_V50Fl5*bFLD|$L_PrY*II7Xe|!G z)cpyKh^{*kHweHw)|u(5STW&h)cYb=p7*KCse>E0DJxlc`F z!h-lJ7-HESO*j-RvWQGoZhE}+DfC@M)znOI_L2ri!jc$2Ei*(N1$zb*Y4aCV8@t*; z@CRzHD(=%0(!ljOkF#Na0qB+WJid*f+;l&LHN_8z}YLHpmxOV-1bfV5~d2E-_VCS}%a&UK7zu^qO{I@M-Ah5+M8x zjgWb*+5J4dR*DDiFv#>EeIBvZt7$)Idme+nWCt8s6TMVFgJ6ouQ6vPKm^fRJW<9_a zg^@d`#FPIg1A1DHR%xue(q@g7JXub})mDwOg zsT(>Lyf1T zu2S8xWor?^M-nmwg>OFNEMuD5n6}GD`CH7#X$p^M{bR~7f}T~|2=uCT_~Upz*!$QB}bb2q}&DK-@7=hcl9`?68)hEF(qKx5n z`f{MMri4(5i(bAi2c)BGvN%y%zt$P*1|&@%ksq-kFH>e3zX{0XV<9xu zBxcY=B0?B3z%Qg}+FLlMvD;GIza)ih24K!k)fMl=zZ>6WW557gYj&uwuS4NL-Z9RF z1NGv39YC;0U7rbCvG53fLGK*#N7D#}UmZ+#0QTJJqqHRm-baa2f^sB|q-rCQOaklB ziI*hh(DGdMP28xZd67tK^!DrllujEU7w9l9yhBPXE$tq#X`X9kq2A*Yx)X|mhlabltHMq=1>8KlWQ`&jyUZXo4= z81{h;OZ0+|WCq0^!V3(#B*sC0TCzn_yDn60=)QR2NWWv>=O-oovAEN=7v-s>uZG%c)&7s#SMlm{{T4E zOCa;FK1HEFOUlpcDUPq4{nF~v6i8>>xB=gWcFVzFBU{Q?#A7|1EW><@$Tm~8x~?fZ zUI<%GF+3mnusY(4H^ET@B-``s)|}9eTX+Q^vU*!Hgl!6`msd{u74{a2RD4T?m)akl~HwWVX(t zO<60KuZql`S*>U1xk*Y}TawL%gp3TW4{80gZl7GJO|+802q6IVm*2?EInIec!aWD* z2@1+T6Bs8JP*5!CA|C`7%mZXzL{v6h4H73K)|gY|53OIzGwe_Ssv!_nmlyL1h;)T! z8)X<-UPG79_*BaYc=@LVedI4c24%mnqt4mUHlm+$cu|bmZF5O;Qq|kiJ0j z3X?;CnSuQb(U>`K7VB{OP;_3Mb+lwIYl-`WBN*`P0gXDM`+X<_k&ex1a`YInh zK{vDK#)BWOfcmZewmO6!RNHLA^7Kmu5}R>;<-YU4Q-Kj;vZts5<@gui%L(PZ4q$fP z?srP2Q*_0E412IExAN2`i5!XP%`3`|`}0+ z5D5;$uZwSVwvwpd8%i(vFqH0#&I2qU2Ik>AbxUss)%p?*gs?bH1!cj_((d0r+(%aq z4y|MRy6TRT%`}>uXfxjezJ7Xq_^h=Um}!)B(PkQludH!8=C`L6XR@J@6!b`sf=PpR zMUAnAb}MpM+J>VxUdRe_b4yTL^zw5||6K8^0x@>S#Ee{FR#_cYKEs zGV17Y(vhKGbbx&`gKQ|zDwZp7ueq|-$lq+@$lr`631p^~dB6Y8k0R8?dcPc+14j=* z*s_s0bTNp7UjSsLQika?Hw8XM7oh_D(yu%x;YQT3{)GtZR=MY$beBo#IZNLa*?nv8 zO-+%eNYn$m6f}c&K!Oa2l6=ih;32gNMLxvW6uFn-pu({IJzXRaLd;S!{UM}{gw`Hu zdtifk`wgHZbqZbPwQ!tDjJegg5-nk|uu1d%Fys)a`B>>oGbFSl=iEk zqtbF@kz4q33!Nh0Cp4!+&TMyrGbiLnJjungHwW3CCI{hyiuUG1laTwU<2J~Lp_VDO zLU~yjRg!oag+AudE>!(tT_sM_s)+K51v>5q6c!T*liBU6$eZtE*n5zM(MSiR)>^t$ zGCYNS8}>`|xQ>Z0Z3`BR2f@h9MEN8q&R+rHijp-!<$~*I`mW<-_Lzbk2B8xzWCI&J z-<^`ji3;h*F)=)h&x0z2Zt}}vd26wLSf2Q`%IA4S15z5~em=wnuSYnaJ$G!IFo>Y1 zmg4Z97C}Gc*s;l8fi#q3poxZEXS?{0Ic8auW8v7LDW>eAlpJ4nX6~;cS=R5>U(hjR zt_l;b!{Q~xm}y6f=Oq+>We2o8WX#(xjHK6^KAssk(QJ>a9MZFciM8~~XXn?*{3*pW z>K>A!5%HZPn(bIFUI$G-YBITQ2cDapG1>{*^}P%(sfv+eubuhWD^oCn{V-NJaJlr= zWR_7BuuM%!dv%L5p|P@YEf6hE@34wb3{c2do0{|kvD8L-Oj(x_JAsP(NLI0mB>?Krg}5WV z9*`p;Fm*1tRmF2I*ak|+|NJQ|c9mkOZrUA$bKyr9lGHjzK)oW4Y828rY6aC07oDgt?(yPj04J0twu|#q zVH6V>i0npw!NlEY$k9o}x`gKbn%&kk6zs=4^2}v)Ev&_7i-~kV>v^vNIJgTwODJ=wSHh1yZU@fy~L@#Lb(xh!3dg;*?hgaDrpTikuj#KqElzLXdC6{35 z-XAT=#m?3>H8Sr)m(-{k?`ghczP8D(qeKSLr|c&q&gja>%%kZcFC1`9^q^T$97xbXAKzi0KxWcu7=6u}dl z@VO~0p8-w;$L#V^sxWIF!z!da8Zzvib4WUj|aoP3gC1IWwNYRR;WNs zsrHr=(hJfidrhM=n~4GyBzRAlkF=%g*qyPyy`ArM_I%M@1_XXzIAbkrftyy@b0u^k z0d_TNLTzHLEAjdpZuj+8z`Y*iZaUx~dU~80IspqLkpBo!?R==i5nP#@=J%Gl{I#dU z%ft5CV905D)g7stT#?Z|%NaN-Z%Gk}Z4ZJW<9CmYE4DZ(Y z?3COB%(n7?RmSIAb*Lgme{g#f>|t!?foX?&L35RjKheckZ;pf}@)Ayb8iJG9@~e@e zkp<$l6m@TPr6f8zs3Xs#NodvdFYeXw|*bCK?9<%bLh6>AJsA;c zF!lGvy`FC)rpqdAIcO>m;hi%HCMU2$r_;?ycagj`F%73J8;E+K^Uhtjm6%K6bAwyk zbDL0=*DzXKSoOFQ_GsCvVn?!>W{?IsJ`+!99z6(1Oq$RU2BAKXcw+Q{jtZweMdR_? z{)(ulPnkqPhqqE`xrJKf1mLZoTAuM*2*GInj@aZ>nGpx({3o!g+*LXJ!2bwfwQ{FOW6UyT{h=ejtB=<5_>< zWq-fyKNk55r~0pDziiFkfj}sxck8#mu?=Qr`!8Jm?^^Poie&pQT>aOwKl{isy{Ewc zO$PnDZPG7vX#!ZKGVC+9nFfWpko^rEr~3^F{rTnJAVjwRA->Q2?%n&V{P)@VHIfX!**^R#|9w>dvzg34 z0z&^&`EPZ)c%XS|L59Yh~EDb?DM}6&Hs#o{!^^;=f;2A&2MG}KhNlI$mY*! z|M}v#A^CH_HS5oI{@VT@!hg1(Q0PAbH2)C(18B=(Gb2C%ExSU*hye6~)tVV0HqSv~ zzF^vW#CGA85#^*i#wB)^g7X7YJDx_q;LsOrM|fiLuFq`)xT}k~^6RJPhPRyhS(zuk zrmohsx0f5+H@gQ-uAoC^oBJ(3^pB}`u_SX3&h8&GUN<|TIzM7Z)X{(>%$^gE-7USn z9*t$K)zHSXvnEzrt2cwaMmd~p%kLL_8a1C`IpEwZodTu_%49OHo}Lh+ z(NKv7WtWwtZmxq+qfXF5(l_{=>tH^;GD#LD-wWITfcM(Hg_vc&Dx$e|E*NCp#Bvks z@>$W@_>|B^)6&oMb8R_%B}pdetR8a|HcpX#sbT?oVcLWsr0MB2yP(-p!RZ&%@mf$F zFb!7ey*S^tv`CHmV!%zKY+E%lE=%`t3-{4dS>w5dnzQ<~ExHe14d+m3BqO{g>mSPYuFx@ zRU!MFQSkVcO8OJ1&hwAGgC_VTibuZJ_1-rlif?bvX8NjM(XJ*jogc1?`uNa-N?uQ{ z_UPy?)SAL`Xypn;e8haxFPOhTkGg+=@@|#K`|N^6^Eu7+^Lu)@XNUaVhp0xMo5Pt^ zyu^0PnYPq+EIy(Qx^}CHLeWSx9p%?vOJ=|WKFs89u4f%dy%V}3Xh|F?O_uXhK)szQ z^m-^xh!kHrR+RJs>Ol+uGuaQNc`A|McH*p1gcQE!Zs2+8iXmO{3v|jWx8FqYAHwBz zzG0V*-mYIsmj~@XF2XBfmuW->H(i=V9YP20*{EPY;1-sAin+%-*GUrN|I&a7Z5ABb zLrBAa&C3J^fy0CZwDOMJa++NN#^+v=NUOM=+tD03?t0b{U)A|6^;u-=JFD|ga zRKd&l9`)QhvF+@QZ|;|vrP$}Xi68HMtv*5qlXsMvj0arTRRjHvDb%ypyDC3R-wUi5 z5qZ{-Joq|hkRK}hN6A=?b4!HaCZ~^OU#pVb!$gh!fLhE7P^siq#`viI3V;9p1_Th^ z;pdBlANjB`D>e-sCGb8QTJYsxncTt?zjcp&Xqp42Q|dkwCuzEz$cb>0i$a$kdc|KB z>Rm2HnQ6GIQm}6HUjG7RC-!68QFpS9?nwCp^ZXpwwc{3E`2Y|`%rUk1^C7bZW$GL{ z-R!K+RUSu?Y3Vik!Z{o5O!}&fh~wA6CsEIy=tHNeZ@29c3_3%NGwFp|Aqv2q(Qdtl zRuOI-51v10Qlpca9lkBKkj2%c)JS7FWOWzIX3;!stg4pGutqxa@ zntQc?SwX`KmXJCymQJvsG|W}j85DNyF;#S)Om4==Yke6^k&t3ZWKf_y^$9SNPS3f1S3Z1IT0iA3VUG$CpWXg<^;SP8W`B0 zR!zQy0vO8#G|Fja_48|IaFmI~awT&pUiu0?qsOGer5I=B7cCx zwq6EyyYdcj#bghl^LO2rWDsW2k^|s-z-d=x59sko_BR{QJ;~0Io&azN9;^$#M2Eq7 zkktr>ABXLOH58~K11?>ZbRYEV#R^!L0u%!;L_9FS{ZQsOF;>LSM z)$+-nNq58<%CEGXBr1&bRog6bst6La7N1z61$ z$dyXc7L=t(BP%M|0V-F{6XjtOkp$rB&J2S$(^pil=)$}9cqkDru3{Jdg(EZ5llAkU zE*k{qvqJhoCmmZR7Zj#OnBFkr=@EIB;dBi1W)OggjRb}6ntU78+yr_sf?{6@K)_g8 z0|FQYs%3Ka25pdTits&*R{ro_Qqd7qv4K$=OZM{>E_0Hn3{#&W=%Ai+(eeHmlgO3u z9&U*lXU*F9g+}X1cYqJz&^6ZamZ5WT%mh$L<-e zn%YZ9S8)YZo*6&9^r15};5om8?ncDfkH#m@K*-vCrP-nC&BrRpl0OgHUox2?pVMGb z(_!L`Z&K$k+ysw63Uf~vPskvyoa8Fa-&3_bgb`Phn+08^KolKfL=Xgqr^A5dA|l?3 zRX&Yd*F~9WA&`OQi&y=Q@{!1}JpXujs5*~h|4V%{X9+B`?FeY-_6mu;j*+c)dY4I| zWyMrVCA%$U3|na4cXnW*7)!-&tv-HH)X8t%E8y%!3iPWnSq*Tw)*P=Es}Toe`waVK zQc)z6g#GIPb*4Zms&355D@3CZfsY>nJ^a)&{kRFdz)gffiv{_|{J13S!*c>!C}IwR znMOcTa{SuWA#EicZt2ULvi$Jrtdj(hhRKN2J=k27j%#EXb}p5`CO|3rBE(+QfC9MrN06%21Rcg#I3<=07k$XP4DNh4<9ao3Xw?I| zSy=EO-G18=QI5Gz6&t*AJvnPpiA(|r$SI-6ja2PMPpQk5 zVX&oJt{3@`PQ*AH3~3)yfZ~jg$WsWK2nhoxom*wIdC<-<;U2Uy$M*Df`1Au?Sya0$ zft+*x;8z^0LhgFK8%xZx%S?m7 zvT63o7&h9j)LPFG7iV$FnTR!e;5LnJsh_Wyaj*tGVrJUlZZNO61P`&~L2J%mH4g^J z95N=q2-h7w?>|l)-8hIZcQW_L3+m~2lx#WP?BAKIVT4Ir9_3gF^ahZN0M=3T$wu9S z3(qIC6Jlic>qSAVRaizE<bO_2aAeNX1xZvVe#aY%F57kVjp>avm zINh#h_4-%NAbvrTt|UQ}6qDk|I!GeFNNSNcB+)?I5%+U{fNM$CQw?Lh+e5BK*L%mn zxjJY7lMRSD+o7X^18Lw9jLs$#>KC?nB1_i<{rv2+U13(&6WVX}ZoFRx4BJYkEa%-e zEHj3|PP>7D zaN@Z6vUGe5^}SQPcPD&$FKOwCm!v^r!64*t5F*=1w}Zhi{b%%!fJI;^XIXj#3V<+M z{8C~r5v_W_po0S~xATlp0kONk8~d9EWEV<&fbyY7?5}&$wX)w8_q-!dRV}t+EG?~F z_Q}24|J2HC#Bn1SCp{|O;a$%BJVDq<@9sxx{t!@bO+8-psoAU%ew=*79cda8Blc@M zs$-SbR*EB^ol84GzWwwBcr9qBsSKyg0CWQL<~{dBeG}S;2u?z0xSO0p1BM2Cw^?%u z>YyR2NFT4B3r4yzYuJMA)yd05hc7Vc{9Zhi1%9ZQ&dQnP6P`En_(HUuNaDf^w=6di zS3RXXMYm}>3na_5!$vG>wtb9PtQZFKm)5Q*YZn?(wx)`Ms<<>3&fiyVw(;h`<5<=< zkd3oM8Q!Cl_of#2u2>$&M?>sw7gx-zr&MYv2NH%q2Tk#C=W@=XSH3W;Bg?{*ZePV0Cy*(nYXJ zJ)4N`Z%0xmUCRa8EUvtnP;l;{k%f@=jWP1nQKu=RX+4g4H9n8Vw8KM{f?;>|Xm5g?z*>Le)$NZf^b#PPvJ8^a)e7V?*5vgMAij8v#!4x7$0 z(nNSSn287T_fb-eV0ZdNz<;dv+9u`#a}L%W>%ED9V~ohRI7o-22QY$)X_PLtOt=8G z7)d?=$cHir)w^;J8Og&-@oVc^EZjK^oAd*kyapRTk$tN%En|u+#gO06|l++T9PrMlK%a;e)sJ)7!nkTX5Vdl^zpw)#1J9_pF0w z8YBG9NkTAbM)>oiJ0a)AM4=*x{RnkV| z4N*+{ZBMWPpSN3Ad0b%krY(E>oL$nc0LCao={>A!crqG4gxu7bx_pB^=xz&as*E>t z_js1ZiE1-$XiI)Cg4j6p}oowy)TcbIPdYaq=neL#Oe1Zz*1@!7xs7p6_Q3)ly^6<)!Pn0 z=p}f}T~nmn)?ixCj1>Z}tNV->LnaZ*r+zG;Z}?iB8i__k0Yg)=5@{8rl`%N@9$A5@ zB<@85;RQ>Qz#2lQOfjax@_gkfATp^j&q*{W;Nzj%0j{|XYq z=jPZqByKS*G~#-0B8O43=u*pjk`T5b>mrRO`NUY zQ6u(h_0+iPYRk`cGEU?P!d?x^98dN842ui(7+9d(I)N0At)!DffWOC+05>(Zh_->z zU>32K1;8*0g#R@p0@z|0)*a49PIWN!g#OX^VItz{tWrfH63*8sle}ux(pAhCvvjI!pMsY+tEJ>>CN#P%Xd` zSIq4y-KlUA8PuUkr53~f)u%22?aA>xrhJ>}Ht5QAr!6hqTbaA073OntZU_(zt1LmJf*v>>|#9K#v81k;LX{ydEVu45N$jan)KhCBoDf zaUzjWq)Sswb&yn6ntv$Y!1oHv8Fg2k&d?_A`0{YeSLV_1HW=oviPuzz@wvK3fOWwQ zeakO0#2(A=d^%$nc(cbkLS_^Log34pCc-rGQV+fTS{2ib36>!wO$C0YEIl&k)I!>W ze2$zBJRwqh5)g1S5Mi($WgB)m*(>R__Rjq7d-emlxgK~o)Qn`wh{T!ZNDC&khtt_s zWa@WmvOPq?J_3A-!d}V`cL+v`O|I=NyT~X&Yh0UJ*D%CnEJo2R zr7k-5Pd2%)@5YnEXN6uRlh#g`xAmncIFy&aYf> z`5uiVXef?l6!I6uZd4z>6$3RcOqJA6QZe6}7WzXB(km>S%g$I3hL?(-&o= zG;D|N(4h*ns@4II>mF7eRb;*#sA*ZBPfS^tYzlqP_tw>iznG(!bXD)fHwU0fiZg=t znr$H7Fth`ZCc)H0{lQ?!rBp3j*gqAgR`5lQWlB10ySxS};s^}G@IV?5ZO$ST?=uF% z=TxB1fa?I$m*ht-Zgf2;#PuGn+S(j;7Pbdj11O2FQ#10o=zv+NiBJh;qS0*U#WtQ4 zsVGcV7z%V#Zki?sw^|q$_p3MqxDA=icDS^CA(@S3a&Z73Gh3??!&NYnjhkITaQsSS zFnp+s^RJwBL!dy$_}Qlr?+H~?&9xM=v#_4)tHW%hCb;Su(~mHK*FkROVp55IMYv1L=O)^j zL4rIyJ#*P}iCSXgXpmVMaMW(CaqFxizNSuE%gv0HTN<5fs7=(h&C{moiY&th`eJ0e zD-}6@fc)Jp)^pMuvi}Jb(haPVIR+)EE%_Y|!|aY9m4w2Ldqcn;n$e=b5j;O5W|=3OxNuClV0H z3vC9F9Dvm22$YZ9K5;o*AhQWVQ}mbBKJP)9m!aRN!L`)H0;~?Oi3d1Vs&0*JGrVBi zFHWc)tv}6%j_6;>8LVlO8n-lTfx!_E*R20E5R!uSE)T$*hU`<9flAk`A^Ad5NtX$x zP*gJ_qq`A-H%)K_(AmN#F5-c1Py*tt@CDTK=|}}%B6X2(>fmv7Ch+8@^7R+b)yS(V zsE|sZFro(NcBR3OI@8l^O8g!(%X4@ajQl)(NQdJ6mFQr&9G=d}5d6fT$PWu;7lf<+ zkbszMMEZRqzfU;h%WBkz%bjI$E$U~7OPG&ezq)y^Q01X2OMgY*h+QeFl$v@AF)4vesKm?2HN3RewW+gn-O7(I1JZs8HRym&tT|9XgbiI6JXb2%TX=} z*_ZJGCuLK9cbX-3Pni|nSBRpdV0XFhp(SU66Mk9ikpPhrJ>jp`r@t?Gd|L=%V`k#~ zV||+A=c?)-%W6MLMMKjoIOy5CSQ`@3i(BX#8$#17n;O`g5Hho~L({)DG&MG{CuC&d zgr*lXwYQTsv=w@G!m+Y^HmD@z_$A4XUf9slRNqiuOc0v>_XQY^?-iQ=#sbW&ne9Fs zGPvxa7ldj_E|bD3rF*(S2w{t4n!;D2D8dn-##c4RcW^*|{IoIBV;VU+q8K;|hXBE~FG~9Tzc_UehX1yl1TlhxnJAMyK^p?T(n6xe=CMyT%T~aZ~m> z3=&e6vp=OGm&JB3_Vi8{rZp)~Ry{VQmY=R{mkj1%C(SiZCRBRu_CQrB&(6DHeI-&J z?9}(m?%H4GrT2_b)n34<|LX8yzTTcXe0Ye9ZKt=JnjaxuG|BKr zxs^E2H~FUW>pqyZZ>w9kwpYrXOf4{%=GZ%XobB{BL= zr)qfbrn);X=K=8T;)2D!IcV!F z92~$(zRhjpSmDtGltyF8f(1)wT#;|-Mi-pYW7e7lD}B7)GOG`W0{0!qE$m77=T#G? zHnOXRaB@%$%TenKES(RZo1b4&WWictyM?tzcmw|2>_^CyCsOE*q(x~pqck|{PqT;F zWPF0@G1|Rfkw9|p1&1OLDK{}}J^lEpT0fkVfJuDyPbMIe?WfCDs(!eWIlDv4YkF`)f3OHnX6X{)gzoId zZ>Yagd>~lOZ7#1)wEbdKw97r*lew+7toS&>(jxl^wINnFrES9Vq`r(>p88aMY$t`) zHe5d5IHTTNG1$!b;ENH7+i+Pg;bOASY1|xf_91Hn@QGkm4eNZ{dyvb*-9p>z*kFs8 zVm{5Qw2FPKHT0@7{6|zZ#^fy}7s6h^bj6K^rA5PIJcp#GpIIPuiDvc#)Yq@QMz9Z& z$BSIe-(v!e)G4hlg&o$?k6iFJwZ=BYk_cAkG6c;qOdH=}4``;&FCSz+nCnYDt#p$F zTC!$xErLl8yPL#{kdqEXGV^u3QARVBSzZ44?KpS$bIYfd<~%MdRwd5w$L%;YJ<2^_ z#68D3$wFnk?JfJQuFEju%I8vm2IZQ`67rdZ4t*kxY?9lCd)(C?bV!{yVYe6wJ*GG z^1bXi$%d`g?fFLQ_&sEOGW#R<|L?u*-}dD*80V1Z4~F5@EKvNXMd{y%1aGr@hz_TK z!M_?7zYj#;hQ(*|0@gnbi@)boKN}DHCfoY6w29@pu)zVFx=#Q2Bz z;h)uB96z-!zlZ&zQDXd)hvqL~e~85X>LOV=o_(u-hwY=gA0n|IVSlS_oPUVKexB{mH{f5jjq{(UGyhJu^=D%w*5~W` zVfRDG$noq%&-yHi`eEVv7kaJ#UEgm7eOps&`){^cmX=Jv=zTbU>fQdB(EV)$m>KCf zeio8=F5~gDqzCJ>i17LMUzG0n?*W4OS0H|Vg#R88fA+U#eKzT3`e|a!_FQM_Tic%{ zjjZ3i)qdOmukH~nzXI{|q4Ylhg7LY2(+}Gt#%En1;}1|+pL6nmRFV3x27>ihAbvh( z{|7)kt4n`A@EO0A2m2w4WPL6$^y3-(UkwD?uR#19IR5W}V0o4h|CHG>J_}lZe?~B{ z{H&SwUkwENuR#193jYT{aB%!y28;2zBo@mLQ7H@O?^WRbtAXJ76^NgM``-iN&*SDd zrR~r80^>JOej6zWSvc5#TFL!a1Ht(#5I?6Ye-DU1j~ajS$a{8Hd{)~31masYuiu^* z|J6V+GW;2dXV2Y#k}m(diNr5RJS*VYf3%*Flks3=s8jK3oBe>bW8 z1&MFw-alp!&+6wtkoY6-hwf^^|yx19j5Pg3t<;DJ7#qPVr{d;$M zmb0@ne3xxQ)Bk5V`){#7_1ym}a`t}|vHu}&=lH#-*T0mrKU1lU&*tyXn)UC*tNgcq z_9rvG-;ns$yl?vU?_XxV$=biq>A&xMo6~;Z`3~W?w|-N+Kkt0c8~FChcWwK(o$px# z-*&!d3w*=*+wFS}XJ`1?-jD?9TkhC*81yB zAPVNIZ;qGgpGZ&ummWH`sYEQTpT!= z#29reT-h8fD=d8rv|BfR_L`*15eo#VYK;?b>6QMigD%`r@mC-9%(~~j%0J39f<(;R zRoRWFN+fF^+fm4xohH9D)ln_+xnU(0g0Mtcc2K8w(Yx`>&rvO)pSJ z=@0TSu&dc+Z8)%zx{R^Pbf3q1yz*>M@+7X&Jnn(pb`NbHLOj9%K!EcVH{7ky_?H#i zJdG@ap4KYC6>@Iu30D=ZJA7_61)@r?r$`-arp0Ri^#u`0&PzY=2p+_1@i-da+jx0sV3brF4V>+>Lm|DnU4{NhqyJEDh4$ z{Dz%ilmhNbIFs3s_15oNhS%McG4lev7Ii!K0bLW(KK+Kx)?IQWXN@hB0JmGV>g^8r zIf8w5TLx8tU}qFU8UpXTd-1LzD0?rq5rRd|WD|W+LK_nf#?>s*wB%1b;<2HeERe>s zhXf&&adtH2)uosn9mTEIQ)wBlT5SlA6dV_;ikjlO^&=k|zog%S0zaI+&$E>)aM07h z^1i8qaoAA~=Qs9+c)7|Rln1th?FN#OIj%qufy|uD+7yIeL8K|C)FNO{@u9bwtCb>3 z-@pV`8-sE?WDIJ=;%(iLjh?hSwg{5;s1TwO3;o;8=sGo&tfe(lJ4CN}S=7<5=H=d) zO1?)REtWTG>m+Sx-I!DL8DXn4p)b!kIK>V+zypNyYmot6TbR`!)$138hF+G0S%{r; zSL)_Tk=1EV5>2s?rxzCTT!vD;?E~2(FYN-!DLri!nbg3gegP>fOva_;j(!ueF2fJF z!R(C37kshYQ%vy=&-)QKDQM1(k;Pi+QzE_WT+}r5XUPbUEcbIT2x4%;n$K{|1FSAM zEmRyftFM7Z`26MDv~H}dx7gFk--azh#gqD=Sg2&`aMb~0^4&($ES!)bP*?|sr<}1n z_`X`9guV$F?nGb-^k*3WUQXgneuFimP0f?a|9TvY8Wri4aL=Kbd>$Rs=3aSHpW`lQWB}&t^b7q6L7>!PW0c9BDZfz_616viJMknu7Zt;4rV5|@iU)jRzar&0Ur_mjIsuY7m6t#Euh6b9o zDmh%_pz2UnM>bGB`ofiUseiejXHU#J$kvR9W&v2k;MVCw1`sp!*)Rj~9ds%qm;-b4 zGq0lSBjq6*?w=|s;zE3pXR!(USVcM_2SmUrj^W5_rqbopeL_ha&n;2Jik}k>5Nx2N zjufkY1B!tyP}jN7BZ5+xp%DRsZj~n4AOXc1ozqt+N0@UL@ai2p=e!LF0pM&5 zm7CYOr?)0J4KiEnJIkYzn69$`nN(*EAEGlQM0?zdRBqb{l0BqtK~m!z0XPFh&ij!% z5RjBS{=qgZ9VEV&FgYJB%^Fe)#JDjoGl^nk&DW76I;S9W0KJ^ZwQ#%{7susfux!Wr z#HeP|klj;S1QxzBln<|5p@it~>c}!!KB}KUjYB+JMp{RO6de%8F>E!FicR40+fw@V zj`1e&C-zxm1PtPUKnYj6iW4TzqJfMi(?->roj@8m2h!@6yAY7PH!)Iz6lOlW9A$F` zV`|EZXSnzriGv)prKhY2X%uaC`_At(So?Z%N>2)F8Vyr>l8X@K8Pp+B8iQFcMR6cz z2gt_$vaTei`4Yg-U9f~G?Sm%)GNJZUgjUDM0Iy}RyX~CVeHX#9n?^gZny}v((0gIw zcN>fdyEgkbepymw3C@W;ChaUQDFy^sLIY$I700qvbEZs`up(1qfLZ2SJL4E;nj(XZ zVpXzKyB~Nt(q|v>n*B23Jr<&kCO5*`P1(4cByR(5JkdKPJ1khK?gWEfgbI)4l7inY zEbDb&=ZC8`fH#5-JudAI0{x6^aYbM>Pe?YT`DRaKpua8OcN z@9PYkreyk9jehCOaMlYXzNKD?z!?yi&C>^oKIfEh4a{Ww_?(-NN%XdGIyFsro|P}S zCN(YF>?EfF?}3#08y2LK`_HeI^6-gIuSj0HUVQwbvtvk58?&dN$66Zfi_%I7fRYw~ z%4@-a3TPQ8>!HQ&gc>$R@n%miL~H59A=ckx7B2HiBf%4I!ZomXJ;-qb{ zoBc}wE?+@UBT<*3-@Xq5d|GU0AQM6-IfVaP_a($$ZrJOl=zua8GPvizn!dx_H#@P( z?azH(bW8UpQF+XI_Zqka}@|{>`xmq z&7}d6U@?dgW_HhllKQ0QvCRRH>Dwn277(nrvF1P*=o0R>MP6f6ID2JN?<|8))q*A6P9c}ejCB{KNFW87Vz<^i&4*!5mD7agPpnd1YlE#8`pUw;MTt#t+z z>FT2m9vuc{;@cZ0UecbTI83Bt+^4H{~}f4M1S3_Y!vZ?I#op*Ak#QNqKg};bq^NH(nJ0*5;F5cl z@QjiiCWp6sOo*XHHka6A@Wt(&imx|IhhBh`5er_)7x#ICHCabV%85ZO0pF_-`qw~0 zPrGR1NZgK7@4lw&3j<~!!Y-1|S8zf+p6BQUhYt=~h{+!d1*?f#+b32LfpRahF1W#k z;J^t4_j~8DdcMH1!Vht%yel*;+$!V8i^$sA{|GHKFmV;jrTISlJyw41owP%3ht~4_ zBMy6bfb2+tUz71Q-sF`e1W#F}K2H1~X#Oxm=e@ zLIt6sL-Gs22MdddMx5RvlIQj+yd}K$Bt8&_zC+^~Ea4#mP^K@lDALt>^>%#LhlYk96~H-pAbmq#3orvSo=YccGln3 zcE0Q`WK4G+A)m72FdFq!kV3K-)lSbn5LtREn-4h9WvFIcr4_FQp>l_auxfD*_cf;> z+&#V9Mcryy#3zxkN)m`6q?+)R3YlQ+=2=Z~s#6Uy=9V>(%o;~3Lj0kwZHl|4E8GLV zt$bpBi*Dt$t(*%2G1NxWv~E~2Ud;tJuMpebQ78UWL!bHt5)!g9E|6$SI~p|?PLkW5 zb*x)M9_Dms4XFI8BytIHwvdy0Fq4|vvCPcRbsdIpx9+`MsaFNGRuf!6k}xvuh3nBV zEm2AK^x@S44z01#b%~lq9#wjUfWC-axeJ1WOOpmd2|Hzr?IR_WRfYFN zv#v{;d_q->a$bu@q+Zf4^ zbAq`4EM-Q>qo@c=dgl;^FURjnDDEZJfEvVIBBVfz@Fq%g#|W*(JDC7JJxsa!TUUKd zJCozU6no(s%uS7_j4!Xi$h(KWOsY{;b` zv-vp-DKy5BS3BxF5S5im5!=9_&Pj^ZLf!_8*Gq9;Hj+H(E_XV1#MELA)mwcb7YSOl zLw61H#i1r(1Xet~HR{VAo@3UdoHa$-1J~XEj4L8c#+aKX9#hL@QOVbd%1qqDj@4P9 zx93Bae78_)Fq@@=%-dsK%}Cx0d3%67w8C~&(2xe^Ly~o1aL8EfHilWbKz%tfPJB^C z+4909z35t46&M9L~nE1DP_20-0CAr!O{LB%))=EOv}`f!H)K?rST*N1zV zX`QNo0=A1vg4@OFBd^_MT(OH8=Xmqc+I{i|$+|ogj9O04qU%wjEm?MM7+rlN$Zpur z`EC@_g>7j-&|lPab})%FSf1X}BJu2@??ZM6ti*BbKohoC<3nIrzZgMrexcF1rd5IV znjLJq9MLk>rnanD6A6_5R)9X-##N~Db5goc#j8m;ljBjO6`7GDH@~*62<-x2A(BOd zi?vdzITgkkBra7dIdj-!hK&H~P^6$W2rAIQ?D^K$kux5t)?4CLL8Hlzc*?T0A-x~7 zCW?YTEqh8kDecpe6>)5>_0gD$8t$X>3xh1VrL%0;@jTaeBD4Q!iHbq{lAash6Cv0s z(!O>&?kGUp4l|ZOsBU5F-f3q+ivic6PYT{};rWgB`|OY^}x^@J9K#Sb`!ZFa>&tQYdsud8DMfMY@o<>QJS z%8CK?m83bjlvw~jB?`k0p1njlmWuNUJy_*3%4FI=L7XV&lxgRF{SO~xK>F2t<&Te7 zJimf5R9IgLaB^@qi>;HhgPtb_S{jB`u3z2)jUdzADPe0&7f)k|mfxLEt~FBRBoT{3 z%>vae3XNoZ-Y7*DR6Abj?+*`Ia`r~n@@q7RQ|RL&4)3E}uf)bjcp%h(Uwtt}8IkmP zy9{*}NjHXUbEb)ADlYJP#1Q{3qSi83Aa0oQt!l>uZxx3&~8Rp=j4kOoRBv9+K*j zTZm-cLi+J%@AV26UYicMNh4|bwv6loct2%m2pQY7uLywrwr*o|M_i3x0shOekcXz(LBAY^^nz)6syFE9=h_FKmlE}>FuNJ z3@(Q;;El9*C)DaJBel_l0~XZP9!c1lHRuXq=;hlbzR?Lu39nU*SIDKW8!6r=B0D>B zvCrep!1~=5P>JXe2(Azk$$sdp>G#Q#^rwG1EUo7dJ){8J13!sM$^%|{--n%sR2@qp zkni-Ojwr*&b&AE_2OY&uRamOS7=E51)w)0Fqu^1gNwfxx6PoZQUS3{uoYc(9Ad;E8 zjD(H6H^orJ^+!->it4;YCj-60HZP{ws|7eqqv>sv$=(_dST0Jf- ztiJAwRm$@?M}Np|Z?Q3(mp1TWGA}HNQRgDqRbGiC>r?eddl@LB5qnhaIfAruZk^or z_GrZFY7m9Zr-Jxv|I7*NiV9z8S3@b7{H~|r;t3Lm1a;XX1nNbLBB~t{ANlGI({65l zi~_k24pld9WS`3HrBIWsHZM`0OI8h7kPrR3!;l<_u!pk||Do6PF>T&zt}*@*VA=|& z7~+iP>PscBg>A{8%(egL`ZGr@v+h}J%fk0blDTmj!wLPx=Q*N^I%p6JC=QBc^Sqb+ zA9ZE2i-jw(8S@+r!D&vStV;+&J;&3RVdn&BsoOWs9Alj*tAJl_(LPV?h5*$}osl!_ z5ku3d*5>#T7S9&HuS7pJ;;732L8(kX&|TQMj0G(^4uyv=POacLkp-`!6~!z2b6D8J zVK>NdD6N_u3BQ0_9`Q^rR+(*wbLX!ZP@Od+;XlPWHU?Ge3gIFGE(1~P)Ixpi*;~g2 zS;RPne;@~E{;a11o65QW&L78WWmbxi`~=iYJ@H_Bg%La){_0Qz**Kear~wa`bE{k%<`Ag8+L}D%WQug_Ur}m(<9~2 zvLbedpNmp|9rmxz#`u%1|Ld@SdA5IE9sUm_KjU{g`InkC?2JFCGLqBX_K7V40`Ic=N+#dV7yzW@X7 zQTN6L;l2Up1mgrtm3pS!5uYjdJGt74P+Oa0<_t5wXqms!36r-!$N98b+&Xcvn3)f02L z{vQ?ziz3jU9=2DvOH1|%LzG}fCmN_c=FK-oOy(yvlg8eSCB`cY=?=bKycILqk}66U z50+;i3P=F6!gfeaXHlF%rHAvElZaJB@m0|UUFLYDd!-$7BMi58eW$M#b9 zh;l}Xg1srEsLLWEZ+Dm+FVHVe$I_aEB7I9{5N0Hug+yeB-3vEQB~^=F7!}Ja_b7bX zk2(9Wl)oDJ6tl0z!cvo%9#tAatoIJhe_iJL;YvU?of}SBu26FUP#0#e-W$A&4I2Go z%0g@)4O*Rd*wn?4w=tM}yXAbkxW9TxF&e&Vz}@n=5Wa5y{)$hlF<1$}o)W^oc5^#^ zijaaf_jr19yPrW@sKlyhRdFTbCm_WJsVik$<#d063!c1bvaT`Tp z-aKGBA{3cfWcv7QV+94mWp(UTE?hj)$LY~Iw_d%l7jcsvAjYaRqu?~?X77oRMBXg( zArF8qAn5Png-&j%7azH_MeCe-`p7U8?75F0NwrW!2AIIknk%PqiH3I{M(=32q&c!} zjO+%gq|~H~X{NdsPdY$(a$l>UNnqPdbx%|9pd?UT@6JP9Uf>YO>37_|YrS|Q2O^q? z6UFN7d1;?<$0h+7$vuYV2I_Y9QQ!YsO_%*FyS}HOE>SEbd~<*IkyWGDb}o$-NQ$&c z!+B&%knS@Xev@x??joekBY*F}2bE-l5)v&CDOPTi*Q}$`!CgcTF=M{eHWr285s)aR z6*!^W*7{e7tIE}hbP?5R2`mZ8exh+#`Vy=c}?oL~_v5nGMQl z{3)q5(?oHq#PLW@<0<9*B5CP3LL+mKmP%!{RI;WC0!Eehq*jpVK;gl=b-JnAx%+_B5(1 zp(o&@eqL+FRI)2Hld#L9V-ct7X~*_bq(((ZgT)HDFF~XPjf}%PezXQkzk%DZY*s{d zA{-MYoX6~nXk_~&A^>PMxhhPTeY<94>?Q5wPQ}J73g65;Hu&p14oj=ts82?DEwqmKxL2N(SfJdO(sEZy~aW${l*9SNT~rv|^~A#Pn1P(?a; zJg)6FK0s*0J19bqO6YfOzH*)LYdKE8bA5Wcy&to=w^ewWTZ{OV{W zzO#`)UbVP+Qg_2pV2LQI_cWC9c9yTH#p-KU1yNiH2QE4}2S@^lT$4n@<~HJ1InGxi z|42PMbTKB13iEjVP~6lkm9g;?u$SclcwGCi8+1^Vuf?h+Rm7?;lOs$9h5eieq#U|- zf4h{GOcFJoJQ6k5Lw;4RpVvTGA7RpOIPFt;;-_Mk+14fGCehxQjr6Wc5u>)=XNK$z#nGYW*d_BJzm(JS%ZK^Fjtc^}n#5n2)M?A`h*m<$IEXY- zjPz|{U~r*CK^hrJJp>{M@85d&x=ExuCgbbSEq31(PxqEcRgBAZpNN8{9%KZhIWpgvk@ZdKXOoEC z01ug$BcX3*KCq;bCTVLjc_lRz0&uV_J$-^(vOe7M4&Ji3zM?wM8B|nCS-=WTyR>Ux zM{D7adP&a2?u(4-y0BU56i(u4l4GutOV<8sKIfd@yCJC z55-K!@=_jzcPG^hf|Ttqvjso_?$I_fs$37pN*aB(0|MOS%hZ8BU3 z{l0*YRp^Ee0BgRd4TOVn5A^SF7SkV&t%O!d*WvXhv9=~&PpMmjDr3tv5e*-W)B6-8 zlZ+o28ZN|zeeDYfctPqIaDsBMu?{3Gy7iGL3>6{I*d?7B%!W2T150_OvO~?8T@S$g zF{Rfgp3w*m5H(a^S%^4Me+(#8eG(>2!f1f1F&C5tW(?KMS`z50D}^-3HqWn;G48Df z<^)iy#OpLd2Wr`vCCfg=nKnbojZcLNyK_-VQM_R42CAsq8!M967=mUJa48(qSOvQ! zOOQk*%JxS>)-A4befiYgFH<>pBIXa>55B%JzaC}%p$G&To3fj1xJoCo8uGQZ#>iAmxYVHJPHD*zm@#1(^)*5dG-VHir^4KRQl;Mc{*_1eeL~%Sid~q2Cf-1?f?a3OxReEdoV6h0uMm+*@5iqa6 z_{<6Cs)_|muvjmY85g0>GJc!29~$ZGbzEn2^SykRzsp!L^csWtpua!Btv2z z3^yDZYhD|Wq#*E#IEX8LaolAjAtJTaWY42xeTP0>2{QfZQ|&PH!W)cZ%2B^;=Pf-I zh!tRp?trL|Vd{2aa1;k^U>E?DDyNR`b{2jQPNFPU;h6`TsJ7UE#dRvAJ3j7{SPm$qQV z)@SYzdek@wBY8ND7zX8)T5AVpQ)Dnen6ooEsdClhaI~huI-DOiwBgGaFrh825NX$E z7t_ET5xSFBF}x=86fFPw2J&lmLb;sg;fEM*=mq{(4Lk9hWp7^%|D zk**Z_r@!9lSra#hF9#~J<{L=BfxWUXXCaY7+8#T^WFr(XS~s+%(ODS1dzE<_0sTd; zs#5PkL!tD`rjZZMn)&S0CwO&?H>@tiyuu!NBFFhlm57BqDTJYA#%efcK~fo;7kI2R zDaipMcqNzSlV5coUdCZDj?aBy;9v&fR#-^XpCH4Y|4_rp{!Y|P=uy#DNDGE}E4F_9 z<>VxuZ2i9~~@(Z&D=T<@0!Yn9%tu#H>~m5%)@IMdz}83-(=!ukyb7-o;%JjRm(g zMT)XAVXnBsZ=oDa5|y0+W$>&T&}=iJa4CPl z*vvF|6mU7OhgJ`&HD=Ndcs1pUiC^{WkKH>~sj?qnAYFN&fFuIC{FS5)Zd>4*NrAv{ z2O>WRBHAM00DI7efQLau*RFUZ8rhIo$X@2?^7#Op_L)o4eeG;yq*I_d1qMckN+!{d zAZgfJi@R8 z4Gr%Fg=AtiCRMXn36Chwrfj0ZW>@|Wl;GOH=JZi7=wh{T9f(o&gze|D)I3G_t5mi) zkbBCK2!&XD`WxPT$g0<+))V%|h$Ff2Wl9|fttp|P%zY0coKk%TkwnC6dZ#%-?&KSH z4FL3J6vS6!={BH;W@#zBCYd^P&I>&n1s|dCYl~N3VY1ZZJ;HJyy@{7rw`*&v0iB$j zaK{O&YQU5(r!5iKhp3H%%I*x3^c;YXP*a8A#O+3s9}@l`gviEhS&>9W%^6<=rc;0% z-Ki3fsRCh>yz~HaSkdDaHjD?K@FY?T_Ot-p=&j#vUA`&HOI0iJNR|EIBgofp zNQ+^}puFwWq&aBZm542HB8FI|->)^e!gBi*ZQFbS*T-xNaf6plX@f+t21`VeS>tYp zL_n?$00gXp*zny`sLq@PMBkX0LvS>#J(Ax&qMe809~xLq_LS9(j?VEP4bt16T3 zHa&{EOgSDQ<5NTa_Bwb89nC-zKWuM<_2U~$}F`{xt^atendEF^!4Ip?v&X{Au?dQ7EX78HKILC(e0+RBj|Bl z0s_`>y46%t#*ko8azmtzm@F-J3b-qOCl~XOHQ$3?&RQp(P{c48I06yAti$J<$64tE z@9Dk3iYq!44s^zT1Q^Bk%@p#m*z9gD_kg&p@blhhN(Ucm?pzJa$L(FMT&>d+#eQ{j zFjNHh0iws=?TkAxSSNo)=NPstK0)o~#`cB}Ymgb`uPDXu9M3oAhvhkq=1+vsPufkL ziSsWg#b+m9I_4ia27k)0V`uz>iTtZD=4YYt&%~8q!v0_)|0?WXp6w4N@~^`F<=Or@ z^X5NLicH_7s=rc-Oh3r6-zi0=9~|S~pcKEy{-oRfS183lbi)6rApRS=;eVhMzc>7! zD8=uX{cPj!lp@m)a`r!)_exqVG@vaFmnAs7r(6@FPp3qDCH|fc8k2EEWK<+-ets>p zKHm-F;chaFg&ALtpwG@Ze{{yydj?+()n$nu-}8RGw)Obw>-^)hi0*jj(5~6`N4Byjyu5e^=)$Hj3aAf%O*=>&J@~QRUt%tky{S-o~7NgY7{I#|d zL16rGfJ_U|WBt>vms|6b!qYtcUF&1X)73b~@+yMo!CWct{mJnvL{6;bownAKJ?8!N z5q<0Y(;R&U&yd^AlW)P>Ec-Dgt)a-m_15V~AE#J1vxd2&*s%xVBK&7c5pcBaS$a+! zGDJN&QA4G_ZGN$&Hd*K~J@Jq{_i1cac|zE995ah7m$O)u%t9iz=2W^1tj=`M#<$@B znTS<72C|^=W4n4Qc5GDv(u#9tX0_-iQROS3d(f4ln#qUZaIDr$W%c=}{#)bd8jn;; zi^SXt%tbnc1e)ifqV0e8r-|Usi%Q@>`xnz@g%U$8s6f zK%fAVuL;|kqX?0u#^IA{42dtKQF7jlKau+kc(PKPDv%&22d9!A(0f$0YH=g*av$@0 z9>V8toew`yM_lcl9DW6qYL5jjLGMpr-;Y0D8=CI%9i(~9I*2GJSC>Xy9WuznlN@gP z0@fj}?%&G;5MtWm2UEe?j%5;CRELsAJTa|WiiyMKN=sN zB#x8oIj%}0P@Fc+yr*zadq;76PE+DDZ@Pmsshvw7@KHxtjaekyR~3@?kUz2F+;&D} z^3JrRf!r1X;`GB+TV_8zVC+3B~>;_Q);cM>s4rIt< z5M~1mdXcr-tb_Z<7Vc{`%8&B9)!VU3t3in;qPR6@C%K@0&V{*<>hM$N(CQ)l@4fb* z8D8I%dPgXmwO2!r6z`?j@YhtAl=Ufj;e}`PXXMdaXA6;B5wR~%mNYK`ja7YGo!K?v zP(oCr#U8ab@beIbWLI$GG#`*9#g)}}8J%QNWN8Q^6s@)i%yc?Zs}V33l$D%_9fOU3rBTp!~{*y3Lm*wXn_%A zTLLX45>S?3dUp)v*!L1g@vI6&L!I7`0~k6chKMF&K8W4dP#&o{@(DRyCDy5cfSn_e zfAS~o+j8;Cia;IKV%Y)62Sjh2POYcm>md2$N8m?kVco4qVu+_CMM(HQz*TVJDh9*EHl#AvrJl$?Y$jckzyP{-6WYu z!0W83$PrZZ6oe#s&NYYC?w(ml*zb!w<|CO&$&8m07`z$ZoI|yM^PMv!+T|o-x;hKz zs)0ol5Q)5b-E7?vP`jol!-ELGUz06{l!Al;8M+hpd0rP)QFfem4MW7S6@MXtT#Uy< z1r%Y6=*JcLHkScOjtAe4DnYs@wx$#mBZO-6+UXTqV;rSSfUH4pzAb5&JC$eDYq@vs zA6`|`M&x1WDy?p)&Nw;(?OSulnIxG;YiD7VFug{OGxcReBd8VcJ1>tOO%B)7dqb5& zK4D8wBBX2%5fnlO!Hzqj5FLig)eL(6u+<>W=Gw^#Snti(VVMGz*4Z~I=`1OW4aQql zs*=VIPUjHGMwy~hk$8>k6U?F19jswPt-@*ixkJiMMioy`B*o-mHiTFu8G|0LzilIE zQ94jZ&}Hdhsh;{3@O+q^`}E{h^c3*}uKtjof(1o6c`s7{(a|UgF?rlUw9hJCar!P< z_e;vh>UAuP*GpvGCB?*PZg>Ld!EKfS&wbjAv-UkZFG+ z)=*qhikd@XQO!R2JEMW5QYF3ZYc?~qo*vEl76}b3rM+@FX({42Z|bP2g8Z z%$O&7Vs4$@W%eK|FK5Org`fz?!X;My1K_D?z~O|If?sX78=n-if^#3$1RCFwa^bie ziD&K%(fcQp)#A3!8t+wJwzjl<`E2^$nNNeXmfzx>39RfV_Zn zaJp2;^^NGd-qnC!$6TR8Xa;MN0Dd@x1*AU?vc4qnJgBq9%Yga*K{2z!amk9Zu-b5S zO#Mt9%q)CcUCcQAwEIQG2{-7IOMO1Jf(^sVc=(0AKHv1cHnHm`g^?1 zblW6bgTjI1_4&U@;efUfWM(9|=-n3wr%Tw2lbaOYeW@$|&Z}{=E8J#hr zkWksBQ3F11srmCW>Ka&ph%9g~f%TKi)`7e*ZcrwYHOCO1BA4wNe0Y;?4&wh(*1BQ< z1f*NrNq%3UtsT}mO>zvdeNLi=ypqkCG418vS(O8y(RzuF_eny5l&fe-(dNbKg;U)5 zcxJ3Faf&U8+JtzrjHcWuN{fw7y=!6vXFQ9JA;jdzV$Kb!c);=d;hB=L9{sM_P43u+ zN+{AABf?V7+uaHwB6JS(+|xNiP&((P0=caRq~$@BKB%r*NIA?DK~(k4MO!3)#SfA> z$h|K@+gDyY*0$2hOlb$dN=ItajzYInmkFD1%yXerv&E(9@E?VGprwq*x8XYIa@xrh z&cO7Dfjlke=4n(KY|Jzc14A&_w9>qk__9nLv)h3Q;bU#>KT=2`qf9Pp6=kY1_zqkH z>x?fm>ZwCn&SLben~NlnUYi`(nG{i|UvAFtyyDhwB=cE+jI!~5-Y%p~|D~18q*f7f zhes3DbO+63iPYOG`BG5T{>gE5?TX85w1IbIt{`}YY}3M@6RqV$dqz4neahHqr(z2N z?bz@7*Zma^>jwZc&MnKHobGS>2GQTJV%4XUKYo(r?QqHUJ$B(R>jh?yj{;`3&=r$T z71+MuiRVh&4GI`usgAXNvDaniI+v_zdXXyE!0K;P`rt#NFYILb0%r2Se$$0EEj<|u zrlhfDFm#ek>|*N_l0DR>Of0o#t`wbOfu;?zIA|e+$_--zZ*iAK-hip5DsxfZXON#l zXCQcOL2=>(F5Dp1wW1sC&9aF!QGp`*5<1{G3Jx{LfE@XZMp}P9XdtITZ&M?^Z>6bR z4-KA(9@kK!zExtwXz-@R)Q?+)AYz%|Q)d)2So za=FN=Uvx7`Z?DR*J~aZV?uukbn6*`4;Z))Rc`7+AWe2O^Q>?pix!ZC)HL4Ab14u*6 z$=8B{(Dw%s*%Ex~!>u(lwC&smLslW&iIR#I95b@H`c7^-up`JFhN`vEQkv(%%F0C7 zPQS5?&RH8z(o?o{*t$61S~r6kLSVSt_!R~+!OM4AgszFiWp|<+uQq@g+Ur+#B>Duq zUfhY<9~QuU%DY8KO{CG4Bpo)42@~2YDlp1+XjVCh?tQG@b|yLyC!ZI9aY{c2TB3tM zT=Xm0quaGubUJvOQ-T82x|sM0l*}Qv1Lk_R*s770nIHAAzG%3_YOpxQv}_sEp>Th3 zQX(jKacNM%zO9XSd(vz zC#xHx7*Z{laT4WD1(6ssr-<`u`;PsTSbc*y`)<24?_%kOM<31w8~{%GVZDy7Q(?T> zPI&MdV3!S=aCJh=4ERKLr>a@!#S4!02PaHfDytl!^I8hP0KL&8d zk=19Hpo>mf+}(f!>q#^+@cZ5A1lEx@0vi|Fg$0emelpCqBYv7`_pjuX?k&0JiCd1S zMWegw-}A_cxhn(YGz{EC=bgTwP%r-yOe;v;S82DM-NBRMrBd5yHeBlovmDi7BWp-c z)gUA0TyG2R){^$g*EO;N7Vf2Qk#;$iUsP=8Vl$(}5c@(Y5LunKF;R?4)7}d?`PzK} zs8S!b5Xl=lTcGfV)(6SRGJK3cKFn5+r&WRU(647cUn%I1nj-_$Q>NS|t@Hzor1JLk zcEVjwrNx#DOG8~-R<(>_034V!?2D*__p1#?Mh5)v8U2rp!b=LN_uA{~!&pvuXx(#t zhhdqrM*ZmqbxjIkwvBLJ?_E-)tu9BDNEtcapz$y_ys{&KKGd(uHysYc%sTMUn2!QR z&ObV-ES;!#PkMhCwaGJ6nrz&Y?okqAibY~Bg5mAzan40e;fYx9r>9{`NO7Ya681Z1^Ot91V_^DOX6Dzh-#MF~Vb7IF z7{6B*_~y6A_Uu9TR}9fJo%HW6@?W*>`5gZ)>|eEw`De2H?~pM6xw;hFA1-pgw2k>^ z*`nXWei79DOGy5?w#|PamY9EVMt@F7Xa13Y{yVY6{5_faZzZIEkNruy{69}DeQ)?b z5li1O``O0di6!PAg1)~&EJdzAYt`4BH~^vmc(141`PD;) z8{M0&^SjoIv`42H0N=IOgX{hL@|`x{r$=c7_gD66DZKY?H-yKnDm*YcXv#)xDwkQT zZY&m-G?EYO*dPv;sy7RoLpq>Th_Zt`Wl#fjrC{HG-!=@KW&eP9Xd2{M_jpeSOFZ8| zvZ{h0&IY;z@dXQjN=|XM{J@Y8 zC#ou67X=sZGzCl%YlhW=_{8}ty_9oj%Y}{D@Qo3S4qq4`-Sonx@AHIdDE=!6Kg}YJ zo5$xjP34RbiX;9Hb8j71Rrjq8(+$!gjnt+$u-TLdNVkM^mvnb`hlmJ>(g;W+A>Gm? zNOz|wQiAwx5Pal!&UxSS`2O+Xbt%)iS#z&7)|hkNBj&gT>_UUTGTilcsXN~7S=fmX zkZjiV-Zizu&koVmZ6N*rXzrU#srUrz1Ja)ghaZ0|ed#FR(NzElc z;?}2j9BA2Z0dnCcS>a>v)w1x*;2)^qyPvl~4dvt-(d8Iv^pO>AP7vUWml7fQjTjcG zVwh^jSd(Jt55Zy7chYMjo!NSLquBUhQF=cry&a? zrCGlLyYA#K8_lLzOFV&TeQ|6xqU&-FCdNyAL9lKirBB{35o#(0#(Xz(>rJVr=FcdH zGFc^074$TuC#Cxo58I4ooUQ?+v>lDHB|PiTRf#vqpX}U^ZWZY9Gp#|dQGy;6HQu+y!&z96WQ*FLN{wl@I+>FcP%T2Yo z3^5^L3Y;x?5-$rMDc3)LHyBDft8%A!vsv(UO=iK1P9^ySxskk~B}MUq*EWsG0c(d? z_dVKk${Wq48X6ucZL;j$x|YUoh};4%eM)X10wJ zOVm!zVq4FweV!1R&br1bjvfeX-W~Hkg@+#1fbxF#{Rui;dW44^(_I79S;i$a4A}gB z<_fe;Rn=$>?r0AQUuz0rId|ItAfoA6$=0eA8VER3s&zf+q+&yij+!afR9WVT3;o7vOCb`ioI3Lnj$ zs?=rNwr(fxkTNGZ84srICY(^g?`wlNJW)k%?}YFtn(PeDUia-ifo2uz?6jK9d1Xf& z3jE}}myZG+_)Jf?dnG;z_&w%@^Nxr?#IOsG?Gh!{w-!K9k1R=32_B7@s!ZE^f0;6rA^g|6KmnllE>WH5kefl;MJoO0u{ereHn{6+8KUC`^B~wZE)1&ejrQu|>uP7v3S^3aqA%7;%cM-%qg$kF zyY@83sE0gZkrvZF0N)-j|X8j#)gOo zEYCqNRcB+t!N*gPy=j0g0C-$SBk?|B)2cm`7M<=`?1YizdAwpFfL7yyKd&$oa_)Lp zvlNV=@cY*R<@vq$KL5}iL2twUq!mJvUL5}pg~@oaGN766Kc(ENa^GqWL>|Y>6m81l{VUuPUJ;SZaCdJln!|M;+?y$&KH+?Q&wfd<`Qh&=t$^g91 zZEwjUZh{rwJo9-ftlB5Vz-S)O^NdEm3jt*@DD~YYtp7dh3B4Ig6d?MZ(sx-JlHD$k z(P#%;#7ye-{*;gpw$Gn(B!V{1EsH6r}DvO0EJ^yLA`M{mWY;fEZ- zc!qMD(!I#e3*f;=F`9?9DR+pQznbs<*m2=WwUPf!oV3E^m9x2vEmr?{qx{YusTz_L z#_5nnq(e}=VohGYg0wJYZuLRpY<>nhi=@dr6BXr$eT6R%n!egZ4{MY}PUy%)R}Kdn z*iWqNuWEeu$o8!fkA#`*3B~4}C?VS4xc5@gnzMt@Sgl*wHR1uawo$43oE8wfABKa6 zsN;R?A^L}L3os5BUl)@oWpIil0Lcs=#sFO{(#j)0L3~~sdVHSlg-gw7E$KkrgU*($ z8chv0Uz<-J6FV}a)h^YKUdLH~31n(?SKWB^N|>qBzRH4m=q2#`v#fixLINvdBCc&v z(r^;PyuepsCGym5_+OSW!y3Ll=ZKffBZ8dRCFdzCtQXjbT4R9GDOFAS0Jf)xUce|6 z5W;tWt6LrQlsNy%^ge^TMQC3uBUDleUq48SE%q7Qbm$;EhUmm>ArgA%(0Izzfp;2f z^Bf*Bm@YC3nIDiike96KnWKAw++IjD*1ifqgW_`FOdCz3vDI0BhGJ)mrg!wvGW9?G zMjmX>9exL^BTvstv#uF09R|G!ZsAFKAn`(gP~M1;kdM@gZVMU%f53qhZC>{sOhhUy zsqk2;Nn0rziMI?={Ip^OBtD{m*D!8jhWF#ctpg{Y#4l}!&IAw&YuqvZ#NF*uKg^#0 zN#4DeL?y`9mLq35_B)>|@@wd9cP#7Xu5&iKCKA}O{1!zh9e{v|YZbsADSbEo-h6_; z$`;C-7%p&RSP8feb)X~CmZ5E|JyQ8aQzSieEtw2oe;jk=SPZT<9}JvB&Z!N)81*#q z!uQZ6(oX??JT;l{O7^`;Y;m8zPO&r=(l_!H=)!q#Hj(<*EsZO+sN41?w+I78sc@s; z^fsjjmA%IP;J#Nt9>=P%d8)Ww5`A#omH`rpsjSP|%o%y{MtQki1PK-kmTUkWmW=UX zwI@5Z7Dkz$D3^cMCSi!LCq^L6bX7KeAUbUHF> zPBqGO2`!z#qA{_aZ2V(_REuxbhvh73`(Hcm1g_AUy!Irsc){LM^@ipLwh5U8hfxYzOhCBGaE@0K*H7Sj2Y5KykTeYZAMS z&8Kgn--Id9_&YvhfGz=PmRY@s2OP-wPSN;u80E2j_8FCFw&v2ri<10sk`kwQu3-aC zj5Ny;C1;~c+w);!4x+=+m&{pjL}`3qM>yd$D);UjKIp|KJ$%x7H)xi3l@-G+CX!4B zTg*p~o0X)pN+>`Aa~3M_Yq=9WjC46jRT%HuMv&(u22y3j-f;+H7Zqnwu*x&=U^JA? z2wO$l2NJ$m?W(T(b`q&Y=uz~94sG(e>N}Q}gJwN2*}I#oY0^!%Aw(I<^nJ`H}de{|CMLpeb)624TsZEWL>FXHS0Ie*N%K1?(Hfz<}QU#n!OwqHDI z?!?lv$epOJ3|MXkQK%LzU~_qFSincVuIfjM{Uy&T2607oB1&x(Jmaty6%+Jw6BlXK zg`d!K88%8rWEjG)=f?|k;1jAA#m47}si5?)lsc7KMvu)A-SaJV^(Y&u@6tCM=p;~P z%<qOO8Cg9olw+<%GBYz0&FwdX3j=68CBDD;!CQAo*Rgm-306T?)w=)xjUX z<1WeZiw>CW5W(%rc^qxXmG<+D3g_iS__*uBslo-ZtWf(4zZeyUv|gI|wr)hI!?m9z zxetqa@%e_O4Q8u_rVajpEr;%QgY*;K-w>8Z>?9LP?*TrRZ1JE5q?kFF9)diM6md5z z)Qca!NLOPz6Cip#SJs-1NvTaUZKxlH-S|^Q0><}VuF5LmQK8yn2L$gYpcN|W2QGnH zBp3<4wsA-)#-$b^Q_T{bySvR$OrL6Zf}o8VK1ZsHh!k6Vp>0f}ZJCpMnuOFToA*=3 zwf!>!3M+?sxHWTXqk~Mi6kP#eUaU5pPwyNnw8yco+EOo z+gma6k>emM;=8l&BWXN$N$H)CB#c2H;FzNPFO?MZWgGO6pzN%b!il7iMrzK&kzt|SOQ+&H#GiNv@E1K^5!X}d%bR*U8tF92f*PinecB zn()bC+i>!qw#=943c$Maju{c*bcV-`gw4%g)wTRkR7n)!>kw&>PF)Zup+k*1L&(-p zpp8&A%cRL{h8pC=BPoOnk+QnkKsTR_hnZQAHFC-I4ZAB#;q(JoY$s7GHcGuu!s)Yn z+`$=41&*9QSetwYU%I|uRQ>t+xL!Q#bzce@TVsPas=f5{O3lq@IDl8h-%Hg=MH?e& zoO6R1f(!Gy-NU)1@XV8FHfu`yKSRk);P2RP205o2Qvg&{BnlHm;&T8awwr6>MrJ7( z4Vepk0ZB#AgO~LDH*7Jjvv&^ zu+x-0!J$)q;LUqR&df1%`rpMuE*-cRZe0)v2>d4zmGd9RKk!#9MA9g6idS1A&mcx{?7Gq|WtK*yZ+> z@>P`-|4)VpFz0ow>))5S<^ls**sd8OI3b0duSy$pfw`}B;pzM~ z0SDJVv^gLy3JNX=8N#il&H454H%K7BpzHnaFCLy9{10Oe`t1~>LaAkRN!Ie##MaIte;XEEH?h2RGD0~mCTME-X&__NGE7lhdBH%|^k zIM-w#TtM#I%aij<5B`Jo0d$S4{z3?B{~R>}f

6*Q+6fEbZ2E8V@@Q$1iobwNHN& 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

vR0e_i8+H)R} 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

;zT6>8W$&kSsniwj6796ijE2tm6`R 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ν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ɜ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

vHO_)x9jL~r` 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

-

18.3.9 Function overloading/Parameter defaulting

+

20.3.9 Function overloading/Parameter defaulting

@@ -1461,7 +1461,7 @@ overload> -

18.3.10 Operator wrapping and Operator overloading

+

20.3.10 Operator wrapping and Operator overloading

@@ -1607,7 +1607,7 @@ opoverload> -

18.3.11 Varargs

+

20.3.11 Varargs

@@ -1628,7 +1628,7 @@ opoverload> with other ways such functions can be wrapped.

-

18.3.12 C++ Exceptions

+

20.3.12 C++ Exceptions

@@ -1640,7 +1640,7 @@ opoverload> implemented.

-

18.3.13 Pass by value, pass by reference

+

20.3.13 Pass by value, pass by reference

@@ -1652,7 +1652,7 @@ opoverload> newly defined types.

-

18.4 Typemaps

+

20.4 Typemaps

@@ -1663,7 +1663,7 @@ opoverload> on Typemaps for more information.

-

18.4.1 Code Generation in the C++ Wrapper

+

20.4.1 Code Generation in the C++ Wrapper

@@ -1693,7 +1693,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.1.1 IN Typemap

+

20.4.1.1 IN Typemap

@@ -1728,7 +1728,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.1.2 OUT Typemap

+

20.4.1.2 OUT Typemap

@@ -1752,7 +1752,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.1.3 CTYPE Typemap

+

20.4.1.3 CTYPE Typemap

@@ -1784,7 +1784,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) these common typemaps here.

-

18.4.2 Code generation in Lisp wrappers

+

20.4.2 Code generation in Lisp wrappers

@@ -1803,7 +1803,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) 16.3.1 Namespaces for details.

-

18.4.2.1 LIN Typemap

+

20.4.2.1 LIN Typemap

@@ -1846,7 +1846,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.2.2 LOUT Typemap

+

20.4.2.2 LOUT Typemap

@@ -1889,7 +1889,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.2.3 FFITYPE Typemap

+

20.4.2.3 FFITYPE Typemap

@@ -1939,7 +1939,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.2.4 LISPTYPE Typemap

+

20.4.2.4 LISPTYPE Typemap

@@ -1959,7 +1959,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.2.5 LISPCLASS Typemap

+

20.4.2.5 LISPCLASS Typemap

@@ -1983,7 +1983,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.4.3 Modifying SWIG behavior using typemaps

+

20.4.3 Modifying SWIG behavior using typemaps

@@ -2017,10 +2017,10 @@ return-val wrapper-name(parm0, parm1, ..., parmN) -

18.5 Identifier Converter functions

+

20.5 Identifier Converter functions

-

18.5.1 Creating symbols in the lisp environment

+

20.5.1 Creating symbols in the lisp environment

@@ -2041,11 +2041,11 @@ return-val wrapper-name(parm0, parm1, ..., parmN) of arguments.

-

18.5.2 Existing identifier-converter functions

+

20.5.2 Existing identifier-converter functions

Two basic identifier routines have been defined. -

18.5.2.1 identifier-convert-null

+

20.5.2.1 identifier-convert-null

@@ -2054,7 +2054,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) strings, from which a symbol will be created.

-

18.5.2.2 identifier-convert-lispify

+

20.5.2.2 identifier-convert-lispify

@@ -2063,7 +2063,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) same symbol transformations.

-

18.5.2.3 Default identifier to symbol conversions

+

20.5.2.3 Default identifier to symbol conversions

@@ -2072,7 +2072,7 @@ return-val wrapper-name(parm0, parm1, ..., parmN) default naming conventions.

-

18.5.3 Defining your own identifier-converter

+

20.5.3 Defining your own identifier-converter

@@ -2128,7 +2128,7 @@ indicating the number of arguments passed to the routine indicated by this identifier.

-

18.5.4 Instructing SWIG to use a particular identifier-converter

+

20.5.4 Instructing SWIG to use a particular identifier-converter

diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Android.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Android.html similarity index 95% rename from winx64/bin/swig-3.0.12/Doc/Manual/Android.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Android.html index b295b5e0..944a88d6 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Android.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Android.html @@ -6,7 +6,7 @@ -

19 SWIG and Android

+

21 SWIG and Android

    @@ -31,7 +31,7 @@ This chapter describes SWIG's support of Android. -

    19.1 Overview

    +

    21.1 Overview

    @@ -41,14 +41,14 @@ Everything in the Java chapter applies to generatin This chapter contains a few Android specific notes and examples.

    -

    19.2 Android examples

    +

    21.2 Android examples

    -

    19.2.1 Examples introduction

    +

    21.2.1 Examples introduction

    -The examples require the Android SDK and Android NDK which can be installed as per instructions in the links. +The examples require the Android SDK and Android NDK which can be installed as per instructions in the links. The Eclipse version is not required for these examples as just the command line tools are used (shown for Linux as the host, but Windows will be very similar, if not identical in most places). Add the SDK tools and NDK tools to your path and create a directory somewhere for your Android projects (adjust PATH as necessary to where you installed the tools):

    @@ -77,7 +77,7 @@ $ android list targets The following examples are shipped with SWIG under the Examples/android directory and include a Makefile to build and install each example.

    -

    19.2.2 Simple C example

    +

    21.2.2 Simple C example

    @@ -326,7 +326,7 @@ include $(BUILD_SHARED_LIBRARY)

-See the Android NDK documentation for more on the NDK build system and getting started with the NDK. +See the Android NDK documentation for more on the NDK build system and getting started with the NDK. A simple invocation of ndk-build will compile the .c files and generate a shared object/system library. Output will be similar to:

@@ -399,7 +399,7 @@ Run the app again and this time you will see the output pictured below, showing
Android screenshot of SwigSimple example
-

19.2.3 C++ class example

+

21.2.3 C++ class example

@@ -409,7 +409,7 @@ All the steps required to compile and use a simple hierarchy of classes for shap

First create an Android project called SwigClass in a subdirectory called class. -The steps below create and build a the JNI C++ app. +The steps below create and build the JNI C++ app. Adjust the --target id as mentioned earlier in the Examples introduction.

@@ -747,7 +747,7 @@ Run the app to see the result of calling the C++ code from Java:
Android screenshot of SwigClass example
-

19.2.4 Other examples

+

21.2.4 Other examples

@@ -759,7 +759,7 @@ Note that the 'extend' example is demonstrates the directors feature. Normally C++ exception handling and the STL is not available by default in the version of g++ shipped with Android, but this example turns these features on as described in the next section.

-

19.3 C++ STL

+

21.3 C++ STL

diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Arguments.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Arguments.html similarity index 94% rename from winx64/bin/swig-3.0.12/Doc/Manual/Arguments.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Arguments.html index 9dae9fdc..2828bf4d 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Arguments.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Arguments.html @@ -7,7 +7,7 @@ -

10 Argument Handling

+

12 Argument Handling

    @@ -32,7 +32,7 @@

    -In Chapter 3, SWIG's treatment of basic datatypes and pointers was +In Chapter 5, SWIG's treatment of basic datatypes and pointers was described. In particular, primitive types such as int and double are mapped to corresponding types in the target language. For everything else, pointers are used to refer to @@ -43,7 +43,7 @@ return multiple values through the arguments of a function. This chapter describes some of the techniques for doing this.

    -

    10.1 The typemaps.i library

    +

    12.1 The typemaps.i library

    @@ -51,7 +51,7 @@ This section describes the typemaps.i library file--commonly used to change certain properties of argument conversion.

    -

    10.1.1 Introduction

    +

    12.1.1 Introduction

    @@ -195,7 +195,7 @@ else. To clear a typemap, the %clear directive should be used. For e

-

10.1.2 Input parameters

+

12.1.2 Input parameters

@@ -248,7 +248,7 @@ When the function is used in the scripting language interpreter, it will work li result = add(3, 4) -

10.1.3 Output parameters

+

12.1.3 Output parameters

@@ -315,7 +315,7 @@ iresult, dresult = foo(3.5, 2) -

10.1.4 Input/Output parameters

+

12.1.4 Input/Output parameters

@@ -380,7 +380,7 @@ rather than directly overwriting the value of the original input object. SWIG. Backwards compatibility is preserved, but deprecated.

-

10.1.5 Using different names

+

12.1.5 Using different names

@@ -414,7 +414,7 @@ Typemap declarations are lexically scoped so a typemap takes effect from the poi file or a matching %clear declaration.

-

10.2 Applying constraints to input values

+

12.2 Applying constraints to input values

@@ -424,7 +424,7 @@ insure that a value is positive, or that a pointer is non-NULL. This can be accomplished including the constraints.i library file.

-

10.2.1 Simple constraint example

+

12.2.1 Simple constraint example

@@ -450,7 +450,7 @@ the arguments violate the constraint condition, a scripting language exception will be raised. As a result, it is possible to catch bad values, prevent mysterious program crashes and so on.

-

10.2.2 Constraint methods

+

12.2.2 Constraint methods

@@ -466,7 +466,7 @@ NONNULL Non-NULL pointer (pointers only). -

10.2.3 Applying constraints to new datatypes

+

12.2.3 Applying constraints to new datatypes

diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/CCache.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/CCache.html similarity index 94% rename from winx64/bin/swig-3.0.12/Doc/Manual/CCache.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/CCache.html index d23b0cb2..edd435fa 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/CCache.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/CCache.html @@ -7,7 +7,7 @@ -

17 Using SWIG with ccache - ccache-swig(1) manpage

+

20 Using SWIG with ccache - ccache-swig(1) manpage

-

17.14 HISTORY

+

20.14 HISTORY

-ccache was inspired by the compilercache shell script script written +ccache was inspired by the compilercache shell script written by Erik Thiele and I would like to thank him for an excellent piece of work. See http://www.erikyyy.de/compilercache/ @@ -423,7 +423,7 @@ I wrote ccache because I wanted to get a bit more speed out of a compiler cache and I wanted to remove some of the limitations of the shell-script version.

-

17.15 DIFFERENCES FROM COMPILERCACHE

+

20.15 DIFFERENCES FROM COMPILERCACHE

@@ -441,7 +441,7 @@ are:

  • ccache avoids a double call to cpp on a cache miss

    -

    17.16 CREDITS

    +

    20.16 CREDITS

    @@ -453,12 +453,12 @@ Thanks to the following people for their contributions to ccache

  • Paul Russell for many suggestions and the debian packaging

    -

    17.17 AUTHOR

    +

    20.17 AUTHOR

    ccache was written by Andrew Tridgell -http://samba.org/~tridge/. +https://www.samba.org/~tridge/. ccache was adapted to create ccache-swig for use with SWIG by William Fulton.

    If you wish to report a problem or make a suggestion then please email diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/CPlusPlus11.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus11.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/CPlusPlus11.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus11.html index 4d4261cd..11335a25 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/CPlusPlus11.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus11.html @@ -32,6 +32,7 @@

  • Type alias and alias templates
  • Unrestricted unions
  • Variadic templates +
  • New character literals
  • New string literals
  • User-defined literals
  • Thread-local storage @@ -42,6 +43,7 @@
  • Exception specifications and noexcept
  • Control and query object alignment
  • Attributes +
  • Methods with ref-qualifiers
  • Standard library changes
      @@ -713,7 +715,24 @@ const int SIZE = sizeof...(ClassName<int, int>); In the above example SIZE is of course wrapped as a constant.

      -

      7.2.19 New string literals

      +

      7.2.19 New character literals

      + + +

      +C++11 adds support for UCS-2 and UCS-4 character literals. +These character literals are preceded by either 'u' or 'U'. +

      + +
      +char16_t a = u'a';
      +char32_t b = U'b';
      +
      + +

      +Compatibility note: SWIG-4.0.0 was the first version to support these Universal Coded Character Set (UCS) character literals. +

      + +

      7.2.20 New string literals

      SWIG supports wide string and Unicode string constants and raw string literals.

      @@ -743,7 +762,7 @@ Note: There is a bug currently where SWIG's preprocessor incorrectly parses an o inside raw string literals.

      -

      7.2.20 User-defined literals

      +

      7.2.21 User-defined literals

      @@ -810,7 +829,7 @@ OutputType var2 = 1234_suffix; OutputType var3 = 3.1416_suffix;

  • -

    7.2.21 Thread-local storage

    +

    7.2.22 Thread-local storage

    SWIG correctly parses the thread_local keyword. For example, variables @@ -830,7 +849,7 @@ A variable will be thread local if accessed from different threads from the targ same way that it will be thread local if accessed from C++ code.

    -

    7.2.22 Explicitly defaulted functions and deleted functions

    +

    7.2.23 Explicitly defaulted functions and deleted functions

    SWIG handles explicitly defaulted functions, that is, = default added to a function declaration. Deleted definitions, which are also called deleted functions, have = delete added to the function declaration. @@ -868,16 +887,17 @@ This is a C++ compile time check and SWIG does not make any attempt to detect if so in this case it is entirely possible to pass an int instead of a double to f from Java, Python etc.

    -

    7.2.23 Type long long int

    +

    7.2.24 Type long long int

    SWIG correctly parses and uses the new long long type already introduced in C99 some time ago.

    -

    7.2.24 Static assertions

    +

    7.2.25 Static assertions

    -SWIG correctly parses the new static_assert declarations. +SWIG correctly parses the new static_assert declarations (though 3.0.12 and earlier +had a bug which meant this wasn't accepted at file scope). This is a C++ compile time directive so there isn't anything useful that SWIG can do with it.

    @@ -888,7 +908,7 @@ struct Check { }; -

    7.2.25 Allow sizeof to work on members of classes without an explicit object

    +

    7.2.26 Allow sizeof to work on members of classes without an explicit object

    @@ -909,7 +929,7 @@ const int SIZE = sizeof(A::member); // does not work with C++03. Okay with C++11 8 -

    7.2.26 Exception specifications and noexcept

    +

    7.2.27 Exception specifications and noexcept

    @@ -925,7 +945,7 @@ int noex2(int) noexcept(true); int noex3(int, bool) noexcept(false); -

    7.2.27 Control and query object alignment

    +

    7.2.28 Control and query object alignment

    @@ -957,7 +977,7 @@ Use the preprocessor to work around this for now: -

    7.2.28 Attributes

    +

    7.2.29 Attributes

    @@ -970,6 +990,104 @@ int [[attr1]] i [[attr2, attr3]]; [[noreturn, nothrow]] void f [[noreturn]] (); + +

    7.2.30 Methods with ref-qualifiers

    + + +

    +C++11 non-static member functions can be declared with ref-qualifiers. +Member functions declared with a & lvalue ref-qualifiers are wrapped like any other function without ref-qualifiers. +Member functions declared with a && rvalue ref-qualifiers are ignored by default +as they are unlikely to be required from non-C++ languages where the concept of rvalue-ness +for the implied *this pointer does not apply. +The warning is hidden by default, but can be displayed as described in the section on Enabling extra warnings. +

    + +

    +Consider: +

    + +
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    + +

    +The only wrapped method will be the lvalue ref-qualified method m1 +and if SWIG is run with the -Wextra command-line option, the following warning will be issued indicating m2 is not wrapped: +

    + +
    +
    +example.i:7: Warning 405: Method with rvalue ref-qualifier m2(int) && ignored.
    +
    +
    + +

    +If you unignore the method as follows, wrappers for m2 will be generated: +

    + +
    +%feature("ignore", "0") RQ::m2(int x) &&;
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    + +

    +Inspection of the generated C++ code, will show that std::move is used on the instance +of the RQ * class: +

    + +
    +  RQ *arg1 = (RQ *) 0 ;
    +  int arg2 ;
    +
    +  arg1 = ...marshalled from target language...
    +  arg2 = ...marshalled from target language...
    +
    +  std::move(*arg1).m2(arg2);
    +
    + +

    +This will compile but when run, the move effects may not be what you want. +As stated earlier, rvalue ref-qualifiers aren't really applicable outside the world of C++. +However, if you really know what you are doing, full control over the call to the method is +possible via the low-level "action" feature. +This feature completely replaces the call to the underlying function, that is, the last line in the snippet of code above. +

    + +
    +%feature("ignore", "0") RQ::m2(int x) &&;
    +%feature("action") RQ::m2(int x) && %{
    +  RQ().m2(arg2);
    +%}
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    + +

    +resulting in: +

    + +
    +  RQ *arg1 = (RQ *) 0 ;
    +  int arg2 ;
    +
    +  arg1 = ...marshalled from target language...
    +  arg2 = ...marshalled from target language...
    +
    +  RQ().m2(arg2);
    +
    + +

    +Compatibility note: SWIG-4.0.0 was the first version to support ref-qualifiers. +

    7.3 Standard library changes

    @@ -994,7 +1112,8 @@ Variadic template support requires further work to provide substantial tuple wra

    The new hash tables in the STL are unordered_set, unordered_multiset, unordered_map, unordered_multimap. -These are not available in SWIG, but in principle should be easily implemented by adapting the current STL containers. +These are not available in all target languages. +Any missing support can in principle be easily implemented by adapting the current STL containers.

    7.3.4 Regular expressions

    @@ -1175,5 +1294,6 @@ Phew, that is a lot of hard work to get a callback working. You could just go with the more attractive option of just using double as the return type in the function declaration instead of result_of!

    + diff --git a/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus14.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus14.html new file mode 100644 index 00000000..b162c781 --- /dev/null +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus14.html @@ -0,0 +1,60 @@ + + + +SWIG and C++14 + + + + + +

    8 SWIG and C++14

    + + + + + + +

    8.1 Introduction

    + + +

    This chapter gives you a brief overview about the SWIG +implementation of the C++14 standard. +There isn't much in C++14 that affects SWIG, however, work has only just begun on adding +C++14 support. +

    + +

    +Compatibility note: SWIG-4.0.0 is the first version to support any C++14 features. +

    + +

    8.2 Core language changes

    + + +

    8.2.1 Binary integer literals

    + + +

    +C++14 added binary integer literals and SWIG supports these. +Example: +

    + +
    +
    +int b = 0b101011;
    +
    +
    + +

    8.3 Standard library changes

    + + + + diff --git a/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus17.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus17.html new file mode 100644 index 00000000..a2346660 --- /dev/null +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/CPlusPlus17.html @@ -0,0 +1,109 @@ + + + +SWIG and C++17 + + + + + +

    9 SWIG and C++17

    + + + + + + +

    9.1 Introduction

    + + +

    This chapter gives you a brief overview about the SWIG +implementation of the C++17 standard. +There isn't much in C++17 that affects SWIG, however, work has only just begun on adding +C++17 support. +

    + +

    +Compatibility note: SWIG-4.0.0 is the first version to support any C++17 features. +

    + +

    9.2 Core language changes

    + + +

    9.2.1 Nested namespace definitions

    + + +

    +C++17 offers a more concise syntax for defining namespaces. +SWIG has support for nested namespace definitions such as: +

    + +
    +
    +namespace A::B::C {
    +  ...
    +}
    +
    +
    + +

    +This is the equivalent to the C++98 namespace definitions: +

    + +
    +
    +namespace A {
    +  namespace B {
    +    namespace C {
    +      ...
    +    }
    +  }
    +}
    +
    +
    + +

    9.2.2 UTF-8 character literals

    + + +

    +C++17 added UTF-8 (u8) character literals. +These are of type char. +Example: +

    + +
    +
    +char a = u8'a';
    +
    +
    + +

    9.2.3 Hexadecimal floating literals

    + + +

    +C++17 added hexadecimal floating literals. +For example: +

    + +
    +
    +double f = 0xF.68p2;
    +
    +
    + +

    9.3 Standard library changes

    + + + + diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/CSharp.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/CSharp.html similarity index 92% rename from winx64/bin/swig-3.0.12/Doc/Manual/CSharp.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/CSharp.html index 5be63a34..1fc2d211 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/CSharp.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/CSharp.html @@ -6,7 +6,7 @@ -

    20 SWIG and C#

    +

    22 SWIG and C#

    @@ -54,7 +55,7 @@ -

    20.1 Introduction

    +

    22.1 Introduction

    @@ -63,18 +64,18 @@ The wrapper code implementation uses C# and the Platform Invoke (PInvoke) interf The PInvoke interface has been chosen over Microsoft's Managed C++ interface as it is portable to both Microsoft Windows and non-Microsoft platforms. PInvoke is part of the ECMA/ISO C# specification. It is also better suited for robust production environments due to the Managed C++ flaw called the -Mixed DLL Loading Problem. +Mixed DLL Loading Problem. SWIG C# works equally well on non-Microsoft operating systems such as Linux, Solaris and Apple Mac using -Mono and Portable.NET. +Mono and Portable.NET.

    To get the most out of this chapter an understanding of interop is required. -The Microsoft Developer Network (MSDN) has a good reference guide in a section titled "Interop Marshaling". -Monodoc, available from the Mono project, has a very useful section titled Interop with native libraries. +The Microsoft Developer Network (MSDN) has a good reference guide in a section titled "Interop Marshaling". +Monodoc, available from the Mono project, has a very useful section titled Interop with native libraries.

    -

    20.1.1 SWIG 2 Compatibility

    +

    22.1.1 SWIG 2 Compatibility

    @@ -82,7 +83,7 @@ In order to minimize name collisions between names generated based on input to S

    -

    20.1.2 Additional command line options

    +

    22.1.2 Additional command line options

    @@ -134,7 +135,7 @@ Note that the file extension (.cs) will not be automatically added and needs to Due to possible compiler limits it is not advisable to use -outfile for large projects.

    -

    20.2 Differences to the Java module

    +

    22.2 Differences to the Java module

    @@ -231,8 +232,8 @@ javacode -> cscode javaimports -> csimports javabody -> csbody javafinalize -> csfinalize -javadestruct -> csdestruct -javadestruct_derived -> csdestruct_derived +javadestruct -> csdisposing and csdispose +javadestruct_derived -> csdisposing_derived and csdispose_derived javainterfacecode -> csinterfacecode

    @@ -555,7 +556,7 @@ Windows users can also get the examples working using a Cygwin or MinGW environment for automatic configuration of the example makefiles. Any one of the C# compilers (Mono or Microsoft) can be detected from within a Cygwin or Mingw environment if installed in your path. -

    20.3 Void pointers

    +

    22.3 Void pointers

    @@ -573,7 +574,7 @@ void * f(void *v); -

    20.4 C# Arrays

    +

    22.4 C# Arrays

    @@ -585,7 +586,7 @@ with one of the following three approaches; namely the SWIG C arrays library, P/ pinned arrays.

    -

    20.4.1 The SWIG C arrays library

    +

    22.4.1 The SWIG C arrays library

    @@ -622,7 +623,7 @@ example.print_array(c.cast()); // Pass to C -

    20.4.2 Managed arrays using P/Invoke default array marshalling

    +

    22.4.2 Managed arrays using P/Invoke default array marshalling

    @@ -642,7 +643,7 @@ passing a direct reference as described in the next section.

    For more information on the subject, see the -Default Marshaling for Arrays article +Default Marshaling for Arrays article on MSDN.

    @@ -677,7 +678,7 @@ As a result, we get the following method in the module class:
     public static void myArrayCopy(int[] sourceArray, int[] targetArray, int nitems) {
    -    examplePINVOKE.myArrayCopy(sourceArray, targetArray, nitems);
    +  examplePINVOKE.myArrayCopy(sourceArray, targetArray, nitems);
     }
     
    @@ -749,7 +750,7 @@ and intermediary class method -

    20.4.3 Managed arrays using pinning

    +

    22.4.3 Managed arrays using pinning

    @@ -762,7 +763,7 @@ another thread may produce enough garbage to trigger garbage collection.

    -For more information, see the fixed statement in the C# language reference. +For more information, see the fixed statement in the C# language reference.

    @@ -844,7 +845,7 @@ public static extern void myArrayCopy(global::System.IntPtr jarg1, global::Syste -

    20.5 C# Exceptions

    +

    22.5 C# Exceptions

    @@ -941,7 +942,7 @@ set so should only be used when a C# exception is not created.

    -

    20.5.1 C# exception example using "check" typemap

    +

    22.5.1 C# exception example using "check" typemap

    @@ -997,9 +998,9 @@ When the following C# code is executed:

     public class runme {
    -    static void Main() {
    -      example.positivesonly(-1);
    -    }
    +  static void Main() {
    +    example.positivesonly(-1);
    +  }
     }
     
    @@ -1123,7 +1124,7 @@ method and C# code does not handle pending exceptions via the canthrow attribute Actually it will issue this warning for any function beginning with SWIG_CSharpSetPendingException.

    -

    20.5.2 C# exception example using %exception

    +

    22.5.2 C# exception example using %exception

    @@ -1188,7 +1189,7 @@ The managed code generated does check for the pending exception as mentioned ear -

    20.5.3 C# exception example using exception specifications

    +

    22.5.3 C# exception example using exception specifications

    @@ -1244,7 +1245,7 @@ SWIGEXPORT void SWIGSTDCALL CSharp_evensonly(int jarg1) { Multiple catch handlers are generated should there be more than one exception specifications declared.

    -

    20.5.4 Custom C# ApplicationException example

    +

    22.5.4 Custom C# ApplicationException example

    @@ -1378,7 +1379,7 @@ try { -

    20.6 C# Directors

    +

    22.6 C# Directors

    @@ -1391,7 +1392,7 @@ The following sections provide information on the C# director implementation and However, the Java directors section should also be read in order to gain more insight into directors.

    -

    20.6.1 Directors example

    +

    22.6.1 Directors example

    @@ -1512,7 +1513,7 @@ CSharpDerived - UIntMethod(123) -

    20.6.2 Directors implementation

    +

    22.6.2 Directors implementation

    @@ -1574,9 +1575,9 @@ public class Base : global::System.IDisposable { private void SwigDirectorConnect() { if (SwigDerivedClassHasMethod("UIntMethod", swigMethodTypes0)) - swigDelegate0 = new SwigDelegateBase_0(SwigDirectorUIntMethod); + swigDelegate0 = new SwigDelegateBase_0(SwigDirectorMethodUIntMethod); if (SwigDerivedClassHasMethod("BaseBoolMethod", swigMethodTypes1)) - swigDelegate1 = new SwigDelegateBase_1(SwigDirectorBaseBoolMethod); + swigDelegate1 = new SwigDelegateBase_1(SwigDirectorMethodBaseBoolMethod); examplePINVOKE.Base_director_connect(swigCPtr, swigDelegate0, swigDelegate1); } @@ -1586,11 +1587,11 @@ public class Base : global::System.IDisposable { return hasDerivedMethod; } - private uint SwigDirectorUIntMethod(uint x) { + private uint SwigDirectorMethodUIntMethod(uint x) { return UIntMethod(x); } - private void SwigDirectorBaseBoolMethod(global::System.IntPtr b, bool flag) { + private void SwigDirectorMethodBaseBoolMethod(global::System.IntPtr b, bool flag) { BaseBoolMethod(new Base(b, false), flag); } @@ -1619,9 +1620,9 @@ It uses a support method, SwigDerivedClassHasMethod(), which simply use BaseBoolMethod, with the list of required parameter types, exists in a subclass. If it does not exist, the delegate is not initialised as there is no need for unmanaged code to call back into managed C# code. However, if there is an overridden method in any subclass, the delegate is required. -It is then initialised to the SwigDirectorBaseBoolMethod which in turn will call BaseBoolMethod if invoked. +It is then initialised to the SwigDirectorMethodBaseBoolMethod which in turn will call BaseBoolMethod if invoked. The delegate is not initialised to the BaseBoolMethod directly as quite often types will need marshalling from the unmanaged type -to the managed type in which case an intermediary method (SwigDirectorBaseBoolMethod) is required for the marshalling. +to the managed type in which case an intermediary method (SwigDirectorMethodBaseBoolMethod) is required for the marshalling. In this case, the C# Base class needs to be created from the unmanaged IntPtr type.

    @@ -1720,7 +1721,7 @@ before SWIG parses the Base class will change all the delegates to internal< -

    20.6.3 Director caveats

    +

    22.6.3 Director caveats

    @@ -1768,11 +1769,11 @@ However, a call from C# to CSharpDefaults.DefaultMethod() will of cours should pass the call on to CSharpDefaults.DefaultMethod(int)using the C++ default value, as shown above.

    -

    20.7 Multiple modules

    +

    22.7 Multiple modules

    -When using multiple modules it is is possible to compile each SWIG generated wrapper +When using multiple modules it is possible to compile each SWIG generated wrapper into a different assembly. However, by default the generated code may not compile if generated classes in one assembly use generated classes in another assembly. @@ -1803,7 +1804,7 @@ the [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrows if you don't want users to easily stumble upon these so called 'internal workings' of the wrappers.

    -

    20.8 C# Typemap examples

    +

    22.8 C# Typemap examples

    This section includes a few examples of typemaps. For more examples, you @@ -1811,7 +1812,7 @@ might look at the files "csharp.swg" and "typemaps.i" in the SWIG library. -

    20.8.1 Memory management when returning references to member variables

    +

    22.8.1 Memory management when returning references to member variables

    @@ -1827,7 +1828,7 @@ Consider the following C++ code:

     struct Wheel {
       int size;
    -  Wheel(int sz) : size(sz) {}
    +  Wheel(int sz = 0) : size(sz) {}
     };
     
     class Bike {
    @@ -1846,12 +1847,12 @@ and the following usage from C# after running the code through SWIG:
     
     
    -      Wheel wheel = new Bike(10).getWheel();
    -      Console.WriteLine("wheel size: " + wheel.size);
    -      // Simulate a garbage collection
    -      global::System.GC.Collect();
    -      global::System.GC.WaitForPendingFinalizers();
    -      global::System.Console.WriteLine("wheel size: " + wheel.size);
    +  Wheel wheel = new Bike(10).getWheel();
    +  Console.WriteLine("wheel size: " + wheel.size);
    +  // Simulate a garbage collection
    +  global::System.GC.Collect();
    +  global::System.GC.WaitForPendingFinalizers();
    +  global::System.Console.WriteLine("wheel size: " + wheel.size);
     
    @@ -1935,7 +1936,7 @@ public class Bike : global::System.IDisposable { Note the addReference call.

    -

    20.8.2 Memory management for objects passed to the C++ layer

    +

    22.8.2 Memory management for objects passed to the C++ layer

    @@ -1980,27 +1981,27 @@ and more or less equivalent usage from C#

    -      Container container = new Container();
    -      Element element = new Element(20);
    -      container.setElement(element);
    +  Container container = new Container();
    +  Element element = new Element(20);
    +  container.setElement(element);
     

    The C++ code will always print out 20, but the value printed out may not be this in the C# equivalent code. -In order to understand why, consider a garbage collection occuring... +In order to understand why, consider a garbage collection occurring...

    -      Container container = new Container();
    -      Element element = new Element(20);
    -      container.setElement(element);
    -      Console.WriteLine("element.value: " + container.getElement().value);
    -      // Simulate a garbage collection
    -      global::System.GC.Collect();
    -      global::System.GC.WaitForPendingFinalizers();
    -      global::System.Console.WriteLine("element.value: " + container.getElement().value);
    +  Container container = new Container();
    +  Element element = new Element(20);
    +  container.setElement(element);
    +  Console.WriteLine("element.value: " + container.getElement().value);
    +  // Simulate a garbage collection
    +  global::System.GC.Collect();
    +  global::System.GC.WaitForPendingFinalizers();
    +  global::System.Console.WriteLine("element.value: " + container.getElement().value);
     
    @@ -2019,42 +2020,55 @@ public class Container : global::System.IDisposable { // Ensure that the GC doesn't collect any Element set from C# // as the underlying C++ class stores a shallow copy private Element elementReference; - private global::System.Runtime.InteropServices.HandleRef getCPtrAndAddReference(Element element) { - elementReference = element; - return Element.getCPtr(element); - } public void setElement(Element e) { - examplePINVOKE.Container_setElement(swigCPtr, getCPtrAndAddReference(e)); + examplePINVOKE.Container_setElement(swigCPtr, Element.getCPtr(e)); + elementReference = e; } }

    -The following typemaps will generate the desired code. -The 'csin' typemap matches the input parameter type for the setElement method. -The 'cscode' typemap simply adds in the specified code into the C# proxy class. +The following typemaps can be used to generate this code:

    -%typemap(csin) Element *e "getCPtrAndAddReference($csinput)"
    -
     %typemap(cscode) Container %{
       // Ensure that the GC doesn't collect any Element set from C#
       // as the underlying C++ class stores a shallow copy
       private Element elementReference;
    -  private global::System.Runtime.InteropServices.HandleRef getCPtrAndAddReference(Element element) {
    -    elementReference = element;
    -    return Element.getCPtr(element);
    -  }
     %}
    +
    +%typemap(csin,
    +         post="      elementReference = $csinput;"
    +         ) Element *e "Element.getCPtr($csinput)"
    +
    +
    + +

    +The 'cscode' typemap simply adds in the specified code into the C# proxy class. +The 'csin' typemap matches the input parameter type and name for the setElement method and +the 'post' typemap attribute allows adding code after the PInvoke call. +The 'post' code is generated into a finally block after the PInvoke call so the resulting code isn't quite +as mentioned earlier, setElement is actually: +

    + +
    +
    +  public void setElement(Element e) {
    +    try {
    +      examplePINVOKE.Container_setElement(swigCPtr, Element.getCPtr(e));
    +    } finally {
    +      elementReference = e;
    +    }
    +  }
     
    -

    20.8.3 Date marshalling using the csin typemap and associated attributes

    +

    22.8.3 Date marshalling using the csin typemap and associated attributes

    @@ -2127,7 +2141,7 @@ The CDate & and const CDate & C# code is generated fro

    where '$csclassname' is translated into the proxy class name, CDate and '$csinput' is translated into the name of the parameter, eg dateIn. -From C#, the intention is then to call into a modifed API with something like: +From C#, the intention is then to call into a modified API with something like:

    @@ -2340,7 +2354,7 @@ public class example {
    -

    20.8.4 A date example demonstrating marshalling of C# properties

    +

    22.8.4 A date example demonstrating marshalling of C# properties

    @@ -2440,7 +2454,7 @@ Some points to note:

  • The 'csin' typemap has 'pre', 'post' and 'cshin' attributes, and these are all ignored in the property set. The code in these attributes must instead be replicated within the 'csvarin' typemap. The line creating the temp$csinput variable is such an example; it is identical to what is in the 'pre' attribute. -

    20.8.5 Date example demonstrating the 'pre' and 'post' typemap attributes for directors

    +

    22.8.5 Date example demonstrating the 'pre' and 'post' typemap attributes for directors

    @@ -2483,7 +2497,7 @@ The generated proxy class code will then contain the following wrapper for calli

     ...
    -  private void SwigDirectorsomeCallback(global::System.IntPtr date) {
    +  private void SwigDirectorMethodsomeCallback(global::System.IntPtr date) {
         System.DateTime tempdate = new System.DateTime();
         try {
           someCallback(out tempdate);
    @@ -2502,7 +2516,7 @@ Pay special attention to the memory management issues, using these attributes.
     

    -

    20.8.6 Turning wrapped classes into partial classes

    +

    22.8.6 Turning proxy classes into partial classes

    @@ -2602,7 +2616,97 @@ demonstrating that the class contains methods calling both unmanaged code - The following example is an alternative approach to adding managed code to the generated proxy class.

    -

    20.8.7 Extending proxy classes with additional C# code

    +

    22.8.7 Turning proxy classes into sealed classes

    + + +

    +The technique in the previous section can be used to make the proxy class a sealed class. +Consider a C++ class NotABaseClass that you don't want to be derived from in C#: +

    + +
    +
    +struct NotABaseClass {
    +  NotABaseClass();
    +  ~NotABaseClass();
    +};
    +
    +
    + +

    +The default C# proxy class method generated with Dispose method is: +

    + +
    +
    +public class NotABaseClass : global::System.IDisposable {
    +  ...
    +  public virtual void Dispose() {
    +    ...
    +  }
    +}
    +
    +
    + +

    +The csclassmodifiers typemap can be used to modify the class modifiers and +the csmethodmodifiers feature can be used on the destructor to modify the proxy's Dispose method: +

    + +
    +
    +%typemap(csclassmodifiers) NotABaseClass "public sealed class"
    +%csmethodmodifiers NotABaseClass::~NotABaseClass "public /*virtual*/";
    +
    +
    + +

    +The relevant generated code is thus: +

    + +
    +
    +public sealed class NotABaseClass : global::System.IDisposable {
    +  ...
    +  public /*virtual*/ void Dispose() {
    +    ...
    +  }
    +}
    +
    +
    + +

    +Any attempt to derive from the NotABaseClass in C# will result in a C# compiler error, for example: +

    + +
    +
    +public class Derived : NotABaseClass {
    +};
    +
    +
    +
    +
    +runme.cs(6,14): error CS0509: `Derived': cannot derive from sealed type `NotABaseClass'
    +
    +
    + +

    +Finally, if you get a warning about use of 'protected' in the generated base class: +

    + +
    +
    +NotABaseClass.cs(14,18): warning CS0628: `NotABaseClass.swigCMemOwn': new protected member declared in sealed class
    +
    +
    + +

    +Either suppress the warning or modify the generated code by copying and tweaking the default +'csbody' typemap code in csharp.swg by modifying swigCMemOwn to not be protected. +

    + +

    22.8.8 Extending proxy classes with additional C# code

    @@ -2641,13 +2745,13 @@ public class ExtendMe : global::System.IDisposable {

    -

    20.8.8 Underlying type for enums

    +

    22.8.9 Underlying type for enums

    C# enums use int as the underlying type for each enum item. If you wish to change the underlying type to something else, then use the csbase typemap. -For example when your C++ code uses a value larget than int, this is necessary as the C# compiler will not compile values which are too large to fit into an int. +For example when your C++ code uses a value larger than int, this is necessary as the C# compiler will not compile values which are too large to fit into an int. Here is an example:

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Chicken.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Chicken.html similarity index 95% rename from winx64/bin/swig-3.0.12/Doc/Manual/Chicken.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Chicken.html index b2f434a8..3a80811b 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Chicken.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Chicken.html @@ -8,7 +8,7 @@ -

    21 SWIG and Chicken

    +

    23 SWIG and Chicken

    -

    21.3 TinyCLOS

    +

    23.3 TinyCLOS

    @@ -333,7 +333,7 @@

    -

    21.4 Linkage

    +

    23.4 Linkage

    @@ -354,7 +354,7 @@

    -

    21.4.1 Static binary or shared library linked at compile time

    +

    23.4.1 Static binary or shared library linked at compile time

    We can easily use csc to build a static binary.

    @@ -395,7 +395,7 @@ in which case the test script does not need to be linked with example.so. The t be run with csi.

    -

    21.4.2 Building chicken extension libraries

    +

    23.4.2 Building chicken extension libraries

    Building a shared library like in the above section only works if the library @@ -453,7 +453,7 @@ distributed and used by anyone, even if SWIG is not installed.

    See the Examples/chicken/egg directory in the SWIG source for an example that builds two eggs, one using the first method and one using the second method.

    -

    21.4.3 Linking multiple SWIG modules with TinyCLOS

    +

    23.4.3 Linking multiple SWIG modules with TinyCLOS

    Linking together multiple modules that share type information using the %import @@ -477,7 +477,7 @@ with (declare (uses ...)). To create an extension library or an egg, just create a module_load.scm file that (declare (uses ...)) all the modules.

    -

    21.5 Typemaps

    +

    23.5 Typemaps

    @@ -486,7 +486,7 @@ all the modules.

    Lib/chicken/chicken.swg.

    -

    21.6 Pointers

    +

    23.6 Pointers

    @@ -519,7 +519,7 @@ all the modules.

    type. flags is either zero or SWIG_POINTER_DISOWN (see below).

    -

    21.6.1 Garbage collection

    +

    23.6.1 Garbage collection

    If the owner flag passed to SWIG_NewPointerObj is 1, NewPointerObj will add a @@ -550,7 +550,7 @@ all the modules.

    must be called manually.

    -

    21.7 Unsupported features and known problems

    +

    23.7 Unsupported features and known problems

    -

    21.7.1 TinyCLOS problems with Chicken version <= 1.92

    +

    23.7.1 TinyCLOS problems with Chicken version <= 1.92

    In Chicken versions equal to or below 1.92, TinyCLOS has a limitation such that generic methods do not properly work on methods diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Contents.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Contents.html similarity index 88% rename from winx64/bin/swig-3.0.12/Doc/Manual/Contents.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Contents.html index f196da53..57aef5b8 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Contents.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Contents.html @@ -46,6 +46,11 @@

  • Standard library changes
  • Some typemap examples
      @@ -483,6 +544,9 @@
    • Usage
  • Typemaps and overloading +
  • More about %apply and %clear
  • Passing data between typemaps
  • C++ "this" pointer @@ -491,7 +555,7 @@ -

    12 Customization Features

    +

    14 Customization Features

    @@ -519,7 +583,7 @@
    -

    13 Contracts

    +

    15 Contracts

    @@ -532,7 +596,7 @@
    -

    14 Variable Length Arguments

    +

    16 Variable Length Arguments

    @@ -550,7 +614,55 @@
    -

    15 Warning Messages

    +

    17 SWIG and Doxygen Translation

    + + + + + +

    18 Warning Messages

    @@ -569,7 +681,8 @@
  • Preprocessor (200-299)
  • C/C++ Parser (300-399)
  • Types and typemaps (400-499) -
  • Code generation (500-599) +
  • Code generation (500-559) +
  • Doxygen comments (560-599)
  • Language module specific (700-899)
  • User defined (900-999) @@ -578,7 +691,7 @@ -

    16 Working with Modules

    +

    19 Working with Modules

    @@ -594,7 +707,7 @@
    -

    17 Using SWIG with ccache - ccache-swig(1) manpage

    +

    20 Using SWIG with ccache - ccache-swig(1) manpage

    @@ -620,91 +733,7 @@
    -

    18 SWIG and Allegro Common Lisp

    - - - - - -

    19 SWIG and Android

    +

    21 SWIG and Android

    @@ -722,7 +751,7 @@
    -

    20 SWIG and C#

    +

    22 SWIG and C#

    @@ -761,7 +790,8 @@
  • Date marshalling using the csin typemap and associated attributes
  • A date example demonstrating marshalling of C# properties
  • Date example demonstrating the 'pre' and 'post' typemap attributes for directors -
  • Turning wrapped classes into partial classes +
  • Turning proxy classes into partial classes +
  • Turning proxy classes into sealed classes
  • Extending proxy classes with additional C# code
  • Underlying type for enums @@ -769,45 +799,7 @@ -

    21 SWIG and Chicken

    - - - - - -

    22 SWIG and D

    +

    23 SWIG and D

    @@ -841,7 +833,7 @@
    -

    23 SWIG and Go

    +

    24 SWIG and Go

    @@ -885,7 +877,7 @@
    -

    24 SWIG and Guile

    +

    25 SWIG and Guile

    @@ -921,7 +913,7 @@
    -

    25 SWIG and Java

    +

    26 SWIG and Java

    @@ -1010,6 +1002,9 @@
  • Director threading issues
  • Director performance tuning
  • Java exceptions from directors +
  • Accessing protected members
  • Common customization features @@ -1072,7 +1067,7 @@ -

    26 SWIG and Javascript

    +

    27 SWIG and Javascript

    @@ -1114,29 +1109,6 @@
    -

    27 SWIG and Common Lisp

    - - - - -

    28 SWIG and Lua

    @@ -1205,108 +1177,7 @@ -

    29 SWIG and Modula-3

    - - - - - -

    30 SWIG and MzScheme/Racket

    - - - - - -

    31 SWIG and Ocaml

    - - - - - -

    32 SWIG and Octave

    +

    29 SWIG and Octave

    @@ -1346,7 +1217,7 @@
    -

    33 SWIG and Perl5

    +

    30 SWIG and Perl5

    @@ -1422,7 +1293,7 @@
    -

    34 SWIG and PHP

    +

    31 SWIG and PHP

    @@ -1463,31 +1334,7 @@
    -

    35 SWIG and Pike

    - - - - - -

    36 SWIG and Python

    +

    32 SWIG and Python

    @@ -1502,7 +1349,8 @@
  • Using your module
  • Compilation of C++ extensions
  • Compiling for 64-bit platforms -
  • Building Python Extensions under Windows +
  • Building Python extensions under Windows +
  • Additional Python commandline options
  • A tour of basic C/C++ wrapping
  • Memory management -
  • Python 2.2 and classic classes
  • Cross language polymorphism
  • Tips and techniques
  • Docstring Features @@ -1614,11 +1467,16 @@
  • Byte string output conversion
  • Python 2 Unicode +
  • Support for Multithreaded Applications + -

    37 SWIG and R

    +

    33 SWIG and R

    @@ -1634,7 +1492,7 @@
    -

    38 SWIG and Ruby

    +

    34 SWIG and Ruby

    @@ -1772,7 +1630,7 @@
    -

    39 SWIG and Scilab

    +

    35 SWIG and Scilab

    @@ -1803,7 +1661,7 @@
  • Pointers
  • Structures @@ -1841,7 +1699,7 @@ -

    40 SWIG and Tcl

    +

    36 SWIG and Tcl

    @@ -1907,7 +1765,74 @@
    -

    41 Extending SWIG to support new languages

    +

    37 SWIG and MzScheme/Racket

    + + + + + +

    38 SWIG and OCaml

    + + + + + +

    39 Extending SWIG to support new languages

    @@ -1965,8 +1890,13 @@
  • Running the test-suite
  • Documentation -
  • Prerequisites for adding a new language module to the SWIG distribution
  • Coding style guidelines +
  • Target language status + +
  • Prerequisites for adding a new language module to the SWIG distribution
  • Debugging Options
  • Guide to parse tree nodes diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Contract.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Contract.html similarity index 95% rename from winx64/bin/swig-3.0.12/Doc/Manual/Contract.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Contract.html index ef1228cf..93fb8c00 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Contract.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Contract.html @@ -7,7 +7,7 @@ -

    13 Contracts

    +

    15 Contracts

      @@ -39,7 +39,7 @@ When one of the rules is violated by a script, a runtime exception is generated rather than having the program continue to execute.

      -

      13.1 The %contract directive

      +

      15.1 The %contract directive

      @@ -95,7 +95,7 @@ RuntimeError: Contract violation: require: (arg1>=0)

    -

    13.2 %contract and classes

    +

    15.2 %contract and classes

    @@ -174,7 +174,7 @@ specified for the derived class all must hold. In the above example, this means that both the arguments to Spam::bar must be positive.

    -

    13.3 Constant aggregation and %aggregate_check

    +

    15.3 Constant aggregation and %aggregate_check

    @@ -263,7 +263,7 @@ Regrettably, there is no automatic way to perform similar checks with enums valu release.

    -

    13.4 Notes

    +

    15.4 Notes

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Customization.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Customization.html similarity index 96% rename from winx64/bin/swig-3.0.12/Doc/Manual/Customization.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Customization.html index 0e5fb286..328bc239 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Customization.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Customization.html @@ -7,7 +7,7 @@ -

    12 Customization Features

    +

    14 Customization Features

    -

    12.1.4 Exception handlers for variables

    +

    14.1.4 Exception handlers for variables

    @@ -305,7 +305,7 @@ The %allowexception feature works like any other feature and so can be -

    12.1.5 Defining different exception handlers

    +

    14.1.5 Defining different exception handlers

    @@ -356,7 +356,7 @@ In this case, the exception handler is only attached to declarations named "allocate". This would include both global and member functions. The names supplied to %exception follow the same rules as for %rename described in the section on -Ambiguity resolution and renaming. +Renaming and ambiguity resolution. For example, if you wanted to define an exception handler for a specific class, you might write this:

    @@ -442,7 +442,7 @@ declarations. However, it never really worked that well and the new %exception directive is much better.

    -

    12.1.6 Special variables for %exception

    +

    14.1.6 Special variables for %exception

    @@ -516,7 +516,7 @@ The special variables are often used in situations where method calls are logged $action } catch (MemoryError) { - croak("Out of memory in $decl"); + croak("Out of memory in $decl"); } } void log(const char *message); @@ -545,7 +545,7 @@ Below shows the expansions for the 1st of the overloaded something wrap -

    12.1.7 Using The SWIG exception library

    +

    14.1.7 Using The SWIG exception library

    @@ -600,7 +600,7 @@ SWIG_NullReferenceError The SWIG_exception() function can also be used in typemaps.

    -

    12.2 Object ownership and %newobject

    +

    14.2 Object ownership and %newobject

    @@ -757,7 +757,7 @@ char *strdup(const char *s); The results might not be what you expect.

    -

    12.3 Features and the %feature directive

    +

    14.3 Features and the %feature directive

    @@ -796,7 +796,7 @@ involving %feature:

    -The name matching rules outlined in the Ambiguity resolution and renaming +The name matching rules outlined in the Renaming and ambiguity resolution section applies to all %feature directives. In fact the %rename directive is just a special form of %feature. The matching rules mean that features are very flexible and can be applied with @@ -839,7 +839,7 @@ The following are all equivalent: The syntax in the first variation will generate the { } delimiters used whereas the other variations will not.

    -

    12.3.1 Feature attributes

    +

    14.3.1 Feature attributes

    @@ -880,7 +880,7 @@ In the following example, MyExceptionClass is the name of the Java clas Further details can be obtained from the Java exception handling section.

    -

    12.3.2 Feature flags

    +

    14.3.2 Feature flags

    @@ -978,7 +978,7 @@ in the swig.swg Library file. The following shows the alternative synta The concept of clearing features is discussed next.

    -

    12.3.3 Clearing features

    +

    14.3.3 Clearing features

    @@ -1071,7 +1071,7 @@ The three macros below show this for the "except" feature: -

    12.3.4 Features and default arguments

    +

    14.3.4 Features and default arguments

    @@ -1146,7 +1146,7 @@ specifying or not specifying default arguments in a feature is not applicable as in SWIG-1.3.23 when the approach to wrapping methods with default arguments was changed.

    -

    12.3.5 Feature example

    +

    14.3.5 Feature example

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/D.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/D.html similarity index 94% rename from winx64/bin/swig-3.0.12/Doc/Manual/D.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/D.html index 45b57e18..d97267a5 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/D.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/D.html @@ -6,7 +6,7 @@ -

    22 SWIG and D

    +

    23 SWIG and D

      @@ -41,7 +41,7 @@ -

      22.1 Introduction

      +

      23.1 Introduction

      From the D Programming Language web site: D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. [...] The D language is statically typed and compiles directly to machine code. As such, it is not very surprising that D is able to directly interface with C libraries. Why would a SWIG module for D be needed then in the first place?

      @@ -53,10 +53,10 @@

      To help addressing these issues, the SWIG C# module has been forked to support D. Is has evolved quite a lot since then, but there are still many similarities, so if you do not find what you are looking for on this page, it might be worth having a look at the chapter on C# (and also on Java, since the C# module was in turn forked from it).

      -

      22.2 Command line invocation

      +

      23.2 Command line invocation

      -

      To activate the D module, pass the -d option to SWIG at the command line. The same standard command line switches as with any other language module are available, plus the following D specific ones:

      +

      To activate the D module, pass the -d option to SWIG at the command line. The same standard command line options as with any other language module are available, plus the following D specific ones:

      -d2
      @@ -66,8 +66,8 @@
      -splitproxy
      -

      By default, SWIG generates two D modules: the proxy module, named like the source module (either specified via the %module directive or via the module command line switch), which contains all the proxy classes, functions, enums, etc., and the intermediary module (named like the proxy module, but suffixed with _im), which contains all the extern(C) function declarations and other private parts only used internally by the proxy module.

      -

      If the split proxy mode is enabled by passing this switch at the command line, all proxy classes and enums are emitted to their own D module instead. The main proxy module only contains free functions and constants in this case.

      +

      By default, SWIG generates two D modules: the proxy module, named like the source module (either specified via the %module directive or via the module command line option), which contains all the proxy classes, functions, enums, etc., and the intermediary module (named like the proxy module, but suffixed with _im), which contains all the extern(C) function declarations and other private parts only used internally by the proxy module.

      +

      If the split proxy mode is enabled by passing this option at the command line, all proxy classes and enums are emitted to their own D module instead. The main proxy module only contains free functions and constants in this case.

      -package <pkg>
      @@ -77,16 +77,16 @@
      -wrapperlibrary <wl>
      -

      The code SWIG generates to dynamically load the C/C++ wrapper layer looks for a library called $module_wrap by default. With this switch, you can override the name of the file the wrapper code loads at runtime (the lib prefix and the suffix for shared libraries are appended automatically, depending on the OS).

      +

      The code SWIG generates to dynamically load the C/C++ wrapper layer looks for a library called $module_wrap by default. With this option, you can override the name of the file the wrapper code loads at runtime (the lib prefix and the suffix for shared libraries are appended automatically, depending on the OS).

      This might especially be useful if you want to invoke SWIG several times on separate modules, but compile the resulting code into a single shared library.

      -

      22.3 Typemaps

      +

      23.3 Typemaps

      -

      22.3.1 C# <-> D name comparison

      +

      23.3.1 C# <-> D name comparison

      If you already know the SWIG C# module, you might find the following name comparison table useful:

      @@ -107,12 +107,12 @@ csimports <-> dimports csbody <-> dbody csfinalize <-> ddestructor - csdestruct <-> ddispose - csdestruct_derived <-> ddispose_derived + csdisposing <-> ddispose + csdisposing_derived <-> ddispose_derived
    -

    22.3.2 ctype, imtype, dtype

    +

    23.3.2 ctype, imtype, dtype

    Mapping of types between the C/C++ library, the C/C++ library wrapper exposing the C functions, the D wrapper module importing these functions and the D proxy code.

    @@ -120,7 +120,7 @@

    The ctype typemap is used to determine the types to use in the C wrapper functions. The types from the imtype typemap are used in the extern(C) declarations of these functions in the intermediary D module. The dtype typemap contains the D types used in the D proxy module/class.

    -

    22.3.3 in, out, directorin, directorout

    +

    23.3.3 in, out, directorin, directorout

    Used for converting between the types for C/C++ and D when generating the code for the wrapper functions (on the C++ side).

    @@ -130,7 +130,7 @@

    The directorin typemap is used to convert parameters to the type used in the D director callback function, its return value is processed by directorout (see below).

    -

    22.3.4 din, dout, ddirectorin, ddirectorout

    +

    23.3.4 din, dout, ddirectorin, ddirectorout

    Typemaps for code generation in D proxy and type wrapper classes.

    @@ -157,13 +157,13 @@ dtype DClass.method(dtype a) -

    22.3.5 typecheck typemaps

    +

    23.3.5 typecheck typemaps

    Because, unlike many scripting languages supported by SWIG, D does not need any dynamic dispatch helper to access an overloaded function, the purpose of these is merely to issue a warning for overloaded C++ functions that cannot be overloaded in D (as more than one C++ type maps to a single D type).

    -

    22.3.6 Code injection typemaps

    +

    23.3.6 Code injection typemaps

    These typemaps are used for generating the skeleton of proxy classes for C++ types.

    @@ -178,7 +178,7 @@ Code can also be injected into the D proxy class using %proxycode.

    -

    22.3.7 Special variable macros

    +

    23.3.7 Special variable macros

    The standard SWIG special variables are available for use within typemaps as described in the Typemaps documentation, for example $1, $input, $result etc.

    @@ -280,7 +280,7 @@ class SomeClass : AnInterface, AnotherInterface { ... } -

    For this to work, AnInterface and AnotherInterface have to be in scope. If SWIG is not in split proxy mode, this is already the case, but it it is, they have to be added to the import list via the dimports typemap. Additionally, the import statement depends on the package SWIG is configured to emit the modules to.

    +

    For this to work, AnInterface and AnotherInterface have to be in scope. If SWIG is not in split proxy mode, this is already the case, but if it is, they have to be added to the import list via the dimports typemap. Additionally, the import statement depends on the package SWIG is configured to emit the modules to.

    The $importtype macro helps you to elegantly solve this problem:

     %typemap(dimports) RemoteMpe %{
    @@ -299,7 +299,7 @@ $importtype(AnotherInterface)
     
     
     
    -

    22.4 D and %feature

    +

    23.4 D and %feature

    The D module defines a number of directives which modify the SWIG features set globally or for a specific declaration:

    @@ -329,7 +329,7 @@ struct A { -

    22.5 Pragmas

    +

    23.5 Pragmas

    There are a few SWIG pragmas specific to the D module, which you can use to influence the D code SWIG generates:

    @@ -368,7 +368,7 @@ struct A { -

    22.6 D Exceptions

    +

    23.6 D Exceptions

    Out of the box, C++ exceptions are fundamentally incompatible to their equivalent in the D world and cannot simply be propagated to a calling D method. There is, however, an easy way to solve this problem: Just catch the exception in the C/C++ wrapper layer, pass the contents to D, and make the wrapper code rethrow the exception in the D world.

    @@ -378,7 +378,7 @@ struct A {

    As this feature is implemented in exactly the same way it is for C#, please see the C# documentation for a more detailed explanation.

    -

    22.7 D Directors

    +

    23.7 D Directors

    When the directors feature is activated, SWIG generates extra code on both the C++ and the D side to enable cross-language polymorphism. Essentially, this means that if you subclass a proxy class in D, C++ code can access any overridden virtual methods just as if you created a derived class in C++.

    @@ -387,16 +387,16 @@ struct A {

    -

    22.8 Other features

    +

    23.8 Other features

    -

    22.8.1 Extended namespace support (nspace)

    +

    23.8.1 Extended namespace support (nspace)

    By default, SWIG flattens all C++ namespaces into a single target language namespace, but as for Java and C#, the nspace feature is supported for D. If it is active, C++ namespaces are mapped to D packages/modules. Note, however, that like for the other languages, free variables and functions are not supported yet; currently, they are all allows written to the main proxy D module.

    -

    22.8.2 Native pointer support

    +

    23.8.2 Native pointer support

    Contrary to many of the scripting languages supported by SWIG, D fully supports C-style pointers. The D module thus includes a custom mechanism to wrap C pointers directly as D pointers where applicable, that is, if the type that is pointed to is represented the same in C and D (on the bit-level), dubbed a primitive type below.

    @@ -408,7 +408,7 @@ struct A {

    To determine if a type should be considered primitive, the cprimitive attribute on its dtype attribute is used. For example, the dtype typemap for float has cprimitive="1", so the code from the nativepointer attribute is taken into account e.g. for float ** or the function pointer float (*)(float *).

    -

    22.8.3 Operator overloading

    +

    23.8.3 Operator overloading

    The D module comes with basic operator overloading support for both D1 and D2. There are, however, a few limitations arising from conceptual differences between C++ and D:

    @@ -420,7 +420,7 @@ struct A {

    There are also some cases where the operators can be translated to D, but the differences in the implementation details are big enough that a rather involved scheme would be required for automatic wrapping them, which has not been implemented yet. This affects, for example, the array subscript operator, [], in combination with assignments - while operator [] in C++ simply returns a reference which is then written to, D resorts to a separate opIndexAssign method -, or implicit casting (which was introduced in D2 via alias this). Despite the lack of automatic support, manually handling these cases should be perfectly possible.

    -

    22.8.4 Running the test-suite

    +

    23.8.4 Running the test-suite

    As with any other language, the SWIG test-suite can be built for D using the *-d-test-suite targets of the top-level Makefile. By default, D1 is targeted, to build it with D2, use the optional D_VERSION variable, e.g. make check-d-test-suite D_VERSION=2.

    @@ -428,14 +428,14 @@ struct A {

    Note: If you want to use GDC on Linux or another platform which requires you to link libdl for dynamically loading the shared library, you might have to add -ldl manually to the d_compile target in Examples/Makefile, because GDC does not currently honor the pragma(lib, ...) statement.

    -

    22.9 D Typemap examples

    +

    23.9 D Typemap examples

    There are no D-specific typemap examples yet. However, with the above name comparison table, you should be able to get an idea what can be done by looking at the corresponding C# section.

    -

    22.10 Work in progress and planned features

    +

    23.10 Work in progress and planned features

    There are a couple of features which are not implemented yet, but would be very useful and might be added in the near future:

    diff --git a/winx64/bin/swigwin-4.0.0/Doc/Manual/Doxygen.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Doxygen.html new file mode 100644 index 00000000..ff025c04 --- /dev/null +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Doxygen.html @@ -0,0 +1,1838 @@ + + + +SWIG and Doxygen Translation + + + +

    17 SWIG and Doxygen Translation

    + + + + + + +

    +This chapter describes SWIG's support for translating Doxygen comments +found in interface and header files into a target language's normal +documentation language. Currently only Javadoc and Pydoc is +supported. +

    + +

    17.1 Doxygen translation overview

    + + +

    +The Doxygen Translation module of SWIG adds an extra layer of +functionality to SWIG, allowing automated translation of Doxygen formatted comments +from input files into a documentation language more suited for the +target language. Currently this module only translates into Javadoc +and Pydoc for the SWIG Java and Python modules. +Other extensions could be added at a later date. +The Doxygen Translation module originally started as +a Google Summer of +Code proposal from Summer 2008. +

    + +

    17.2 Preparations

    + + +

    +To make use of the comment translation system, your documentation +comments must be in properly formatted Doxygen. Doxygen comments can be +present in your main SWIG interface file or any header file that it +imports. You are advised to be validate that your comments compile +properly with Doxygen before you try to translate them. Doxygen +itself is a more comprehensive tool and can provide you better feedback for +correcting any syntax errors that may be present. Please look at +Doxygen's Documenting the +code for the full comment format specifications. However, SWIG's +Doxygen parser will still report many errors and warnings found +in comments (like unterminated strings or missing ending tags). +

    + +

    +Currently, the whole subset of Doxygen comment styles is supported +(See +Documenting the code). Here they are: +

    + +
    +/**
    + * Javadoc style comment, multiline
    + */
    +/*!
    + * QT-style comment, multiline
    + */
    +/**
    + Any of the above, but without intermediate *'s
    + */
    +/// Single-line comment
    +//! Another single-line comment
    +
    + +

    +Also any of the above with '<' added after comment-starting symbol, +like /**<, /*!<, ///<, or //!< will be +treated as a post-comment and will be assigned to the code before the +comment. + +Any number of '*' or '/' within a Doxygen comment is considered to be a +separator and is not included in the final comment, so you may safely use +comments like /*********/ or //////////. +

    + +

    +Please note, as SWIG parses the input file by itself with strict grammar, +there is only a limited support for various cases of comment placement +in the file. +

    +

    +Comments can be placed before C/C++ expressions on separate lines: +

    + +
    +/**
    + * Some comment
    + */
    +void someOtherFunction();
    +/**
    + * Some comment
    + */
    +void someFunction();
    +
    +class Shape {
    +  /*
    +   * Calculate the area in cm^2
    +   */
    +  int getArea();
    +}
    +
    + +

    +After C/C++ expressions at the end of the line: +

    + +
    +int someVariable = 9; ///< This is a var holding magic number 9
    +void doNothing(); ///< This does nothing, nop
    +
    + +

    +and in some special cases, like function parameter comments: +

    + +
    +void someFunction(
    +         int a ///< Some parameter 
    +     );
    +
    + +

    +or enum element comments: +

    + +
    +enum E_NUMBERS
    +{
    +    EN_ZERO, ///< The first enum item, gets zero as it's value
    +    EN_ONE, ///< The second, EN_ONE=1
    +    EN_THREE
    +};
    +
    + +

    +Currently only comments directly before or after the code items +are supported. Doxygen also supports comments containing structural commands, +where the comments for a code item are not put directly before or after the code item. +These structural commands are stripped out by SWIG and are not assigned to anything. +

    + +

    17.2.1 Enabling Doxygen translation

    + + +

    +Doxygen comments translation is disabled by default and needs to be explicitly +enabled using the command line -doxygen option for the languages that +do support it (currently Java and Python). +

    + +

    17.2.2 Doxygen-specific %feature directives

    + + +

    +Translation of Doxygen comments is influenced by the following %feature directives: +

    + +

    17.2.2.1 doxygen:notranslate

    + + +

    +Turns off translation of Doxygen comments to the target language syntax: the +original comment will be copied to the output unchanged. This is useful if you +want to use Doxygen itself to generate documentation for the target language +instead of the corresponding language tool (javadoc, sphinx, +...). +

    + + +

    17.2.2.2 doxygen:alias:<command-name>

    + + +

    +Specify an alias for a Doxygen command with the given name. This can be useful +for custom Doxygen commands which can be defined using ALIASES option +for Doxygen itself but which are unknown to SWIG. "command-name" is the +name of the command in the Doxyfile, e.g. if it contains +

    + +
    +ALIASES = "sideeffect=\par Side Effects:\n"
    +
    + +

    +Then you could also specify the same expansion for SWIG with: +

    + +
    +%feature("doxygen:alias:sideeffect") "\par Side Effects:\n"
    +
    + +

    +Please note that command arguments are not currently supported with this +feature. +

    + +

    +Notice that it is perfectly possible and potentially useful to define the alias +expansion differently depending on the target language, e.g. with +

    + +
    +#ifdef SWIGJAVA
    +%feature("doxygen:alias:not_for_java") "This functionality is not available for Java"
    +#else
    +%feature("doxygen:alias:not_for_java") ""
    +#endif
    +
    + +

    +you could use @not_for_java in the documentation comments of all +functions which can't, for whatever reason, be currently exposed in Java +wrappers of the C++ API. +

    + + +

    17.2.2.3 doxygen:ignore:<command-name>

    + + +

    +This feature makes it possible to just ignore an unknown Doxygen command, instead of +replacing it with the predefined text that doxygen:alias does. +For example, you could use +

    + +
    +%feature("doxygen:ignore:transferfull") Fantastic();
    +/**
    +    A fantastic function.
    +
    +    @transferfull Command ignored, but anything here is still included.
    + */
    +int * Fantastic();
    +
    + +

    +if you use a custom Doxygen transferfull command to indicate that the +return value ownership is transferred to the caller, as this information doesn't +make much sense for the other languages without explicit ownership management. +

    + +

    +Doxygen syntax is rather rich and, in addition to simple commands such as +@transferfull, it is also possible to define commands with arguments. +As explained in Doxygen documentation, +the arguments can have a range of a single word, everything until the end of +line or everything until the end of the next paragraph. Currently, only the "end +of line" case is supported using the range="line" argument of the +feature directive: +

    + +
    +// Ignore occurrences of
    +//
    +//    @compileroptions Some special C++ compiler options.
    +//
    +// in Doxygen comments as C++ options are not interesting for the target language
    +// developers.
    +%feature("doxygen:ignore:compileroptions", range="line") Amazing();
    +
    +/**
    +    An amazing function.
    +
    +    @compileroptions This function must be compiled with /EHa when using MSVC.
    + */
    +void Amazing();
    +
    +
    + +

    +In addition, it is also possible to have custom pairs of begin/end tags, +similarly to the standard Doxygen @code/@endcode, for example. Such +tags can also be ignored using the special value of range starting with +end to indicate that the range is an interval, for example: +

    + +
    +%feature("doxygen:ignore:forcpponly", range="end"); // same as "end:endforcpponly"
    +/**
    +    An incredible function.
    +
    +    @forcpponly
    +    This is C++-specific.
    +    @endforcpponly
    + */
    +void Incredible();
    +
    + +

    +would ignore everything between @forcpponly and @endforcpponly +commands in Doxygen comments. By default, the name of the end command is the +same as of the start one with "end" prefix, following Doxygen conventions, but +this can be overridden by providing the end command name after the colon. +

    +

    +This example shows how custom tags can be used to bracket anything specific to +C++ and prevent it from appearing in the target language documentation. +Conversely, another pair of custom tags could be used to put target language +specific information in the C++ comments. In this case, only the custom tags +themselves should be ignored, but their contents should be parsed as usual and +contents="parse" can be used for this: +

    + +
    +%feature("doxygen:ignore:beginPythonOnly", range="end:endPythonOnly", contents="parse");
    +/**
    +    A splendid function.
    +
    +    @beginPythonOnly
    +    This is specific to @b Python.
    +    @endPythonOnly
    + */
    +void Splendid();
    +
    +
    + +

    +Putting everything together, if these directives are in effect: +

    + +
    +%feature("doxygen:ignore:transferfull");
    +%feature("doxygen:ignore:compileroptions", range="line");
    +%feature("doxygen:ignore:forcpponly", range="end");
    +%feature("doxygen:ignore:beginPythonOnly", range="end:endPythonOnly", contents="parse");
    +
    + +

    +then the following C++ Doxygen comment: +

    + +
    +/**
    +    A contrived example of ignoring too many commands in one comment.
    +
    +    @forcpponly
    +    This is C++-specific.
    +    @endforcpponly
    +
    +    @beginPythonOnly
    +    This is specific to @b Python.
    +    @endPythonOnly
    +
    +    @transferfull Command ignored, but anything here is still included.
    +
    +    @compileroptions This function must be compiled with /EHa when using MSVC.
    + */
    +int * Contrived();
    +
    + +

    +would be translated to this comment in Python: +

    + +
    +def func():
    +    r"""
    +    A contrived example of ignoring too many commands in one comment.
    +
    +    This is specific to **Python**.
    +
    +    Command ignored, but anything here is still included.
    +    """
    +    ...
    +
    + + +

    17.2.2.4 doxygen:nolinktranslate

    + + +

    +Turn off automatic link-objects translation. +This is only applicable to Java at the moment. +

    + + +

    17.2.2.5 doxygen:nostripparams

    + + +

    +Turn off stripping of @param and @tparam +Doxygen commands if the parameter is not found in the function signature. +This is only applicable to Java at the moment. +

    + + +

    17.2.3 Additional command line options

    + + +

    +ALSO TO BE ADDED (Javadoc auto brief?) +

    + +

    17.3 Doxygen to Javadoc

    + + +

    +If translation is enabled, Javadoc formatted comments should be +automatically placed in the correct locations in the resulting module +and proxy files. +

    + +

    17.3.1 Basic example

    + + +

    +Here is an example segment from an included header file +

    +
    +/*! This is describing class Shape
    + \author Bob
    + */
    +
    +class Shape {
    +public:
    +  Shape() {
    +    nshapes++;
    +  }
    +  virtual ~Shape() {
    +    nshapes--;
    +  };
    +  double  x, y; /*!< Important Variables */
    +  void    move(double dx, double dy); /*!< Moves the Shape */
    +  virtual double area(void) = 0; /*!< \return the area */
    +  virtual double perimeter(void) = 0; /*!< \return the perimeter */
    +  static  int nshapes;
    +};
    +
    + +

    +Simply running SWIG should result in the following code being present in Shapes.java +

    + +
    +
    +/**
    + * This is describing class Shape 
    + * @author Bob 
    + * 
    + */
    +
    +public class Shape {
    +
    +...
    +
    +/**
    + * Important Variables 
    + */
    +  public void setX(double value) {
    +    ShapesJNI.Shape_x_set(swigCPtr, this, value);
    +  }
    +
    +/**
    + * Important Variables 
    + */
    +  public double getX() {
    +    return ShapesJNI.Shape_x_get(swigCPtr, this);
    +  }
    +
    +/**
    + * Moves the Shape 
    + */
    +  public void move(double dx, double dy) {
    +    ShapesJNI.Shape_move(swigCPtr, this, dx, dy);
    +  }
    +
    +/**
    + * @return the area 
    + */
    +  public double area() {
    +    return ShapesJNI.Shape_area(swigCPtr, this);
    +  }
    +
    +/**
    + * @return the perimeter 
    + */
    +  public double perimeter() {
    +    return ShapesJNI.Shape_perimeter(swigCPtr, this);
    +  }
    +}
    +
    +
    + +

    +The code Java-wise should be identical to what would have been +generated without the doxygen functionality enabled. When the Doxygen Translator +module encounters a comment that contains nothing useful or a doxygen comment that it cannot +parse, it will not affect the functionality of the SWIG generated +code. +

    + +

    +The Javadoc translator will handle most of the tags conversions (see the +table below). It will also automatically translate link-objects +params, in \see and \link...\endlink commands. For example, +'someFunction(std::string)' will be converted to +'someFunction(String)'. If +you don't want such behaviour, you could turn this off by using the +'doxygen:nolinktranslate' feature. Also all '\param' and '\tparam' +commands are stripped out, if the specified parameter is not present in +the function. Use 'doxygen:nostripparams' to avoid. +

    + +

    +Javadoc translator features summary +(see %feature +directives): +

    + +

    17.3.2 Javadoc tags

    + + +

    +Here is the list of all Doxygen tags and the description of how they are translated to Javadoc +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Doxygen tags
    \awrapped with <i> html tag
    \argwrapped with <li> html tag
    \authortranslated to @author
    \authorstranslated to @author
    \bwrapped with <b> html tag
    \cwrapped with <code> html tag
    \citewrapped with <i> html tag
    \codetranslated to {@code ...}
    \condtranslated to 'Conditional comment: <condition>'
    \copyrightreplaced with 'Copyright:'
    \deprecatedtranslated to @deprecated
    \ewrapped with <i> html tag
    \elsereplaced with '}Else:{'
    \elseifreplaced with '}Else if: <condition>{'
    \emwrapped with <i> html tag
    \endcodesee note for \code
    \endcondreplaced with 'End of conditional comment.'
    \endifreplaced with '}'
    \endlinksee note for \link
    \endverbatimsee note for \verbatim
    \exceptiontranslated to @exception
    \f$, \f[, \f], \f{, \f}LateX formulas are left unchanged
    \ifreplaced with 'If: <condition> {'
    \ifnotreplaced with 'If not: <condition> {'
    \imagetranslated to <img/> html tag only if target=HTML
    \liwrapped with <li> html tag
    \linktranslated to {@link ...}
    \nreplaced with new line char
    \notereplaced with 'Note:'
    \overloadprints 'This is an overloaded ...' according to Doxygen docs
    \pwrapped with <code> html tag
    \parreplaced with <p alt='title'>...</p>
    \paramtranslated to @param
    \remarkreplaced with 'Remarks:'
    \remarksreplaced with 'Remarks:'
    \resulttranslated to @return
    \returntranslated to @return
    \returnstranslated to @return
    \satranslated to @see
    \seetranslated to @see
    \sincetranslated to @since
    \throwtranslated to @throws
    \throwstranslated to @throws
    \todoreplaced with 'TODO:'
    \tparamtranslated to @param
    \verbatimtranslated to {@literal ...}
    \versiontranslated to @version
    \warningtranslated to 'Warning:'
    \$prints $ char
    \@prints @ char
    \\prints \ char
    \&prints & char
    \~prints ~ char
    \<prints < char
    \>prints > char
    \#prints # char
    \%prints % char
    \"prints " char
    \.prints . char
    \::prints ::
    +
    + +

    17.3.3 Unsupported tags

    + + +

    +Doxygen has a wealth of tags such as @latexonly that have no +equivalent in Javadoc (all supported tags are listed in +Javadoc documentation). +As a result several tags have no +translation or particular use, such as some linking and section tags. +These are suppressed with their content just printed out (if the tag has any +sense, typically text content). +Here is the list of these tags: +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Unsupported Doxygen tags
    \addindex\addtogroup\anchor\attention
    \brief\bug\callgraph\callergraph
    \class\copybrief\copydetails\copydoc
    \date\def\defgroup\details
    \dir\dontinclude\dot\dotfile
    \enddot\endhtmlonly\endinternal\endlatexonly
    \endmanonly\endmsc\endrtfonly\endxmlonly
    \enum\example\extends
    \file\fn\headerfile\hideinitializer
    \htmlinclude\htmlonly\implements\include
    \includelineno\ingroup\internal\invariant
    \interface\latexonly\line\mainpage
    \manonly\memberof\msc\mscfile
    \name\namespace\nosubgrouping\package
    \page\paragraph\post\pre
    \private\privatesection\property\protected
    \protectedsection\protocol\public\publicsection
    \ref\related\relates\relatedalso
    \relatesalso\retval\rtfonly\section
    \short\showinitializer\skip\skipline
    \snippet\struct\subpage\subsection
    \subsubsection\tableofcontents\test\typedef
    \union\until\var\verbinclude
    \weakgroup\xmlonly\xrefitem\category
    +
    + +

    + +If one of the following Doxygen tags appears as the first tag in a +comment, the whole comment block is ignored: + + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Ignored Doxygen tags
    \addtogroup\callgraph\callergraph\category
    \class\def\defgroup\dir
    \enum\example\file\fn
    \headerfile\hideinitializer\interface\internal
    \mainpage\name\namespace\nosubgrouping
    \overload\package\page\property
    \protocol\relates\relatesalso\showinitializer
    \struct\name\namespace\nosubgrouping
    \typedef\union\var\weakgroup
    +
    + + + +

    17.3.4 Further details

    + + +

    +TO BE ADDED. +

    + +

    17.4 Doxygen to Pydoc

    + + +

    +If translation is enabled, Pydoc formatted comments should be +automatically placed in the correct locations in the resulting module +and proxy files. The problem is that Pydoc has no tag mechanism like +Doxygen or Javadoc, so most of Doxygen commands are translated by merely +copying the appropriate command text. +

    + +

    17.4.1 Basic example

    + + +

    +Here is an example segment from an included header file +

    +
    +/*! This is describing class Shape
    + \author Bob
    + */
    +
    +class Shape {
    +public:
    +  Shape() {
    +    nshapes++;
    +  }
    +  virtual ~Shape() {
    +    nshapes--;
    +  };
    +  double  x, y; /*!< Important Variables */
    +  void    move(double dx, double dy); /*!< Moves the Shape */
    +  virtual double area(void) = 0; /*!< \return the area */
    +  virtual double perimeter(void) = 0; /*!< \return the perimeter */
    +  static  int nshapes;
    +};
    +
    + +

    +Simply running SWIG should result in the following code being present in Shapes.py +

    + +
    +
    +...
    +
    +class Shape(_object):
    +    """
    +    This is describing class Shape 
    +    Authors:
    +    Bob 
    +
    +    """
    +    
    +    ...
    +    
    +    def move(self, *args):
    +        """
    +        Moves the Shape 
    +        """
    +        return _Shapes.Shape_move(self, *args)
    +
    +    def area(self):
    +        """
    +        Return:
    +        the area 
    +        """
    +        return _Shapes.Shape_area(self)
    +
    +    def perimeter(self):
    +        """
    +        Return:
    +        the perimeter 
    +        """
    +        return _Shapes.Shape_perimeter(self)
    +
    + +

    +If any parameters of a function or a method are documented in the Doxygen comment, +their description is copied into the generated output using +Sphinx documentation conventions. For example +

    +
    +/**
    +    Set a breakpoint at the given location.
    +
    +    @param filename The full path to the file.
    +    @param line_number The line number in the file.
    + */
    +bool SetBreakpoint(const char* filename, int line_number);
    +
    + +

    +would be translated to +

    + +
    +def SetBreakpoint(filename, line_number):
    +    r"""
    +    Set a breakpoint at the given location.
    +
    +    :type filename: string
    +    :param filename: The full path to the file.
    +    :type line_number: int
    +    :param line_number: The line number in the file.
    +    """
    +
    +

    +The types used for the parameter documentation come from the "doctype" typemap which +is defined for all the primitive types and a few others (e.g. std::string and +shared_ptr<T>) but for non-primitive types is taken to be just the C++ +name of the type with namespace scope delimiters (::) replaced with a dot. To +change this, you can define your own typemaps for the custom types, e.g: +

    +
    +%typemap(doctype) MyDate "datetime.date";
    +
    + +

    +Currently Doxygen comments assigned to global variables and static member variables +are not present in generated code, so they have no comment translated for them. +

    + +

    + Whitespace and tables + Whitespace is preserved when translating comments, so it makes + sense to have Doxygen comments formatted in a readable way. This + includes tables, where tags <th>, <td> and </tr>are translated + to '|'. The line after line with <th> tags contains dashes. + If we take care about whitespace, comments in Python are much more + readable. Example: + +

    +/**
    + * <table border = '1'>
    + * <caption>Animals</caption>
    + * <tr><th> Column 1 </th><th> Column 2 </th></tr>
    + * <tr><td> cow      </td><td> dog      </td></tr>
    + * <tr><td> cat      </td><td> mouse    </td></tr>
    + * <tr><td> horse    </td><td> parrot   </td></tr>
    + * </table>
    + */
    +
    +

    +translates to Python as: +

    +
    +  Animals
    +  | Column 1 | Column 2 |
    +  -----------------------
    +  | cow      | dog      |
    +  | cat      | mouse    |
    +  | horse    | parrot   |
    +
    + +

    + Overloaded functions +Since all the overloaded functions in c++ are wrapped into one Python +function, Pydoc translator will combine every comment of every +overloaded function and put it into the comment for the one wrapper function. +

    +

    +If you intend to use resulting generated Python file with the Doxygen docs +generator, rather than Pydoc, you may want to turn off translation +completely (doxygen:notranslate feature). Then SWIG will just copy +the comments to the proxy file and reformat them if needed, but all +the comment content will be left as is. As Doxygen doesn't support +special commands in Python comments +(see Doxygen +docs), you may want to use some tool like doxypy +(doxypy) +to do the work. +

    + +

    17.4.2 Pydoc translator

    + + +

    +Here is the list of all Doxygen tags and the description of how they are translated to Pydoc +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Doxygen tags
    \awrapped with '_'
    \argprepended with ' --'
    \authorprints 'Author:'
    \authorsprints 'Author:'
    \bwrapped with '__'
    \citewrapped with single quotes
    \condtranslated to 'Conditional comment: <condition>'
    \copyrightprints 'Copyright:'
    \deprecatedprints 'Deprecated:'
    \ewrapped with '_'
    \elsereplaced with '}Else:{'
    \elseifreplaced with '}Else if: <condition>{'
    \emwrapped with '_'
    \endcondreplaced with 'End of conditional comment.'
    \endifreplaced with '}'
    \exceptionreplaced with 'Throws:'
    \ifreplaced with 'If: <condition> {'
    \ifnotreplaced with 'If not: <condition> {'
    \liprepended with ' --'
    \nreplaced with new line char
    \notereplaced with 'Note:'
    \overloadprints 'This is an overloaded ...' according to Doxygen docs
    \parreplaced with 'Title: ...'
    \paramtranslated to 'Arguments:\n param(type) --description'
    \remarkreplaced with 'Remarks:'
    \remarksreplaced with 'Remarks:'
    \resultreplaced with 'Result:'
    \returnreplaced with 'Result:'
    \returnsreplaced with 'Result:'
    \sareplaced with 'See also:'
    \seereplaced with 'See also:'
    \sincereplaced with 'Since:'
    \throwreplaced with 'Throws:'
    \throwsreplaced wih 'Throws:'
    \todoreplaced with 'TODO:'
    \tparamtranslated to 'Arguments:\n param(type) --description'
    \versionreplaced with 'Version:'
    \warningtranslated to 'Warning:'
    \$prints $ char
    \@prints @ char
    \\prints \ char
    \&prints & char
    \~prints ~ char
    \<prints < char
    \>prints > char
    \#prints # char
    \%prints % char
    \"prints " char
    \.prints . character
    \::prints ::
    +
    + +

    17.4.3 Unsupported tags

    + + +

    +Doxygen has a wealth of tags such as @latexonly that have no +equivalent in Pydoc. As a result several tags that have no +translation (or particular use, such as some linking and section tags) +are suppressed with their content just printed out (if it has any +sense, typically text content). +Here is the list of these tags: +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Unsupported Doxygen tags
    \addindex\addtogroup\anchor\attention
    \brief\bug\callgraph\callergraph
    \class\copybrief\copydetails\copydoc
    \date\def\defgroup\details
    \dir\dontinclude\dot\dotfile
    \code\endcode\endverbatim\endlink
    \enddot\endhtmlonly\endinternal\endlatexonly
    \endmanonly\endmsc\endrtfonly\endxmlonly
    \enum\example\extends\f$
    \f[\f]\f{\f}
    \file\fn\headerfile\hideinitializer
    \htmlinclude\htmlonly\implements\include
    \image\link\verbatim\p
    \includelineno\ingroup\internal\invariant
    \interface\latexonly\line\mainpage
    \manonly\memberof\msc\mscfile
    \name\namespace\nosubgrouping\package
    \page\paragraph\post\pre
    \private\privatesection\property\protected
    \protectedsection\protocol\public\publicsection
    \ref\related\relates\relatedalso
    \relatesalso\retval\rtfonly\section
    \short\showinitializer\skip\skipline
    \snippet\struct\subpage\subsection
    \subsubsection\tableofcontents\test\typedef
    \union\until\var\verbinclude
    \weakgroup\xmlonly\xrefitem\category
    \c
    +
    + +

    17.4.4 Further details

    + + +

    +TO BE ADDED. +

    + +

    17.5 Troubleshooting

    + + +

    +When running SWIG with command line option -doxygen, it may happen +that SWIG will fail to parse the code, which is valid C++ code and +is parsed without problems without the option. The problem is, +that Doxygen comments are not tokens (the C/C++ compiler actually never +sees them) and that they can appear anywhere in the code. That's why it is +practically impossible to handle all corner cases with the parser. +However, these problems can usually be avoided by minor changes in the +code or comment. Known problems and solutions are shown in this section. +

    + + +

    +Recommended approach is to first run SWIG without command line +option -doxygen. When it successfully processes the code, +include the option and fix problems with Doxygen comments. +

    + + +

    17.5.1 Problem with conditional compilation

    + + +

    + Inserting a conditional compilation preprocessor directive between a + Doxygen comment and a commented item may break parsing: +

    + + +
    +class A {
    +  /**
    +   * Some func.
    +   */
    +  #ifndef SWIG
    +  void myfunc()
    +  {
    +  }
    +  #endif
    +};
    +
    + +

    + The solution is to move the directive above the comment: +

    + +
    +class A {
    +  #ifndef SWIG
    +  /**
    +   * Some func.
    +   */
    +  void myfunc()
    +  {
    +  }
    +  #endif
    +};
    +
    + + +

    17.6 Developer information

    + + +

    +This section contains information for developers enhancing the Doxygen translator. +

    + +

    17.6.1 Doxygen translator design

    + + +

    +If this functionality is turned on, SWIG places all comments found +into the SWIG parse tree. Nodes contain an additional attribute +called doxygen when a comment is present. Individual nodes +containing Doxygen with Structural Indicators, such as @file, as their +first command, are also present in the parse tree. These individual +"blobs" of Doxygen such as : +

    +
    +/*! This is describing function Foo
    + \param x some random variable
    + \author Bob
    + \return Foo
    + */
    +
    + +

    +are passed on individually to the Doxygen Translator module. This +module builds its own private parse tree and hands it to a separate +class for translation into the target documentation language. For +example, JavaDocConverter is the Javadoc module class. +

    + +

    17.6.2 Debugging the Doxygen parser and translator

    + + +

    +There are two handy command line options, that enable lots of +detailed debug information printing. +

    + +
    +  -debug-doxygen-parser     - Display Doxygen parser module debugging information
    +  -debug-doxygen-translator - Display Doxygen translator module debugging information
    +
    + +

    17.6.3 Tests

    + + +

    +Doxygen tests have been added to the regular SWIG test-suite. +There are a number of tests beginning doxygen_ in the Examples/test-suite sub-directory. +

    + +

    +Like any other SWIG test case, the tests are included in Examples/test-suite/common.mk and can be tested with +commands like make check-test-suite or make check-python-test-suite. +To run them individually, type +make -s <testname>.cpptest in the language-specific sub-directory in +Examples/test-suite directory. For example: +

    + +
    +  Examples/test-suite/java $ make -s doxygen_parsing.cpptest
    +
    + +

    +If the test fails, both expected and translated comments are printed to +std out, but also written to files expected.txt +and got.txt. Since it is often difficult to find a single +character difference in several lines of text, we can use some diff +tool, for example: +

    + +
    +  Examples/test-suite/java $ kdiff3 expected.txt got.txt
    +
    + + +

    +Runtime tests in Java are implemented using Javadoc doclets. To make that work, you +should have tools.jar from the JDK in your classpath. Or you should have JAVA_HOME +environment variable defined and pointing to the JDK location. +

    +

    +The Java's comment parsing code (the testing part) is located in commentParser.java. +It checks the generated code. It is possible +to run this file as a stand-alone program, with java commentParser <some java package>, +and it will print the list of comments found in the specified directory (in the format it has used +in the runtime tests). So, when you want to create a new Doxygen test case, +just copy an existing one and replace the actual comment content (section of entries in +form 'wantedComments.put(...)' with the output of the above command. +

    +

    +Runtime tests in Python are just plain string comparisons of the __doc__ +properties. +

    + +

    17.7 Extending to other languages

    + + +

    +In general, an extension to another language requires a fairly deep understanding of the target language module, such as Modules/python.cxx for Python. +Searching for "doxygen" in the java.cxx module can give you a good idea of the process for placing documentation comments into the correct areas. +The basic gist is that anywhere a comment may reside on a node, there needs to be a catch for it in front of where that function, class, or other object is written out to a target language file. +The other half of extension is building a target documentation language comment generator that handles one blob at a time. +However, this is relatively simple and nowhere near as complex as the wrapper generating modules in SWIG. +See Source/Doxygen/javadoc.cxx for a good example. +The target language module passes the Doxygen Translator the blob to translate, and receives back the translated text. +

    +

    + What is given to the Doxygen Translator +

    +
    +/*! This is describing function Foo
    + \param x some random variable
    + \author Bob
    + \return Foo
    + */
    +
    +

    + What is received back by java.cxx +

    +
    +/** This is describing function Foo
    + *
    + * @param x some random variable
    + * @author Bob
    + * @return Foo
    + */
    +
    +

    Development of the comment translator itself is simplified by the fact that the Doxygen Translator module can easily include a main function and thus be developed, compiled, and tested independently of SWIG. +

    + + + diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Extending.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Extending.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Extending.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Extending.html index 80fe77d4..b0132838 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Extending.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Extending.html @@ -7,7 +7,7 @@ -

    41 Extending SWIG to support new languages

    +

    39 Extending SWIG to support new languages

  • Documentation -
  • Prerequisites for adding a new language module to the SWIG distribution
  • Coding style guidelines +
  • Target language status + +
  • Prerequisites for adding a new language module to the SWIG distribution
  • Debugging Options
  • Guide to parse tree nodes @@ -76,7 +81,7 @@ -

    41.1 Introduction

    +

    39.1 Introduction

    @@ -92,7 +97,7 @@ Also, this chapter is not meant to be a hand-holding tutorial. As a starting po you should probably look at one of SWIG's existing modules.

    -

    41.2 Prerequisites

    +

    39.2 Prerequisites

    @@ -122,7 +127,7 @@ obvious, but almost all SWIG directives as well as the low-level generation of wrapper code are driven by C++ datatypes.

    -

    41.3 The Big Picture

    +

    39.3 The Big Picture

    @@ -159,7 +164,7 @@ role in making the system work. For example, both typemaps and declaration anno based on pattern matching and interact heavily with the underlying type system.

    -

    41.4 Execution Model

    +

    39.4 Execution Model

    @@ -204,7 +209,7 @@ latter stage of compilation. The next few sections briefly describe some of these stages.

    -

    41.4.1 Preprocessing

    +

    39.4.1 Preprocessing

    @@ -278,14 +283,14 @@ or perl5.swg.

    -As a debugging aide, the text that SWIG feeds to its C++ parser can be +As a debugging aid, the text that SWIG feeds to its C++ parser can be obtained by running swig -E interface.i. This output probably isn't too useful in general, but it will show how macros have been expanded as well as everything else that goes into the low-level construction of the wrapper code.

    -

    41.4.2 Parsing

    +

    39.4.2 Parsing

    @@ -386,7 +391,7 @@ returning a foo and taking types a and b as arguments).

    -

    41.4.3 Parse Trees

    +

    39.4.3 Parse Trees

    @@ -641,7 +646,7 @@ $ swig -c++ -python -debug-module 4 example.i

  • -

    41.4.4 Attribute namespaces

    +

    39.4.4 Attribute namespaces

    @@ -660,7 +665,7 @@ that matches the name of the target language. For example, python:foo perl:foo.

    -

    41.4.5 Symbol Tables

    +

    39.4.5 Symbol Tables

    @@ -729,7 +734,7 @@ For instance, the following example uses %rename in reverse to generate

     %rename(foo) foo_i(int);
    -%rename(foo) foo_d(double;
    +%rename(foo) foo_d(double);
     
     void foo_i(int);
     void foo_d(double);
    @@ -751,7 +756,7 @@ example.i:5. Previous declaration is foo_i(int )
     
    -

    41.4.6 The %feature directive

    +

    39.4.6 The %feature directive

    @@ -807,7 +812,7 @@ For example, the exception code above is simply stored without any modifications.

    -

    41.4.7 Code Generation

    +

    39.4.7 Code Generation

    @@ -929,7 +934,7 @@ public : The role of these functions is described shortly.

    -

    41.4.8 SWIG and XML

    +

    39.4.8 SWIG and XML

    @@ -942,7 +947,7 @@ internal data structures, it may be useful to keep XML in the back of your mind as a model.

    -

    41.5 Primitive Data Structures

    +

    39.5 Primitive Data Structures

    @@ -988,7 +993,7 @@ typedef Hash Typetab; -

    41.5.1 Strings

    +

    39.5.1 Strings

    @@ -1129,7 +1134,7 @@ Returns the number of replacements made (if any). -

    41.5.2 Hashes

    +

    39.5.2 Hashes

    @@ -1206,7 +1211,7 @@ Returns the list of hash table keys. -

    41.5.3 Lists

    +

    39.5.3 Lists

    @@ -1295,7 +1300,7 @@ If t is not a standard object, it is assumed to be a char * and is used to create a String object. -

    41.5.4 Common operations

    +

    39.5.4 Common operations

    The following operations are applicable to all datatypes. @@ -1350,7 +1355,7 @@ objects and report errors. Gets the line number associated with x. -

    41.5.5 Iterating over Lists and Hashes

    +

    39.5.5 Iterating over Lists and Hashes

    To iterate over the elements of a list or a hash table, the following functions are used: @@ -1395,7 +1400,7 @@ for (j = First(j); j.item; j= Next(j)) { -

    41.5.6 I/O

    +

    39.5.6 I/O

    Special I/O functions are used for all internal I/O. These operations @@ -1529,7 +1534,7 @@ Printf(f, "%s\n", s); Similarly, the preprocessor and parser all operate on string-files.

    -

    41.6 Navigating and manipulating parse trees

    +

    39.6 Navigating and manipulating parse trees

    Parse trees are built as collections of hash tables. Each node is a hash table in which @@ -1576,7 +1581,7 @@ return the node for the first class member.
    Returns the last child node. You might use this if you wanted to append a new -node to the of a class. +node to the children of a class.

    @@ -1663,7 +1668,7 @@ Deletes a node from the parse tree. Deletion reconnects siblings and properly u the parent so that sibling nodes are unaffected. -

    41.7 Working with attributes

    +

    39.7 Working with attributes

    @@ -1780,7 +1785,7 @@ the attribute is optional. Swig_restore() must always be called after function. -

    41.8 Type system

    +

    39.8 Type system

    @@ -1789,7 +1794,7 @@ pointers, references, and pointers to members. A detailed discussion of type theory is impossible here. However, let's cover the highlights.

    -

    41.8.1 String encoding of types

    +

    39.8.1 String encoding of types

    @@ -1890,7 +1895,7 @@ make the final type, the two parts are just joined together using string concatenation.

    -

    41.8.2 Type construction

    +

    39.8.2 Type construction

    @@ -2059,7 +2064,7 @@ Returns the prefix of a type. For example, if ty is ty is unmodified. -

    41.8.3 Type tests

    +

    39.8.3 Type tests

    @@ -2146,7 +2151,7 @@ Checks if ty is a varargs type. Checks if ty is a templatized type. -

    41.8.4 Typedef and inheritance

    +

    39.8.4 Typedef and inheritance

    @@ -2248,7 +2253,7 @@ Fully reduces ty according to typedef rules. Resulting datatype will consist only of primitive typenames. -

    41.8.5 Lvalues

    +

    39.8.5 Lvalues

    @@ -2285,7 +2290,7 @@ Literal y; // type = 'Literal', ltype='p.char' -

    41.8.6 Output functions

    +

    39.8.6 Output functions

    @@ -2347,7 +2352,7 @@ SWIG, but is most commonly associated with type-descriptor objects that appear in wrappers (e.g., SWIGTYPE_p_double). -

    41.9 Parameters

    +

    39.9 Parameters

    @@ -2446,7 +2451,7 @@ included. Used to emit prototypes. Returns the number of required (non-optional) arguments in p. -

    41.10 Writing a Language Module

    +

    39.10 Writing a Language Module

    @@ -2461,7 +2466,7 @@ describes the creation of a minimal Python module. You should be able to extra this to other languages.

    -

    41.10.1 Execution model

    +

    39.10.1 Execution model

    @@ -2471,7 +2476,7 @@ the parsing of command line options, all aspects of code generation are controll different methods of the Language that must be defined by your module.

    -

    41.10.2 Starting out

    +

    39.10.2 Starting out

    @@ -2579,7 +2584,7 @@ that activates your module. For example, swig -python foo.i. The messages from your new module should appear.

    -

    41.10.3 Command line options

    +

    39.10.3 Command line options

    @@ -2592,36 +2597,36 @@ command line options, simply use code similar to this:

     void Language::main(int argc, char *argv[]) {
       for (int i = 1; i < argc; i++) {
    -      if (argv[i]) {
    -          if (strcmp(argv[i], "-interface") == 0) {
    -            if (argv[i+1]) {
    -              interface = NewString(argv[i+1]);
    -              Swig_mark_arg(i);
    -              Swig_mark_arg(i+1);
    -              i++;
    -            } else {
    -              Swig_arg_error();
    -            }
    -          } else if (strcmp(argv[i], "-globals") == 0) {
    -            if (argv[i+1]) {
    -              global_name = NewString(argv[i+1]);
    -              Swig_mark_arg(i);
    -              Swig_mark_arg(i+1);
    -              i++;
    -            } else {
    -              Swig_arg_error();
    -            }
    -          } else if ((strcmp(argv[i], "-proxy") == 0)) {
    -            proxy_flag = 1;
    -            Swig_mark_arg(i);
    -          } else if (strcmp(argv[i], "-keyword") == 0) {
    -            use_kw = 1;
    -            Swig_mark_arg(i);
    -          } else if (strcmp(argv[i], "-help") == 0) {
    -            fputs(usage, stderr);
    -          }
    -          ...
    +    if (argv[i]) {
    +      if (strcmp(argv[i], "-interface") == 0) {
    +        if (argv[i+1]) {
    +          interface = NewString(argv[i+1]);
    +          Swig_mark_arg(i);
    +          Swig_mark_arg(i+1);
    +          i++;
    +        } else {
    +          Swig_arg_error();
    +        }
    +      } else if (strcmp(argv[i], "-globals") == 0) {
    +        if (argv[i+1]) {
    +          global_name = NewString(argv[i+1]);
    +          Swig_mark_arg(i);
    +          Swig_mark_arg(i+1);
    +          i++;
    +        } else {
    +          Swig_arg_error();
    +        }
    +      } else if ((strcmp(argv[i], "-proxy") == 0)) {
    +        proxy_flag = 1;
    +        Swig_mark_arg(i);
    +      } else if (strcmp(argv[i], "-keyword") == 0) {
    +        use_kw = 1;
    +        Swig_mark_arg(i);
    +      } else if (strcmp(argv[i], "-help") == 0) {
    +        fputs(usage, stderr);
           }
    +      ...
    +    }
       }
     }
     
    @@ -2638,7 +2643,7 @@ to mark the option as valid. If you forget to do this, SWIG will terminate wit unrecognized command line option error.

    -

    41.10.4 Configuration and preprocessing

    +

    39.10.4 Configuration and preprocessing

    @@ -2687,7 +2692,7 @@ an implementation file python.cxx and a configuration file python.swg.

    -

    41.10.5 Entry point to code generation

    +

    39.10.5 Entry point to code generation

    @@ -2745,7 +2750,7 @@ int Python::top(Node *n) { -

    41.10.6 Module I/O and wrapper skeleton

    +

    39.10.6 Module I/O and wrapper skeleton

    @@ -2893,7 +2898,7 @@ functionWrapper : void Shape_y_set(Shape *self, double y) -

    41.10.7 Low-level code generators

    +

    39.10.7 Low-level code generators

    @@ -3047,7 +3052,7 @@ but without the typemaps, there is still work to do.

    -

    41.10.8 Configuration files

    +

    39.10.8 Configuration files

    @@ -3164,7 +3169,7 @@ these kinds of problems.

    Examples/Makefile.in -
    Nothing special here; see comments at top the of this file +
    Nothing special here; see comments at the top of this file and look to the existing languages for examples.
    Examples/qux99/check.list @@ -3191,7 +3196,7 @@ politely displays the ignoring language message. -

    41.10.9 Runtime support

    +

    39.10.9 Runtime support

    @@ -3200,7 +3205,7 @@ Discuss the kinds of functions typically needed for SWIG runtime support (e.g. the SWIG files that implement those functions.

    -

    41.10.10 Standard library files

    +

    39.10.10 Standard library files

    @@ -3219,7 +3224,7 @@ The following are the minimum that are usually supported: Please copy these and modify for any new language.

    -

    41.10.11 User examples

    +

    39.10.11 User examples

    @@ -3248,7 +3253,7 @@ during this process, see the section on .

    -

    41.10.12 Test driven development and the test-suite

    +

    39.10.12 Test driven development and the test-suite

    @@ -3307,7 +3312,7 @@ It is therefore essential that the runtime tests are written in a manner that di but error/exception out with an error message on stderr on failure.

    -

    41.10.12.1 Running the test-suite

    +

    39.10.12.1 Running the test-suite

    @@ -3499,7 +3504,7 @@ It can be run in the same way as the other language test-suites, replacing [lang The test cases used and the way it works is described in Examples/test-suite/errors/Makefile.in.

    -

    41.10.13 Documentation

    +

    39.10.13 Documentation

    @@ -3531,64 +3536,7 @@ Some topics that you'll want to be sure to address include: if available. -

    41.10.14 Prerequisites for adding a new language module to the SWIG distribution

    - - -

    -If you wish for a new language module to be distributed with SWIG, -which we encourage for all popular languages, there are a few requirements. -While we appreciate that getting all aspects of a new language working -won't happen at the outset, there are a set of minimum requirements before -a module can be committed into the official Github repository for distribution with future -versions of SWIG. The following are really a summary of this whole section with -details being outlined earlier on. -

    - -
      -
    1. - Demonstrate basic C code working by porting the "simple" example including - a runtime test, see for example Examples/python/simple. -
    2. -
    3. - Demonstrate basic C++ code working by porting the "class" example including - a runtime test, see for example Examples/python/class. -
    4. -
    5. - Modify configure.ac, Makefile.in and Examples/Makefile.in to run - these examples. Please make sure that if the new language is not - installed properly on a box, make -k check should still work by - skipping the tests and examples for the new language module. -
    6. -
    7. - Get the test-suite running for the new language (make check-[lang]-test-suite). - While the test-suite tests many corner cases, - we'd expect the majority of it to work by compiling the generated code - correctly as most of the corner cases are covered in the SWIG core. Get - at least one C and one C++ runtime test running in the test-suite. -
    8. -
    9. - Provide a chapter in the html documentation on the basics of using - the language module. -
    10. -
    11. - Ensure your source code is formatted according to the coding style guidelines. -
    12. -
    13. - Finally, email the SWIG developers with a patch and a demonstration of - commitment to maintaining the language module, - certainly in the short term and ideally long term. -
    14. -
    - -

    -Once accepted into the official Git repository, development efforts should concentrate on -getting the entire test-suite to work with plenty of runtime tests. -Runtime tests should be for existing testcases and new test cases -should be added should there be an area not already covered by -the existing tests. -

    - -

    41.10.15 Coding style guidelines

    +

    39.10.14 Coding style guidelines

    @@ -3612,7 +3560,193 @@ The generated C/C++ code should also follow this style as close as possible. How should be avoided as unlike the SWIG developers, users will never have consistent tab settings.

    -

    41.11 Debugging Options

    + +

    39.10.15 Target language status

    + + +

    +Target languages are given a status of either 'Supported' or 'Experimental' depending on their maturity as broadly outlined in +the Target language introduction. +This section provides more details on how this status is given. +

    + +

    39.10.15.1 Supported status

    + + +

    +A target language is given the 'Supported' status when +

    + +
      +
    • + It is in a mature, well functioning state. +
    • +
    • + It has its own comprehensive chapter in the documentation. + The level of documentation should be comprehensive and match the standard of the other mature modules. + Python and Java are good references.
    • +
    • + It passes all of the main SWIG test-suite. + The main test-suite is defined by the tests in the C_TEST_CASES, CPP_TEST_CASES and MULTI_CPP_TEST_CASES lists in Examples/test-suite/common.mk. + The tests in CPP11_TEST_CASES will also be required in the near future. +
    • +
    • + The test-suite must also include at least twenty wide-ranging runtime tests. + The most mature languages have a few hundred runtime tests. + Note that porting runtime tests from another language module is a quick and easy way to achieve this. +
    • +
    • + It supports the vast majority of SWIG features. + Some more advanced features, such as, directors, full nested class support and target language namespaces (nspace) may be unimplemented. + A few support libraries may be missing, for example, a small number of STL libraries.
    • +
    • + It provides strong backwards compatibility between releases. + Each point release must aim to be fully backwards compatible. + A point release version is the 3rd version digit, so each of the x.y.* versions should be backwards compatible. + Backwards compatibility breakages can occur in a new major or minor version if absolutely necessary and if documented. + A major or minor version is the first or second digit in the three digit version. +
    • +
    • + Fixing unintended regressions in the Supported languages will be given higher priority over experimental languages by the core SWIG developers. +
    • +
    • + Examples must be available and run successfully. +
    • +
    • + The examples and test-suite must be fully functioning on the Travis Continuous Integration platform. +
    • +
    + +

    39.10.15.2 Experimental status

    + + +

    +A target language is given the 'Experimental' status when +

    + +
      +
    • + It is of sub-standard quality, failing to meet the above 'Supported' status. +
    • +
    • + It is somewhere between the mid to mature stage of development. +
    • +
    • + It is in need of help to finish development. +
    • +
    + +

    +Some minimum requirements and notes about languages with the 'Experimental' status: +

    + +
      +
    • + Will at least implement basic functionality - support wrapping C functions and simple C++ classes and templates. +
    • +
    • + Have its own documentation chapter containing a reasonable level of detail. + The documentation must provide enough basic functionality for a user to get started. +
    • +
    • + Have fully functional examples of basic functionality (the simple and class examples). +
    • +
    • + The test-suite must be implemented and include a few runtime tests for both C and C++ test cases. +
    • +
    • + Failing tests must be put into one of the FAILING_CPP_TESTS or FAILING_C_TESTS lists in the test-suite. + This will ensure the test-suite can be superficially made to pass by ignoring failing tests. + The number of tests in these lists should be no greater than half of the number of tests in the full test-suite. +
    • +
    • + The examples and test-suite must also be fully functioning on the Travis Continuous Integration platform. + However, experimental languages will be set as 'allow_failures'. + This means that pull requests and normal development commits will not break the entire Travis build should an experimental language fail. +
    • +
    • + Any new failed tests will be fixed on a 'best effort' basis by core developers with no promises made. +
    • +
    • + If a language module has an official maintainer, then the maintainer will be requested to focus on fixing test-suite regressions and commit to migrating the module to become a 'Supported' module. +
    • +
    • + If a module does not have an official maintainer, then, as maintenance will be on a 'best efforts' basis by the core maintainers, no guarantees will be provided from one release to the next and regressions may creep in. +
    • +
    • + Experimental target languages will have a (suppressible) warning explaining the Experimental sub-standard status and encourage users to help improve it. +
    • +
    • + No backwards compatibility is guaranteed as the module is effectively 'in development'. + If a language module has an official maintainer, then a backwards compatibility guarantee may be provided at the maintainer's discretion and should be documented as such. +
    • +
    + +

    39.10.16 Prerequisites for adding a new language module to the SWIG distribution

    + + +

    +New target language modules can be included in SWIG and contributions are encouraged for popular languages. +In order to be considered for inclusion, a language must at a minimum fit the 'Experimental' status described above. +

    + +

    +Below are some practical steps that should help meet these requirements. +

    + +
      +
    1. + The "simple" example needs to be working to demonstrate basic C code wrappers. + Port the example from another language, such as from Examples/python/simple. +
    2. +
    3. + The "class" example needs to be working to demonstrate basic C++ code wrappers. + Port the example from another language, such as from Examples/python/class. +
    4. +
    5. + Modify configure.ac, Makefile.in and Examples/Makefile.in to run + these examples. Please make sure that if the new language is not + installed properly on a box, make -k check should still work by + skipping the tests and examples for the new language module. +
    6. +
    7. + Copying an existing language module and adapting the source for it is likely to be the most efficient + approach to fully developing a new module as a number of corner cases are covered in the existing implementations. + The most advanced scripting languages are Python and Ruby. + The most advanced compiled target languages are Java and C#. +
    8. +
    9. + Get the test-suite running for the new language (make check-[lang]-test-suite). + While the test-suite tests many corner cases, + we'd expect the majority of it to work without much effort once the generated code is compiling + correctly for basic functionality as most of the corner cases are covered in the SWIG core. Aim to first get + one C and one C++ runtime test running in the test-suite. + Adding further runtime tests should be a lot easier afterwards by porting existing runtime tests from another language module. +
    10. +
    11. + The structure and contents of the html documentation chapter can be copied and adapted from one of the other language modules. +
    12. +
    13. + Source code can be formatted correctly using the info in the coding style guidelines section. +
    14. +
    15. + When ready, post a patch on Github, join the swig-devel mailing list and email the SWIG developers with a demonstration of + commitment to maintaining the language module, + certainly in the short term and ideally long term. +
    16. +
    + +

    +Once accepted into the official Git repository, development efforts should concentrate on +getting the entire test-suite to work +in order to migrate the language module to the 'Supported' status. +Runtime tests should be added for existing testcases and new test cases +can be added should there be an area not already covered by +the existing tests. +

    + + +

    39.11 Debugging Options

    @@ -3639,7 +3773,7 @@ There are various command line options which can aid debugging a SWIG interface The complete list of command line options for SWIG are available by running swig -help.

    -

    41.12 Guide to parse tree nodes

    +

    39.12 Guide to parse tree nodes

    @@ -4047,7 +4181,7 @@ extern "X" { ... } declaration. -

    41.13 Further Development Information

    +

    39.13 Further Development Information

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Go.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Go.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Go.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Go.html index f25e9850..cfa56dbc 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Go.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Go.html @@ -6,7 +6,7 @@ -

    23 SWIG and Go

    +

    24 SWIG and Go

      @@ -57,7 +57,7 @@ the Go programming language see golang.org.

      -

      23.1 Overview

      +

      24.1 Overview

      @@ -86,7 +86,7 @@ type-safe as well. In case of type issues the build will fail and hence SWIG's are not used.

      -

      23.2 Examples

      +

      24.2 Examples

      @@ -101,7 +101,7 @@ SWIG interface file extension for backwards compatibility with Go 1.

      -

      23.3 Running SWIG with Go

      +

      24.3 Running SWIG with Go

      @@ -125,16 +125,15 @@ Go distribution. To generate code for gccgo, you should also use the

      -When using the -cgo option, SWIG will generate files that can be used -directly by go build. Starting with the Go 1.5 distribution the --cgo option has to be given. Put your SWIG interface file in a -directory under GOPATH/src, and give it a name that does not end in the -.swig or .swigcxx extension. Typically the SWIG interface file extension is .i -in this case. +By default SWIG will generate files that can be used directly +by go build. This requires Go 1.2 or later. Put your SWIG +interface file in a directory under GOPATH/src, and give it a name +that does not end in the .swig or .swigcxx extension. +Typically the SWIG interface file extension is .i in this case.

      -% swig -go -cgo example.i
      +% swig -go example.i
       % go install
       
      @@ -144,15 +143,16 @@ usual.

      -To use SWIG without the -cgo option, more steps are required. Recall -that this only works with Go versions before 1.5. When using Go version 1.2 or -later, or when using gccgo, the code generated by SWIG can be linked directly -into the Go program. A typical command sequence when using the Go compiler of -the Go distribution would look like this: +SWIG can be used without cgo, via the -no-cgo option, but +more steps are required. This only works with Go versions before 1.5. +When using Go version 1.2 or later, or when using gccgo, the code +generated by SWIG can be linked directly into the Go program. A +typical command sequence when using the Go compiler of the Go +distribution would look like this:

      -% swig -go example.i
      +% swig -go -no-cgo example.i
       % gcc -c code.c    # The C library being wrapped.
       % gcc -c example_wrap.c
       % go tool 6g example.go
      @@ -169,7 +169,7 @@ sequence for this approach would look like this:
       

      -% swig -go -use-shlib example.i
      +% swig -go -no-cgo -use-shlib example.i
       % gcc -c -fpic example.c
       % gcc -c -fpic example_wrap.c
       % gcc -shared example.o example_wrap.o -o example.so
      @@ -181,7 +181,7 @@ sequence for this approach would look like this:
       
      -

      23.3.1 Go-specific Commandline Options

      +

      24.3.1 Go-specific Commandline Options

      @@ -200,10 +200,15 @@ swig -go -help -cgo -Generate files to be used as input for the Go cgo tool. This - option is required for Go 1.5 and later, and works for Go 1.2 and - later. In the future this option will likely become the - default. +Generate files to be used as input for the Go cgo tool. This is + the default. + + + +-no-cgo +Generate files that can be used directly, rather than via the Go + cgo tool. This option does not work with Go 1.5 or later. It is + required for versions of Go before 1.2. @@ -261,18 +266,25 @@ swig -go -help ignored. + +-import-prefix <prefix> +A prefix to add when turning a %import prefix in the SWIG + interface file into an import statement in the Go file. For + example, with -import-prefix mymodule, a SWIG + interface file %import mypackage will become a Go + import statement import "mymodule/mypackage". -

      23.3.2 Generated Wrapper Files

      +

      24.3.2 Generated Wrapper Files

      There are two different approaches to generating wrapper files, - controlled by SWIG's -cgo option. The -cgo option - works with Go version 1.2 or later. It is required when using Go - version 1.5 or later.

      + controlled by SWIG's -no-cgo option. The -no-cgo + option only works with version of Go before 1.5. It is required + when using versions of Go before 1.2.

      -

      With or without the -cgo option, SWIG will generate the +

      With or without the -no-cgo option, SWIG will generate the following files when generating wrapper code:

        @@ -296,8 +308,8 @@ or C++ compiler.
      -

      When neither the -cgo nor the -gccgo option is - used, SWIG will also generate an additional file:

      +

      When the -no-cgo option is used, and the -gccgo + option is not used, SWIG will also generate an additional file:

      • @@ -308,7 +320,7 @@ combined with the compiled MODULE.go using go tool pack.
      -

      23.4 A tour of basic C/C++ wrapping

      +

      24.4 A tour of basic C/C++ wrapping

      @@ -318,7 +330,7 @@ modifications have to occur. This section briefly covers the essential aspects of this wrapping.

      -

      23.4.1 Go Package Name

      +

      24.4.1 Go Package Name

      @@ -328,7 +340,7 @@ directive. You may override this by using SWIG's -package command line option.

      -

      23.4.2 Go Names

      +

      24.4.2 Go Names

      @@ -360,7 +372,7 @@ followed by that name, and the destructor will be named Delete followed by that name.

      -

      23.4.3 Go Constants

      +

      24.4.3 Go Constants

      @@ -368,7 +380,7 @@ C/C++ constants created via #define or the %constant directive become Go constants, declared with a const declaration. -

      23.4.4 Go Enumerations

      +

      24.4.4 Go Enumerations

      @@ -378,7 +390,7 @@ usual). The values of the enumeration will become variables in Go; code should avoid modifying those variables.

      -

      23.4.5 Go Classes

      +

      24.4.5 Go Classes

      @@ -456,7 +468,7 @@ returns a go interface. If the returned pointer can be null, you can check for this by calling the Swigcptr() method.

      -

      23.4.5.1 Go Class Memory Management

      +

      24.4.5.1 Go Class Memory Management

      @@ -471,7 +483,7 @@ The most Go idiomatic way to manage the memory for some C++ class is to call defer of the DeleteClassName call. Using defer ensures that the memory of the C++ object is freed as soon as the function containing the defer -statement returns. Furthemore defer works great for short-lived +statement returns. Furthermore defer works great for short-lived objects and fits nicely C++'s RAII idiom. Example:

      @@ -512,7 +524,7 @@ func main() {

      Using defer has limitations though, especially when it comes to -long-lived C++ objects whichs lifetimes are hard to predict. For such C++ +long-lived C++ objects whose lifetimes are hard to predict. For such C++ objects a common technique is to store the C++ object into a Go object, and to use the Go function runtime.SetFinalizer to add a finalizer which frees the C++ object when the Go object is freed. It is strongly recommended to read @@ -578,7 +590,7 @@ func (o *GoClassName) Close() {

      -

      23.4.5.2 Go Class Inheritance

      +

      24.4.5.2 Go Class Inheritance

      @@ -590,7 +602,7 @@ Doing the reverse will require an explicit type assertion, which will be checked dynamically.

      -

      23.4.6 Go Templates

      +

      24.4.6 Go Templates

      @@ -599,7 +611,7 @@ wrappers for a particular template instantation. To do this, use the %template directive. -

      23.4.7 Go Director Classes

      +

      24.4.7 Go Director Classes

      @@ -611,13 +623,13 @@ work is necessary.

      -This subchapter gives a step by step guide how to properly sublass a C++ class +This subchapter gives a step by step guide how to properly subclass a C++ class with a Go type. In general it is strongly recommended to follow this guide completely to avoid common pitfalls with directors in Go.

      -

      23.4.7.1 Example C++ code

      +

      24.4.7.1 Example C++ code

      @@ -639,12 +651,12 @@ public: virtual ~FooBarAbstract() {}; std::string FooBar() { - return this->Foo() + ", " + this->Bar(); + return this->Foo() + ", " + this->Bar(); }; protected: virtual std::string Foo() { - return "Foo"; + return "Foo"; }; virtual std::string Bar() = 0; @@ -689,7 +701,7 @@ be found in the end of the guide.

      -

      23.4.7.2 Enable director feature

      +

      24.4.7.2 Enable director feature

      @@ -724,7 +736,7 @@ documentation on directors.

      -

      23.4.7.3 Constructor and destructor

      +

      24.4.7.3 Constructor and destructor

      @@ -777,7 +789,7 @@ embedding.

      -

      23.4.7.4 Override virtual methods

      +

      24.4.7.4 Override virtual methods

      @@ -785,10 +797,12 @@ In order to override virtual methods on a C++ class with Go methods the NewDirectorClassName constructor functions receives a DirectorInterface argument. The methods in the DirectorInterface are a subset of the public and protected virtual methods -of the C++ class. If the DirectorInterface contains a method with a +of the C++ class. +Virtual methods that have a final specifier are unsurprisingly excluded. +If the DirectorInterface contains a method with a matching signature to a virtual method of the C++ class then the virtual C++ method will be overwritten with the Go method. As Go doesn't support protected -methods all overriden protected virtual C++ methods will be public in Go. +methods all overridden protected virtual C++ methods will be public in Go.

      @@ -843,7 +857,7 @@ the Go methods.

      -

      23.4.7.5 Call base methods

      +

      24.4.7.5 Call base methods

      @@ -880,7 +894,7 @@ be found in the end of the guide.

      -

      23.4.7.6 Subclass via embedding

      +

      24.4.7.6 Subclass via embedding

      @@ -941,14 +955,14 @@ methods of the FooBarAbstract C++ class by means of embedding. The public FooBarGo interface type includes the FooBarAbstract interface and hence FooBarGo can be used as a drop in replacement for FooBarAbstract while the reverse isn't possible and would raise a -compile time error. Furthemore the constructor and destructor functions +compile time error. Furthermore the constructor and destructor functions NewFooBarGo and DeleteFooBarGo take care of all the director specifics and to the user the class appears as any other SWIG wrapped C++ class.

      -

      23.4.7.7 Memory management with runtime.SetFinalizer

      +

      24.4.7.7 Memory management with runtime.SetFinalizer

      @@ -1013,7 +1027,7 @@ before using runtime.SetFinalizer to know all of its gotchas.

      -

      23.4.7.8 Complete FooBarGo example class

      +

      24.4.7.8 Complete FooBarGo example class

      @@ -1054,7 +1068,7 @@ type overwrittenMethodsOnFooBarAbstract struct { fb FooBarAbstract // If additional constructor arguments have been given they are typically - // stored here so that the overriden methods can use them. + // stored here so that the overridden methods can use them. } func (om *overwrittenMethodsOnFooBarAbstract) Foo() string { @@ -1081,7 +1095,7 @@ func NewFooBarGo() FooBarGo { // The memory of the FooBarAbstract director object instance can be // automatically freed once the FooBarGo instance is garbage collected by // uncommenting the following line. Please make sure to understand the - // runtime.SetFinalizer specific gotchas before doing this. Furthemore + // runtime.SetFinalizer specific gotchas before doing this. Furthermore // DeleteFooBarGo should be deleted if a finalizer is in use or the fooBarGo // struct needs additional data to prevent double deletion. // runtime.SetFinalizer(fbgs, FooBarGo.deleteFooBarAbstract) @@ -1142,7 +1156,7 @@ SWIG/Examples/go/director/.

      -

      23.4.8 Default Go primitive type mappings

      +

      24.4.8 Default Go primitive type mappings

      @@ -1249,7 +1263,7 @@ that typemap, or add new values, to control how C/C++ types are mapped into Go types.

      -

      23.4.9 Output arguments

      +

      24.4.9 Output arguments

      Because of limitations in the way output arguments are processed in swig, @@ -1289,7 +1303,7 @@ fraction := modulename.Modf(5.0, ptr)

    Since this is ugly, you may want to wrap the swig-generated API with -some additional functions written in go that +some additional functions written in go that hide the ugly details.

    There are no char *OUTPUT typemaps. However you can @@ -1302,7 +1316,7 @@ void f(char *output); -

    23.4.10 Adding additional go code

    +

    24.4.10 Adding additional go code

    Often the APIs generated by swig are not very natural in go, especially if @@ -1397,7 +1411,7 @@ func bar() { -

    23.4.11 Go typemaps

    +

    24.4.11 Go typemaps

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Guile.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Guile.html similarity index 96% rename from winx64/bin/swig-3.0.12/Doc/Manual/Guile.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Guile.html index 6acdd2dc..31d82259 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Guile.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Guile.html @@ -8,7 +8,7 @@ -

    24 SWIG and Guile

    +

    25 SWIG and Guile

      @@ -48,7 +48,7 @@

      This section details guile-specific support in SWIG. -

      24.1 Supported Guile Versions

      +

      25.1 Supported Guile Versions

      @@ -62,7 +62,7 @@ improved performance. This is currently not tested with swig so your mileage may vary. To be safe set environment variable GUILE_AUTO_COMPILE to 0 when using swig generated guile code. -

      24.2 Meaning of "Module"

      +

      25.2 Meaning of "Module"

      @@ -70,7 +70,7 @@ There are three different concepts of "module" involved, defined separately for SWIG, Guile, and Libtool. To avoid horrible confusion, we explicitly prefix the context, e.g., "guile-module". -

      24.3 Old GH Guile API

      +

      25.3 Old GH Guile API

      Guile 1.8 and older could be interfaced using two different api's, the SCM @@ -81,7 +81,7 @@ or the GH API. The GH interface to guile is deprecated. Read more about why in version of SWIG that can still generate guile GH wrapper code is 2.0.9. Please use that version if you really need the GH wrapper code. -

      24.4 Linkage

      +

      25.4 Linkage

      @@ -89,7 +89,7 @@ Guile support is complicated by a lack of user community cohesiveness, which manifests in multiple shared-library usage conventions. A set of policies implementing a usage convention is called a linkage. -

      24.4.1 Simple Linkage

      +

      25.4.1 Simple Linkage

      @@ -194,7 +194,7 @@ placed between the define-module form and the SWIG_init via a preprocessor define to avoid symbol clashes. For this case, however, passive linkage is available. -

      24.4.2 Passive Linkage

      +

      25.4.2 Passive Linkage

      Passive linkage is just like simple linkage, but it generates an @@ -204,7 +204,7 @@ package name (see below).

      You should use passive linkage rather than simple linkage when you are using multiple modules. -

      24.4.3 Native Guile Module Linkage

      +

      25.4.3 Native Guile Module Linkage

      SWIG can also generate wrapper code that does all the Guile module @@ -245,7 +245,7 @@ Newer Guile versions have a shorthand procedure for this:

    -

    24.4.4 Old Auto-Loading Guile Module Linkage

    +

    25.4.4 Old Auto-Loading Guile Module Linkage

    Guile used to support an autoloading facility for object-code @@ -271,7 +271,7 @@ option, SWIG generates an exported module initialization function with an appropriate name. -

    24.4.5 Hobbit4D Linkage

    +

    25.4.5 Hobbit4D Linkage

    @@ -296,7 +296,7 @@ my/lib/libfoo.so.X.Y.Z and friends. This scheme is still very experimental; the (hobbit4d link) conventions are not well understood.

    -

    24.5 Underscore Folding

    +

    25.5 Underscore Folding

    @@ -308,7 +308,7 @@ complained so far. %rename to specify the Guile name of the wrapped functions and variables (see CHANGES). -

    24.6 Typemaps

    +

    25.6 Typemaps

    @@ -400,7 +400,7 @@ constant will appear as a scheme variable. See Features and the %feature directive for info on how to apply the %feature.

    -

    24.7 Representation of pointers as smobs

    +

    25.7 Representation of pointers as smobs

    @@ -421,7 +421,7 @@ representing the expected pointer type. See also If the Scheme object passed was not a SWIG smob representing a compatible pointer, a wrong-type-arg exception is raised. -

    24.7.1 Smobs

    +

    25.7.1 Smobs

    @@ -440,7 +440,7 @@ structure describing this type. If a generated GOOPS module has been loaded, sm the corresponding GOOPS class.

    -

    24.7.2 Garbage Collection

    +

    25.7.2 Garbage Collection

    Garbage collection is a feature of Guile since version 1.6. As SWIG now requires Guile > 1.8, @@ -454,14 +454,14 @@ is exactly like described in 24.8 Native Guile pointers +

    25.8 Native Guile pointers

    In addition to SWIG smob pointers, Guile's native pointer type are accepted as arguments to wrapped SWIG functions. This can be useful for passing pointers to bytevector data to wrapped functions.

    -

    24.9 Exception Handling

    +

    25.9 Exception Handling

    @@ -487,7 +487,7 @@ mapping: The default when not specified here is to use "swig-error". See Lib/exception.i for details. -

    24.10 Procedure documentation

    +

    25.10 Procedure documentation

    If invoked with the command-line option -procdoc @@ -522,7 +522,7 @@ like this: typemap argument doc. See Lib/guile/typemaps.i for details. -

    24.11 Procedures with setters

    +

    25.11 Procedures with setters

    For global variables, SWIG creates a single wrapper procedure @@ -550,7 +550,7 @@ struct members, the procedures (struct-member-get pointer) and (struct-member-set pointer value) are not generated. -

    24.12 GOOPS Proxy Classes

    +

    25.12 GOOPS Proxy Classes

    SWIG can also generate classes and generic functions for use with @@ -696,7 +696,7 @@ Notice that <Foo> is used before it is defined. The fix is to just put th %import "foo.h" before the %inline block.

    -

    24.12.1 Naming Issues

    +

    25.12.1 Naming Issues

    As you can see in the example above, there are potential naming conflicts. The default exported @@ -733,7 +733,7 @@ guile-modules. For example,

    (use-modules ((Test) #:renamer (symbol-prefix-proc 'goops:))) -

    24.12.2 Linking

    +

    25.12.2 Linking

    The guile-modules generated above all need to be linked together. GOOPS support requires diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Introduction.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Introduction.html similarity index 77% rename from winx64/bin/swig-3.0.12/Doc/Manual/Introduction.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Introduction.html index 0140bfa5..8d161b73 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Introduction.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Introduction.html @@ -13,6 +13,11 @@

    • What is SWIG?
    • Why use SWIG? +
    • Target languages +
    • A SWIG example
      • SWIG interface file @@ -144,7 +149,79 @@ it provides a wide variety of customization features that let you change almost every aspect of the language bindings. This is the main reason why SWIG has such a large user manual ;-). -

        2.3 A SWIG example

        +

        2.3 Target languages

        + + +

        +SWIG in essence is a tool to generate code for making C/C++ code available to various other programming languages. +These higher level programming languages are the target languages for the SWIG code generator and C or C++ are the input languages. +A single target language must be specified when SWIG is run. +This results in generating code for C/C++ and the specified target language to interface with each other. +SWIG can be invoked multiple times, but with a different target language specified on each invocation. +This ability to interface C/C++ to many different target languages is one of SWIG's core strengths and features. +

        + +

        +SWIG is very broadly composed of two components. +A core component creates a parse tree from the input ISO C/C++ and SWIG directives (extensions to the C/C++ standards). +The parse tree is then passed to a second component, one of the target language modules for generating code specific to a higher level language. +SWIG supports many different target languages. +These target languages are given a status of either Supported or Experimental. +This status is provided to indicate the level of maturity to expect when using a particular target language as not all target languages are fully developed. +

        + +

        +The second part of the SWIG documentation contains a chapter for each target level language. +Each chapter will state the status (Supported or Experimental) for that language. +

        + +

        2.3.1 Supported status

        + + +

        +A target language is given the 'Supported' status when +

        + +
          +
        • It is in a mature, well functioning state.
        • +
        • It has its own comprehensive chapter in the documentation.
        • +
        • It passes all of the main SWIG test-suite and has a range of working examples.
        • +
        • It supports the vast majority of SWIG features.
        • +
        • It provides strong backwards compatibility between releases.
        • +
        + +

        +The above is a short summary and further details are outlined in the Supported status section in the Extending chapter. +The good news is that all the well-known and most popular languages have this status. +

        + +

        2.3.2 Experimental status

        + + +

        +A target language is given the 'Experimental' status when +

        + +
          +
        • It is of sub-standard quality, failing to meet the above 'Supported' status.
        • +
        • It is somewhere between the mid to mature stage of development.
        • +
        • It does not guarantee any backwards compatibility between releases.
        • +
        • It is in need of help to finish development.
        • +
        + +

        +Anyone using an experimental target language is strongly urged to assist with development of the target language module if they wish to use it. +

        +

        +SWIG displays a warning when an experimental target language is used in order to set expectations and emphasize the experimental status of the target language. +The usual warning suppression techniques can be used if required. +

        + +

        +The above is a short summary and further details are outlined in the Experimental status section in the Extending chapter. +

        + +

        2.4 A SWIG example

        @@ -155,7 +232,7 @@ following C code:

         /* File : example.c */
         
        -double  My_variable  = 3.0;
        +double My_variable = 3.0;
         
         /* Compute factorial of n */
         int fact(int n) {
        @@ -177,7 +254,7 @@ variable My_variable from Tcl.  You start by making a SWIG
         interface file as shown below (by convention, these files carry a .i
         suffix) :
         
        -

        2.3.1 SWIG interface file

        +

        2.4.1 SWIG interface file

        @@ -196,13 +273,13 @@ extern int    my_mod(int n, int m);
         

        -The interface file contains ANSI C function prototypes and variable +The interface file contains ISO C function prototypes and variable declarations. The %module directive defines the name of the module that will be created by SWIG. The %{ %} block provides a location for inserting additional code, such as C header files or additional C declarations, into the generated C wrapper code. -

        2.3.2 The swig command

        +

        2.4.2 The swig command

        @@ -235,7 +312,7 @@ and variables declared in the SWIG interface. A look at the file example_wrap.c reveals a hideous mess. However, you almost never need to worry about it. -

        2.3.3 Building a Perl5 module

        +

        2.4.3 Building a Perl5 module

        @@ -261,7 +338,7 @@ unix >

        -

        2.3.4 Building a Python module

        +

        2.4.4 Building a Python module

        @@ -285,7 +362,7 @@ Type "copyright", "credits" or "license" for more information. 7.5 -

        2.3.5 Shortcuts

        +

        2.4.5 Shortcuts

        @@ -311,7 +388,7 @@ print $example::My_variable + 4.5, "\n"; 7.5 -

        2.4 Supported C/C++ language features

        +

        2.5 Supported C/C++ language features

        @@ -323,7 +400,7 @@ major features include:

        • Full C99 preprocessing. -
        • All ANSI C and C++ datatypes. +
        • All ISO C and C++ datatypes.
        • Functions, variables, and constants.
        • Classes.
        • Single and multiple inheritance. @@ -336,7 +413,9 @@ major features include:

        -Most of C++11 is also supported. Details are in the C++11 section. +Most of C++11 is also supported. Details are in the C++11 chapter. +C++14 support is covered in the C++14 chapter. +C++17 support is covered in the C++17 chapter.

        @@ -350,7 +429,7 @@ wrapping simple C++ code. In fact, SWIG is able to handle C++ code that stresses the very limits of many C++ compilers. -

        2.5 Non-intrusive interface building

        +

        2.6 Non-intrusive interface building

        @@ -362,7 +441,7 @@ interface and reuse the code in other applications. It is also possible to support different types of interfaces depending on the application.

        -

        2.6 Incorporating SWIG into a build system

        +

        2.7 Incorporating SWIG into a build system

        @@ -385,13 +464,13 @@ for further information on this and other Autoconf macros.

        -There is growing support for SWIG in some build tools, for example CMake +There is growing support for SWIG in some build tools, for example CMake is a cross-platform, open-source build manager with built in support for SWIG. CMake can detect the SWIG executable and many of the target language libraries for linking against. CMake knows how to build shared libraries and loadable modules on many different operating systems. This allows easy cross platform SWIG development. It can also generate the custom commands necessary for driving SWIG from IDEs and makefiles. All of this can be done from a single cross platform input file. -The following example is a CMake input file for creating a python wrapper for the SWIG interface file, example.i: +The following example is a CMake input file for creating a Python wrapper for the SWIG interface file, example.i:

        @@ -420,7 +499,7 @@ which will invoke SWIG and compile the generated C++ files into _example.so (UNI
         For other target languages on Windows a dll, instead of a .pyd file, is usually generated.
         

        -

        2.7 Hands off code generation

        +

        2.8 Hands off code generation

        @@ -433,7 +512,7 @@ it allows others to forget about the low-level implementation details.

        -

        2.8 SWIG and freedom

        +

        2.9 SWIG and freedom

        @@ -452,7 +531,7 @@ to work with complicated and unusual C/C++ applications. Ironically, the freedom that SWIG provides is countered by an extremely conservative approach to code generation. At its core, SWIG tries to distill even the most advanced C++ code down to a small -well-defined set of interface building techniques based on ANSI C +well-defined set of interface building techniques based on ISO C programming. Because of this, you will find that SWIG interfaces can be easily compiled by virtually every C/C++ compiler and that they can be used on any platform. Again, this is an important part of staying out diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Java.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Java.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Java.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Java.html index bd259e60..db5f041e 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Java.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Java.html @@ -6,7 +6,7 @@ -

        25 SWIG and Java

        +

        26 SWIG and Java

      • Accessing protected members
      • Common customization features @@ -164,7 +167,7 @@ It covers most SWIG features, but certain low-level details are covered in less

        -

        25.1 Overview

        +

        26.1 Overview

        @@ -199,7 +202,7 @@ Various customisation tips and techniques using SWIG directives are covered. The latter sections cover the advanced techniques of using typemaps for complete control of the wrapping process.

        -

        25.2 Preliminaries

        +

        26.2 Preliminaries

        @@ -219,7 +222,7 @@ This is the commonly used method to load JNI code so your system will more than Android uses Java JNI and also works with SWIG. Please read the Android chapter in conjunction with this one if you are targeting Android.

        -

        25.2.1 Running SWIG

        +

        26.2.1 Running SWIG

        @@ -278,7 +281,7 @@ The following sections have further practical examples and details on how you mi compiling and using the generated files.

        -

        25.2.2 Additional Commandline Options

        +

        26.2.2 Additional Commandline Options

        @@ -315,7 +318,7 @@ swig -java -help Their use will become clearer by the time you have finished reading this section on SWIG and Java.

        -

        25.2.3 Getting the right header files

        +

        26.2.3 Getting the right header files

        @@ -330,7 +333,7 @@ They are usually in directories like this:

        The exact location may vary on your machine, but the above locations are typical.

        -

        25.2.4 Compiling a dynamic module

        +

        26.2.4 Compiling a dynamic module

        @@ -365,7 +368,7 @@ The name of the shared library output file is important. If the name of your SWIG module is "example", the name of the corresponding shared library file should be "libexample.so" (or equivalent depending on your machine, see Dynamic linking problems for more information). The name of the module is specified using the %module directive or -module command line option.

        -

        25.2.5 Using your module

        +

        26.2.5 Using your module

        @@ -400,7 +403,7 @@ $ If it doesn't work have a look at the following section which discusses problems loading the shared library.

        -

        25.2.6 Dynamic linking problems

        +

        26.2.6 Dynamic linking problems

        @@ -474,7 +477,7 @@ Exception in thread "main" java.lang.UnsatisfiedLinkError: exampleJNI.gcd(II)I

        where gcd is the missing JNI function that SWIG generated into the wrapper file. Also make sure you pass all of the required libraries to the linker. -The java -verbose:jni commandline switch is also a great way to get more information on unresolved symbols. +The java -verbose:jni commandline option is also a great way to get more information on unresolved symbols. One last piece of advice is to beware of the common faux pas of having more than one native library version in your path.

        @@ -487,7 +490,7 @@ The following section also contains some C++ specific linking problems and solut

        -

        25.2.7 Compilation problems and compiling with C++

        +

        26.2.7 Compilation problems and compiling with C++

        @@ -539,7 +542,7 @@ Finally make sure the version of JDK header files matches the version of Java th

        -

        25.2.8 Building on Windows

        +

        26.2.8 Building on Windows

        @@ -548,7 +551,7 @@ You will want to produce a DLL that can be loaded by the Java Virtual Machine. This section covers the process of using SWIG with Microsoft Visual C++ 6 although the procedure may be similar with other compilers. In order for everything to work, you will need to have a JDK installed on your machine in order to read the JNI header files.

        -

        25.2.8.1 Running SWIG from Visual Studio

        +

        26.2.8.1 Running SWIG from Visual Studio

        @@ -587,7 +590,7 @@ To run the native code in the DLL (example.dll), make sure that it is in your pa If the library fails to load have a look at Dynamic linking problems.

        -

        25.2.8.2 Using NMAKE

        +

        26.2.8.2 Using NMAKE

        @@ -642,11 +645,11 @@ java::

        To build the DLL and compile the java code, run NMAKE (you may need to run vcvars32 first). This is a pretty simplistic Makefile, but hopefully its enough to get you started. -Of course you may want to make changes for it to work for C++ by adding in the -c++ command line switch for swig and replacing .c with .cxx. +Of course you may want to make changes for it to work for C++ by adding in the -c++ command line option for swig and replacing .c with .cxx.

        -

        25.3 A tour of basic C/C++ wrapping

        +

        26.3 A tour of basic C/C++ wrapping

        @@ -656,7 +659,7 @@ variables are wrapped with JavaBean type getters and setters and so forth. This section briefly covers the essential aspects of this wrapping.

        -

        25.3.1 Modules, packages and generated Java classes

        +

        26.3.1 Modules, packages and generated Java classes

        @@ -692,7 +695,7 @@ swig -java -package com.bloggs.swig -outdir com/bloggs/swig example.i SWIG won't create the directory, so make sure it exists beforehand.

        -

        25.3.2 Functions

        +

        26.3.2 Functions

        @@ -726,7 +729,7 @@ System.out.println(example.fact(4));

      • -

        25.3.3 Global variables

        +

        26.3.3 Global variables

        @@ -813,7 +816,7 @@ extern char *path; // Read-only (due to %immutable) -

        25.3.4 Constants

        +

        26.3.4 Constants

        @@ -953,7 +956,7 @@ Or if you decide this practice isn't so bad and your own class implements ex

        -

        25.3.5 Enumerations

        +

        26.3.5 Enumerations

        @@ -967,7 +970,7 @@ The final two approaches use simple integers for each enum item. Before looking at the various approaches for wrapping named C/C++ enums, anonymous enums are considered.

        -

        25.3.5.1 Anonymous enums

        +

        26.3.5.1 Anonymous enums

        @@ -1030,7 +1033,7 @@ As in the case of constants, you can access them through either the module class

        -

        25.3.5.2 Typesafe enums

        +

        26.3.5.2 Typesafe enums

        @@ -1110,11 +1113,10 @@ Typesafe enums have their advantages over using plain integers in that they can However, there are limitations. For example, they cannot be used in switch statements and serialization is an issue. Please look at the following references for further information: -http://java.sun.com/developer/Books/shiftintojava/page1.html#replaceenums Replace Enums with Classes in Effective Java Programming on the Sun website, -Create enumerated constants in Java JavaWorld article, -Java Tip 133: More on typesafe enums and -Java Tip 122: Beware of Java typesafe enumerations JavaWorld tips. +Create enumerated constants in Java JavaWorld article, +Java Tip 133: More on typesafe enums and +Java Tip 122: Beware of Java typesafe enumerations JavaWorld tips.

        @@ -1124,7 +1126,7 @@ When upgrading to JDK 1.5 or later, proper Java enums could be used instead, wit The following section details proper Java enum generation.

        -

        25.3.5.3 Proper Java enums

        +

        26.3.5.3 Proper Java enums

        @@ -1177,7 +1179,7 @@ The additional support methods need not be generated if none of the enum items h Simpler Java enums for enums without initializers section.

        -

        25.3.5.4 Type unsafe enums

        +

        26.3.5.4 Type unsafe enums

        @@ -1225,7 +1227,7 @@ Note that unlike typesafe enums, this approach requires users to mostly use diff Thus the upgrade path to proper enums provided in JDK 1.5 is more painful.

        -

        25.3.5.5 Simple enums

        +

        26.3.5.5 Simple enums

        @@ -1244,7 +1246,7 @@ SWIG-1.3.21 and earlier versions wrapped all enums using this approach. The type unsafe approach is preferable to this one and this simple approach is only included for backwards compatibility with these earlier versions of SWIG.

        -

        25.3.6 Pointers

        +

        26.3.6 Pointers

        @@ -1332,7 +1334,7 @@ C-style cast may return a bogus result whereas as the C++-style cast will return a NULL pointer if the conversion can't be performed.

        -

        25.3.7 Structures

        +

        26.3.7 Structures

        @@ -1500,7 +1502,7 @@ x.setA(3); // Modify x.a - this is the same as b.f.a -

        25.3.8 C++ classes

        +

        26.3.8 C++ classes

        @@ -1563,7 +1565,7 @@ int bar = Spam.getBar(); -

        25.3.9 C++ inheritance

        +

        26.3.9 C++ inheritance

        @@ -1624,7 +1626,7 @@ Note that Java does not support multiple inheritance so any multiple inheritance A warning is given when multiple inheritance is detected and only the first base class is used.

        -

        25.3.10 Pointers, references, arrays and pass by value

        +

        26.3.10 Pointers, references, arrays and pass by value

        @@ -1679,7 +1681,7 @@ to hold the result and a pointer is returned (Java will release this memory when the returned object's finalizer is run by the garbage collector).

        -

        25.3.10.1 Null pointers

        +

        26.3.10.1 Null pointers

        @@ -1703,7 +1705,7 @@ For spam1 and spam4 above the Java null gets translat The converse also occurs, that is, NULL pointers are translated into null Java objects when returned from a C/C++ function.

        -

        25.3.11 C++ overloaded functions

        +

        26.3.11 C++ overloaded functions

        @@ -1818,7 +1820,7 @@ void spam(unsigned short); // Ignored -

        25.3.12 C++ default arguments

        +

        26.3.12 C++ default arguments

        @@ -1861,7 +1863,7 @@ Further details on default arguments and how to restore this approach are given

        -

        25.3.13 C++ namespaces

        +

        26.3.13 C++ namespaces

        @@ -1951,7 +1953,7 @@ If the resulting use of the nspace feature and hence packages results in a proxy you will need to open up the visibility for the pointer constructor and getCPtr method from the default 'protected' to 'public' with the SWIG_JAVABODY_PROXY macro. See Java code typemaps.

        -

        25.3.14 C++ templates

        +

        26.3.14 C++ templates

        @@ -2000,10 +2002,10 @@ Obviously, there is more to template wrapping than shown in this example. More details can be found in the SWIG and C++ chapter.

        -

        25.3.15 C++ Smart Pointers

        +

        26.3.15 C++ Smart Pointers

        -

        25.3.15.1 The shared_ptr Smart Pointer

        +

        26.3.15.1 The shared_ptr Smart Pointer

        @@ -2014,7 +2016,7 @@ in the shared_ptr smart pointer -

        25.3.15.2 Generic Smart Pointers

        +

        26.3.15.2 Generic Smart Pointers

        @@ -2098,7 +2100,7 @@ Foo f = p.__deref__(); // Returns underlying Foo * -

        25.4 Further details on the generated Java classes

        +

        26.4 Further details on the generated Java classes

        @@ -2113,7 +2115,7 @@ Finally enum classes are covered. First, the crucial intermediary JNI class is considered.

        -

        25.4.1 The intermediary JNI class

        +

        26.4.1 The intermediary JNI class

        @@ -2233,7 +2235,7 @@ If name is the same as modulename then the module class name g from modulename to modulenameModule.

        -

        25.4.1.1 The intermediary JNI class pragmas

        +

        26.4.1.1 The intermediary JNI class pragmas

        @@ -2315,7 +2317,7 @@ For example, let's change the intermediary JNI class access to just the default All the methods in the intermediary JNI class will then not be callable outside of the package as the method modifiers have been changed from public access to default access. This is useful if you want to prevent users calling these low level functions.

        -

        25.4.2 The Java module class

        +

        26.4.2 The Java module class

        @@ -2346,7 +2348,7 @@ example.egg(new Foo()); The primary reason for having the module class wrapping the calls in the intermediary JNI class is to implement static type checking. In this case only a Foo can be passed to the egg function, whereas any long can be passed to the egg function in the intermediary JNI class.

        -

        25.4.2.1 The Java module class pragmas

        +

        26.4.2.1 The Java module class pragmas

        @@ -2397,7 +2399,7 @@ See The intermediary JNI class pragmas secti

        -

        25.4.3 Java proxy classes

        +

        26.4.3 Java proxy classes

        @@ -2473,7 +2475,7 @@ int y = f.spam(5, new Foo()); -

        25.4.3.1 Memory management

        +

        26.4.3.1 Memory management

        @@ -2635,7 +2637,7 @@ and

        -

        25.4.3.2 Inheritance

        +

        26.4.3.2 Inheritance

        @@ -2751,7 +2753,7 @@ However, true cross language polymorphism can be achieved using the 25.4.3.3 Proxy classes and garbage collection +

        26.4.3.3 Proxy classes and garbage collection

        @@ -2760,7 +2762,7 @@ The finalize() method calls delete() which frees any malloc'd The idea is for delete() to be called when you have finished with the C/C++ object. Ideally you need not call delete(), but rather leave it to the garbage collector to call it from the finalizer. When a program exits, the garbage collector does not guarantee to call all finalizers. -An insight into the reasoning behind this can be obtained from Hans Boehm's Destructors, Finalizers, and Synchronization paper. +An insight into the reasoning behind this can be obtained from Hans Boehm's Destructors, Finalizers, and Synchronization paper. Depending on what the finalizers do and which operating system you use, this may or may not be a problem.

        @@ -2784,7 +2786,7 @@ Call the System.runFinalizersOnExit(true) or Runtime.getRuntime().r This method is inherently unsafe. It may result in finalizers being called on live objects while other threads are concurrently manipulating those objects, resulting in erratic behavior or deadlock.

        In many cases you will be lucky and find that it works, but it is not to be advocated. -Have a look at Java web site and search for runFinalizersOnExit. +Have a look at Java web site and search for runFinalizersOnExit.

      • @@ -2834,7 +2836,7 @@ The section on Java typemaps details how to specify See the How to Handle Java Finalization's Memory-Retention Issues article for alternative approaches to managing memory by avoiding finalizers altogether.

        -

        25.4.3.4 The premature garbage collection prevention parameter for proxy class marshalling

        +

        26.4.3.4 The premature garbage collection prevention parameter for proxy class marshalling

        @@ -2956,7 +2958,7 @@ For example: Compatibility note: The generation of this additional parameter did not occur in versions prior to SWIG-1.3.30.

        -

        25.4.3.5 Single threaded applications and thread safety

        +

        26.4.3.5 Single threaded applications and thread safety

        @@ -3044,7 +3046,7 @@ for (int i=0; i<100000; i++) { -

        25.4.4 Type wrapper classes

        +

        26.4.4 Type wrapper classes

        @@ -3131,7 +3133,7 @@ public static void spam(SWIGTYPE_p_int x, SWIGTYPE_p_int y, int z) { ... } -

        25.4.5 Enum classes

        +

        26.4.5 Enum classes

        @@ -3140,7 +3142,7 @@ The Enumerations section discussed these but om The following sub-sections detail the various types of enum classes that can be generated.

        -

        25.4.5.1 Typesafe enum classes

        +

        26.4.5.1 Typesafe enum classes

        @@ -3224,7 +3226,7 @@ The swigValue method is used for marshalling in the other direction. The toString method is overridden so that the enum name is available.

        -

        25.4.5.2 Proper Java enum classes

        +

        26.4.5.2 Proper Java enum classes

        @@ -3302,7 +3304,7 @@ These needn't be generated if the enum being wrapped does not have any initializ Simpler Java enums for enums without initializers section describes how typemaps can be used to achieve this.

        -

        25.4.5.3 Type unsafe enum classes

        +

        26.4.5.3 Type unsafe enum classes

        @@ -3333,7 +3335,7 @@ public final class Beverage { -

        25.4.6 Interfaces

        +

        26.4.6 Interfaces

        @@ -3578,7 +3580,7 @@ typemap which is only used when a class is marked with the interface fe See Java code typemaps for details.

        -

        25.5 Cross language polymorphism using directors

        +

        26.5 Cross language polymorphism using directors

        @@ -3600,7 +3602,7 @@ The upshot is that C++ classes can be extended in Java and from C++ these extens Neither C++ code nor Java code needs to know where a particular method is implemented: the combination of proxy classes, director classes, and C wrapper functions transparently takes care of all the cross-language method routing.

        -

        25.5.1 Enabling directors

        +

        26.5.1 Enabling directors

        @@ -3626,7 +3628,7 @@ The %feature directive can be applied globally, to specific classes, and to spec // generate directors for all classes that have virtual methods %feature("director"); -// generate directors for all virtual methods in class Foo +// generate directors for the virtual methods in class Foo %feature("director") Foo; @@ -3644,7 +3646,7 @@ So for example,

        -will generate directors for all virtual methods of class Foo except bar(). +will generate directors for the virtual methods of class Foo except bar().

        @@ -3668,7 +3670,7 @@ public: -

        25.5.2 Director classes

        +

        26.5.2 Director classes

        @@ -3680,7 +3682,8 @@ The director classes store a pointer to their underlying Java proxy classes.

        For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how to modify this behavior). -Thus all virtual method calls, whether they originate in C++ or in Java via proxy classes, eventually end up in at the implementation in the director class. +Virtual methods that have a final specifier are unsurprisingly excluded. +Thus the virtual method calls, whether they originate in C++ or in Java via proxy classes, eventually end up in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate place" we mean the method that would have been called if the C++ base class and its Java derived classes were seamlessly integrated. That seamless integration is exactly what the director classes provide, transparently skipping over all the messy JNI glue code that binds the two languages together. @@ -3695,7 +3698,7 @@ If the correct implementation is in Java, the Java API is used to call the metho

        -

        25.5.3 Overhead and code bloat

        +

        26.5.3 Overhead and code bloat

        @@ -3713,7 +3716,7 @@ This situation can be optimized by selectively enabling director methods (using

        -

        25.5.4 Simple directors example

        +

        26.5.4 Simple directors example

        @@ -3746,12 +3749,10 @@ Naturally, the SWIG generated C++ code and the generated Java intermediary class

        -public class DirectorDerived extends DirectorBase {
        -  public DirectorDerived() {
        -  }
        -
        +class DirectorDerived extends DirectorBase {
        +  @Override
           public void upcall_method() {
        -    System.out.println("DirectorDerived::upcall_method() invoked.");
        +    System.out.println("DirectorDerived.upcall_method() invoked.");
           }
         }
         
        @@ -3774,11 +3775,11 @@ will result in the following being output:
        -DirectorDerived::upcall_method() invoked.
        +DirectorDerived.upcall_method() invoked.
         
        -

        25.5.5 Director threading issues

        +

        26.5.5 Director threading issues

        @@ -3798,7 +3799,7 @@ Macros can be defined on the commandline when compiling your C++ code, or altern

        -

        25.5.6 Director performance tuning

        +

        26.5.6 Director performance tuning

        @@ -3819,51 +3820,192 @@ However, if all director methods are expected to usually be overridden by Java s The disadvantage is that invocation of director methods from C++ when Java doesn't actually override the method will require an additional call up into Java and back to C++. As such, this option is only useful when overrides are extremely common and instantiation is frequent enough that its performance is critical.

        -

        25.5.7 Java exceptions from directors

        +

        26.5.7 Java exceptions from directors

        With directors routing method calls to Java, and proxies routing them to C++, the handling of exceptions is an important concern. -The default behavior from SWIG 3.0 -onwards is to convert the thrown Java exception into a SWIG defined -DirectorException C++ exception. -SWIG 2.0 and earlier versions didn't provide any mechanism to handle the Java director method exceptions in C++. +The default behavior for Java exceptions thrown in a director method overridden in Java is +to store the thrown Java exception into a SWIG defined +Swig::DirectorException C++ class exception in the C++ layer and then throw this C++ exception.

        -Converting Java exceptions into C++ exceptions can be done in two different ways using -the director:except feature. -In the simplest approach, a code block is attached to each director method to -handle the mapping of Java exceptions into C++ exceptions. +Of course, should this exception be thrown, your C++ code must catch it and handle it before returning back to Java. +The default generated code does not attempt to handle the C++ exception, but there is a simple way +to make this all work by catching the C++ exception and extracting the original Java exception by using %catches for Swig::DirectorException. +Consider the example shown earlier with a modification to the upcall_method Java method to throw a Java exception:

        -%feature("director:except") MyClass::method(int x) {
        -  jthrowable $error = jenv->ExceptionOccurred();
        -  if ($error) {
        -    jenv->ExceptionClear();
        -    if (Swig::ExceptionMatches(jenv, $error, "java/lang/IndexOutOfBoundsException"))
        -      throw std::out_of_range(Swig::JavaExceptionMessage(jenv, $error).message());
        -    if (Swig::ExceptionMatches(jenv, $error, "$packagepath/MyJavaException"))
        -      throw MyCppException(Swig::JavaExceptionMessage(jenv, $error).message());
        -    throw std::runtime_error("Unexpected exception thrown in MyClass::method");
        +class DirectorDerived extends DirectorBase {
        +  @Override
        +  public void upcall_method() {
        +    System.out.println("DirectorDerived.upcall_method() invoked.");
        +    throw new RuntimeException("There was a problem!");
           }
         }
        -
        -class MyClass {
        -  /** Throws either a std::out_of_range or MyCppException on error */
        -  void method(int x);
        -}
         

        -This approach allows a flexible mapping of Java exceptions thrown by director methods into -C++ exceptions expected by a C++ caller. There -need not be any C++ exception specifications on the C++ method. The -utility function Swig::ExceptionMatches +Now, by default, the JVM will abort when example.callup(director) is called as the C++ +Swig::DirectorException (storing the Java exception) is thrown and not handled by the callup method. +Needless to say this is not very user friendly and so the recommendation is to add the following +simple %catches directive before SWIG parses the callup function: +

        + +
        +
        +%catches(Swig::DirectorException) callup;
        +
        +
        + +

        +Or target all wrapped methods using: +

        + +
        +
        +%catches(Swig::DirectorException);
        +
        +
        + +

        +This tells SWIG to generate a C++ catch handler using some code from the throws typemap for Swig::DirectorException that SWIG supplies by default, see Exception handling with %catches. +This typemap code is written to simply catch the C++ Swig::DirectorException class and immediately +return to Java throwing the original Java exception that it has stored. +The net result is a stack trace containing the original Java exception including the location that the exception was thrown from. +

        + +
        +
        +DirectorDerived.upcall_method() invoked.
        +Exception in thread "main" java.lang.RuntimeException: There was a problem!
        +    at DirectorDerived.upcall_method(runme.java:4)
        +    at exampleJNI.SwigDirector_DirectorBase_upcall_method(exampleJNI.java:20)
        +    at exampleJNI.callup(Native Method)
        +    at example.callup(example.java:12)
        +    at runme.main(runme.java:21)
        +
        +
        + +

        +More on the Swig::DirectorException class can be found in the next section which details how to customize the handling of director exceptions. +

        + +

        26.5.7.1 Customizing director exceptions

        + + +

        +This section is for advanced customization of director exceptions. +The recommendation for most users is to use the simple %catches directive described above as it should be sufficient for most users needs. +

        + +

        +The conversion of Java exceptions into C++ exceptions can be customized in two different ways using +the director:except feature. +In the first approach, a code block is attached to each director method to +handle the mapping of Java exceptions into C++ exceptions. +The code block is generated just after the call up from the C++ director method into the overloaded method in Java. Its primary function is to check if a Java exception has been thrown and then handle it in C++. +The example below converts a +java.lang.IndexOutOfBoundsException into a C++ std::out_of_range exception and converts a +user's Java MyJavaException into a C++ MyCppException exception. +If the Java exception doesn't match either of these, a fallback std::runtime_error C++ exception is thrown. +

        + +
        +
        +%feature("director:except") MyClass::dirmethod(int x) {
        +  jthrowable $error = jenv->ExceptionOccurred();
        +  if ($error) {
        +    if (Swig::ExceptionMatches(jenv, $error, "java/lang/IndexOutOfBoundsException"))
        +      throw std::out_of_range(Swig::JavaExceptionMessage(jenv, $error).message());
        +    if (Swig::ExceptionMatches(jenv, $error, "$packagepath/MyJavaException"))
        +      throw MyCppException(Swig::JavaExceptionMessage(jenv, $error).message());
        +    throw std::runtime_error("Unexpected exception thrown in MyClass::dirmethod");
        +  }
        +}
        +
        +class MyClass {
        +public:
        +  /** Throws either a std::out_of_range or MyCppException on error */
        +  virtual void dirmethod(int x);
        +  virtual ~MyClass();
        +};
        +
        +
        + +

        +A few special variables are expanded within the director:except feature. +

        +
          +
        • The special variable $error is expanded into a unique variable name (swigerror) + and should be used for the assignment of the jthrowable exception that occurred.
        • +
        • The special variable $packagepath is + replaced by the outer package provided for SWIG generation by the -package option.
        • +
        • The special variable $directorthrowshandlers is not shown above, but is replaced + by applicable "directorthrows" typemap contents (covered later in this section).
        • +
        • The special variable $null is not shown above, but is replaced + by a suitable default constructed object for returning from the director method (or nothing if + the director method has a void return). +
        • +
        + +

        +Utility functions/classes in director.swg are provided to aid the exception conversion as follows: +

        + +
        +
        +namespace Swig {
        +
        +  // Helper method to determine if a Java throwable matches a particular Java class type
        +  // Note side effect of clearing any pending exceptions
        +  bool ExceptionMatches(JNIEnv *jenv, jthrowable throwable, const char *classname);
        +
        +  // Helper class to extract the exception message from a Java throwable
        +  class JavaExceptionMessage {
        +  public:
        +    JavaExceptionMessage(JNIEnv *jenv, jthrowable throwable);
        +
        +    // Return a C string of the exception message in the jthrowable passed in the constructor
        +    // If no message is available, null_string is return instead
        +    const char *message(const char *null_string = 
        +                        "Could not get exception message in JavaExceptionMessage") const;
        +  };
        +
        +  // C++ Exception class for handling Java exceptions thrown during a director method Java upcall
        +  class DirectorException : public std::exception {
        +  public:
        +
        +    // Construct exception from a Java throwable
        +    DirectorException(JNIEnv *jenv, jthrowable throwable);
        +
        +    // More general constructor for handling as a java.lang.RuntimeException
        +    DirectorException(const char *msg);
        +
        +    // Return exception message extracted from the Java throwable
        +    const char *what() const throw();
        +
        +    // Reconstruct and raise/throw the Java Exception that caused the DirectorException
        +    // Note that any error in the JNI exception handling results in a Java RuntimeException
        +    void throwException(JNIEnv *jenv) const;
        +
        +    // Create and throw the DirectorException
        +    static void raise(JNIEnv *jenv, jthrowable throwable) {
        +      throw DirectorException(jenv, throwable);
        +    }
        +  };
        +
        +}
        +
        +
        + +

        +The utility function Swig::ExceptionMatches and class Swig::JavaExceptionMessage are provided to simplify writing code for wrappers that use the director:except feature. The function Swig::ExceptionMatches matches the type of the @@ -3871,13 +4013,10 @@ function Swig::ExceptionMatches matches the type of the name, such as "java/lang/IOError". If the throwable class is the same type, or derives from the given type, Swig::ExceptionMatches will return true. Care must be taken to provide the correct fully qualified name, since for wrapped exceptions the -generated proxy class will have additional package qualification, depending on +generated proxy class will have an additional package qualification, depending on the '-package' argument and use of the nspace - feature. The special variable $error is expanded by SWIG into a unique variable name and -should be used for the -assignment of the exception that occurred. The special variable $packagepath is -replaced by the outer package provided for SWIG generation by the -package -option. The utility class Swig::JavaExceptionMessage is a holder + feature. +The utility class Swig::JavaExceptionMessage is a holder providing access to the message from the thrown Java exception. The message() method returns the exception message as a const char *, which is only valid during the lifetime of the holder. Any code using this message @@ -3885,20 +4024,27 @@ needs to copy it, for example into a std::string or a newly constructed C++ exce

        -Using the above approach to +Using the first approach above to write handlers for a large number of methods will require -repetitive duplication of the director:except feature code. -To mitigate this, an alternative approach is provided via typemaps in a -fashion analagous to -the "throws" typemap. The -"throws" typemap provides an approach to automatically map all the C++ +repetitive duplication of the director:except feature code +for each director method. +To mitigate this, a second approach is provided via typemaps in a +fashion analogous to +the "throws" typemap. +The "throws" typemap provides a way to map all the C++ exceptions listed in a method's defined exceptions (either from a C++ exception specification or a %catches feature) into Java exceptions. The "directorthrows" typemap provides the inverse mapping and should contain code to convert a suitably matching Java exception into a C++ exception. +Only use this typemap if you wish to write custom conversions of Java exceptions into C++ exceptions +and apply them to many different methods. +The default handling which uses the Swig::DirectorException class should otherwise meet your needs. +

        + +

        The example below converts a Java java.lang.IndexOutOfBoundsException exception -to the typemap's type, that is std::out_of_range: +to the typemap's type, that is a std::out_of_range C++ exception:

        @@ -3913,7 +4059,7 @@ to the typemap's type, that is std::out_of_range:
         

        The "directorthrows" typemap is then used in conjunction with the director:except feature if the $directorthrowshandlers special variable -is used in the feature code. Consider the following, which also happens to be the default: +is used in the code block. Consider the following, which also happens to be the default:

        @@ -3921,31 +4067,41 @@ is used in the feature code. Consider the following, which also happens to be th %feature("director:except") %{ jthrowable $error = jenv->ExceptionOccurred(); if ($error) { - jenv->ExceptionClear(); $directorthrowshandlers - throw Swig::DirectorException(jenv, $error); + Swig::DirectorException::raise(jenv, $error); } %}
        -

        The code generated using the director:except feature -replaces the $directorthrowshandlers special variable with the code in -the "directorthrows" typemaps, for each and every exception defined for the method. -The possible exceptions can be defined either with a C++ exception +

        +where Swig::DirectorException::raise is the helper method to throw a C++ Swig::DirectorException, see above. +The code generated from the director:except feature +has the $directorthrowshandlers special variable replaced with the code in +the relevant "directorthrows" typemaps, for each and every exception defined for the method. +The relevant exceptions can be defined either with a C++ exception specification or %catches as described for the "throws" typemap.

        -Consider the following director method: +Let's try and put all this together by considering the following director method:

        -  ...
        +struct X {
           virtual void doSomething(int index) throw (std::out_of_range);
           ...
        +};
        +
        +OR
        +
        +%catches(std::out_of_range) X::doSomething;
        +struct X {
        +  virtual void doSomething(int index);
        +  ...
        +};
         
        @@ -3958,12 +4114,10 @@ the resulting code generated in the director method after calling up to Java wil
         jthrowable swigerror = jenv->ExceptionOccurred();
         if (swigerror) {
        -  jenv->ExceptionClear();
           if (Swig::ExceptionMatches(jenv, swigerror, "java/lang/IndexOutOfBoundsException")) {
             throw std::out_of_range(Swig::JavaExceptionMessage(jenv, swigerror).message());
           }
        -  
        -  throw Swig::DirectorException(jenv, swigerror);
        +  Swig::DirectorException::raise(jenv, swigerror);
         }
         
        @@ -3971,7 +4125,7 @@ if (swigerror) {

        Note: Beware of using exception specifications as the SWIG director methods will be generated with the same exception specifications and if the -director method throws an exception that is not specified it is likely +director method throws an exception that is not specified in the exception specifications list it is likely to terminate your program. See the C++ standard for more details. Using the %catches feature instead to define the handled exceptions does not suffer this potential fate. @@ -3979,8 +4133,9 @@ this potential fate.

        Because the default code generation maps any unhandled Java exceptions to Swig::DirectorException, any director methods that have exception -specifications may cause program termination. To simply ignore -unexpected exceptions, the default handling can be changed with: +specifications may cause program termination as this exception class won't be in the exception specifications list. +You can avoid throwing Swig::DirectorException by changing the default handling for all methods by adding a director:except feature without any method name. +For example, you can just ignore them:

        @@ -3988,8 +4143,8 @@ unexpected exceptions, the default handling can be changed with: %feature("director:except") %{ jthrowable $error = jenv->ExceptionOccurred(); if ($error) { - jenv->ExceptionClear(); $directorthrowshandlers + jenv->ExceptionClear(); return $null; // exception is ignored } %} @@ -3999,7 +4154,7 @@ unexpected exceptions, the default handling can be changed with:

        Alternatively an exception compatible with the existing director method exception specifications can be thrown. Assuming that all methods allow std::runtime_error to be thrown, -the return $null; could be changed to: +the return $null line above could be changed to:

        @@ -4009,125 +4164,297 @@ the return $null; could be changed to:

        In more complex situations, a separate director:except feature -may need to be attached to specific methods. +may need to be attached to specific methods by providing a method name to the director:except feature.

        -

        Below is a complete example demonstrating the use -of the "directorthrows" typemaps. In this example, a -generic "directorthrows" typemap is appropriate for all three exceptions - all -take single string constructors. If the exceptions had different constructors, -it would be necessary to have separate typemaps for each exception type. +

        This is all no doubt quite hard to follow without seeing a full example and some code. +Below is a complete example demonstrating the use +of most of the exception customizations one can use, that is, +"directorthrows" and "throws" typemaps, %exception and %catches. +See the Exception handling with %exception and %javaexception +section for more on converting C++ exceptions to Java exceptions. +The example also has a user defined C++ exception class called MyNS::MyException and this is wrapped as a Java exception. +The director class being wrapped is MyClass and the director method is called MyClass::dirmethod. +A number of std::cout calls have been added to help understand code flow. +You can copy the code below into an interface file and run SWIG on it and examine the generated code. -

         %module(directors="1") example
         
         %{
        -  #include <string>
           #include <stdexcept>
        +  #include <iostream>
         %}
         
        -// Define exceptions in header section using std::runtime_error
        -%define DEFINE_EXCEPTION(NAME)
        -%{
        -  namespace MyNS {
        -    struct NAME : public std::runtime_error { NAME(const std::string &what) : runtime_error(what) {} };
        +// Generic catch handler for all wrapped methods
        +%exception %{
        +  try {
        +    $action
        +  } catch (const std::exception &e) {
        +    std::cout << "Generic std::exception catch handler" << std::endl;
        +    jclass clazz = jenv->FindClass("java/lang/RuntimeException");
        +    jenv->ThrowNew(clazz, e.what()); 
        +    return $null;
           }
         %}
        -%enddef
         
        -// Expose C++ exceptions as Java Exceptions by changing the Java base class and providing a getMessage()
        -%define DECLARE_EXCEPTION(NAME)
        -%typemap(javabase) MyNS::NAME "java.lang.Exception";
        -%rename(getMessage) MyNS::NAME::what;
        +// Expose C++ exception as a Java Exception by changing the Java base class and providing a getMessage()
        +%typemap(javabase) MyNS::MyException "java.lang.RuntimeException";
        +%rename(getMessage) MyNS::MyException::whatsup;
        +
        +%inline %{
         namespace MyNS {
        -  struct NAME {
        -    NAME(const std::string& what);
        -    const char * what();
        +  class MyException {
        +    std::string msg;
        +  public:
        +    MyException(const char *msg) : msg(msg) {}
        +    const char * whatsup() const { return msg.c_str(); }
           };
         }
        -%enddef
        -
        -DEFINE_EXCEPTION(ExceptionA)
        -DEFINE_EXCEPTION(ExceptionB)
        -DEFINE_EXCEPTION(Unexpected)
        -
        -// Mark three methods to map director thrown exceptions.
        -%feature("director:except") MyClass::meth1(int);
        -%feature("director:except") MyClass::meth2;
        -%feature("director:except") meth3;
        -
        -%typemap(directorthrows) MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected %{
        -  if (Swig::ExceptionMatches(jenv, $error, "$packagepath/$javaclassname"))
        -    throw $1_type(Swig::JavaExceptionMessage(jenv, $error).message());
         %}
         
        -DECLARE_EXCEPTION(ExceptionA)
        -DECLARE_EXCEPTION(ExceptionB)
        -DECLARE_EXCEPTION(Unexpected)
        +%typemap(directorthrows) MyNS::MyException %{
        +  if (Swig::ExceptionMatches(jenv, $error, "$packagepath/MyException")) {
        +    std::cout << "$1_type exception matched (directorthrows typemap)" << std::endl;
        +    throw $1_type(Swig::JavaExceptionMessage(jenv, $error).message());
        +  }
        +%}
         
        -%catches(MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected) MyClass::meth2();
        +%typemap(throws) MyNS::MyException %{
        +  std::cout << "$1_type caught (throws typemap)" << std::endl;
        +  jclass excep = jenv->FindClass("MyException");
        +  if (excep) {
        +    std::cout << "$1_type class found (throws typemap)" << std::endl;
        +    jenv->ThrowNew(excep, $1.whatsup());
        +  }
        +  return $null;
        +%}
         
        -%inline {
        -  class MyClass {
        -  public:
        -    virtual void meth1(int x) throw(MyNS::ExceptionA, MyNS::ExceptionB) = 0;
        -    virtual void meth2() = 0;   /* throws MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected */
        -    virtual void meth3(float x) throw(MyNS::Unexpected) = 0;
        -    virtual ~MyClass() {}
        -  };
        +// These are the exceptions that the director method MyClass::dirmethod will have catch handlers for.
        +// Note that this is also a virtual method / director method and the C++ exceptions listed can be
        +// thrown after converting them from Java exceptions.
        +%catches(MyNS::MyException, Swig::DirectorException) MyClass::dirmethod;
        +
        +// These are the exceptions that call_dirmethod C++ wrapper will have catch handlers for.
        +// Note that this is not a virtual method, hence not a director method.
        +%catches(MyNS::MyException, Swig::DirectorException) call_dirmethod;
        +
        +%feature("director") MyClass;
        +
        +%feature("director:except") MyClass::dirmethod(int x) {
        +  jthrowable $error = jenv->ExceptionOccurred();
        +  if ($error) {
        +    std::cout << "Upcall finished, an exception was thrown in Java" << std::endl;
        +    $directorthrowshandlers
        +    std::cout << "Upcall finished, no exception conversion, throwing DirectorException" << std::endl;
        +    Swig::DirectorException::raise(jenv, $error);
        +  }
         }
        +
        +%inline %{
        +class MyClass {
        +public:
        +  /** Throws either a std::out_of_range or MyException on error */
        +  virtual void dirmethod(int x) {
        +    if (x <= 0)
        +      throw std::out_of_range("MyClass::dirmethod index is out of range");
        +    else if (x == 1)
        +      throw MyNS::MyException("MyClass::dirmethod some problem!");
        +  }
        +  virtual ~MyClass() {}
        +  static void call_dirmethod(MyClass& c, int x) {
        +    return c.dirmethod(x);
        +  }
        +};
        +%}
         

        -In this case the three different "directorthrows" typemaps will be used -to generate the three different exception handlers for -meth1, meth2 and meth3. The generated -handlers will have "if" blocks for each exception type specified, in -the exception specification or %catches feature. -

        - -

        Note that the "directorthrows" typemaps are important -only if it is important for the the exceptions passed through the C++ -layer to be mapped to distinct C++ exceptions. If director methods -are being called by C++ code that is itself wrapped in a -SWIG generated Java wrapper and access is always through this wrapper, -the default Swig::DirectorException class provides enough information -to reconstruct the original exception. In this case removing the -$directorthrowshandlers special variable from the -default director:except feature and simply always -throwing a Swig::DirectorException will achieve the desired result. -Along with this a generic exception feature is added to convert any -caught Swig::DirectorExceptions back into the underlying -Java exceptions via the Swig::DirectorException::raiseJavaException method, -as demonstrated with %javaexception below: +The generated code for the call_dirmethod wrapper contains the various exception handlers. +The outer exception handler is from the %exception directive and the others +are from the "throws" typemaps.

        -%javaexception("Exception") MyClass::myMethod %{
        +SWIGEXPORT void JNICALL Java_exampleJNI_MyClass_1call_1dirmethod(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
        +  ...
           try {
        -    $action
        -  } catch (Swig::DirectorException &e) {
        -    // raise/throw the Java exception that originally caused the DirectorException
        -    e.raiseJavaException(jenv);
        -    return $null;
        +    try {
        +      MyClass::call_dirmethod(*arg1,arg2);
        +    } catch(MyNS::MyException &_e) {
        +      std::cout << "MyNS::MyException caught (throws typemap)" << std::endl;
        +      jclass excep = jenv->FindClass("MyException");
        +      if (excep) {
        +        std::cout << "MyNS::MyException class found (throws typemap)" << std::endl;
        +        jenv->ThrowNew(excep, (&_e)->whatsup());
        +      }
        +      return ;
        +      
        +    } catch(Swig::DirectorException &_e) {
        +      (&_e)->throwException(jenv);
        +      return ; 
        +    }
        +  } catch (const std::exception &e) {
        +    std::cout << "Generic std::exception catch handler" << std::endl;
        +    jclass clazz = jenv->FindClass("java/lang/RuntimeException");
        +    jenv->ThrowNew(clazz, e.what()); 
        +    return ;
           }
        -%}
         

        -See the Exception handling with %exception and %javaexception -section for more on converting C++ exceptions to Java exceptions. +The director method calling up to Java contains the exception handling code from the "directorthrows" typemaps and director:except feature.

        -

        25.6 Accessing protected members

        +
        +
        +void SwigDirector_MyClass::dirmethod(int x) {
        +      ... [call up to Java using CallStaticVoidMethod]
        +      jthrowable swigerror = jenv->ExceptionOccurred();
        +      if (swigerror) {
        +        std::cout << "Upcall finished, an exception was thrown in Java" << std::endl;
        +        
        +        if (Swig::ExceptionMatches(jenv, swigerror, "MyException")) {
        +          std::cout << "MyNS::MyException exception matched (directorthrows typemap)" << std::endl;
        +          throw MyNS::MyException(Swig::JavaExceptionMessage(jenv, swigerror).message());
        +        }
        +        
        +        std::cout << "Upcall finished, no exception conversion, throwing DirectorException" << std::endl;
        +        Swig::DirectorException::raise(jenv, swigerror);
        +      }
        +
        +
        + +

        +Let's use the following Java class to override the director method. +

        + +
        +
        +class DerivedClass extends MyClass {
        +  @Override
        +  public void dirmethod(int x) {
        +    if (x < 0)
        +      throw new IndexOutOfBoundsException("Index is negative");
        +    else if (x == 0)
        +      throw new MyException("MyException: bad dirmethod");
        +  }
        +}
        +public class runme {
        +  public static void main(String argv[]) {
        +    System.loadLibrary("example");
        +    ... code snippets shown below ...
        +  }
        +}
        +
        +
        + +

        +Consider the output using the Java code in the four slightly different scenarios below. +

        + +

        +1. Non-director C++ class is used, thus, no upcall to a Java director method is made. +A std::out_of_range exception is thrown, which is derived from std::exception, +and hence caught by the generic exception handler in the call_dirmethod wrapper. +The Java code snippet and resulting output is: +

        + + +
        +
        +MyClass.call_dirmethod(new MyClass(), 0);
        +
        +
        + +
        +
        +Generic std::exception catch handler
        +Exception in thread "main" java.lang.RuntimeException: MyClass::dirmethod index is out of range
        +        at exampleJNI.MyClass_call_dirmethod(Native Method)
        +        at MyClass.call_dirmethod(MyClass.java:57)
        +        at runme.main(runme.java:14)
        +
        +
        + +

        +2. Non-director C++ class again but this time the MyNS::MyException class is thrown and caught: +

        + +
        +
        +MyClass.call_dirmethod(new MyClass(), 1);
        +
        +
        + +
        +
        +MyNS::MyException caught (throws typemap)
        +MyNS::MyException class found (throws typemap)
        +Exception in thread "main" MyException: MyClass::dirmethod some problem!
        +        at exampleJNI.MyClass_call_dirmethod(Native Method)
        +        at MyClass.call_dirmethod(MyClass.java:57)
        +        at runme.main(runme.java:15)
        +
        +
        + +

        +3. The DerivedClass director class is used so the upcall to Java occurs, but it throws +a Java MyException, which gets converted into a C++ MyNS::MyException, then caught and converted back +into a Java MyException: +

        + +
        +
        +MyClass.call_dirmethod(new DerivedClass(), 0);
        +
        +
        + +
        +
        +Upcall finished, an exception was thrown in Java
        +MyNS::MyException exception matched (directorthrows typemap)
        +MyNS::MyException caught (throws typemap)
        +MyNS::MyException class found (throws typemap)
        +Exception in thread "main" MyException: MyException: bad dirmethod
        +        at exampleJNI.MyClass_call_dirmethod(Native Method)
        +        at MyClass.call_dirmethod(MyClass.java:57)
        +        at runme.main(runme.java:16)
        +
        +
        + +

        +4. The director class is used again, but this time the director method throws a Java IndexOutOfBoundsException exception which is converted into a C++ Swig::DirectorException, thrown and caught again. +This time the original Java exception is extracted from the Swig::DirectorException and rethrown. +Note that this approach keeps the stack trace information of the original exception, so it has the exact location of where the IndexOutOfBoundsException exception was thrown. +This is arguably an improvement over the approach above that converts from a Java excepton to C++ exception and then back to a new Java exception, losing the location of the original exception. +

        + +
        +
        +MyClass.call_dirmethod(new DerivedClass(), -1);
        +
        +
        + +
        +
        +Upcall finished, an exception was thrown in Java
        +Upcall finished, no exception conversion, throwing DirectorException
        +Exception in thread "main" java.lang.IndexOutOfBoundsException: Index is negative
        +        at DerivedClass.dirmethod(runme.java:5)
        +        at exampleJNI.SwigDirector_MyClass_dirmethod(exampleJNI.java:23)
        +        at exampleJNI.MyClass_call_dirmethod(Native Method)
        +        at MyClass.call_dirmethod(MyClass.java:57)
        +        at runme.main(runme.java:17)
        +
        +
        + +

        26.6 Accessing protected members

        @@ -4223,7 +4550,7 @@ class MyProtectedBase extends ProtectedBase -

        25.7 Common customization features

        +

        26.7 Common customization features

        @@ -4235,7 +4562,7 @@ be awkward. This section describes some common SWIG features that are used to improve the interface to existing C/C++ code.

        -

        25.7.1 C/C++ helper functions

        +

        26.7.1 C/C++ helper functions

        @@ -4301,7 +4628,7 @@ hard to implement. It is possible to improve on this using Java code, typemaps, customization features as covered in later sections, but sometimes helper functions are a quick and easy solution to difficult cases.

        -

        25.7.2 Class extension with %extend

        +

        26.7.2 Class extension with %extend

        @@ -4323,16 +4650,16 @@ struct Vector { %extend Vector { char *toString() { - static char tmp[1024]; - sprintf(tmp, "Vector(%g, %g, %g)", $self->x, $self->y, $self->z); - return tmp; + static char tmp[1024]; + sprintf(tmp, "Vector(%g, %g, %g)", $self->x, $self->y, $self->z); + return tmp; } Vector(double x, double y, double z) { - Vector *v = (Vector *) malloc(sizeof(Vector)); - v->x = x; - v->y = y; - v->z = z; - return v; + Vector *v = (Vector *) malloc(sizeof(Vector)); + v->x = x; + v->y = y; + v->z = z; + return v; } }; @@ -4364,7 +4691,7 @@ Vector(2, 3, 4) in any way---the extensions only show up in the Java interface.

        -

        25.7.3 Class extension with %proxycode

        +

        26.7.3 Class extension with %proxycode

        @@ -4501,7 +4828,7 @@ public class ValueUnsignedInt {

        -

        25.7.4 Exception handling with %exception and %javaexception

        +

        26.7.4 Exception handling with %exception and %javaexception

        @@ -4660,7 +4987,7 @@ to raise exceptions. See the SWIG Library ch The typemap example Handling C++ exception specifications as Java exceptions provides further exception handling capabilities.

        -

        25.7.5 Method access with %javamethodmodifiers

        +

        26.7.5 Method access with %javamethodmodifiers

        @@ -4686,7 +5013,7 @@ protected static void protect_me() { -

        25.8 Tips and techniques

        +

        26.8 Tips and techniques

        @@ -4696,7 +5023,7 @@ strings and arrays. This chapter discusses the common techniques for solving these problems.

        -

        25.8.1 Input and output parameters using primitive pointers and references

        +

        26.8.1 Input and output parameters using primitive pointers and references

        @@ -4870,7 +5197,7 @@ void foo(Bar *OUTPUT); will not have the intended effect since typemaps.i does not define an OUTPUT rule for Bar.

        -

        25.8.2 Simple pointers

        +

        26.8.2 Simple pointers

        @@ -4936,7 +5263,7 @@ System.out.println("3 + 4 = " + result); See the SWIG Library chapter for further details.

        -

        25.8.3 Wrapping C arrays with Java arrays

        +

        26.8.3 Wrapping C arrays with Java arrays

        @@ -5003,7 +5330,7 @@ Please be aware that the typemaps in this library are not efficient as all the e There is an alternative approach using the SWIG array library and this is covered in the next section.

        -

        25.8.4 Unbounded C Arrays

        +

        26.8.4 Unbounded C Arrays

        @@ -5148,7 +5475,7 @@ well suited for applications in which you need to create buffers, package binary data, etc.

        -

        25.8.5 Binary data vs Strings

        +

        26.8.5 Binary data vs Strings

        @@ -5192,7 +5519,7 @@ len: 5 data: 68 69 0 6a 6b -

        25.8.6 Overriding new and delete to allocate from Java heap

        +

        26.8.6 Overriding new and delete to allocate from Java heap

        @@ -5266,7 +5593,7 @@ void * operator new(size_t t) { throw bad_alloc(); pJalloc->ref = 0; return static_cast<void *>( - static_cast<char *>(static_cast<void *>(pJalloc)) + sizeof(Jalloc)); + static_cast<char *>(static_cast<void *>(pJalloc)) + sizeof(Jalloc)); } } @@ -5309,7 +5636,7 @@ model and use these functions in place of malloc and free in your own code.

        -

        25.9 Java typemaps

        +

        26.9 Java typemaps

        @@ -5317,7 +5644,7 @@ This section describes how you can modify SWIG's default wrapping behavior for various C/C++ datatypes using the %typemap directive. You are advised to be familiar with the material in the "Typemaps" chapter. While not absolutely essential knowledge, this section assumes some familiarity with the Java Native Interface (JNI). -JNI documentation can be consulted either online at Sun's Java web site or from a good JNI book. +JNI documentation can be consulted either online at the Java web site or from a good JNI book. The following two books are recommended:

        -

        25.10.10 Struct pointer to pointer

        +

        26.10.10 Struct pointer to pointer

        @@ -7938,7 +8282,7 @@ The C functional interface has been completely morphed into an object-oriented i the Butler class would behave much like any pure Java class and feel more natural to Java users.

        -

        25.10.11 Memory management when returning references to member variables

        +

        26.10.11 Memory management when returning references to member variables

        @@ -7953,7 +8297,7 @@ Consider the following C++ code:

         struct Wheel {
           int size;
        -  Wheel(int sz) : size(sz) {}
        +  Wheel(int sz = 0) : size(sz) {}
         };
         
         class Bike {
        @@ -8061,7 +8405,7 @@ public class Bike {
         Note the addReference call.
         

        -

        25.10.12 Memory management for objects passed to the C++ layer

        +

        26.10.12 Memory management for objects passed to the C++ layer

        @@ -8113,7 +8457,7 @@ System.out.println("element value: " + container.getElement().getValue());

        The C++ code will always print out 20, but the value printed out may not be this in the Java equivalent code. -In order to understand why, consider a garbage collection occuring... +In order to understand why, consider a garbage collection occurring...

        @@ -8142,42 +8486,54 @@ public class Container { // Ensure that the GC doesn't collect any Element set from Java // as the underlying C++ class stores a shallow copy private Element elementReference; - private long getCPtrAndAddReference(Element element) { - elementReference = element; - return Element.getCPtr(element); - } public void setElement(Element e) { - exampleJNI.Container_setElement(swigCPtr, this, getCPtrAndAddReference(e), e); + exampleJNI.Container_setElement(swigCPtr, this, Element.getCPtr(e), e); + elementReference = e; } }

        -The following typemaps will generate the desired code. -The 'javain' typemap matches the input parameter type for the setElement method. -The 'javacode' typemap simply adds in the specified code into the Java proxy class. +The following typemaps can be used to generate this code:

        -%typemap(javain) Element *e "getCPtrAndAddReference($javainput)"
        -
         %typemap(javacode) Container %{
           // Ensure that the GC doesn't collect any element set from Java
           // as the underlying C++ class stores a shallow copy
           private Element elementReference;
        -  private long getCPtrAndAddReference(Element element) {
        -    elementReference = element;
        -    return Element.getCPtr(element);
        -  }
         %}
        +
        +%typemap(javain, 
        +         post="      elementReference = $javainput;"
        +         ) Element *e "Element.getCPtr($javainput)"
         
        +

        +The 'javacode' typemap simply adds in the specified code into the Java proxy class. +The 'javain' typemap matches the input parameter type and name for the setElement method and +the 'post' typemap attribute allows adding code after the JNI call. +The 'post' code is generated into a finally block after the JNI call so the resulting code isn't quite +as mentioned earlier, setElement is actually: +

        -

        25.10.13 Date marshalling using the javain typemap and associated attributes

        +
        +
        +  public void setElement(Element e) {
        +    try {
        +      exampleJNI.Container_setElement(swigCPtr, this, Element.getCPtr(e), e);
        +    } finally {
        +      elementReference = e;
        +    }
        +  }
        +
        +
        + +

        26.10.13 Date marshalling using the javain typemap and associated attributes

        @@ -8243,7 +8599,7 @@ The CDate & and const CDate & Java code is generated f

        where '$javaclassname' is translated into the proxy class name, CDate and '$javainput' is translated into the name of the parameter, eg dateIn. -From Java, the intention is then to call into a modifed API with something like: +From Java, the intention is then to call into a modified API with something like:

        @@ -8354,7 +8710,7 @@ A few things to note: -

        25.11 Living with Java Directors

        +

        26.11 Living with Java Directors

        @@ -8533,10 +8889,10 @@ public abstract class UserVisibleFoo extends Foo {

      • -

        25.12 Odds and ends

        +

        26.12 Odds and ends

        -

        25.12.1 JavaDoc comments

        +

        26.12.1 JavaDoc comments

        @@ -8592,7 +8948,7 @@ public class Barmy { -

        25.12.2 Functional interface without proxy classes

        +

        26.12.2 Functional interface without proxy classes

        @@ -8653,7 +9009,7 @@ All destructors have to be called manually for example the delete_Foo(foo) -

        25.12.3 Using your own JNI functions

        +

        26.12.3 Using your own JNI functions

        @@ -8703,7 +9059,7 @@ This directive is only really useful if you want to mix your own hand crafted JN

        -

        25.12.4 Performance concerns and hints

        +

        26.12.4 Performance concerns and hints

        @@ -8724,7 +9080,7 @@ However, you will have to be careful about memory management and make sure that This method normally calls the C++ destructor or free() for C code.

        -

        25.12.5 Debugging

        +

        26.12.5 Debugging

        @@ -8746,7 +9102,7 @@ The -verbose:jni and -verbose:gc are also useful options for monitoring code beh

        -

        25.13 Java Examples

        +

        26.13 Java Examples

        diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Javascript.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Javascript.html similarity index 93% rename from winx64/bin/swig-3.0.12/Doc/Manual/Javascript.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Javascript.html index b1ec3705..417ee458 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Javascript.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Javascript.html @@ -1,13 +1,13 @@ - + -

        26 SWIG and Javascript

        +

        27 SWIG and Javascript

          @@ -52,21 +52,21 @@

          This chapter describes SWIG's support of Javascript. It does not cover SWIG basics, but only information that is specific to this module.

          -

          26.1 Overview

          +

          27.1 Overview

          Javascript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. Its arguably the most popular language for web development. -Javascript has gone beyond being a browser-based scripting language and with node.js, it is also used as a backend development language.

          +Javascript has gone beyond being a browser-based scripting language and with node.js, it is also used as a backend development language.

          Native Javascript extensions can be used for applications that embed a web-browser view or that embed a Javascript engine (such as node.js). Extending a general purpose web-browser is not possible as this would be a severe security issue.

          -

          SWIG Javascript currently supports JavascriptCore, the Javascript engine used by Safari/Webkit, and v8, which is used by Chromium and node.js.

          -

          WebKit is a modern browser implementation available as open-source which can be embedded into an application. +

          SWIG Javascript currently supports JavascriptCore, the Javascript engine used by Safari/Webkit, and v8, which is used by Chromium and node.js.

          +

          WebKit is a modern browser implementation available as open-source which can be embedded into an application. With node-webkit there is a platform which uses Google's Chromium as Web-Browser widget and node.js for javascript extensions.

          -

          26.2 Preliminaries

          +

          27.2 Preliminaries

          -

          26.2.1 Running SWIG

          +

          27.2.1 Running SWIG

          Suppose that you defined a SWIG module such as the following:

          @@ -101,7 +101,7 @@ that era had a component > 99. For example:

           $ swig -c++ -javascript -v8 -DV8_VERSION=0x032530 example.i
        -

        If you're targetting V8 >= 4.3.0, you would just run swig like so:

        +

        If you're targeting V8 >= 4.3.0, you would just run swig like so:

         $ swig -c++ -javascript -v8 example.i
        @@ -121,7 +121,7 @@ void example_initialize(v8::Handle<v8::Object> exports) Note: be aware that v8 has a C++ API, and thus, the generated modules must be compiled as C++.

        -

        26.2.2 Running Tests and Examples

        +

        27.2.2 Running Tests and Examples

        The configuration for tests and examples currently supports Linux and Mac only and not MinGW (Windows) yet.

        @@ -153,7 +153,7 @@ $ make check-javascript-test-suite ENGINE=jsc $ make check-javascript-examples V8_VERSION=0x032530 ENGINE=v8
        -

        26.2.3 Known Issues

        +

        27.2.3 Known Issues

        At the moment, the Javascript generators pass all tests syntactically, i.e., the generated source code compiles. However, there are still remaining runtime issues.

        @@ -161,7 +161,7 @@ $ make check-javascript-examples V8_VERSION=0x032530 ENGINE=v8
        • Default optional arguments do not work for all targeted interpreters

        • Multiple output arguments do not work for JSC

        • -
        • C89 incompatibily: the JSC generator might still generate C89 violating code

        • +
        • C89 incompatibility: the JSC generator might still generate C89 violating code

        • long long is not supported

        • %native is not supported

        • Javascript callbacks are not supported

        • @@ -170,12 +170,12 @@ $ make check-javascript-examples V8_VERSION=0x032530 ENGINE=v8

          The primary development environment has been Linux (Ubuntu 12.04). Windows and Mac OS X have been tested sporadically. Therefore, the generators might have more issues on those platforms. Please report back any problem you observe to help us improving this module quickly.

          -

          26.3 Integration

          +

          27.3 Integration

          This chapter gives a short introduction how to use a native Javascript extension: as a node.js module, and as an extension for an embedded Webkit.

          -

          26.3.1 Creating node.js Extensions

          +

          27.3.1 Creating node.js Extensions

          To install node.js you can download an installer from their web-site for Mac OS X and Windows. For Linux you can either build the source yourself and run sudo checkinstall or keep to the (probably stone-age) packaged version. For Ubuntu there is a PPA available.

          @@ -221,7 +221,7 @@ require("./build/Release/example")

          A more detailed explanation is given in the Examples section.

          -

          26.3.1.1 Troubleshooting

          +

          27.3.1.1 Troubleshooting

            @@ -233,12 +233,12 @@ require("./build/Release/example") $ sudo apt-get remove gyp -

            26.3.2 Embedded Webkit

            +

            27.3.2 Embedded Webkit

            Webkit is pre-installed on Mac OS X and available as a library for GTK.

            -

            26.3.2.1 Mac OS X

            +

            27.3.2.1 Mac OS X

            There is general information about programming with WebKit on Apple Developer Documentation. Details about Cocoa programming are not covered here.

            @@ -286,10 +286,10 @@ extern bool example_initialize(JSGlobalContextRef context, JSObjectRef* exports) @end -

            26.3.2.2 GTK

            +

            27.3.2.2 GTK

            -

            There is general information about programming GTK at GTK documentation and in the GTK tutorial, and for Webkit there is a Webkit GTK+ API Reference.

            +

            There is general information about programming GTK at GTK documentation and in the GTK tutorial, and for Webkit there is a Webkit GTK+ API Reference.

            An integration of a native extension 'example' would look like this:

            @@ -331,7 +331,7 @@ int main(int argc, char* argv[])
             }
            -

            26.3.3 Creating Applications with node-webkit

            +

            27.3.3 Creating Applications with node-webkit

            To get started with node-webkit there is a very informative set of wiki pages.

            @@ -422,12 +422,12 @@ open new windows, and many more things. }; -

            26.4 Examples

            +

            27.4 Examples

            Some basic examples are shown here in more detail.

            -

            26.4.1 Simple

            +

            27.4.1 Simple

            The common example simple looks like this:

            @@ -477,7 +477,7 @@ example.Foo = 3.1415926;

            Note: ECMAScript 5, the currently implemented Javascript standard, does not have modules. node.js and other implementations provide this mechanism defined by the CommonJS group. For browsers this is provided by Browserify, for instance.

            -

            26.4.2 Class

            +

            27.4.2 Class

            The common example class defines three classes, Shape, Circle, and Square:

            @@ -604,15 +604,15 @@ at ReadStream.EventEmitter.emit (events.js:98:17) at emitKey (readline.js:1095:12)

            -Note: In ECMAScript 5 there is no concept for classes. Instead each function can be used as a constructor function which is executed by the 'new' operator. Furthermore, during construction the key property prototype of the constructor function is used to attach a prototype instance to the created object. A prototype is essentially an object itself that is the first-class delegate of a class used whenever the access to a property of an object fails. The very same prototype instance is shared among all instances of one type. Prototypal inheritance is explained in more detail on in Inheritance and the prototype chain, for instance. +Note: In ECMAScript 5 there is no concept for classes. Instead each function can be used as a constructor function which is executed by the 'new' operator. Furthermore, during construction the key property prototype of the constructor function is used to attach a prototype instance to the created object. A prototype is essentially an object itself that is the first-class delegate of a class used whenever the access to a property of an object fails. The very same prototype instance is shared among all instances of one type. Prototypal inheritance is explained in more detail on in Inheritance and the prototype chain, for instance.

            -

            26.5 Implementation

            +

            27.5 Implementation

            The Javascript Module implementation has taken a very different approach compared to other language modules in order to support different Javascript interpreters.

            -

            26.5.1 Source Code

            +

            27.5.1 Source Code

            The Javascript module is implemented in Source/Modules/javascript.cxx. It dispatches the code generation to a JSEmitter instance, V8Emitter or JSCEmitter. Additionally there are some helpers: Template, for templated code generation, and JSEmitterState, which is used to manage state information during AST traversal. This rough map shall make it easier to find a way through this huge source file:

            @@ -713,7 +713,7 @@ Template::Template(const String *code_) { ... } ... -

            26.5.2 Code Templates

            +

            27.5.2 Code Templates

            All generated code is created on the basis of code templates. The templates for JavascriptCore can be found in Lib/javascript/jsc/javascriptcode.swg, for v8 in Lib/javascript/v8/javascriptcode.swg.

            @@ -752,7 +752,7 @@ t_register.replace("$jsparent", state.clazz(NAME_MANGLED))

            Template creates a copy of that string and Template::replace uses Swig's Replaceall to replace variables in the template. Template::trim can be used to eliminate leading and trailing whitespaces. Template::print is used to write the final template string to a Swig DOH (based on Printv). All methods allow chaining.

            -

            26.5.3 Emitter

            +

            27.5.3 Emitter

            The Javascript module delegates code generation to a JSEmitter instance. The following extract shows the essential interface:

            @@ -871,7 +871,7 @@ int JAVASCRIPT::classHandler(Node *n) {

            In enterClass the emitter stores state information that is necessary when processing class members. In exitClass the wrapper code for the whole class is generated.

            -

            26.5.4 Emitter states

            +

            27.5.4 Emitter states

            For storing information during the AST traversal the emitter provides a JSEmitterState with different slots to store data representing the scopes global, class, function, and variable.

            @@ -915,7 +915,7 @@ state.clazz(NAME, Getattr(n, "sym:name"));

            State information can be retrieved using state.clazz(NAME) or with Getattr on state.clazz() which actually returns a Hash instance.

            -

            26.5.5 Handling Exceptions in JavascriptCore

            +

            27.5.5 Handling Exceptions in JavascriptCore

            Applications with an embedded JavascriptCore should be able to present detailed exception messages that occur in the Javascript engine. Below is an example derived from code provided by Brian Barnes on how these exception details can be extracted.

            diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Library.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Library.html similarity index 89% rename from winx64/bin/swig-3.0.12/Doc/Manual/Library.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Library.html index 4bad9a03..eeb2e5a5 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Library.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Library.html @@ -7,31 +7,38 @@ -

            9 SWIG library

            +

            11 SWIG library

            -

            9.4 STL/C++ Library

            +

            11.4 STL/C++ library

            @@ -1385,16 +1393,24 @@ The following table shows which C++ classes are supported and the equivalent SWI SWIG Interface library file + std::array (C++11) array std_array.i std::auto_ptr memory std_auto_ptr.i + std::complex complex std_complex.i std::deque deque std_deque.i std::list list std_list.i std::map map std_map.i + std::multimap (C++11) multimap std_multimap.i + std::multiset (C++11) multiset std_multiset.i std::pair utility std_pair.i std::set set std_set.i std::string string std_string.i + std::unordered_map (C++11) unordered_map std_unordered_map.i + std::unordered_multimap (C++11) unordered_multimap std_unordered_multimap.i + std::unordered_multiset (C++11) unordered_multiset std_unordered_multiset.i + std::unordered_set (C++11) unordered_set std_unordered_set.i std::vector vector std_vector.i - std::array array (C++11) std_array.i - std::shared_ptr shared_ptr (C++11) std_shared_ptr.i + std::wstring wstring std_wstring.i + std::shared_ptr (C++11) shared_ptr std_shared_ptr.i @@ -1404,7 +1420,7 @@ Please look for the library files in the appropriate language library directory.

            -

            9.4.1 std::string

            +

            11.4.1 std::string

            @@ -1460,7 +1476,7 @@ In the target language:

             x = my_struct();
            -x.foo="Hello World";      # assign with string
            +x.foo = "Hello World";    # assign with string
             print x.foo;              # print as string
             
            @@ -1488,7 +1504,7 @@ void foo(string s, const String &t); // std_string typemaps still applie
            -

            9.4.2 std::vector

            +

            11.4.2 std::vector

            @@ -1667,7 +1683,7 @@ if you want to make their head explode. details and the public API exposed to the interpreter vary.

            -

            9.4.3 STL exceptions

            +

            11.4.3 STL exceptions

            @@ -1717,7 +1733,10 @@ The %exception directive can be used by placing the following code befo Any thrown STL exceptions will then be gracefully handled instead of causing a crash.

            -

            9.4.4 shared_ptr smart pointer

            +

            11.4.4 shared_ptr smart pointer

            + + +

            11.4.4.1 shared_ptr basics

            @@ -1813,8 +1832,11 @@ System.out.println(val1 + " " + val2); +

            11.4.4.2 shared_ptr and inheritance

            + +

            -This shared_ptr library works quite differently to SWIG's normal, but somewhat limited, +The shared_ptr library works quite differently to SWIG's normal, but somewhat limited, smart pointer handling. The shared_ptr library does not generate extra wrappers, just for smart pointer handling, in addition to the proxy class. The normal proxy class including inheritance relationships is generated as usual. @@ -1892,7 +1914,7 @@ Adding the missing %shared_ptr macros will fix this:

            -%include "boost_shared_ptr.i"
            +%include <boost_shared_ptr.i>
             %shared_ptr(GrandParent);
             %shared_ptr(Parent);
             %shared_ptr(Child);
            @@ -1901,14 +1923,79 @@ Adding the missing %shared_ptr macros will fix this:
             
            +

            11.4.4.3 shared_ptr and method overloading

            + +

            -Note: There is somewhat limited support for %shared_ptr and the director feature -and the degrees of success varies among the different target languages. -Please help to improve this support by providing patches with improvements. +A C++ compiler can disambiguate a method overloaded by a shared_ptr and one using the raw underlying type. +For example, either one of these methods can be called in C++: +

            + +
            +
            +int age(std::shared_ptr<GrandParent> num);
            +int age(GrandParent& num);
            +
            +
            + +

            +When wrapped by SWIG, disambiguation is not possible using the overloaded names as there is just one equivalent type (GrandParent) in the target language. +SWIG will choose to wrap just the first method by default. +Ambiguity in overloading discusses ways to control which method(s) gets wrapped using %ignore or %rename. +For the interested reader, SWIG detects that they are equivalent types via the typecheck typemaps in the shared_ptr library. +

            + +

            11.4.4.4 shared_ptr and templates

            + + +

            +The %shared_ptr macro should be used for all the required instantiations +of the template before each of the %template instantiations. +For example, consider number.h containing the following illustrative template: +

            + +
            +
            +#include <memory>
            +
            +template<int N> struct Number {
            +  int num;
            +  Number() : num(N) {}
            +  static std::shared_ptr<Number<N>> make() { return std::make_shared<Number<N>>(); }
            +};
            +
            +
            + +

            +The SWIG code below shows the required ordering: +

            + +
            +
            +%include <std_shared_ptr.i>
            +
            +%shared_ptr(Number<10>);
            +%shared_ptr(Number<42>);
            +
            +%{
            +  #include "number.h"
            +%}
            +%include "number.h"
            +
            +%template(Number10) Number<10>;
            +%template(Number42) Number<42>;
            +
            +
            + +

            11.4.4.5 shared_ptr and directors

            + + +

            +The languages that support shared_ptr also have support for using shared_ptr with directors.

            -

            9.4.5 auto_ptr smart pointer

            +

            11.4.5 auto_ptr smart pointer

            @@ -1957,10 +2044,10 @@ int value = k.getValue(); -

            9.5 Utility Libraries

            +

            11.5 Utility Libraries

            -

            9.5.1 exception.i

            +

            11.5.1 exception.i

            diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Lisp.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Lisp.html similarity index 72% rename from winx64/bin/swig-3.0.12/Doc/Manual/Lisp.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Lisp.html index ba42f735..6eb448a1 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Lisp.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Lisp.html @@ -7,11 +7,10 @@ -

            27 SWIG and Common Lisp

            +

            29 SWIG and Common Lisp

            @@ -38,26 +34,17 @@ finance, and also common in computer science education. There are more than 9 different implementations of common lisp which are available, all have different foreign function - interfaces. SWIG currently supports only the Allegro Common - Lisp, Common Foreign Function Interface(CFFI), CLisp and UFFI - foreign function interfaces. -

            -

            27.1 Allegro Common Lisp

            - - -

            - Allegro Common Lisp support in SWIG has been updated to include - support for both C and C++. You can read about the interface - here + interfaces. SWIG currently supports the + Common Foreign Function Interface(CFFI).

            -

            27.2 Common Foreign Function Interface(CFFI)

            +

            29.2 Common Foreign Function Interface(CFFI)

            CFFI, the Common Foreign Function Interface, is a portable foreign - function interface for ANSI Common Lisp systems, similar in - spirit to UFFI. Unlike UFFI, CFFI requires only a small set of + function interface for ANSI Common Lisp systems. + CFFI requires only a small set of low-level functionality from the Lisp implementation, such as calling a foreign function by name, allocating foreign memory, and dereferencing pointers. @@ -78,18 +65,9 @@ swig -cffi -module module-name file-name files and the various things which you can do with them.

            -

            27.2.1 Additional Commandline Options

            +

            29.2.1 Additional Commandline Options

            -

            -The following table list the additional commandline options available for the CLISP module. They can also be seen by using: -

            - -
            -swig -cffi -help 
            -
            -
            - @@ -119,12 +97,15 @@ swig -cffi -help
            CFFI specific options
            -

            27.2.2 Generating CFFI bindings

            +

            29.2.2 Generating CFFI bindings

            +

            + As we mentioned earlier the ideal way to use SWIG is to use interface files. To illustrate the use of it, let's assume that we have a file named test.h with the following C code: +

             #define y 5
            @@ -155,7 +136,10 @@ void lispsort_double (int n, double * array);
             enum color { RED, BLUE, GREEN};
             
            +

            Corresponding to this we will write a simple interface file: +

            +
             %module test
             
            @@ -163,7 +147,9 @@ Corresponding to this we will write a simple interface file:
             
             
            +

            The generated SWIG Code will be: +

             ;;;SWIG wrapper code starts here
            @@ -395,7 +381,7 @@ The feature intern_function ensures that all C names are
             
             
            -

            27.2.3 Generating CFFI bindings for C++ code

            +

            29.2.3 Generating CFFI bindings for C++ code

            This feature to SWIG (for CFFI) is very new and still far from @@ -430,8 +416,10 @@ Also, while parsing the C++ file and generating C wrapper code SWIG %include "target/header.h" +

            Various features which were available for C headers can also be used here. The target header which we are going to use here is: +

             namespace OpenDemo {
               class Test
            @@ -478,8 +466,10 @@ namespace OpenDemo {
             %include "test.cpp"
             
            +

            SWIG generates 3 files, the first one is a C wrap which we don't show, the second is the plain CFFI wrapper which is as shown below: +

             (cffi:defcfun ("_wrap_Test_x_set" Test_x_set) :void
               (self :pointer)
            @@ -528,11 +518,13 @@ SWIG generates 3 files, the first one is a C wrap which we don't show,
             (cffi:defcfun ("_wrap_RandomUnitVectorOnXZPlane" RandomUnitVectorOnXZPlane) :pointer)
             
            +

            The output is pretty good but it fails in disambiguating overloaded functions such as the constructor, in this case. One way of resolving this problem is to make the interface use the rename directiv, but hopefully there are better solutions. In addition SWIG also generates, a CLOS file +

            @@ -568,7 +560,7 @@ If you have any questions, suggestions, patches, etc., related to CFFI
                   module feel free to contact us on the SWIG mailing list, and
                   also please add a "[CFFI]" tag in the subject line.
             
            -

            27.2.4 Inserting user code into generated files

            +

            29.2.4 Inserting user code into generated files

            @@ -608,195 +600,5 @@ Note that the block %{ ... %} is effectively a shortcut for

            -

            27.3 CLISP

            - - -

            -CLISP is a feature-loaded - implementation of common lisp which is portable across most of the - operating system environments and hardware. CLISP includes an - interpreter, a compiler, a debugger, CLOS, MOP, a foreign - language interface, i18n, regular expressions, a socket - interface, and more. An X11 interface is available through CLX, - Garnet and CLUE/CLIO. Command line editing is provided by - readline. CLISP runs Maxima, ACL2 and many other Common Lisp - packages. -

            -

            - To run the clisp module of SWIG requires very little effort, you - just need to execute: -

            -
            -swig -clisp -module module-name   file-name 
            -
            -
            - -

            - Because of the high level nature of the CLISP FFI, the bindings - generated by SWIG may not be absolutely correct, and you may need - to modify them. The good thing is that you don't need to complex - interface file for the CLISP module. The CLISP module tries to - produce code which is both human readable and easily modifyable. -

            -

            27.3.1 Additional Commandline Options

            - - -

            -The following table list the additional commandline options available for the CLISP module. They can also be seen by using: -

            - -
            -swig -clisp -help 
            -
            -
            - - - - - - - - - - - - - - - -
            CLISP specific options
            -extern-allIf this option is given then clisp definitions for all the functions
            -and global variables will be created otherwise only definitions for
            -externed functions and variables are created. -
            -generate-typedefIf this option is given then def-c-type will be used to generate
            -shortcuts according to the typedefs in the input. -
            - -

            27.3.2 Details on CLISP bindings

            - - -

            -As mentioned earlier the CLISP bindings generated by SWIG may need -some modifications. The clisp module creates a lisp file with -the same name as the module name. This -lisp file contains a 'defpackage' declaration, with the -package name same as the module name. This package uses the -'common-lisp' and 'ffi' packages. Also, package exports all -the functions, structures and variables for which an ffi -binding was generated.
            -After generating the defpackage statement, the clisp module also -sets the default language. - -

            -(defpackage :test
            -    (:use :common-lisp :ffi)
            -  (:export
            -   :make-bar
            -   :bar-x
            -   :bar-y
            -   :bar-a
            -   :bar-b
            -   :bar-z
            -   :bar-n
            -   :pointer_func
            -   :func123
            -   :make-cfunr
            -   :lispsort_double
            -   :test123))
            -
            -(in-package :test)
            -
            -(default-foreign-language :stdc)
            -
            -

            -The ffi wrappers for functions and variables are generated as shown - below. When functions have arguments of type "double * array", - SWIG doesn't knows whether it is an 'out' argument or it is - an array which will be passed, so SWIG plays it safe by - declaring it as an '(array (ffi:c-ptr DOUBLE-FLOAT))'. For - arguments of type "int **z[100]" where SWIG has more - information, i.e., it knows that 'z' is an array of pointers to - pointers of integers, SWIG defines it to be '(z (ffi:c-ptr - (ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))' -

            -
            -extern "C" {
            -int pointer_func(void (*ClosureFun)( void* _fun, void* _data, void* _evt ), int y);
            -
            -int func123(div_t * x, int **z[100], int y[][1000][10]);
            -
            -void lispsort_double (int n, double * array);
            -
            -void test123(float x , double y);
            -
            -}
            -
            -
            -(ffi:def-call-out pointer_func
            -    (:name "pointer_func")
            -  (:arguments (ClosureFun (ffi:c-function (:arguments (arg0 (ffi:c-pointer NIL))
            -                                                      (arg1 (ffi:c-pointer NIL))
            -                                                      (arg2 (ffi:c-pointer NIL)))
            -                                          (:return-type NIL)))
            -              (y ffi:int))
            -  (:return-type ffi:int)
            -  (:library +library-name+))
            -
            -(ffi:def-call-out func123
            -    (:name "func123")
            -  (:arguments (x (ffi:c-pointer div_t))
            -              (z (ffi:c-ptr (ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))
            -              (y (ffi:c-ptr (ffi:c-ptr (ffi:c-array ffi:int (1000 10))))))
            -  (:return-type ffi:int)
            -  (:library +library-name+))
            -
            -
            -(ffi:def-call-out lispsort_double
            -    (:name "lispsort_double")
            -  (:arguments (n ffi:int)
            -              (array (ffi:c-ptr DOUBLE-FLOAT)))
            -  (:return-type NIL)
            -  (:library +library-name+))
            -
            -(ffi:def-call-out test123
            -    (:name "test")
            -  (:arguments (x SINGLE-FLOAT)
            -              (y DOUBLE-FLOAT))
            -  (:return-type NIL)
            -  (:library +library-name+))
            -
            -
            - -

            -The module also handles strutcures and #define constants as shown - below. SWIG automatically adds the constructors and accessors - created for the struct to the list of symbols exported by the - package. -

            -
            -struct bar {
            -  short x, y;
            -  char a, b;
            -  int *z[1000];
            -  struct bar * n;
            -};
            -
            -#define max 1000
            -
            -
            -(ffi:def-c-struct bar
            -    (x :type ffi:short)
            -  (y :type ffi:short)
            -  (a :type character)
            -  (b :type character)
            -  (z :type (ffi:c-array (ffi:c-ptr ffi:int) 1000))
            -  (n :type (ffi:c-pointer bar)))
            -
            -(defconstant max 1000)
            -
            -
            - -

            27.4 UFFI

            - - diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Lua.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Lua.html similarity index 99% rename from winx64/bin/swig-3.0.12/Doc/Manual/Lua.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Lua.html index c94fe31d..6633eaa3 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Lua.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Lua.html @@ -77,7 +77,7 @@

            -Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight configuration language for any program that needs one. Lua is implemented as a library, written in clean C (that is, in the common subset of ANSI C and C++). It's also a really tiny language, less than 6000 lines of code, which compiles to <100 kilobytes of binary code. It can be found at http://www.lua.org +Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight configuration language for any program that needs one. Lua is implemented as a library, written in clean C (that is, in the common subset of ISO C and C++). It's also a really tiny language, less than 6000 lines of code, which compiles to <100 kilobytes of binary code. It can be found at http://www.lua.org

            eLua stands for Embedded Lua (can be thought of as a flavor of Lua) and offers the full implementation of the Lua programming language to the embedded world, extending it with specific features for efficient and portable software embedded development. eLua runs on smaller devices like microcontrollers and provides the full features of the regular Lua desktop version. More information on eLua can be found here: http://www.eluaproject.net @@ -984,7 +984,7 @@ There are ways to make this operator appear as part of the class using the % Also, be aware that certain operators don't map cleanly to Lua, and some Lua operators don't map cleanly to C++ operators. For instance, overloaded assignment operators don't map to Lua semantics and will be ignored, and C++ doesn't support Lua's concatenation operator (..).

            -In order to keep maximum compatibility within the different languages in SWIG, the Lua bindings uses the same set of operator names as python. Although internally it renames the functions to something else (on order to work with Lua). +In order to keep maximum compatibility within the different languages in SWIG, the Lua bindings uses the same set of operator names as Python. Although internally it renames the functions to something else (on order to work with Lua).

            The current list of operators which can be overloaded (and the alternative function names) are:

            • __add__ operator+ @@ -1008,11 +1008,10 @@ The following operators cannot be overloaded (mainly because they are not suppor

              SWIG also accepts the __str__() member function which converts an object to a string. This function should return a const char*, preferably to static memory. This will be used for the print() and tostring() functions in Lua. Assuming the complex class has a function

              -
              const char* __str__()
              -{
              -        static char buffer[255];
              -        sprintf(buffer, "Complex(%g, %g)", this->re(), this->im());
              -        return buffer;
              +
              const char* __str__() {
              +  static char buffer[255];
              +  sprintf(buffer, "Complex(%g, %g)", this->re(), this->im());
              +  return buffer;
               }
               

              @@ -1031,11 +1030,10 @@ Complex(10, 12)

              It is also possible to overload the operator[], but currently this cannot be automatically performed. To overload the operator[] you need to provide two functions, __getitem__() and __setitem__()

              -
              class Complex
              -{
              -        //....
              -        double __getitem__(int i)const; // i is the index, returns the data
              -        void __setitem__(int i, double d); // i is the index, d is the data
              +
              class Complex {
              +  //....
              +  double __getitem__(int i)const; // i is the index, returns the data
              +  void __setitem__(int i, double d); // i is the index, d is the data
               };
               

              diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Makefile b/winx64/bin/swigwin-4.0.0/Doc/Manual/Makefile similarity index 91% rename from winx64/bin/swig-3.0.12/Doc/Manual/Makefile rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Makefile index ee9a0af3..9505adb9 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Makefile +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Makefile @@ -89,3 +89,9 @@ linkchecker2: cp *.png linkchecker-tmp (cd linkchecker-tmp && linkchecker --config=../linkchecker.config -F text --no-warnings SWIGDocumentation.html) +# Simple check for relative links (there shouldn't be any), they don't translate properly creating the .pdf doc +# with wkhtmltopdf. For example, href="SWIG.html" needs to be href="SWIG.html#SWIG" +linkchecker3: + @echo "The following list should just contain SWIGDocumentation.html and SWIGDocumentation.pdf," + @echo "as all links should have an anchor (with a #) or be a full url beginning http." + grep 'href="' *.html | sed -e 's/.*href="\(.*\)">.*$$/\1/' | grep -v "#" | grep -v "^http" | grep -v "^style.css" diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Modula3.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Modula3.html similarity index 95% rename from winx64/bin/swig-3.0.12/Doc/Manual/Modula3.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Modula3.html index 75f3f80f..fc4ffa03 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Modula3.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Modula3.html @@ -6,7 +6,7 @@ -

              29 SWIG and Modula-3

              +

              31 SWIG and Modula-3

              -

              29.4.5 Exceptions

              +

              31.4.5 Exceptions

              @@ -817,7 +817,7 @@ you should declare %typemap("m3wrapinconv:throws") blah * %{OSError.E%}.

              -

              29.4.6 Example

              +

              31.4.6 Example

              @@ -864,10 +864,10 @@ where almost everything is generated by a typemap:

              -

              29.5 More hints to the generator

              +

              31.5 More hints to the generator

              -

              29.5.1 Features

              +

              31.5.1 Features

              @@ -904,7 +904,7 @@ where almost everything is generated by a typemap:
              -

              29.5.2 Pragmas

              +

              31.5.2 Pragmas

              @@ -927,7 +927,7 @@ where almost everything is generated by a typemap:
              -

              29.6 Remarks

              +

              31.6 Remarks

            -

            30.2 Simple example

            +

            37.2 Simple example

            @@ -166,11 +166,11 @@ Some points of interest:

          • The above requests mzc to create an extension using the CGC garbage-collector. The alternative -- the 3m collector -- has generally better performance, but work is still required for SWIG to emit code which is compatible with it.
          -

          30.3 External documentation

          +

          37.3 External documentation

          -See the C API for more description of using the mechanism for adding extensions. The main documentation is here. +See the C API for more description of using the mechanism for adding extensions. The main documentation is here.

          diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Ocaml.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Ocaml.html similarity index 85% rename from winx64/bin/swig-3.0.12/Doc/Manual/Ocaml.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Ocaml.html index 96c93fae..92b5260f 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Ocaml.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Ocaml.html @@ -7,7 +7,7 @@ -

          31 SWIG and Ocaml

          +

          38 SWIG and OCaml

        +
      • Documentation Features +
      @@ -84,11 +88,11 @@ If you're not familiar with the Objective Caml language, you can visit The Ocaml Website.

      -

      31.1 Preliminaries

      +

      38.1 Preliminaries

      -SWIG 3.0 works with Ocaml 3.08.3 and above. Given the choice, +SWIG is compatible with OCaml 3.12.0 and above. Given the choice, you should use the latest stable release. The SWIG Ocaml module has been tested on Linux (x86, PPC, Sparc) and Cygwin on Windows. The best way to determine whether your system will work is to compile the @@ -102,7 +106,7 @@ file Examples/Makefile illustrate how to compile and link SWIG modules that will be loaded dynamically. This has only been tested on Linux so far.

      -

      31.1.1 Running SWIG

      +

      38.1.1 Running SWIG

      @@ -125,7 +129,7 @@ you will compile the file example_wrap.c with ocamlc or the resulting .ml and .mli files as well, and do the final link with -custom (not needed for native link).

      -

      31.1.2 Compiling the code

      +

      38.1.2 Compiling the code

      @@ -142,7 +146,7 @@ Use ocamlc or ocamlopt to compile your SWIG interface like:

      -% swig -ocaml -co swig.mli ; swig -ocaml co swig.ml
      +% swig -ocaml -co swig.mli ; swig -ocaml -co swig.ml
       % ocamlc -c swig.mli ; ocamlc -c swig.ml
       % ocamlc -c -ccopt "-I/usr/include/foo" example_wrap.c
       % ocamlc -c example.mli
      @@ -162,7 +166,7 @@ in C++ mode, you must:

      -

      31.1.3 The camlp4 module

      +

      38.1.3 The camlp4 module

      @@ -238,7 +242,7 @@ let b = C_string (getenv "PATH") -

      31.1.4 Using your module

      +

      38.1.4 Using your module

      @@ -252,7 +256,7 @@ option to build your functions into the primitive list. This option is not needed when you build native code.

      -

      31.1.5 Compilation problems and compiling with C++

      +

      38.1.5 Compilation problems and compiling with C++

      @@ -263,7 +267,7 @@ liberal with pointer types may not compile under the C++ compiler. Most code meant to be compiled as C++ will not have problems.

      -

      31.2 The low-level Ocaml/C interface

      +

      38.2 The low-level Ocaml/C interface

      @@ -336,7 +340,7 @@ appended. Upon return to caml space, the fnhelper function beautifies the result. A list containing a single item degrades to only that item (i.e. [ C_int 3 ] -> C_int 3), and a list containing more than one item is wrapped in C_list (i.e. [ C_char -'a' ; C_char 'b' -> C_list [ C_char 'a' ; C_char b +'a' ; C_char 'b' ] -> C_list [ C_char 'a' ; C_char 'b' ]). This is in order to make return values easier to handle when functions have only one return value, such as constructors, and operators. In addition, string, pointer, and object @@ -363,7 +367,7 @@ value items pass through directly, but you must make your own type signature for a function that uses value in this way.

      -

      31.2.1 The generated module

      +

      38.2.1 The generated module

      @@ -397,7 +401,7 @@ it describes the output SWIG will generate for class definitions. -

      31.2.2 Enums

      +

      38.2.2 Enums

      @@ -460,7 +464,7 @@ val x : Enum_test.c_obj = C_enum `a -

      31.2.2.1 Enum typing in Ocaml

      +

      38.2.2.1 Enum typing in Ocaml

      @@ -473,10 +477,10 @@ functions imported from different modules. You must convert values to master values using the swig_val function before sharing them with another module.

      -

      31.2.3 Arrays

      +

      38.2.3 Arrays

      -

      31.2.3.1 Simple types of bounded arrays

      +

      38.2.3.1 Simple types of bounded arrays

      @@ -497,7 +501,7 @@ arrays of simple types with known bounds in your code, but this only works for arrays whose bounds are completely specified.

      -

      31.2.3.2 Complex and unbounded arrays

      +

      38.2.3.2 Complex and unbounded arrays

      @@ -510,7 +514,7 @@ SWIG can't predict which of these methods will be used in the array, so you have to specify it for yourself in the form of a typemap.

      -

      31.2.3.3 Using an object

      +

      38.2.3.3 Using an object

      @@ -524,7 +528,7 @@ Consider writing an object when the ending condition of your array is complex, such as using a required sentinel, etc.

      -

      31.2.3.4 Example typemap for a function taking float * and int

      +

      38.2.3.4 Example typemap for a function taking float * and int

      @@ -575,7 +579,7 @@ void printfloats( float *tab, int len ); -

      31.2.4 C++ Classes

      +

      38.2.4 C++ Classes

      @@ -618,7 +622,7 @@ the underlying pointer, so using create_[x]_from_ptr alters the returned value for the same object.

      -

      31.2.4.1 STL vector and string Example

      +

      38.2.4.1 STL vector and string Example

      @@ -660,7 +664,7 @@ module.

      -bash-2.05a$ ./example_top
      +bash-2.05a$ ./runme_top
               Objective Caml version 3.06
       
               Camlp4 Parsing version 3.06
      @@ -698,7 +702,7 @@ baz
       #
       
      -

      31.2.4.2 C++ Class Example

      +

      38.2.4.2 C++ Class Example

      @@ -728,7 +732,7 @@ public: }; -

      31.2.4.3 Compiling the example

      +

      38.2.4.3 Compiling the example

      @@ -746,7 +750,7 @@ bash-2.05a$ ocamlmktop -custom swig.cmo -I `camlp4 -where` \
         -L$QTPATH/lib -cclib -lqt
       
      -

      31.2.4.4 Sample Session

      +

      38.2.4.4 Sample Session

      @@ -773,10 +777,10 @@ Assuming you have a working installation of QT, you will see a window
       containing the string "hi" in a button.
       

      -

      31.2.5 Director Classes

      +

      38.2.5 Director Classes

      -

      31.2.5.1 Director Introduction

      +

      38.2.5.1 Director Introduction

      @@ -803,7 +807,7 @@ class foo { };

      -

      31.2.5.2 Overriding Methods in Ocaml

      +

      38.2.5.2 Overriding Methods in Ocaml

      @@ -831,11 +835,11 @@ In this example, I'll examine the objective caml code involved in providing an overloaded class. This example is contained in Examples/ocaml/shapes.

      -

      31.2.5.3 Director Usage Example

      +

      38.2.5.3 Director Usage Example

      -
      example_prog.ml
      +
      runme.ml
       open Swig
      @@ -854,13 +858,15 @@ let triangle_class pts ob meth args =
                  | _ -> raise (Failure "cover needs two double arguments."))
           | _ -> (invoke ob) meth args ;;
       
      +...
      +
       let triangle =
         new_derived_object
           new_shape
      -    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.0)))
      +    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.6)))
           '() ;;
       
      -let _ = _draw_shape_coverage '(triangle, C_int 60, C_int 20) ;;
      +let _ = _draw_shape_coverage '(triangle, 60, 20) ;;
       
      @@ -890,7 +896,7 @@ in a more effortless style in ocaml, while leaving the "engine" part of the program in C++.

      -

      31.2.5.4 Creating director objects

      +

      38.2.5.4 Creating director objects

      @@ -931,7 +937,7 @@ object from causing a core dump, as long as the object is destroyed properly.

      -

      31.2.5.5 Typemaps for directors, directorin, directorout, directorargout

      +

      38.2.5.5 Typemaps for directors, directorin, directorout, directorargout

      @@ -942,7 +948,7 @@ well as a function return value in the same way you provide function arguments, and to receive arguments the same way you normally receive function returns.

      -

      31.2.5.6 typemap

      +

      38.2.5.6 directorin typemap

      @@ -953,7 +959,7 @@ code receives when you are called. In general, a simple directorin typ can use the same body as a simple out typemap.

      -

      31.2.5.7 directorout typemap

      +

      38.2.5.7 directorout typemap

      @@ -964,7 +970,7 @@ for the same type, except when there are special requirements for object ownership, etc.

      -

      31.2.5.8 directorargout typemap

      +

      38.2.5.8 directorargout typemap

      @@ -981,14 +987,134 @@ In the event that you don't specify all of the necessary values, integral values will read zero, and struct or object returns have undefined results.

      -

      31.2.6 Exceptions

      +

      38.2.6 Exceptions

      -Catching exceptions is now supported using SWIG's %exception feature. A simple -but not too useful example is provided by the throw_exception testcase in -Examples/test-suite. You can provide your own exceptions, too. +If an error occurs in a C or C++ function, you may want to convert that error into an OCaml +exception. To do this, you can use the %exception directive. The %exception +directive simply lets you rewrite part of the generated wrapper code to include an error check. +It is detailed in full in the Exception handling with %exception section.

      +

      +In C, a function often indicates an error by returning a status code (e.g. a negative number +or a NULL pointer). Here is a simple example of how you might handle that: +

      + +
      +
      +%exception malloc {
      +  $action
      +  if (result == NULL) {
      +    caml_failwith("Not enough memory");
      +  }
      +}
      +void *malloc(size_t nbytes);
      +
      +
      + +

      +In OCaml: +

      + +
      +
      +# let a = _malloc (C_int 20000000000);;
      +Exception: Failure "Not enough memory".
      +#
      +
      +
      + +

      +If a library provides some kind of general error handling framework, you can also use +that. For example: +

      + +
      +
      +%exception {
      +  $action
      +  if (err_occurred()) {
      +    caml_failwith(err_message());
      +  }
      +}
      +
      +
      + +

      +If no declaration name is given to %exception, it is applied to all wrapper functions. +$action is a SWIG special variable and is replaced by the C/C++ function call being wrapped. +

      + +

      +C++ exceptions are also easy to handle. We can catch a C++ exception and rethrow it as +an OCaml exception like this: +

      + +
      +
      +%exception getitem {
      +  try {
      +    $action
      +  } catch (std::out_of_range &e) {
      +    caml_failwith(e.what());
      +  }
      +}
      +
      +class FooClass {
      +  public:
      +    int getitem(int index);      // Exception handling added
      +    ...
      +};
      +
      +
      + +

      +The language-independent exception.i library file can also be used +to raise exceptions. See the SWIG Library chapter. +

      + +

      38.3 Documentation Features

      + + +

      +The features described in this section can be used to generate documentation +comments (colloquially referred to as "docstrings") that can be read by +OCamldoc. +

      + +

      38.3.1 Module docstring

      + + +

      +The first documentation comment of an mli file is the comment +associated with the entire module. SWIG supports this by setting an +option of the %module directive. For example: +

      + +
      +
      +%module(docstring="This is the example module's docstring") example
      +
      +
      + +

      +When you have more than just a line or so, you can retain the +readability of the %module directive by using a macro. For +example: +

      + +
      +
      +%define DOCSTRING
      +"The `XmlResource` class allows program resources defining menus,
      +controls on a panel, etc. to be loaded from an XML file."
      +%enddef
      +
      +%module(docstring=DOCSTRING) xrc
      +
      +
      + diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Octave.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Octave.html similarity index 94% rename from winx64/bin/swig-3.0.12/Doc/Manual/Octave.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Octave.html index 616b28cf..bd6b08ff 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Octave.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Octave.html @@ -9,7 +9,7 @@ -

      32 SWIG and Octave

      +

      29 SWIG and Octave

        @@ -60,7 +60,7 @@ This chapter is intended to give an introduction to using the module. You should Also, there are a dozen or so examples in the Examples/octave directory, and hundreds in the test suite (Examples/test-suite and Examples/test-suite/octave).

        -

        32.1 Preliminaries

        +

        29.1 Preliminaries

        @@ -76,7 +76,7 @@ This cannot be guaranteed however, as in recent times new Octave releases have r The SWIG runtime exports the function swig_octave_prereq() for checking the version of Octave.

        -

        32.2 Running SWIG

        +

        29.2 Running SWIG

        @@ -108,7 +108,7 @@ The -c++ option is also required when wrapping C++ code: This creates a C++ source file "example_wrap.cpp". A C++ file is generated even when wrapping C code as Octave is itself written in C++ and requires wrapper code to be in the same language. The generated C++ source file contains the low-level wrappers that need to be compiled and linked with the rest of your C/C++ application (in this case, the gcd implementation) to create an extension module.

        -

        32.2.1 Command-line options

        +

        29.2.1 Command-line options

        @@ -131,7 +131,7 @@ The special name "." loads C global variables into the module namespace, i.e. al The -opprefix options sets the prefix of the names of global/friend operator functions.

        -

        32.2.2 Compiling a dynamic module

        +

        29.2.2 Compiling a dynamic module

        @@ -158,7 +158,7 @@ $ mkoctfile example_wrap.cpp example.c

        octave:1> swigexample
        -

        32.2.3 Using your module

        +

        29.2.3 Using your module

        @@ -176,10 +176,10 @@ octave:4> swigexample.cvar.Foo=4; octave:5> swigexample.cvar.Foo ans = 4

      -

      32.3 A tour of basic C/C++ wrapping

      +

      29.3 A tour of basic C/C++ wrapping

      -

      32.3.1 Modules

      +

      29.3.1 Modules

      @@ -224,7 +224,7 @@ octave:4> swigexample.gcd(4, 6) ans = 2 -

      32.3.2 Functions

      +

      29.3.2 Functions

      @@ -241,7 +241,7 @@ int fact(int n);

      octave:1> swigexample.fact(4)
       24 
      -

      32.3.3 Global variables

      +

      29.3.3 Global variables

      @@ -294,7 +294,7 @@ octave:2> swigexample.PI=3.142; octave:3> swigexample.PI ans = 3.1420 -

      32.3.4 Constants and enums

      +

      29.3.4 Constants and enums

      @@ -316,7 +316,7 @@ swigexample.SCONST="Hello World" swigexample.SUNDAY=0 .... -

      32.3.5 Pointers

      +

      29.3.5 Pointers

      @@ -363,7 +363,7 @@ octave:2> f=swigexample.fopen("not there", "r"); error: value on right hand side of assignment is undefined error: evaluating assignment expression near line 2, column 2 -

      32.3.6 Structures and C++ classes

      +

      29.3.6 Structures and C++ classes

      @@ -498,7 +498,7 @@ ans = 1 Depending on the ownership setting of a swig_ref, it may call C++ destructors when its reference count goes to zero. See the section on memory management below for details.

      -

      32.3.7 C++ inheritance

      +

      29.3.7 C++ inheritance

      @@ -507,7 +507,7 @@ This information contains the full class hierarchy. When an indexing operation ( the tree is walked to find a match in the current class as well as any of its bases. The lookup is then cached in the swig_ref.

      -

      32.3.8 C++ overloaded functions

      +

      29.3.8 C++ overloaded functions

      @@ -517,7 +517,7 @@ The dispatch function selects which overload to call (if any) based on the passe typecheck typemaps are used to analyze each argument, as well as assign precedence. See the chapter on typemaps for details.

      -

      32.3.9 C++ operators

      +

      29.3.9 C++ operators

      @@ -621,7 +621,7 @@ On the C++ side, the default mappings are as follows: Octave can also utilise friend (i.e. non-member) operators with a simple %rename: see the example in the Examples/octave/operator directory.

      -

      32.3.10 Class extension with %extend

      +

      29.3.10 Class extension with %extend

      @@ -660,7 +660,7 @@ Similarly, Octave can use the __float__ method to convert an object to Octave 3.8.0 and later versions will also map unary functions X() to the corresponding __X__ method, where X includes: abs(), acos(), acosh(), angle(), arg(), asin(), asinh(), atan(), atanh(), cbrt(), ceil(), conj(), cos(), cosh(), dawson(), erf(), erfc(), erfcinv(), erfcx(), erfi(), erfinv(), exp(), expm1(), finite(), fix(), floor(), gamma(), imag(), isalnum(), isalpha(), isascii(), iscntrl(), isdigit(), isgraph(), isinf(), islower(), isna(), isnan(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), lgamma(), log(), log10(), log1p(), log2(), real(), round(), roundb(), signbit(), signum(), sin(), sinh(), sqrt(), tan(), tanh(), toascii(), tolower(), toupper()

      -

      32.3.11 C++ templates

      +

      29.3.11 C++ templates

      @@ -737,10 +737,10 @@ ans = -

      32.3.12 C++ Smart Pointers

      +

      29.3.12 C++ Smart Pointers

      -

      32.3.12.1 The shared_ptr Smart Pointer

      +

      29.3.12.1 The shared_ptr Smart Pointer

      @@ -751,14 +751,14 @@ in the shared_ptr smart pointer -

      32.3.12.2 Generic Smart Pointers

      +

      29.3.12.2 Generic Smart Pointers

      C++ smart pointers are fully supported as in other modules.

      -

      32.3.13 Directors (calling Octave from C++ code)

      +

      29.3.13 Directors (calling Octave from C++ code)

      @@ -839,14 +839,14 @@ c-side routine called octave-side routine called -

      32.3.14 Threads

      +

      29.3.14 Threads

      The use of threads in wrapped Director code is not supported; i.e., an Octave-side implementation of a C++ class must be called from the Octave interpreter's thread. Anything fancier (apartment/queue model, whatever) is left to the user. Without anything fancier, this amounts to the limitation that Octave must drive the module... like, for example, an optimization package that calls Octave to evaluate an objective function.

      -

      32.3.15 Memory management

      +

      29.3.15 Memory management

      @@ -880,14 +880,14 @@ The %newobject directive may be used to control this behavior for pointers retur In the case where one wishes for the C++ side to own an object that was created in Octave (especially a Director object), one can use the __disown() method to invert this logic. Then letting the Octave reference count go to zero will not destroy the object, but destroying the object will invalidate the Octave-side object if it still exists (and call destructors of other C++ bases in the case of multiple inheritance/subclass()'ing).

      -

      32.3.16 STL support

      +

      29.3.16 STL support

      Various STL library files are provided for wrapping STL containers.

      -

      32.3.17 Matrix typemaps

      +

      29.3.17 Matrix typemaps

      diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Perl5.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Perl5.html similarity index 94% rename from winx64/bin/swig-3.0.12/Doc/Manual/Perl5.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Perl5.html index 96e9f751..766ccaed 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Perl5.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Perl5.html @@ -7,7 +7,7 @@ -

      33 SWIG and Perl5

      +

      30 SWIG and Perl5

        @@ -97,7 +97,7 @@ later. We're no longer testing regularly with older versions, but Perl 5.6 seems to mostly work, while older versions don't.

        -

        33.1 Overview

        +

        30.1 Overview

        @@ -118,11 +118,11 @@ described. Advanced customization features, typemaps, and other options are found near the end of the chapter.

        -

        33.2 Preliminaries

        +

        30.2 Preliminaries

        -To build a Perl5 module, run SWIG using the -perl option as +To build a Perl5 module, run SWIG using the -perl or -perl5 option as follows:

        @@ -143,7 +143,7 @@ To build the module, you will need to compile the file example_wrap.c and link it with the rest of your program.

        -

        33.2.1 Getting the right header files

        +

        30.2.1 Getting the right header files

        @@ -175,7 +175,7 @@ $ perl -e 'use Config; print "$Config{archlib}\n";'

      -

      33.2.2 Compiling a dynamic module

      +

      30.2.2 Compiling a dynamic module

      @@ -208,7 +208,7 @@ the target should be named `example.so', `example.sl', or the appropriate dynamic module name on your system.

      -

      33.2.3 Building a dynamic module with MakeMaker

      +

      30.2.3 Building a dynamic module with MakeMaker

      @@ -242,7 +242,7 @@ the preferred approach to compilation. More information about MakeMaker can be found in "Programming Perl, 2nd ed." by Larry Wall, Tom Christiansen, and Randal Schwartz.

      -

      33.2.4 Building a static version of Perl

      +

      30.2.4 Building a static version of Perl

      @@ -311,7 +311,7 @@ added to it. Depending on your machine, you may need to link with additional libraries such as -lsocket, -lnsl, -ldl, etc.

      -

      33.2.5 Using the module

      +

      30.2.5 Using the module

      @@ -464,7 +464,7 @@ system configuration (this requires root access and you will need to read the man pages).

      -

      33.2.6 Compilation problems and compiling with C++

      +

      30.2.6 Compilation problems and compiling with C++

      @@ -607,7 +607,7 @@ have to find the macro that conflicts and add an #undef into the .i file. Pleas any conflicting macros you find to swig-user mailing list.

      -

      33.2.7 Compiling for 64-bit platforms

      +

      30.2.7 Compiling for 64-bit platforms

      @@ -634,7 +634,7 @@ also introduce problems on platforms that support more than one linking standard (e.g., -o32 and -n32 on Irix).

      -

      33.3 Building Perl Extensions under Windows

      +

      30.3 Building Perl Extensions under Windows

      @@ -645,7 +645,7 @@ section assumes you are using SWIG with Microsoft Visual C++ although the procedure may be similar with other compilers.

      -

      33.3.1 Running SWIG from Developer Studio

      +

      30.3.1 Running SWIG from Developer Studio

      @@ -708,7 +708,7 @@ print "$a\n"; -

      33.3.2 Using other compilers

      +

      30.3.2 Using other compilers

      @@ -716,7 +716,7 @@ SWIG is known to work with Cygwin and may work with other compilers on Windows. For general hints and suggestions refer to the Windows chapter.

      -

      33.4 The low-level interface

      +

      30.4 The low-level interface

      @@ -726,7 +726,7 @@ can be used to control your application. However, it is also used to construct more user-friendly proxy classes as described in the next section.

      -

      33.4.1 Functions

      +

      30.4.1 Functions

      @@ -749,7 +749,7 @@ use example; $a = &example::fact(2); -

      33.4.2 Global variables

      +

      30.4.2 Global variables

      @@ -819,7 +819,7 @@ extern char *path; // Declared later in the input -

      33.4.3 Constants

      +

      30.4.3 Constants

      @@ -859,7 +859,7 @@ print example::FOO, "\n"; -

      33.4.4 Pointers

      +

      30.4.4 Pointers

      @@ -949,7 +949,7 @@ Foo *BarToFoo(Bar *b) { } Foo *IncrFoo(Foo *f, int i) { - return f+i; + return f+i; } %} @@ -968,7 +968,7 @@ as XS and xsubpp. Given the advancement of the SWIG typesystem and the SWIG and XS, this is no longer supported.

      -

      33.4.5 Structures

      +

      30.4.5 Structures

      @@ -1057,7 +1057,7 @@ produces a single accessor function like this:

       int *Foo_x_get(Foo *self) {
      -    return self->x;
      +  return self->x;
       };
       
      @@ -1092,17 +1092,17 @@ generates accessor functions such as this:
       Foo *Bar_f_get(Bar *b) {
      -    return &b->f;
      +  return &b->f;
       }
       
       void Bar_f_set(Bar *b, Foo *val) {
      -    b->f = *val;
      +  b->f = *val;
       }
       
      -

      33.4.6 C++ classes

      +

      30.4.6 C++ classes

      @@ -1167,7 +1167,7 @@ provides direct access to C++ objects. A higher level interface using Perl prox can be built using these low-level accessors. This is described shortly.

      -

      33.4.7 C++ classes and type-checking

      +

      30.4.7 C++ classes and type-checking

      @@ -1203,7 +1203,7 @@ If necessary, the type-checker also adjusts the value of the pointer (as is nece multiple inheritance is used).

      -

      33.4.8 C++ overloaded functions

      +

      30.4.8 C++ overloaded functions

      @@ -1247,7 +1247,7 @@ example::Spam_foo_d($s, 3.14); Please refer to the "SWIG Basics" chapter for more information.

      -

      33.4.9 Operators

      +

      30.4.9 Operators

      @@ -1274,7 +1274,7 @@ The following C++ operators are currently supported by the Perl module:

    • operator or
    -

    33.4.10 Modules and packages

    +

    30.4.10 Modules and packages

    @@ -1369,7 +1369,7 @@ print Foo::fact(4), "\n"; # Call a function in package FooBar --> -

    33.5 Input and output parameters

    +

    30.5 Input and output parameters

    @@ -1588,7 +1588,7 @@ print "$c\n"; Note: The REFERENCE feature is only currently supported for numeric types (integers and floating point).

    -

    33.6 Exception handling

    +

    30.6 Exception handling

    @@ -1633,9 +1633,8 @@ class DoubleArray { void setitem(int i, double val) { if ((i >= 0) && (i < n)) ptr[i] = val; - else { + else throw RangeError(); - } } }; @@ -1753,7 +1752,7 @@ This is still supported, but it is deprecated. The newer %exception di functionality, but it has additional capabilities that make it more powerful.

    -

    33.7 Remapping datatypes with typemaps

    +

    30.7 Remapping datatypes with typemaps

    @@ -1770,7 +1769,7 @@ Typemaps are only used if you want to change some aspect of the primitive C-Perl interface.

    -

    33.7.1 A simple typemap example

    +

    30.7.1 A simple typemap example

    @@ -1874,7 +1873,7 @@ example::count("e", "Hello World"); -

    33.7.2 Perl5 typemaps

    +

    30.7.2 Perl5 typemaps

    @@ -1888,9 +1887,9 @@ like this:

     %typemap(out) int {
    -    $result = sv_newmortal();
    -    set_setiv($result, (IV) $1);
    -    argvi++;
    +  $result = sv_newmortal();
    +  sv_setiv($result, (IV) $1);
    +  argvi++;
     }
     
    @@ -1979,7 +1978,7 @@ Return of C++ member data (all languages). Check value of input parameter. -

    33.7.3 Typemap variables

    +

    30.7.3 Typemap variables

    @@ -2050,7 +2049,7 @@ properly assigned. The Perl name of the wrapper function being created. -

    33.7.4 Useful functions

    +

    30.7.4 Useful functions

    @@ -2119,7 +2118,7 @@ int sv_isa(SV *, char *0; -

    33.8 Typemap Examples

    +

    30.8 Typemap Examples

    @@ -2128,7 +2127,7 @@ might look at the files "perl5.swg" and "typemaps.i" in the SWIG library.

    -

    33.8.1 Converting a Perl5 array to a char **

    +

    30.8.1 Converting a Perl5 array to a char **

    @@ -2220,7 +2219,7 @@ print @$b, "\n"; # Print it out -

    33.8.2 Return values

    +

    30.8.2 Return values

    @@ -2249,7 +2248,7 @@ can be done using the EXTEND() macro as in: } -

    33.8.3 Returning values from arguments

    +

    30.8.3 Returning values from arguments

    @@ -2303,7 +2302,7 @@ print "multout(7, 13) = @r\n"; ($x, $y) = multout(7, 13); -

    33.8.4 Accessing array structure members

    +

    30.8.4 Accessing array structure members

    @@ -2313,8 +2312,8 @@ Consider the following data structure:

     #define SIZE  8
     typedef struct {
    -    int   values[SIZE];
    -    ...
    +  int   values[SIZE];
    +  ...
     } Foo;
     
     
    @@ -2328,10 +2327,10 @@ To make the member writable, a "memberin" typemap can be used.
     %typemap(memberin) int [SIZE] {
    -    int i;
    -    for (i = 0; i < SIZE; i++) {
    -        $1[i] = $input[i];
    -    }
    +  int i;
    +  for (i = 0; i < SIZE; i++) {
    +    $1[i] = $input[i];
    +  }
     }
     
     
    @@ -2366,7 +2365,7 @@ the "in" typemap in the previous section would be used to convert an to copy the converted array into a C data structure.

    -

    33.8.5 Turning Perl references into C pointers

    +

    30.8.5 Turning Perl references into C pointers

    @@ -2431,7 +2430,7 @@ print "$c\n"; -

    33.8.6 Pointer handling

    +

    30.8.6 Pointer handling

    @@ -2516,7 +2515,7 @@ For example: -

    33.9 Proxy classes

    +

    30.9 Proxy classes

    @@ -2532,7 +2531,7 @@ to the underlying code. This section describes the implementation details of the proxy interface.

    -

    33.9.1 Preliminaries

    +

    30.9.1 Preliminaries

    @@ -2554,7 +2553,7 @@ SWIG creates a collection of high-level Perl wrappers. In your scripts, you wil high level wrappers. The wrappers, in turn, interact with the low-level procedural module.

    -

    33.9.2 Structure and class wrappers

    +

    30.9.2 Structure and class wrappers

    @@ -2600,48 +2599,48 @@ package example::Vector; %BLESSEDMEMBERS = (); sub new () { - my $self = shift; - my @args = @_; - $self = vectorc::new_Vector(@args); - return undef if (!defined($self)); - bless $self, "example::Vector"; - $OWNER{$self} = 1; - my %retval; - tie %retval, "example::Vector", $self; - return bless \%retval, "Vector"; + my $self = shift; + my @args = @_; + $self = vectorc::new_Vector(@args); + return undef if (!defined($self)); + bless $self, "example::Vector"; + $OWNER{$self} = 1; + my %retval; + tie %retval, "example::Vector", $self; + return bless \%retval, "Vector"; } sub DESTROY { - return unless $_[0]->isa('HASH'); - my $self = tied(%{$_[0]}); - delete $ITERATORS{$self}; - if (exists $OWNER{$self}) { - examplec::delete_Vector($self)); - delete $OWNER{$self}; - } + return unless $_[0]->isa('HASH'); + my $self = tied(%{$_[0]}); + delete $ITERATORS{$self}; + if (exists $OWNER{$self}) { + examplec::delete_Vector($self)); + delete $OWNER{$self}; + } } sub FETCH { - my ($self, $field) = @_; - my $member_func = "vectorc::Vector_${field}_get"; - my $val = &$member_func($self); - if (exists $BLESSEDMEMBERS{$field}) { - return undef if (!defined($val)); - my %retval; - tie %retval, $BLESSEDMEMBERS{$field}, $val; - return bless \%retval, $BLESSEDMEMBERS{$field}; - } - return $val; + my ($self, $field) = @_; + my $member_func = "vectorc::Vector_${field}_get"; + my $val = &$member_func($self); + if (exists $BLESSEDMEMBERS{$field}) { + return undef if (!defined($val)); + my %retval; + tie %retval, $BLESSEDMEMBERS{$field}, $val; + return bless \%retval, $BLESSEDMEMBERS{$field}; + } + return $val; } sub STORE { - my ($self, $field, $newval) = @_; - my $member_func = "vectorc::Vector_${field}_set"; - if (exists $BLESSEDMEMBERS{$field}) { - &$member_func($self, tied(%{$newval})); - } else { - &$member_func($self, $newval); - } + my ($self, $field, $newval) = @_; + my $member_func = "vectorc::Vector_${field}_set"; + if (exists $BLESSEDMEMBERS{$field}) { + &$member_func($self, tied(%{$newval})); + } else { + &$member_func($self, $newval); + } } @@ -2681,7 +2680,7 @@ $v->DESTROY(); -

    33.9.3 Object Ownership

    +

    30.9.3 Object Ownership

    @@ -2768,7 +2767,7 @@ counting, garbage collection, or advanced features one might find in sophisticated languages.

    -

    33.9.4 Nested Objects

    +

    30.9.4 Nested Objects

    @@ -2821,7 +2820,7 @@ $p->{f}->{x} = 0.0; %${$p->{v}} = ( x=>0, y=>0, z=>0); -

    33.9.5 Proxy Functions

    +

    30.9.5 Proxy Functions

    @@ -2842,11 +2841,11 @@ this:

     sub dot_product {
    -    my @args = @_;
    -    $args[0] = tied(%{$args[0]});         # Get the real pointer values
    -    $args[1] = tied(%{$args[1]});
    -    my $result = vectorc::dot_product(@args);
    -    return $result;
    +  my @args = @_;
    +  $args[0] = tied(%{$args[0]});         # Get the real pointer values
    +  $args[1] = tied(%{$args[1]});
    +  my $result = vectorc::dot_product(@args);
    +  return $result;
     }
     
    @@ -2855,7 +2854,7 @@ This function replaces the original function, but operates in an identical manner.

    -

    33.9.6 Inheritance

    +

    30.9.6 Inheritance

    @@ -2931,7 +2930,7 @@ particular, inheritance of data members is extremely tricky (and I'm not even sure if it really works).

    -

    33.9.7 Modifying the proxy methods

    +

    30.9.7 Modifying the proxy methods

    @@ -2959,7 +2958,7 @@ public: }; -

    33.10 Adding additional Perl code

    +

    30.10 Adding additional Perl code

    @@ -2985,7 +2984,7 @@ sub set_transform for (my $j = 0; $j < 4, $j++) { mat44_set($a, $i, $j, $x->[i][j]) - } + } } example.set_transform($im, $a); free_mat44($a); @@ -3010,7 +3009,7 @@ set_transform($im, $a); -

    33.11 Cross language polymorphism

    +

    30.11 Cross language polymorphism

    @@ -3044,7 +3043,7 @@ proxy classes, director classes, and C wrapper functions takes care of all the cross-language method routing transparently.

    -

    33.11.1 Enabling directors

    +

    30.11.1 Enabling directors

    @@ -3071,7 +3070,7 @@ globally, to specific classes, and to specific methods, like this: // generate directors for all classes that have virtual methods %feature("director"); -// generate directors for all virtual methods in class Foo +// generate directors for the virtual methods in class Foo %feature("director") Foo; @@ -3089,7 +3088,7 @@ directors for specific classes or methods. So for example,

    -will generate directors for all virtual methods of class Foo except +will generate directors for the virtual methods of class Foo except bar().

    @@ -3104,14 +3103,14 @@ the methods one() and two() (but not three()): %feature("director") Foo; class Foo { public: - Foo(int foo); - virtual void one(); - virtual void two(); + Foo(int foo); + virtual void one(); + virtual void two(); }; class Bar: public Foo { public: - virtual void three(); + virtual void three(); }; @@ -3134,7 +3133,7 @@ sub one { -

    33.11.2 Director classes

    +

    30.11.2 Director classes

    @@ -3154,7 +3153,8 @@ For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how to modify this behavior). -Thus all virtual method calls, whether they originate in C++ or in +Virtual methods that have a final specifier are unsurprisingly excluded. +Thus the virtual method calls, whether they originate in C++ or in Perl via proxy classes, eventually end up in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By @@ -3214,7 +3214,7 @@ so there is no need for the extra overhead involved with routing the calls through Perl.

    -

    33.11.3 Ownership and object destruction

    +

    30.11.3 Ownership and object destruction

    @@ -3263,7 +3263,7 @@ sub DESTROY { -

    33.11.4 Exception unrolling

    +

    30.11.4 Exception unrolling

    @@ -3279,9 +3279,9 @@ suffice in most cases:

     %feature("director:except") {
    -    if ($error != NULL) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error != NULL) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
     
    @@ -3305,8 +3305,8 @@ suitable exception handler:
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
     
    @@ -3319,7 +3319,7 @@ Swig::DirectorMethodException is thrown, Perl will register the exception as soon as the C wrapper function returns.

    -

    33.11.5 Overhead and code bloat

    +

    30.11.5 Overhead and code bloat

    @@ -3353,7 +3353,7 @@ directive) for only those methods that are likely to be extended in Perl.

    -

    33.11.6 Typemaps

    +

    30.11.6 Typemaps

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Php.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Php.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Php.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Php.html index 52bedf87..d80731c5 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Php.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Php.html @@ -7,7 +7,7 @@ -

    34 SWIG and PHP

    +

    31 SWIG and PHP

      @@ -50,20 +50,13 @@

      -In this chapter, we discuss SWIG's support of PHP. The PHP module -was extensively rewritten in release 1.3.26, and support for generating -OO wrappers for PHP5 was added in 1.3.30. The PHP module now supports most -of the features available in some of the other languages. +In this chapter, we discuss SWIG's support of PHP. SWIG currently supports +generating wrappers for PHP7. Support for PHP5 was removed in SWIG 4.0.0 +and support for PHP4 was removed in SWIG 1.3.37.

      -SWIG supports generating wrappers for PHP5 and PHP7. Support for PHP4 was removed -in SWIG 1.3.37. -

      - -

      -Currently any PHP5 or PHP7 release should work, but we don't regularly test with -PHP < 5.3. +Currently any PHP7 release should work.

      @@ -77,13 +70,13 @@ your extension into php directly, you will need the complete PHP source tree available.

      -

      34.1 Generating PHP Extensions

      +

      31.1 Generating PHP Extensions

      -To build a PHP extension, run swig using the -php5 or --php7 option as follows (-php is also supported -and currently is an alias for -php5): +To build a PHP extension, run swig using the -php7 option as follows +(-php is also supported and currently is an alias for -php7 +but prior to SWIG 4.0.0 it was an alias for -php5):

      @@ -107,9 +100,7 @@ also contain PHP class wrappers.
       SWIG can generate PHP extensions from C++ libraries as well when
       given the -c++ option.  The support for C++ is discussed in
       more detail in section 27.2.6.  The generated
      -C++ wrapper will be called example_wrap.cpp (for PHP5) or
      -example_wrap.cxx (for PHP7 where the default has been changed to align
      -with SWIG's default for every other language).  You can specify a
      +C++ wrapper will be called example_wrap.cxx.  You can specify a
       different extension for the C++ wrapper using -cppext -
       e.g. if you want example_wrap.cc use -cppext cc.
       

      @@ -128,7 +119,7 @@ and it doesn't play nicely with package system. We don't recommend this approach, or provide explicit support for it.

      -

      34.1.1 Building a loadable extension

      +

      31.1.1 Building a loadable extension

      @@ -143,7 +134,7 @@ least work for Linux though): gcc -shared example_wrap.o example.o -o example.so

      -

      34.1.2 Using PHP Extensions

      +

      31.1.2 Using PHP Extensions

      @@ -162,8 +153,8 @@ If the module is in PHP's default extension directory, you can omit the path.

      For some SAPIs (for example, the CLI SAPI) you can instead use the -dl() function to load -an extension at run time, by adding a like like this to the start of each +dl() function to load +an extension at run time, by adding a line like this to the start of each PHP script which uses your extension:

      @@ -172,8 +163,8 @@ PHP script which uses your extension:

    -But note that this doesn't work when running PHP through a webserver in PHP5.3 -and later - you'll need to use extension in php.ini as +But note that dl() isn't supported when running PHP through a +webserver - you'll need to use extension in php.ini as described above.

    @@ -191,7 +182,7 @@ This PHP module also defines the PHP classes for the wrapped API, so you'll almost certainly want to include it anyway.

    -

    34.2 Basic PHP interface

    +

    31.2 Basic PHP interface

    @@ -199,10 +190,11 @@ It is important to understand that PHP uses a single global namespace into which all symbols from extension modules are loaded. It is quite possible for names of symbols in one extension module to clash with other symbols unless care is taken to %rename them. At present -SWIG doesn't have support for the namespace feature added in PHP 5.3. +SWIG doesn't have support for generating wrappers which make use of PHP's +namespace feature.

    -

    34.2.1 Constants

    +

    31.2.1 Constants

    @@ -280,7 +272,7 @@ would be treated as false! Modern versions of PHP will at least issue a PHP notice by default when this happens.

    -

    34.2.2 Global Variables

    +

    31.2.2 Global Variables

    @@ -329,7 +321,7 @@ undefined. At this time SWIG does not support custom accessor methods.

    -

    34.2.3 Functions

    +

    31.2.3 Functions

    @@ -382,7 +374,7 @@ print $s; # The value of $s was not changed. --> -

    34.2.4 Overloading

    +

    31.2.4 Overloading

    @@ -390,8 +382,7 @@ Although PHP does not support overloading functions natively, swig will generate dispatch functions which will use %typecheck typemaps to allow overloading. This dispatch function's operation and precedence is described in Wrapping -Overloaded Functions and Methods. +href="SWIGPlus.html#SWIGPlus_overloaded_methods">Overloaded functions and methods.

    -

    34.2.5 Pointers and References

    +

    31.2.5 Pointers and References

    @@ -526,13 +517,6 @@ this, one needs to include phppointers.i which defines the named typemap REF.

    -

    -Prior to SWIG 3.0, the REF typemaps relied on PHP's call-time -pass-by-reference, which was deprecated in PHP 5.3 and removed in PHP 5.4. -So if you use these REF typemaps, you should ensure that SWIG≥3.0 is -used to generate wrappers from your interface file. -

    -

    In case you write your own typemaps, SWIG supports an attribute called byref: if you set that, then SWIG will make sure that the generated @@ -583,7 +567,7 @@ PHP in a number of ways: by using unset on an existing variable, or assigning NULL to a variable.

    -

    34.2.6 Structures and C++ classes

    +

    31.2.6 Structures and C++ classes

    @@ -644,7 +628,7 @@ Would be used in the following way from PHP: Member variables and methods are accessed using the -> operator.

    -

    34.2.6.1 Using -noproxy

    +

    31.2.6.1 Using -noproxy

    @@ -670,7 +654,7 @@ Complex_im_set($obj, $d); Complex_im_get($obj); -

    34.2.6.2 Constructors and Destructors

    +

    31.2.6.2 Constructors and Destructors

    @@ -711,7 +695,7 @@ the programmer can either reassign the variable or call unset($v)

    -

    34.2.6.3 Static Member Variables

    +

    31.2.6.3 Static Member Variables

    @@ -754,7 +738,7 @@ Ko::threats(10); echo "There have now been " . Ko::threats() . " threats\n"; -

    34.2.6.4 Static Member Functions

    +

    31.2.6.4 Static Member Functions

    @@ -776,7 +760,7 @@ Ko::threats(); -

    34.2.6.5 Specifying Implemented Interfaces

    +

    31.2.6.5 Specifying Implemented Interfaces

    @@ -794,7 +778,7 @@ so: If there are multiple interfaces, just list them separated by commas.

    -

    34.2.7 PHP Pragmas, Startup and Shutdown code

    +

    31.2.7 PHP Pragmas, Startup and Shutdown code

    @@ -820,6 +804,15 @@ Results in the following in "example.php" echo "example.php execution\n"; +

    +The version pragma can be used to add version to generated PHP extension module. The version is inserted in the zend_module_entry block. +

    + +
    +%module example
    +%pragma(php) version="1.5"
    +
    +

    The include pragma is a short cut to add include statements to the example.php file. @@ -882,7 +875,7 @@ The %rinit and %rshutdown statements are very similar but inse into the request init (PHP_RINIT_FUNCTION) and request shutdown (PHP_RSHUTDOWN_FUNCTION) code respectively.

    -

    34.3 Cross language polymorphism

    +

    31.3 Cross language polymorphism

    @@ -917,7 +910,7 @@ wrapper functions takes care of all the cross-language method routing transparently.

    -

    34.3.1 Enabling directors

    +

    31.3.1 Enabling directors

    @@ -944,7 +937,7 @@ globally, to specific classes, and to specific methods, like this: // generate directors for all classes that have virtual methods %feature("director"); -// generate directors for all virtual methods in class Foo +// generate directors for the virtual methods in class Foo %feature("director") Foo; @@ -962,7 +955,7 @@ directors for specific classes or methods. So for example,

    -will generate directors for all virtual methods of class Foo except +will generate directors for the virtual methods of class Foo except bar().

    @@ -977,14 +970,14 @@ the methods one() and two() (but not three()): %feature("director") Foo; class Foo { public: - Foo(int foo); - virtual void one(); - virtual void two(); + Foo(int foo); + virtual void one(); + virtual void two(); }; class Bar: public Foo { public: - virtual void three(); + virtual void three(); }; @@ -1006,7 +999,7 @@ class MyFoo extends Foo { -

    34.3.2 Director classes

    +

    31.3.2 Director classes

    @@ -1027,7 +1020,8 @@ For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how to modify this behavior). -Thus all virtual method calls, whether they originate in C++ or in +Virtual methods that have a final specifier are unsurprisingly excluded. +Thus the virtual method calls, whether they originate in C++ or in PHP via proxy classes, eventually end up in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate @@ -1086,7 +1080,7 @@ so there is no need for the extra overhead involved with routing the calls through PHP.

    -

    34.3.3 Ownership and object destruction

    +

    31.3.3 Ownership and object destruction

    @@ -1116,12 +1110,12 @@ Here is an example:

     class Foo {
     public:
    -    ...
    +  ...
     };
     class FooContainer {
     public:
    -    void addFoo(Foo *);
    -    ...
    +  void addFoo(Foo *);
    +  ...
     };
     
    @@ -1142,7 +1136,7 @@ In this example, we are assuming that FooContainer will take care of deleting all the Foo pointers it contains at some point.

    -

    34.3.4 Exception unrolling

    +

    31.3.4 Exception unrolling

    @@ -1166,9 +1160,9 @@ should suffice in most cases:

     %feature("director:except") {
    -    if ($error == FAILURE) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error == FAILURE) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
     
    @@ -1195,8 +1189,8 @@ suitable exception handler:
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
     
    @@ -1209,7 +1203,7 @@ Swig::DirectorMethodException is thrown, PHP will register the exception as soon as the C wrapper function returns.

    -

    34.3.5 Overhead and code bloat

    +

    31.3.5 Overhead and code bloat

    @@ -1242,7 +1236,7 @@ optimized by selectively enabling director methods (using the %feature directive) for only those methods that are likely to be extended in PHP.

    -

    34.3.6 Typemaps

    +

    31.3.6 Typemaps

    @@ -1256,7 +1250,7 @@ need to be supported.

    -

    34.3.7 Miscellaneous

    +

    31.3.7 Miscellaneous

    Director typemaps for STL classes are mostly in place, and hence you diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Pike.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Pike.html similarity index 88% rename from winx64/bin/swig-3.0.12/Doc/Manual/Pike.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Pike.html index 22ab4e2a..2b843239 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Pike.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Pike.html @@ -7,7 +7,7 @@ -

    35 SWIG and Pike

    +

    37 SWIG and Pike

    -

    35.2 Basic C/C++ Mapping

    +

    37.2 Basic C/C++ Mapping

    -

    35.2.1 Modules

    +

    37.2.1 Modules

    @@ -144,7 +144,7 @@ concerned), SWIG's %module directive doesn't really have any significance.

    -

    35.2.2 Functions

    +

    37.2.2 Functions

    @@ -169,7 +169,7 @@ exactly as you'd expect it to: (1) Result: 24 -

    35.2.3 Global variables

    +

    37.2.3 Global variables

    @@ -198,7 +198,7 @@ will result in two functions, Foo_get() and Foo_set(): (3) Result: 3.141590 -

    35.2.4 Constants and enumerated types

    +

    37.2.4 Constants and enumerated types

    @@ -206,7 +206,7 @@ Enumerated types in C/C++ declarations are wrapped as Pike constants, not as Pike enums.

    -

    35.2.5 Constructors and Destructors

    +

    37.2.5 Constructors and Destructors

    @@ -214,7 +214,7 @@ Constructors are wrapped as create() methods, and destructors are wrapped as destroy() methods, for Pike classes.

    -

    35.2.6 Static Members

    +

    37.2.6 Static Members

    @@ -230,8 +230,8 @@ For example, given this C++ class declaration: class Shape { public: - static void print(); - static int nshapes; + static void print(); + static int nshapes; }; diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Preface.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Preface.html similarity index 97% rename from winx64/bin/swig-3.0.12/Doc/Manual/Preface.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Preface.html index 3b654a6d..36a99bd1 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Preface.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Preface.html @@ -69,6 +69,9 @@ over a period of 10 years starting from the year 2000. The final version in the series was 1.3.40, but in truth the 1.3.x series had been stable for many years. An official stable version was released along with the decision to make SWIG license changes and this gave rise to version 2.0.0 in 2010. +Version 3.0.0 was released in 2014 focusing on adding C++11 support and C++ nested classes. +Version 4.0.0 was released in 2019 to add in Doxygen support. +Some target languages were disabled as part of a clean up and others were given a new status of either 'Supported' or 'Experimental'.

    1.3 SWIG License

    @@ -364,7 +367,7 @@ a number of packages to be installed. Full instructions at

    SWIG is known to work on various flavors of OS X. Follow the Unix installation instructions above. However, as of this writing, there is still great deal of -inconsistency with how shared libaries are handled by various scripting languages +inconsistency with how shared libraries are handled by various scripting languages on OS X.

    @@ -435,7 +438,7 @@ don't intend to use these features in your own programs.

    -Note: The test-suite currently contains over 500 tests. If you +Note: The test-suite currently contains over 600 tests. If you have many different target languages installed and a slow machine, it might take more than an hour to run the test-suite.

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Preprocessor.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Preprocessor.html similarity index 87% rename from winx64/bin/swig-3.0.12/Doc/Manual/Preprocessor.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Preprocessor.html index efa0c0f8..3d1bb453 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Preprocessor.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Preprocessor.html @@ -7,7 +7,7 @@ -

    8 Preprocessing

    +

    10 Preprocessing

      @@ -38,7 +38,7 @@ However, a number of modifications and enhancements have been made. This chapter describes some of these modifications.

      -

      8.1 File inclusion

      +

      10.1 File inclusion

      @@ -64,7 +64,7 @@ By default, the #include is ignored unless you run SWIG with the is that you often don't want SWIG to try and wrap everything included in standard header system headers and auxiliary files. -

      8.2 File imports

      +

      10.2 File imports

      @@ -93,7 +93,7 @@ The -importall directive tells SWIG to follow all #include sta as imports. This might be useful if you want to extract type definitions from system header files without generating any wrappers. -

      8.3 Conditional Compilation

      +

      10.3 Conditional Compilation

      @@ -109,10 +109,6 @@ SWIGIMPORTED Defined when SWIG is importing a file with % SWIG_VERSION Hexadecimal (binary-coded decimal) number containing SWIG version, such as 0x010311 (corresponding to SWIG-1.3.11). -SWIGALLEGROCL Defined when using Allegro CL -SWIGCFFI Defined when using CFFI -SWIGCHICKEN Defined when using CHICKEN -SWIGCLISP Defined when using CLISP SWIGCSHARP Defined when using C# SWIGGUILE Defined when using Guile SWIGJAVA Defined when using Java @@ -120,20 +116,16 @@ SWIGJAVASCRIPT Defined when using Javascript SWIG_JAVASCRIPT_JSC Defined when using Javascript for JavascriptCore SWIG_JAVASCRIPT_V8 Defined when using Javascript for v8 or node.js SWIGLUA Defined when using Lua -SWIGMODULA3 Defined when using Modula-3 SWIGMZSCHEME Defined when using Mzscheme -SWIGOCAML Defined when using Ocaml +SWIGOCAML Defined when using OCaml SWIGOCTAVE Defined when using Octave SWIGPERL Defined when using Perl -SWIGPHP Defined when using PHP5 or PHP7 -SWIGPHP5 Defined when using PHP5 +SWIGPHP Defined when using PHP (any version) SWIGPHP7 Defined when using PHP7 -SWIGPIKE Defined when using Pike SWIGPYTHON Defined when using Python SWIGR Defined when using R SWIGRUBY Defined when using Ruby SWIGSCILAB Defined when using Scilab -SWIGSEXP Defined when using S-expressions SWIGTCL Defined when using Tcl SWIGXML Defined when using XML

    @@ -146,7 +138,7 @@ In addition, SWIG defines the following set of standard C/C++ macros:
     __LINE__                        Current line number
     __FILE__                        Current file name
    -__STDC__                        Defined to indicate ANSI C
    +__STDC__                        Defined to indicate ISO C
     __cplusplus                     Defined when -c++ option used
     
    @@ -159,7 +151,7 @@ SWIG (except for the symbol `SWIG' which is only defined within the SWIG compiler).

    -

    8.4 Macro Expansion

    +

    10.4 Macro Expansion

    @@ -188,9 +180,9 @@ More complex macros can be defined in the standard way. For example:

     #define EXTERN extern
     #ifdef __STDC__
    -#define _ANSI(args)   (args)
    +#define ISOC_(args)   (args)
     #else
    -#define _ANSI(args) ()
    +#define ISOC_(args) ()
     #endif
     
    @@ -214,7 +206,7 @@ like #x. This is a non-standard SWIG extension.
  • -

    8.5 SWIG Macros

    +

    10.5 SWIG Macros

    @@ -260,7 +252,7 @@ many of SWIG's advanced features and libraries are built using this mechanism (s support).

    -

    8.6 C99 and GNU Extensions

    +

    10.6 C99 and GNU Extensions

    @@ -316,14 +308,14 @@ interface building. However, they are used internally to implement a number of SWIG directives and are provided to make SWIG more compatible with C99 code.

    -

    8.7 Preprocessing and delimiters

    +

    10.7 Preprocessing and delimiters

    The preprocessor handles { }, " " and %{ %} delimiters differently.

    -

    8.7.1 Preprocessing and %{ ... %} & " ... " delimiters

    +

    10.7.1 Preprocessing and %{ ... %} & " ... " delimiters

    @@ -348,7 +340,7 @@ the contents of the %{ ... %} block are copied without modification to the output (including all preprocessor directives).

    -

    8.7.2 Preprocessing and { ... } delimiters

    +

    10.7.2 Preprocessing and { ... } delimiters

    @@ -390,7 +382,7 @@ to actually go into the wrapper file, prefix the preprocessor directives with % and leave the preprocessor directive in the code.

    -

    8.8 Preprocessor and Typemaps

    +

    10.8 Preprocessor and Typemaps

    @@ -461,17 +453,17 @@ would generate -

    8.9 Viewing preprocessor output

    +

    10.9 Viewing preprocessor output

    Like many compilers, SWIG supports a -E command line option to display the output from the preprocessor. -When the -E switch is used, SWIG will not generate any wrappers. +When the -E option is used, SWIG will not generate any wrappers. Instead the results after the preprocessor has run are displayed. This might be useful as an aid to debugging and viewing the results of macro expansions.

    -

    8.10 The #error and #warning directives

    +

    10.10 The #error and #warning directives

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Python.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Python.html similarity index 81% rename from winx64/bin/swig-3.0.12/Doc/Manual/Python.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Python.html index a5b2100c..5a3947d4 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Python.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Python.html @@ -7,7 +7,7 @@ -

    36 SWIG and Python

    +

    32 SWIG and Python

    @@ -145,9 +156,9 @@

    This chapter describes SWIG's support of Python. SWIG is compatible -with most recent Python versions including Python 3.0 and Python 2.6, -as well as older versions dating back to Python 2.0. For the best results, -consider using Python 2.3 or newer. +with all recent Python versions (Python 2.7 and Python >= 3.2). If you +still need to generate bindings which work with older versions of Python, +you'll have to use SWIG 3.0.x.

    @@ -157,12 +168,12 @@ very least, make sure you read the "SWIG Basics" chapter.

    -

    36.1 Overview

    +

    32.1 Overview

    To build Python extension modules, SWIG uses a layered approach in which -parts of the extension module are defined in C and other parts are +parts of the extension module are defined in C and other parts are defined in Python. The C layer contains low-level wrappers whereas Python code is used to define high-level features.

    @@ -184,10 +195,10 @@ described followed by a discussion of low-level implementation details.

    -

    36.2 Preliminaries

    +

    32.2 Preliminaries

    -

    36.2.1 Running SWIG

    +

    32.2.1 Running SWIG

    @@ -210,7 +221,7 @@ int fact(int n);

    The #define SWIG_FILE_WITH_INIT line inserts a macro that specifies that the -resulting C file should be built as a python extension, inserting the module +resulting C file should be built as a Python extension, inserting the module init code. This .i file wraps the following simple C file:

    @@ -221,16 +232,15 @@ resulting C file should be built as a python extension, inserting the module #include "example.h" int fact(int n) { - if (n < 0){ /* This should probably return an error, but this is simpler */ - return 0; - } - if (n == 0) { - return 1; - } - else { - /* testing for overflow would be a good idea here */ - return n * fact(n-1); - } + if (n < 0) { /* This should probably return an error, but this is simpler */ + return 0; + } + if (n == 0) { + return 1; + } else { + /* testing for overflow would be a good idea here */ + return n * fact(n-1); + } } @@ -285,13 +295,13 @@ The following sections have further practical examples and details on how you might go about compiling and using the generated files.

    -

    36.2.2 Using distutils

    +

    32.2.2 Using distutils

    -The preferred approach to building an extension module for python is to compile it with -distutils, which comes with all recent versions of python -(Distutils Docs). +The preferred approach to building an extension module for Python is to compile it with +distutils, which comes with all recent versions of Python +(Distutils Docs).

    @@ -300,7 +310,7 @@ flags, headers, etc. for the version of Python it is run with. Distutils will co extension into a shared object file or DLL (.so on Linux, .pyd on Windows, etc). In addition, distutils can handle installing your package into site-packages, if that is desired. A configuration file (conventionally called: setup.py) -describes the extension (and related python modules). The distutils will +describes the extension (and related Python modules). The distutils will then generate all the right compiler directives to build it for you.

    @@ -337,9 +347,9 @@ setup (name = 'example', In this example, the line: example_module = Extension(....) creates an Extension module object, defining the name as _example, and using the source code files: example_wrap.c, generated by swig, and example.c, your original c -source. The swig (and other python extension modules) tradition is for the compiled -extension to have the name of the python portion, prefixed by an underscore. If the name -of your python module is "example.py", then the name of the corresponding object file +source. The swig (and other Python extension modules) tradition is for the compiled +extension to have the name of the Python portion, prefixed by an underscore. If the name +of your Python module is "example.py", then the name of the corresponding object file will be"_example.so"

    @@ -356,11 +366,11 @@ $ python setup.py build_ext --inplace

    And a .so, or .pyd or... will be created for you. It will build a version that matches the -python that you run the command with. Taking apart the command line: +Python that you run the command with. Taking apart the command line:

      -
    • python -- the version of python you want to build for +
    • python -- the version of Python you want to build for
    • setup.py -- the name of your setup script (it can be called anything, but setup.py is the tradition)
    • build_ext -- telling distutils to build extensions @@ -369,7 +379,7 @@ python that you run the command with. Taking apart the command line:

    -The distutils have many other features, consult the python distutils docs for details. +The distutils have many other features, consult the Python distutils docs for details.

    @@ -377,7 +387,7 @@ This same approach works on all platforms if the appropriate compiler is install can even build extensions to the standard Windows Python using MingGW)

    -

    36.2.3 Hand compiling a dynamic module

    +

    32.2.3 Hand compiling a dynamic module

    @@ -395,9 +405,9 @@ $ gcc -shared example.o example_wrap.o -o _example.so

    -The exact commands for doing this vary from platform to platform. -However, SWIG tries to guess the right options when it is installed. Therefore, -you may want to start with one of the examples in the SWIG/Examples/python +The exact commands for doing this vary from platform to platform. +However, SWIG tries to guess the right options when it is installed. Therefore, +you may want to start with one of the examples in the SWIG/Examples/python directory. If that doesn't work, you will need to read the man-pages for your compiler and linker to get the right set of options. You might also check the SWIG Wiki for @@ -409,7 +419,7 @@ When linking the module, the name of the output file has to match the name of the module prefixed by an underscore. If the name of your module is "example", then the name of the corresponding object file should be "_example.so" or "_examplemodule.so". -The name of the module is specified using the %module directive or the +The name of the module is specified using the %module directive or the -module command line option.

    @@ -425,7 +435,7 @@ module actually consists of two files; socket.py and

    -

    36.2.4 Static linking

    +

    32.2.4 Static linking

    @@ -433,7 +443,7 @@ An alternative approach to dynamic linking is to rebuild the Python interpreter with your extension module added to it. In the past, this approach was sometimes necessary due to limitations in dynamic loading support on certain machines. However, the situation has improved greatly -over the last few years and you should not consider this approach +over the last few years and you should not consider this approach unless there is really no other option.

    @@ -493,7 +503,7 @@ linking if possible. Some programmers may be inclined to use static linking in the interest of getting better performance. However, the performance gained by static linking tends to be rather minimal in most situations (and quite frankly not worth the extra -hassle in the opinion of this author). +hassle in the opinion of this author).

    @@ -504,7 +514,7 @@ If using static linking, you might want to rely on a different approach (perhaps using distutils).

    -

    36.2.5 Using your module

    +

    32.2.5 Using your module

    @@ -552,13 +562,13 @@ Another possible error is the following: Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: dynamic module does not define init function (init_example) ->>> +>>>

    -This error is almost always caused when a bad name is given to the shared object file. -For example, if you created a file example.so instead of _example.so you would +This error is almost always caused when a bad name is given to the shared object file. +For example, if you created a file example.so instead of _example.so you would get this error. Alternatively, this error could arise if the name of the module is inconsistent with the module name supplied with the %module directive. Double-check the interface to make sure the module name and the shared object @@ -584,7 +594,7 @@ This error usually indicates that you forgot to include some object files or libraries in the linking of the shared library file. Make sure you compile both the SWIG wrapper file and your original program into a shared library file. Make sure you pass all of the required libraries -to the linker. +to the linker.

    @@ -619,7 +629,7 @@ problem when you try to use your module: Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: libfoo.so: cannot open shared object file: No such file or directory ->>> +>>> @@ -642,7 +652,7 @@ $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \

    Alternatively, you can set the LD_LIBRARY_PATH environment variable to -include the directory with your shared libraries. +include the directory with your shared libraries. If setting LD_LIBRARY_PATH, be aware that setting this variable can introduce a noticeable performance impact on all other applications that you run. To set it only for Python, you might want to do this instead: @@ -661,7 +671,7 @@ system configuration (this requires root access and you will need to read the man pages).

    -

    36.2.6 Compilation of C++ extensions

    +

    32.2.6 Compilation of C++ extensions

    @@ -707,7 +717,7 @@ $ CC -G example.o example_wrap.o -L/opt/SUNWspro/lib -o _example.so -lCrun

    -Of course, the extra libraries to use are completely non-portable---you will +Of course, the extra libraries to use are completely non-portable---you will probably need to do some experimentation.

    @@ -715,8 +725,8 @@ probably need to do some experimentation. Sometimes people have suggested that it is necessary to relink the Python interpreter using the C++ compiler to make C++ extension modules work. In the experience of this author, this has never actually appeared to be -necessary. Relinking the interpreter with C++ really only includes the -special run-time libraries described above---as long as you link your extension +necessary. Relinking the interpreter with C++ really only includes the +special run-time libraries described above---as long as you link your extension modules with these libraries, it should not be necessary to rebuild Python.

    @@ -753,14 +763,14 @@ erratic program behavior. If working with lots of software components, you might want to investigate using a more formal standard such as COM.

    -

    36.2.7 Compiling for 64-bit platforms

    +

    32.2.7 Compiling for 64-bit platforms

    On platforms that support 64-bit applications (Solaris, Irix, etc.), special care is required when building extension modules. On these machines, 64-bit applications are compiled and linked using a different -set of compiler/linker options. In addition, it is not generally possible to mix +set of compiler/linker options. In addition, it is not generally possible to mix 32-bit and 64-bit code together in the same application.

    @@ -786,11 +796,11 @@ careful about the libraries you link with or the library path you use. In general, a Linux distribution will have two set of libraries, one for native x86_64 programs (under /usr/lib64), and another for 32 bits compatibility (under /usr/lib). Also, the compiler options -m32 -and -m64 allow you to choose the desired binary format for your python +and -m64 allow you to choose the desired binary format for your Python extension.

    -

    36.2.8 Building Python Extensions under Windows

    +

    32.2.8 Building Python extensions under Windows

    @@ -802,6 +812,7 @@ are built with Visual Studio 2003), the standard python setup.py build should just work.

    +

    As of python2.5, the distutils support building extensions with MingGW out of the box. Following the instruction here: @@ -814,10 +825,10 @@ If you need to build it on your own, the following notes are provided:

    -You will need to create a DLL that can be loaded into the interpreter. +You will need to create a DLL that can be loaded into the interpreter. This section briefly describes the use of SWIG with Microsoft Visual C++. As a starting point, many of SWIG's examples include project -files (.dsp files) for Visual C++ 6. These can be opened by more +files (.dsp files) for Visual C++ 6. These can be opened by more recent versions of Visual Studio. You might want to take a quick look at these examples in addition to reading this section. @@ -852,12 +863,12 @@ settings, select the "Custom Build" option. "C++:Preprocessor". Add the include directories for your Python installation under "Additional include directories". -

  • Define the symbol __WIN32__ under preprocessor options. +
  • Define the symbol __WIN32__ under preprocessor options.
  • Finally, select the settings for the entire project and go to "Link Options". Add the Python library file to your link libraries. -For example "python21.lib". Also, set the name of the output file to -match the name of your Python module, ie. _example.pyd - Note that _example.dll also worked with Python-2.4 and earlier. +For example "python27.lib". Also, set the name of the output file to +match the name of your Python module, i.e. _example.pyd
  • Build your project. @@ -866,7 +877,7 @@ match the name of your Python module, ie. _example.pyd - Note that _example.dll If all went well, SWIG will be automatically invoked whenever you build your project. Any changes made to the interface file will result in SWIG being automatically executed to produce a new version of -the wrapper file. +the wrapper file.

    @@ -885,9 +896,9 @@ $ python

    If you get an ImportError exception when importing the module, you may have forgotten to include additional library files when you built your module. -If you get an access violation or some kind of general protection fault -immediately upon import, you have a more serious problem. This -is often caused by linking your extension module against the wrong +If you get an access violation or some kind of general protection fault +immediately upon import, you have a more serious problem. This +is often caused by linking your extension module against the wrong set of Win32 debug or thread libraries. You will have to fiddle around with the build options of project to try and track this down.

    @@ -919,7 +930,51 @@ SWIG Wiki.

    -

    36.3 A tour of basic C/C++ wrapping

    +

    32.2.9 Additional Python commandline options

    + + +

    +The following table lists the additional commandline options available for the Python module. They can also be seen by using: +

    + +
    +swig -python -help
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Python specific options
    -builtin Create Python built-in types rather than proxy classes, for better performance
    -castmode Enable the casting mode, which allows implicit cast between types in Python
    -debug-doxygen-parser Display doxygen parser module debugging information
    -debug-doxygen-translator Display doxygen translator module debugging information
    -dirvtable Generate a pseudo virtual table for directors for faster dispatch
    -doxygen Convert C++ doxygen comments to pydoc comments in proxy classes
    -extranative Return extra native wrappers for C++ std containers wherever possible
    -fastproxy Use fast proxy mechanism for member methods
    -globals <name> Set <name> used to access C global variable (default: 'cvar')
    -interface <mod>Set low-level C/C++ module name to <mod> (default: module name prefixed by '_')
    -keyword Use keyword arguments
    -nofastunpack Use traditional UnpackTuple method to parse the argument functions
    -noh Don't generate the output header file
    -noproxy Don't generate proxy classes
    -nortti Disable the use of the native C++ RTTI with directors
    -nothreads Disable thread support for the entire interface
    -olddefs Keep the old method definitions when using -fastproxy
    -py3 Generate code with Python 3 specific features and syntax
    -relativeimport Use relative Python imports
    -threads Add thread support for all the interface
    -O Enable the following optimization options: -fastdispatch -fastproxy -fvirtual
    + +

    +Many of these options are covered later on and their use should become clearer by the time you have finished reading this section on SWIG and Python. +

    + +

    32.3 A tour of basic C/C++ wrapping

    @@ -928,7 +983,7 @@ to your C/C++ code. Functions are wrapped as functions, classes are wrapped as This section briefly covers the essential aspects of this wrapping.

    -

    36.3.1 Modules

    +

    32.3.1 Modules

    @@ -938,10 +993,10 @@ wrapped into a Python 'example' module. Underneath the covers, this module consists of a Python source file example.py and a low-level extension module _example.so. When choosing a module name, make sure you don't use the same name as a built-in -Python command or standard module name. +Python command or standard module name.

    -

    36.3.2 Functions

    +

    32.3.2 Functions

    @@ -965,7 +1020,7 @@ like you think it does: >>> -

    36.3.3 Global variables

    +

    32.3.3 Global variables

    @@ -991,8 +1046,8 @@ then "a" and "b" are both names for the object containing the value 3.4. Thus, there is only one object containing 3.4 and "a" and "b" are both names that refer to it. This is quite different than C where a variable name refers to a memory location in which -a value is stored (and assignment copies data into that location). -Because of this, there is no direct way to map variable +a value is stored (and assignment copies data into that location). +Because of this, there is no direct way to map variable assignment in C to variable assignment in Python.

    @@ -1038,7 +1093,7 @@ error message. For example: Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: C variable 'density (double )' ->>> +>>>

    @@ -1103,7 +1158,7 @@ that starts with a leading underscore. SWIG does not create cvar if there are no global variables in a module.

    -

    36.3.4 Constants and enums

    +

    32.3.4 Constants and enums

    @@ -1143,7 +1198,7 @@ other object. Unfortunately, there is no easy way for SWIG to generate code that prevents this. You will just have to be careful.

    -

    36.3.5 Pointers

    +

    32.3.5 Pointers

    @@ -1178,7 +1233,7 @@ When wrapped, you will be able to use the functions in a natural way from Python

    If this makes you uneasy, rest assured that there is no deep magic involved. Underneath the covers, pointers to C/C++ objects are -simply represented as opaque values using an especial python container object: +simply represented as opaque values using an especial Python container object:

    @@ -1188,7 +1243,7 @@ simply represented as opaque values using an especial python container object:
     
     

    This pointer value can be freely passed around to different C functions that -expect to receive an object of type FILE *. The only thing you can't do is +expect to receive an object of type FILE *. The only thing you can't do is dereference the pointer from Python. Of course, that isn't much of a concern in this example.

    @@ -1206,7 +1261,7 @@ _c0671108_p_FILE

    Also, if you need to pass the raw pointer value to some external -python library, you can do it by casting the pointer object to an +Python library, you can do it by casting the pointer object to an integer:

    @@ -1271,7 +1326,7 @@ Foo *BarToFoo(Bar *b) { } Foo *IncrFoo(Foo *f, int i) { - return f+i; + return f+i; } %}
    @@ -1284,7 +1339,7 @@ C-style cast may return a bogus result whereas as the C++-style cast will return None if the conversion can't be performed.

    -

    36.3.6 Structures

    +

    32.3.6 Structures

    @@ -1308,8 +1363,8 @@ is used as follows: >>> v.x = 3.5 >>> v.y = 7.2 >>> print v.x, v.y, v.z -7.8 -4.5 0.0 ->>> +3.5 7.2 0.0 +>>>

    @@ -1368,7 +1423,7 @@ struct Foo {

    When char * members of a structure are wrapped, the contents are assumed to be dynamically allocated using malloc or new (depending on whether or not -SWIG is run with the -c++ option). When the structure member is set, the old contents will be +SWIG is run with the -c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior you want, you will have to use a typemap (described later).

    @@ -1381,7 +1436,7 @@ example, consider this:
     struct Bar {
    -    int  x[16];
    +  int  x[16];
     };
     
    @@ -1395,7 +1450,7 @@ If accessed in Python, you will see behavior like this: >>> b = example.Bar() >>> print b.x _801861a4_p_int ->>> +>>> @@ -1460,7 +1515,7 @@ Foo *x = &b->f; /* Points inside b */

    -Because the pointer points inside the structure, you can modify the contents and +Because the pointer points inside the structure, you can modify the contents and everything works just like you would expect. For example:

    @@ -1468,12 +1523,33 @@ everything works just like you would expect. For example:
     >>> b = Bar()
     >>> b.f.a = 3               # Modify attribute of structure member
    ->>> x = b.f                   
    +>>> x = b.f
     >>> x.a = 3                 # Modifies the same structure
     
    -

    36.3.7 C++ classes

    +

    +Note that there is a limitation with structs within structs that will cause a problem +if the outer struct is not a named variable in Python. The following will cause a segfault: +

    + +
    +
    +Bar().f.a = 3
    +
    +
    + +

    +because the unnamed Python proxy class for Bar() has its reference count +decremented by the Python interpreter after f has been obtained from it and +before f is used to obtain a. +This results in the underlying Bar instance being deleted, which of course also deletes +f inside it. Hence the pointer to f points to deleted +memory and use of it results in a segfault or some sort of other undefined behaviour. +

    + + +

    32.3.7 C++ classes

    @@ -1510,13 +1586,13 @@ you can use it in Python like this:

    -Class data members are accessed in the same manner as C structures. +Class data members are accessed in the same manner as C structures.

    -Static class members present a special problem for Python. Prior to Python-2.2, +Static class members present a special problem for Python. Prior to Python-2.2, Python classes had no support for static methods and no version of Python -supports static member variables in a manner that SWIG can utilize. Therefore, +supports static member variables in a manner that SWIG can utilize. Therefore, SWIG generates wrappers that try to work around some of these issues. To illustrate, suppose you have a class like this:

    @@ -1561,7 +1637,7 @@ they are accessed through cvar like this: -

    36.3.8 C++ inheritance

    +

    32.3.8 C++ inheritance

    @@ -1616,7 +1692,7 @@ then the function spam() accepts Foo * or a pointer to any cla It is safe to use multiple inheritance with SWIG.

    -

    36.3.9 Pointers, references, values, and arrays

    +

    32.3.9 Pointers, references, values, and arrays

    @@ -1669,15 +1745,15 @@ const Foo &spam9();

    then all three functions will return a pointer to some Foo object. -Since the third function (spam8) returns a value, newly allocated memory is used -to hold the result and a pointer is returned (Python will release this memory +Since the third function (spam8) returns a value, newly allocated memory is used +to hold the result and a pointer is returned (Python will release this memory when the return value is garbage collected). The fourth case (spam9) -which returns a const reference, in most of the cases will be +which returns a const reference, in most of the cases will be treated as a returning value, and it will follow the same allocation/deallocation process.

    -

    36.3.10 C++ overloaded functions

    +

    32.3.10 C++ overloaded functions

    @@ -1711,9 +1787,9 @@ Similarly, if you have a class like this,

     class Foo {
     public:
    -    Foo();
    -    Foo(const Foo &);
    -    ...
    +  Foo();
    +  Foo(const Foo &);
    +  ...
     };
     
    @@ -1771,7 +1847,7 @@ To fix this, you either need to ignore or rename one of the methods. For exampl
     %rename(spam_short) spam(short);
     ...
    -void spam(int);    
    +void spam(int);
     void spam(short);   // Accessed as spam_short
     
    @@ -1784,7 +1860,7 @@ or
     %ignore spam(short);
     ...
    -void spam(int);    
    +void spam(int);
     void spam(short);   // Ignored
     
    @@ -1797,10 +1873,10 @@ first declaration takes precedence.

    -Please refer to the "SWIG and C++" chapter for more information about overloading. +Please refer to the "SWIG and C++" chapter for more information about overloading.

    -

    36.3.11 C++ operators

    +

    32.3.11 C++ operators

    @@ -1823,7 +1899,7 @@ public: Complex operator-(const Complex &c) const; Complex operator*(const Complex &c) const; Complex operator-() const; - + double re() const { return rpart; } double im() const { return ipart; } }; @@ -1889,7 +1965,15 @@ Also, be aware that certain operators don't map cleanly to Python. For instance overloaded assignment operators don't map to Python semantics and will be ignored.

    -

    36.3.12 C++ namespaces

    +

    +Operator overloading is implemented in the pyopers.swg library file. +In particular overloaded operators are marked with the python:maybecall feature, also known as %pythonmaybecall. +This feature forces SWIG to generate code that return an instance of Python's NotImplemented +instead of raising an exception when the comparison fails, that is, on any kind of error. +This follows the guidelines in PEP 207 - Rich Comparisons and NotImplemented Python constant. +

    + +

    32.3.12 C++ namespaces

    @@ -1938,11 +2022,11 @@ For example: %rename(Bar_spam) Bar::spam; namespace Foo { - int spam(); + int spam(); } namespace Bar { - int spam(); + int spam(); } @@ -1956,7 +2040,7 @@ utilizes thousands of small deeply nested namespaces each with identical symbol names, well, then you get what you deserve.

    -

    36.3.13 C++ templates

    +

    32.3.13 C++ templates

    @@ -2005,15 +2089,15 @@ In Python:

    Obviously, there is more to template wrapping than shown in this example. -More details can be found in the SWIG and C++ chapter. +More details can be found in the SWIG and C++ chapter. Some more complicated examples will appear later.

    -

    36.3.14 C++ Smart Pointers

    +

    32.3.14 C++ Smart Pointers

    -

    36.3.14.1 The shared_ptr Smart Pointer

    +

    32.3.14.1 The shared_ptr Smart Pointer

    @@ -2024,7 +2108,7 @@ in the shared_ptr smart pointer -

    36.3.14.2 Generic Smart Pointers

    +

    32.3.14.2 Generic Smart Pointers

    @@ -2108,7 +2192,7 @@ simply use the __deref__() method. For example: -

    36.3.15 C++ reference counted objects

    +

    32.3.15 C++ reference counted objects

    @@ -2117,7 +2201,7 @@ Python examples of memory management using referencing counting.

    -

    36.4 Further details on the Python class interface

    +

    32.4 Further details on the Python class interface

    @@ -2140,7 +2224,7 @@ the -builtin option are in the Built-in section.

    -

    36.4.1 Proxy classes

    +

    32.4.1 Proxy classes

    @@ -2153,9 +2237,9 @@ have a class like this

     class Foo {
     public:
    -    int x;
    -    int spam(int);
    -    ...
    +  int x;
    +  int spam(int);
    +  ...
     
    @@ -2166,19 +2250,19 @@ then SWIG transforms it into a set of low-level procedural wrappers. For example
     Foo *new_Foo() {
    -    return new Foo();
    +  return new Foo();
     }
     void delete_Foo(Foo *f) {
    -    delete f;
    +  delete f;
     }
     int Foo_x_get(Foo *f) {
    -    return f->x;
    +  return f->x;
     }
     void Foo_x_set(Foo *f, int value) {
    -    f->x = value;
    +  f->x = value;
     }
     int Foo_spam(Foo *f, int arg1) {
    -    return f->spam(arg1);
    +  return f->spam(arg1);
     }
     
    @@ -2188,7 +2272,7 @@ These wrappers can be found in the low-level extension module (e.g., _exampl

    -Using these wrappers, SWIG generates a high-level Python proxy class (also known as a shadow class) like this (shown +Using these wrappers, SWIG generates a high-level Python proxy class (also known as a shadow class) like this (shown for Python 2.2):

    @@ -2210,7 +2294,7 @@ class Foo(object):

    -This class merely holds a pointer to the underlying C++ object (.this) and dispatches methods and +This class merely holds a pointer to the underlying C++ object (.this) and dispatches methods and member variable access to that object using the low-level accessor functions. From a user's point of view, it makes the class work normally:

    @@ -2229,7 +2313,7 @@ you can attach new Python methods to the class and you can even inherit from it by Python built-in types until Python 2.2).

    -

    36.4.2 Built-in Types

    +

    32.4.2 Built-in Types

    @@ -2239,8 +2323,8 @@ and built-in types, let's take a look at what a wrapped object looks like under both circumstances.

    -

    When proxy classes are used, each wrapped object in python is an instance -of a pure python class. As a reminder, here is what the __init__ method looks +

    When proxy classes are used, each wrapped object in Python is an instance +of a pure Python class. As a reminder, here is what the __init__ method looks like in a proxy class:

    @@ -2254,37 +2338,30 @@ class Foo(object):

    When a Foo instance is created, the call to _example.new_Foo() -creates a new C++ Foo instance; wraps that C++ instance inside an instance of -a python built-in type called SwigPyObject; and stores the SwigPyObject -instance in the 'this' field of the python Foo object. Did you get all that? So, the -python Foo object is composed of three parts:

    +creates a new C++ Foo instance; wraps that C++ instance inside an instance of +a Python built-in type called SwigPyObject; and stores the SwigPyObject +instance in the 'this' field of the Python Foo object. Did you get all that? So, the +Python Foo object is composed of three parts:

      -
    • The python Foo instance, which contains...
    • +
    • The Python Foo instance, which contains...
    • ... an instance of struct SwigPyObject, which contains...
    • ... a C++ Foo instance
    -

    When -builtin is used, the pure python layer is stripped off. Each -wrapped class is turned into a new python built-in type which inherits from +

    When -builtin is used, the pure Python layer is stripped off. Each +wrapped class is turned into a new Python built-in type which inherits from SwigPyObject, and SwigPyObject instances are returned directly -from the wrapped methods. For more information about python built-in extensions, -please refer to the python documentation:

    +from the wrapped methods. For more information about Python built-in extensions, +please refer to the Python documentation:

    -

    http://docs.python.org/extending/newtypes.html

    +

    https://docs.python.org/3/extending/newtypes.html

    -

    36.4.2.1 Limitations

    +

    32.4.2.1 Limitations

    Use of the -builtin option implies a couple of limitations:

      -
    • python version support:

      -
        -
      • Versions 2.5 and up are fully supported
      • -
      • Versions 2.3 and 2.4 are mostly supported; there are problems with director classes and/or sub-classing a wrapped type in python.
      • -
      • Versions older than 2.3 are not supported.
      • -
      -
    • Some legacy syntax is no longer supported; in particular:

      • The functional interface is no longer exposed. For example, you may no longer call Whizzo.new_CrunchyFrog(). Instead, you must use Whizzo.CrunchyFrog().
      • @@ -2292,15 +2369,15 @@ please refer to the python documentation:

        They are instead accessed in the idiomatic way (Dances.FishSlap).
    • -
    • Wrapped types may not be raised as python exceptions. Here's why: the python internals expect that all sub-classes of Exception will have this struct layout:

      +
    • Wrapped types may not be raised as Python exceptions. Here's why: the Python internals expect that all sub-classes of Exception will have this struct layout:

       typedef struct {
      -    PyObject_HEAD
      -    PyObject *dict;
      -    PyObject *args;
      -    PyObject *message;
      +  PyObject_HEAD
      +  PyObject *dict;
      +  PyObject *args;
      +  PyObject *message;
       } PyBaseExceptionObject;
       
      @@ -2310,12 +2387,12 @@ typedef struct {
       typedef struct {
      -    PyObject_HEAD
      -    void *ptr;
      -    swig_type_info *ty;
      -    int own;
      -    PyObject *next;
      -    PyObject *dict;
      +  PyObject_HEAD
      +  void *ptr;
      +  swig_type_info *ty;
      +  int own;
      +  PyObject *next;
      +  PyObject *dict;
       } SwigPyObject;
       
      @@ -2326,18 +2403,18 @@ typedef struct {
       class MyException {
       public:
      -    MyException (const char *msg_);
      -    ~MyException ();
      +  MyException (const char *msg_);
      +  ~MyException ();
       
      -    const char *what () const;
      +  const char *what () const;
       
       private:
      -    char *msg;
      +  char *msg;
       };
       
      -

      ... you can define this python class, which may be raised as an exception:

      +

      ... you can define this Python class, which may be raised as an exception:

      @@ -2352,22 +2429,22 @@ class MyPyException(Exception):
       
    • Reverse binary operators (e.g., __radd__) are not supported.

      To illustrate this point, if you have a wrapped class called MyString, -and you want to use instances of MyString interchangeably with native python +and you want to use instances of MyString interchangeably with native Python strings, you can define an 'operator+ (const char*)' method :

       class MyString {
       public:
      -    MyString (const char *init);
      -    MyString operator+ (const char *other) const;
      -    ...
      +  MyString (const char *init);
      +  MyString operator+ (const char *other) const;
      +  ...
       };
       

      -SWIG will automatically create an operator overload in python that will allow this: +SWIG will automatically create an operator overload in Python that will allow this:

      @@ -2394,7 +2471,7 @@ episode = "Dead " + mystr

      -The above code fails, because the first operand -- a native python string -- +The above code fails, because the first operand -- a native Python string -- doesn't know how to add an instance of MyString to itself.

    • @@ -2430,7 +2507,7 @@ class Derived : public Base {

      The import "A.i" statement is required, because module B depends on module A.

      -

      As long as you obey these requirements, your python code may import the modules in any order :

      +

      As long as you obey these requirements, your Python code may import the modules in any order :

       import B
      @@ -2441,35 +2518,36 @@ assert(issubclass(B.Derived, A.Base))
       
       
    -

    36.4.2.2 Operator overloads and slots -- use them!

    +

    32.4.2.2 Operator overloads and slots -- use them!

    The entire justification for the -builtin option is improved performance. To that end, the best way to squeeze maximum performance out of your wrappers is to use operator overloads. -Named method dispatch is slow in python, even when compared to other scripting languages. -However, python built-in types have a large number of "slots", +Named method dispatch is slow in Python, even when compared to other scripting languages. +However, Python built-in types have a large number of "slots", analogous to C++ operator overloads, which allow you to short-circuit named method dispatch for certain common operations.

    -

    By default, SWIG will translate most C++ arithmetic operator overloads into python +

    By default, SWIG will translate most C++ arithmetic operator overloads into Python slot entries. For example, suppose you have this class:

     class Twit {
     public:
    -    Twit operator+ (const Twit& twit) const;
    +  Twit operator+ (const Twit& twit) const;
     
    -    // Forward to operator+
    -    Twit add (const Twit& twit) const
    -    { return *this + twit; }
    +  // Forward to operator+
    +  Twit add (const Twit& twit) const {
    +    return *this + twit;
    +  }
     };
     
    -

    SWIG will automatically register operator+ as a python slot operator for addition. You may write python code like this:

    +

    SWIG will automatically register operator+ as a Python slot operator for addition. You may write Python code like this:

    @@ -2482,24 +2560,24 @@ percival = nigel.add(emily)
     
    -

    The last two lines of the python code are equivalent, +

    The last two lines of the Python code are equivalent, but the line that uses the '+' operator is much faster.

    In-place operators (e.g., operator+=) and comparison operators -(operator==, operator<, etc.) are also converted to python +(operator==, operator<, etc.) are also converted to Python slot operators. For a complete list of C++ operators that are -automatically converted to python slot operators, refer to the file +automatically converted to Python slot operators, refer to the file python/pyopers.swig in the SWIG library.

    -Read about all of the available python slots here: -http://docs.python.org/c-api/typeobj.html

    +Read about all of the available Python slots here: +https://docs.python.org/3/c-api/typeobj.html

    -There are two ways to define a python slot function: dispatch to a +There are two ways to define a Python slot function: dispatch to a statically defined function; or dispatch to a method defined on the operand.

    @@ -2545,16 +2623,16 @@ public:

    -If you examine the generated code, the supplied hash function will now be +If you examine the generated code, the supplied hash function will now be the function callback in the tp_hash slot for the builtin type for MyClass:

     static PyHeapTypeObject SwigPyBuiltin__MyClass_type = {
    -    ...
    -    (hashfunc) myHashFunc,       /* tp_hash */
    -    ...
    +  ...
    +  (hashfunc) myHashFunc,       /* tp_hash */
    +  ...
     
    @@ -2586,7 +2664,7 @@ class MyClass {

    -NOTE: Some python slots use a method signature which does not +NOTE: Some Python slots use a method signature which does not match the signature of SWIG-wrapped methods. For those slots, SWIG will automatically generate a "closure" function to re-marshal the arguments before dispatching to the wrapped method. Setting @@ -2600,7 +2678,7 @@ in the file python/pyopers.swig in the SWIG library.

    -

    36.4.3 Memory management

    +

    32.4.3 Memory management

    NOTE: Although this section refers to proxy objects, everything here also applies @@ -2609,7 +2687,7 @@ when the -builtin option is used.

    Associated with proxy object, is an ownership flag .thisown The value of this flag determines who is responsible for deleting the underlying C++ object. If set to 1, -the Python interpreter will destroy the C++ object when the proxy class is +the Python interpreter will destroy the C++ object when the proxy class is garbage collected. If set to 0 (or if the attribute is missing), then the destruction of the proxy class has no effect on the C++ object.

    @@ -2623,8 +2701,8 @@ ownership of the result. For example:
     class Foo {
     public:
    -    Foo();
    -    Foo bar();
    +  Foo();
    +  Foo bar();
     };
     
    @@ -2653,9 +2731,9 @@ they came from. Therefore, the ownership is set to zero. For example:
     class Foo {
     public:
    -    ...
    -    Foo *spam();
    -    ...
    +  ...
    +  Foo *spam();
    +  ...
     };
     
    @@ -2694,8 +2772,8 @@ or global variable. For example, consider this interface: %module example struct Foo { - int value; - Foo *next; + int value; + Foo *next; }; Foo *head = 0; @@ -2712,7 +2790,7 @@ is assigned to a global variable. For example: >>> f = example.Foo() >>> f.thisown 1 ->>> example.cvar.head = f +>>> example.cvar.head = f >>> f.thisown 0 >>> @@ -2795,44 +2873,7 @@ It is also possible to deal with situations like this using typemaps--an advanced topic discussed later.

    -

    36.4.4 Python 2.2 and classic classes

    - - -

    -SWIG makes every attempt to preserve backwards compatibility with -older versions of Python to the extent that it is possible. However, -in Python-2.2, an entirely new type of class system was introduced. -This new-style class system offers many enhancements including static -member functions, properties (managed attributes), and class methods. -Details about all of these changes can be found on www.python.org and is not repeated here. -

    - -

    -To address differences between Python versions, SWIG currently emits -dual-mode proxy class wrappers. In Python-2.2 and newer releases, -these wrappers encapsulate C++ objects in new-style classes that take -advantage of new features (static methods and properties). However, -if these very same wrappers are imported into an older version of Python, -old-style classes are used instead. -

    - -

    -This dual-nature of the wrapper code means that you can create extension -modules with SWIG and those modules will work with all versions of Python -ranging from Python-2.0 to the very latest release. Moreover, the wrappers take -advantage of Python-2.2 features when available. -

    - -

    -For the most part, the interface presented to users is the same regardless -of what version of Python is used. The only incompatibility lies in the handling -of static member functions. In Python-2.2, they can be accessed via the -class itself. In Python-2.1 and earlier, they have to be accessed as a global -function or through an instance (see the earlier section). -

    - -

    36.5 Cross language polymorphism

    +

    32.5 Cross language polymorphism

    @@ -2866,7 +2907,7 @@ proxy classes, director classes, and C wrapper functions takes care of all the cross-language method routing transparently.

    -

    36.5.1 Enabling directors

    +

    32.5.1 Enabling directors

    @@ -2883,18 +2924,18 @@ option to the %module directive, like this:

    Without this option no director code will be generated. Second, you -must use the %feature("director") directive to tell SWIG which classes -and methods should get directors. The %feature directive can be applied +must use the %feature("director") directive to tell SWIG which classes +and methods should get directors. The %feature directive can be applied globally, to specific classes, and to specific methods, like this:

     // generate directors for all classes that have virtual methods
    -%feature("director");         
    +%feature("director");
     
    -// generate directors for all virtual methods in class Foo
    -%feature("director") Foo;      
    +// generate directors for the virtual methods in class Foo
    +%feature("director") Foo;
     
    @@ -2911,12 +2952,12 @@ directors for specific classes or methods. So for example,

    -will generate directors for all virtual methods of class Foo except -bar(). +will generate directors for the virtual methods of class Foo except +bar().

    -Directors can also be generated implicitly through inheritance. +Directors can also be generated implicitly through inheritance. In the following, class Bar will get a director class that handles the methods one() and two() (but not three()):

    @@ -2926,21 +2967,21 @@ the methods one() and two() (but not three()): %feature("director") Foo; class Foo { public: - Foo(int foo); - virtual ~Foo(); - virtual void one(); - virtual void two(); + Foo(int foo); + virtual ~Foo(); + virtual void one(); + virtual void two(); }; class Bar: public Foo { public: - virtual void three(); + virtual void three(); };

    -then at the python side you can define +then at the Python side you can define

    @@ -2953,15 +2994,12 @@ class MyFoo(mymodule.Foo): # super().__init__(foo) # Alternative construction for Python3 def one(self): - print "one from python" + print "one from Python"
    -

    36.5.2 Director classes

    - - - +

    32.5.2 Director classes

    @@ -2980,7 +3018,8 @@ For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how to modify this behavior). -Thus all virtual method calls, whether they originate in C++ or in +Virtual methods that have a final specifier are unsurprisingly excluded. +Thus the virtual method calls, whether they originate in C++ or in Python via proxy classes, eventually end up in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By @@ -3040,7 +3079,7 @@ so there is no need for the extra overhead involved with routing the calls through Python.

    -

    36.5.3 Ownership and object destruction

    +

    32.5.3 Ownership and object destruction

    @@ -3077,12 +3116,12 @@ references. Here is an example:

     class Foo {
     public:
    -    ...
    +  ...
     };
     class FooContainer {
     public:
    -    void addFoo(Foo *);
    -    ...
    +  void addFoo(Foo *);
    +  ...
     };
     
    @@ -3107,7 +3146,7 @@ deleting all the Foo pointers it contains at some point. Note that no hard references to the Foo objects remain in Python.

    -

    36.5.4 Exception unrolling

    +

    32.5.4 Exception unrolling

    @@ -3123,9 +3162,9 @@ suffice in most cases:

     %feature("director:except") {
    -    if ($error != NULL) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error != NULL) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
     
    @@ -3152,8 +3191,8 @@ suitable exception handler:
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
     
    @@ -3166,7 +3205,7 @@ Swig::DirectorMethodException is thrown, Python will register the exception as soon as the C wrapper function returns.

    -

    36.5.5 Overhead and code bloat

    +

    32.5.5 Overhead and code bloat

    @@ -3200,7 +3239,7 @@ directive) for only those methods that are likely to be extended in Python.

    -

    36.5.6 Typemaps

    +

    32.5.6 Typemaps

    @@ -3214,7 +3253,7 @@ need to be supported.

    -

    36.5.7 Miscellaneous

    +

    32.5.7 Miscellaneous

    @@ -3224,13 +3263,13 @@ be able to use std::vector, std::string, etc., as you would any other type.

    Note: The director typemaps for return types based in const -references, such as +references, such as

     class Foo {
     …
    -    virtual const int& bar();
    +  virtual const int& bar();
     …
     };
     
    @@ -3248,7 +3287,7 @@ types, wherever possible, for example
     class Foo {
     …
    -    virtual int bar();
    +  virtual int bar();
     …
     };
     
    @@ -3261,7 +3300,7 @@ methods that return const references.

    -

    36.6 Common customization features

    +

    32.6 Common customization features

    @@ -3274,7 +3313,7 @@ This section describes some common SWIG features that are used to improve your the interface to an extension module.

    -

    36.6.1 C/C++ helper functions

    +

    32.6.1 C/C++ helper functions

    @@ -3355,7 +3394,7 @@ hard to implement. It is possible to clean this up using Python code, typemaps, customization features as covered in later sections.

    -

    36.6.2 Adding additional Python code

    +

    32.6.2 Adding additional Python code

    @@ -3420,7 +3459,9 @@ statements.

    -The following shows example usage for Python 2.6 to use print as it can in Python 3, that is, as a function instead of a statement: +The following example for Python 2.x shows how to insert code into the +generated wrapper to enable print to be used as a Python3-compatible +function instead of a statement:

    @@ -3437,13 +3478,13 @@ print("Loading", "Whizz", "Bang", sep=' ... ')

    -which can be seen when viewing the first few lines of the generated .py file: +The insert code can be seen at the start of the generated .py file:

     # This file was automatically generated by SWIG (http://www.swig.org).
    -# Version 2.0.11
    +# Version 4.0.0
     #
     # Do not make changes to this file unless you know what you are doing--modify
     # the SWIG interface file instead.
    @@ -3469,7 +3510,7 @@ an error for invalid preprocessor directives, so you may have to update
     existing interface files to delimit blocks of Python code correctly.

    As an alternative to providing a block containing Python code, you can -include python code from a file. The code is inserted exactly as in the +include Python code from a file. The code is inserted exactly as in the file, so this avoids any issues with the SWIG preprocessor. It's a good approach if you have a non-trivial chunk of Python code to insert. To use this feature you specify a filename in double quotes, for example:

    @@ -3490,7 +3531,7 @@ entirely replace a proxy function you can use
     %module example
     
    -// Rewrite bar() python code
    +// Rewrite bar() Python code
     
     %feature("shadow") Foo::bar(int) %{
     def bar(*args):
    @@ -3498,16 +3539,16 @@ def bar(*args):
         $action
         #do something after
     %}
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
     

    where $action will be replaced by the call to -the C/C++ proper method. +the C/C++ proper method.

    @@ -3525,7 +3566,7 @@ proxy, just before the return statement.

     %module example
     
    -// Add python code to bar() 
    +// Add Python code to bar()
     
     %feature("pythonprepend") Foo::bar(int) %{
         #do something before C++ call
    @@ -3533,12 +3574,13 @@ proxy, just before the return statement.
     
     %feature("pythonappend") Foo::bar(int) %{
         #do something after C++ call
    +    #the 'val' variable holds the return value
     %}
     
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
     
    @@ -3554,7 +3596,7 @@ SWIG version 1.3.28 you can use the directive forms
     %module example
     
    -// Add python code to bar() 
    +// Add Python code to bar()
     
     %pythonprepend Foo::bar(int) %{
         #do something before C++ call
    @@ -3562,12 +3604,13 @@ SWIG version 1.3.28 you can use the directive forms
     
     %pythonappend Foo::bar(int) %{
         #do something after C++ call
    +    #the 'val' variable holds the return value
     %}
     
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
     
    @@ -3583,7 +3626,7 @@ as it will then get attached to all the overloaded C++ methods. For example:
     %module example
     
    -// Add python code to bar()
    +// Add Python code to bar()
     
     %pythonprepend Foo::bar %{
         #do something before C++ call
    @@ -3596,8 +3639,8 @@ as it will then get attached to all the overloaded C++ methods. For example:
     
     class Foo {
     public:
    -    int bar(int x);
    -    int bar();
    +  int bar(int x);
    +  int bar();
     };
     
    @@ -3607,7 +3650,7 @@ The same applies for overloaded constructors.

    -

    36.6.3 Class extension with %extend

    +

    32.6.3 Class extension with %extend

    @@ -3658,7 +3701,7 @@ Vector(2, 3, 4)

    -%extend can be used for many more tasks than this. +%extend can be used for many more tasks than this. For example, if you wanted to overload a Python operator, you might do this:

    @@ -3687,7 +3730,7 @@ Use it like this: >>> w = example.Vector(10, 11, 12) >>> print v+w Vector(12, 14, 16) ->>> +>>> @@ -3696,7 +3739,7 @@ Vector(12, 14, 16) in any way---the extensions only show up in the Python interface.

    -

    36.6.4 Exception handling with %exception

    +

    32.6.4 Exception handling with %exception

    @@ -3830,7 +3873,143 @@ The language-independent exception.i library file can also be used to raise exceptions. See the SWIG Library chapter.

    -

    36.7 Tips and techniques

    +

    32.6.5 Optimization options

    + + +

    32.6.5.1 -fastproxy

    + + +

    +The -fastproxy command line option enables faster method calling as the call is made directly into the C/C++ layer rather than going through a method wrapper. +

    + +

    +Consider wrapping a C++ class: +

    + +
    +
    +struct Go {
    +  void callme0() {}
    +  void callme4(int a, int b, int c, int d) {}
    +  void callme8(double a, double b, double c, double d, double e, double f, double g, double i) {}
    +};
    +
    +
    + +

    +The default generated proxy class is: +

    + +
    +
    +class Go(object):
    +    def callme0(self):
    +        return _example.Go_callme0(self)
    +
    +    def callme4(self, a, b, c, d):
    +        return _example.Go_callme4(self, a, b, c, d)
    +
    +    def callme8(self, a, b, c, d, e, f, g, i):
    +        return _example.Go_callme8(self, a, b, c, d, e, f, g, i)
    +    ...
    +
    +
    + +

    +Each method in the Python class contains a Python proxy method which passes the arguments on to the underlying function in the low-level C/C++ module (_example in this case). +The generated proxy class when using -fastproxy is: +

    + +
    +
    +%module example
    +class Go(object):
    +    callme0 = _swig_new_instance_method(_example.Go_callme0)
    +    callme4 = _swig_new_instance_method(_example.Go_callme4)
    +    callme8 = _swig_new_instance_method(_example.Go_callme8)
    +    ...
    +
    +
    + +

    +where _swig_new_instance_method adds the method to the proxy class via C API calls for direct access to the underlying function in the low-level C/C++ module. +Note that for some methods it is not possible to generate the direct access call and so -fastproxy is ignored. +This happens, for example, when adding additional code to Python proxy methods, such as using %pythonprepend. +

    + +

    +The overhead calling into C/C++ from Python is reduced slightly using -fastproxy. +Below are some timings in microseconds calling the 3 functions in the example above. +Also included in the table for comparison is using the -builtin option covered in the +Built-in Types. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method nameDefault-fastproxy-builtin
    callme00.150.090.07
    callme40.260.160.14
    callme80.320.200.17
    + +

    +Although the -fastproxy option results in faster code over the default, the generated proxy code is not as user-friendly +as docstring/doxygen comments and functions with default values are not visible in the generated Python proxy class. +The -olddefs option can rectify this. +

    + +

    +The generated proxy class for the example above when using -fastproxy -olddefs is: +

    + +
    +
    +class Go(object):
    +    def callme0(self):
    +        return _example.Go_callme0(self)
    +    callme0 = _swig_new_instance_method(_example.Go_callme0)
    +
    +    def callme4(self, a, b, c, d):
    +        return _example.Go_callme4(self, a, b, c, d)
    +    callme4 = _swig_new_instance_method(_example.Go_callme4)
    +
    +    def callme8(self, a, b, c, d, e, f, g, i):
    +        return _example.Go_callme8(self, a, b, c, d, e, f, g, i)
    +    callme8 = _swig_new_instance_method(_example.Go_callme8)
    +    ...
    +
    +
    + +

    +The class defines each method in two different ways. The first definition is replaced by the second definition and so the second definition is the one used when the method is called. +While this possibly provides the best of both worlds, the time to import the module will be slighly slower when the class is defined due to the additional method definitions. +

    + +

    +The command line options mentioned above also apply to wrapped C/C++ global functions, not just class methods. +

    + +

    32.7 Tips and techniques

    @@ -3840,7 +4019,7 @@ strings, binary data, and arrays. This chapter discusses the common techniques solving these problems.

    -

    36.7.1 Input and output parameters

    +

    32.7.1 Input and output parameters

    @@ -3991,7 +4170,7 @@ int send_message(char *text, int *success);

    -When used in Python, the function will return multiple values. +When used in Python, the function will return multiple values.

    @@ -4053,7 +4232,7 @@ void foo(Bar *OUTPUT); may not have the intended effect since typemaps.i does not define an OUTPUT rule for Bar.

    -

    36.7.2 Simple pointers

    +

    32.7.2 Simple pointers

    @@ -4122,7 +4301,7 @@ If you replace %pointer_functions() by %pointer_class(type, name)SWIG Library chapter for further details.

    -

    36.7.3 Unbounded C Arrays

    +

    32.7.3 Unbounded C Arrays

    @@ -4132,17 +4311,17 @@ Sometimes a C function expects an array to be passed as a pointer. For example,

     int sumitems(int *first, int nitems) {
    -    int i, sum = 0;
    -    for (i = 0; i < nitems; i++) {
    -        sum += first[i];
    -    }
    -    return sum;
    +  int i, sum = 0;
    +  for (i = 0; i < nitems; i++) {
    +    sum += first[i];
    +  }
    +  return sum;
     }
     

    -To wrap this into Python, you need to pass an array pointer as the first argument. +To wrap this into Python, you need to pass an array pointer as the first argument. A simple way to do this is to use the carrays.i library file. For example:

    @@ -4184,7 +4363,7 @@ well suited for applications in which you need to create buffers, package binary data, etc.

    -

    36.7.4 String handling

    +

    32.7.4 String handling

    @@ -4219,13 +4398,13 @@ using the cstring.i library file described in the 36.7.5 Default arguments +

    32.7.5 Default arguments

    C++ default argument code generation is documented in the main Default arguments section. -There is also an optional Python specific feature that can be used called the python:cdefaultargs +There is also an optional Python specific feature that can be used called the python:cdefaultargs feature flag. By default, SWIG attempts to convert C++ default argument values into Python values and generates code into the Python layer containing these values. @@ -4303,7 +4482,7 @@ class CDA(object):

    Adding the feature:

    - +
     %feature("python:cdefaultargs") CDA::fff;
    @@ -4353,7 +4532,7 @@ Versions of SWIG prior to this varied in their ability to convert C++ default va
     equivalent Python default argument values.
     

    -

    36.8 Typemaps

    +

    32.8 Typemaps

    @@ -4364,17 +4543,17 @@ as the material in the "Typemaps" chapter.

    -Before proceeding, it should be stressed that typemaps are not a required +Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect of the primitive C-Python interface or if you want to elevate your guru status.

    -

    36.8.1 What is a typemap?

    +

    32.8.1 What is a typemap?

    -A typemap is nothing more than a code generation rule that is attached to +A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers from Python to C, you might define a typemap like this:

    @@ -4486,7 +4665,7 @@ parameter is omitted):
    -

    36.8.2 Python typemaps

    +

    32.8.2 Python typemaps

    @@ -4506,7 +4685,7 @@ like this:

    A detailed list of available methods can be found in the "Typemaps" chapter. +href="Typemaps.html#Typemaps">Typemaps" chapter.

    @@ -4517,7 +4696,7 @@ looking at the files in the SWIG library. Just take into account that in the latest versions of swig (1.3.22+), the library files are not very pristine clear for the casual reader, as they used to be. The extensive use of macros and other ugly techniques in the latest -version produce a very powerful and consistent python typemap library, +version produce a very powerful and consistent Python typemap library, but at the cost of simplicity and pedagogic value.

    @@ -4527,7 +4706,7 @@ a look at the SWIG library version 1.3.20 or so.

    -

    36.8.3 Typemap variables

    +

    32.8.3 Typemap variables

    @@ -4568,7 +4747,7 @@ A PyObject * that holds the result to be returned to Python.

    -The parameter name that was matched. +The parameter name that was matched.

    @@ -4598,7 +4777,7 @@ properly assigned. The Python name of the wrapper function being created.

    -

    36.8.4 Useful Python Functions

    +

    32.8.4 Useful Python Functions

    @@ -4726,7 +4905,7 @@ write me -

    36.9 Typemap Examples

    +

    32.9 Typemap Examples

    @@ -4735,7 +4914,7 @@ might look at the files "python.swg" and "typemaps.i" in the SWIG library.

    -

    36.9.1 Converting Python list to a char **

    +

    32.9.1 Converting Python list to a char **

    @@ -4812,10 +4991,10 @@ In the example, two different typemaps are used. The "in" typemap is used to receive an input argument and convert it to a C array. Since dynamic memory allocation is used to allocate memory for the array, the "freearg" typemap is used to later release this memory after the execution of -the C function. +the C function.

    -

    36.9.2 Expanding a Python object into multiple arguments

    +

    32.9.2 Expanding a Python object into multiple arguments

    @@ -4878,7 +5057,7 @@ previous example:

    -When writing a multiple-argument typemap, each of the types is referenced by a variable such +When writing a multiple-argument typemap, each of the types is referenced by a variable such as $1 or $2. The typemap code simply fills in the appropriate values from the supplied Python object.

    @@ -4927,14 +5106,14 @@ If you don't you'll get an error message along the lines of: Traceback (most recent call last): File "runme.py", line 3, in >module< example.foo(["foo", "bar", "spam", "1"]) -NotImplementedError: Wrong number or type of arguments for overloaded function 'foo'. +TypeError: Wrong number or type of arguments for overloaded function 'foo'. Possible C/C++ prototypes are: foo(int, char **) foo() -

    36.9.3 Using typemaps to return arguments

    +

    32.9.3 Using typemaps to return arguments

    @@ -4960,7 +5139,7 @@ A typemap can be used to handle this case as follows : %module outarg // This tells SWIG to treat an double * argument with name 'OutValue' as -// an output value. We'll append the value to the current result which +// an output value. We'll append the value to the current result which // is guaranteed to be a List object by SWIG. %typemap(argout) double *OutValue { @@ -5022,7 +5201,7 @@ function can now be used as follows: >>> -

    36.9.4 Mapping Python tuples into small arrays

    +

    32.9.4 Mapping Python tuples into small arrays

    @@ -5071,7 +5250,7 @@ array, such an approach would not be recommended for huge arrays, but for small structures, this approach works fine.

    -

    36.9.5 Mapping sequences to C arrays

    +

    32.9.5 Mapping sequences to C arrays

    @@ -5160,7 +5339,7 @@ static int convert_darray(PyObject *input, double *ptr, int size) { -

    36.9.6 Pointer handling

    +

    32.9.6 Pointer handling

    @@ -5257,9 +5436,168 @@ that has a this attribute. In addition, class object (if applicable).

    +

    32.9.7 Memory management when returning references to member variables

    -

    36.10 Docstring Features

    +

    +This example shows how to prevent premature garbage collection of objects when the underlying C++ class returns a pointer or reference to a member variable. +The example is a direct equivalent to this Java equivalent. +

    + +

    +Consider the following C++ code: +

    + +
    +
    +#include <iostream>
    +struct Wheel {
    +  int size;
    +  Wheel(int sz = 0) : size(sz) {}
    +  ~Wheel() { std::cout << "~Wheel" << std::endl; }
    +};
    +
    +class Bike {
    +  Wheel wheel;
    +public:
    +  Bike(int val) : wheel(val) {}
    +  Wheel& getWheel() { return wheel; }
    +};
    +
    +
    + +

    +and the following usage from Python after running the code through SWIG: +

    + + +
    +
    +bike = Bike(10)
    +wheel = bike.getWheel()
    +print("wheel size: {}".format(wheel.size))
    +
    +del bike  # Allow bike to be garbage collected
    +print("wheel size: {}".format(wheel.size))
    +
    +
    + +

    +Don't be surprised that if the resulting output gives strange results such as... +

    + +
    +
    +wheel size: 10
    +~Wheel
    +wheel size: 135019664
    +
    +
    + +

    +What has happened here is the garbage collector has collected the Bike instance as it doesn't think it is needed any more. +The proxy instance, wheel, contains a reference to memory that was deleted when the Bike instance was collected. +In order to prevent the garbage collector from collecting the Bike instance, a reference to the Bike must +be added to the wheel instance. +

    + +

    +You can do this by adding the reference when the getWheel() method +is called using one of three approaches: +

    + +

    +The easier, but less optimized, way is to use the %pythonappend directive +(see Adding additional Python code): +

    + +
    +
    +%pythonappend getWheel %{
    +  # val is the Wheel proxy, self is the Bike instance
    +  val.__bike_reference = self
    +%}
    +
    +
    + +

    +The code gets appended to the Python code generated for the +Bike::getWheel wrapper function, where we store the Bike proxy +instance onto the Wheel proxy instance before it is returned to the +caller as follows. +

    + +
    +
    +class Bike(object):
    +    ...
    +    def getWheel(self):
    +        val = _example.Bike_getWheel(self)
    +
    +        # val is the Wheel proxy, self is the Bike instance
    +        val.__bike_reference = self
    +
    +        return val
    +
    +
    + + +

    +The second option, which performs better and is required if you use the +-builtin option, is to set the reference in the CPython implementation: + +

    +
    +%extend Wheel {
    +// A reference to the parent class is added to ensure the underlying C++
    +// object is not deleted while the item is in use
    +%typemap(ret) Wheel& getWheel {
    +  PyObject *bike_reference_string = SWIG_Python_str_FromChar("__bike_reference");
    +  PyObject_SetAttr($result, bike_reference_string, $self);
    +  Py_DecRef(bike_reference_string);
    +}
    +}
    +
    +
    + +

    +The third approach, shown below, is an optimization of the above approach and creates the "__bike_reference" Python string object just once. +While this looks more complex, it is just a small variation on the above typemap plus a support function +bike_reference() in a fragment called bike_reference_function. +The bike_reference_init typemap generates code into the "init" section for an initial call to bike_reference() when the module +is initialized and is done to create the "__bike_reference" Python string singleton in a thread-safe manner. +

    + +
    +
    +%fragment("bike_reference_init", "init") {
    +  // Thread-safe initialization - initialize during Python module initialization
    +  bike_reference();
    +}
    +
    +%fragment("bike_reference_function", "header", fragment="bike_reference_init") {
    +
    +static PyObject *bike_reference() {
    +  static PyObject *bike_reference_string = SWIG_Python_str_FromChar("__bike_reference");
    +  return bike_reference_string;
    +}
    +
    +}
    +
    +%extend Wheel {
    +// A reference to the parent class is added to ensure the underlying C++
    +// object is not deleted while the item is in use
    +%typemap(ret, fragment="bike_reference_function") Wheel& getWheel %{
    +  PyObject_SetAttr($result, bike_reference(), $self);
    +%}
    +}
    +
    +
    + + + + +

    32.10 Docstring Features

    @@ -5287,7 +5625,7 @@ of your users much simpler.

    -

    36.10.1 Module docstring

    +

    32.10.1 Module docstring

    @@ -5312,7 +5650,7 @@ example:

     %define DOCSTRING
    -"The `XmlResource` class allows program resources defining menus, 
    +"The `XmlResource` class allows program resources defining menus,
     layout of controls on a panel, etc. to be loaded from an XML file."
     %enddef
     
    @@ -5321,7 +5659,7 @@ layout of controls on a panel, etc. to be loaded from an XML file."
     
    -

    36.10.2 %feature("autodoc")

    +

    32.10.2 %feature("autodoc")

    @@ -5349,7 +5687,7 @@ four levels for autodoc controlled by the value given to the feature, %feature("autodoc", "level"). The four values for level are covered in the following sub-sections. -

    36.10.2.1 %feature("autodoc", "0")

    +

    32.10.2.1 %feature("autodoc", "0")

    @@ -5378,7 +5716,7 @@ def function_name(*args, **kwargs): -

    36.10.2.2 %feature("autodoc", "1")

    +

    32.10.2.2 %feature("autodoc", "1")

    @@ -5403,7 +5741,7 @@ def function_name(*args, **kwargs): -

    36.10.2.3 %feature("autodoc", "2")

    +

    32.10.2.3 %feature("autodoc", "2")

    @@ -5465,7 +5803,7 @@ def function_name(*args, **kwargs): -

    36.10.2.4 %feature("autodoc", "3")

    +

    32.10.2.4 %feature("autodoc", "3")

    @@ -5491,7 +5829,7 @@ def function_name(*args, **kwargs): -

    36.10.2.5 %feature("autodoc", "docstring")

    +

    32.10.2.5 %feature("autodoc", "docstring")

    @@ -5510,7 +5848,7 @@ void GetPosition(int* OUTPUT, int* OUTPUT); -

    36.10.3 %feature("docstring")

    +

    32.10.3 %feature("docstring")

    @@ -5542,7 +5880,7 @@ with more than one line. -

    36.11 Python Packages

    +

    32.11 Python Packages

    Python has concepts of modules and packages. Modules are separate units of @@ -5601,15 +5939,14 @@ Python3 adds another option for packages with namespace packages). Implicit namespace packages no longer use __init__.py files. SWIG generated Python modules support implicit namespace packages. See -36.11.5 Implicit Namespace -Packages for more information. +Implicit namespace +packages for more information.

    -If you place a SWIG generated module into a Python package then there -are details concerning the way SWIG -searches for the wrapper module -that you may want to familiarize yourself with. +You can place a SWIG generated module into a Python package or keep as a global module, +details are covered a little later in +Location of modules.

    The way Python defines its modules and packages impacts SWIG users. Some @@ -5617,7 +5954,7 @@ users may need to use special features such as the package option in th %module directive or import related command line options. These are explained in the following sections.

    -

    36.11.1 Setting the Python package

    +

    32.11.1 Setting the Python package

    @@ -5671,7 +6008,7 @@ pkg1/pkg2/_foo.so # (shared library built from C/C++ code generated by SWI -

    36.11.2 Absolute and relative imports

    +

    32.11.2 Absolute and relative imports

    Suppose, we have the following hierarchy of files:

    @@ -5768,12 +6105,19 @@ class M2(pkg2.mod3.M3): pass -

    By default, SWIG would generate mod2.py proxy file with +

    By default, SWIG will generate mod2.py proxy file with import directive as in point 1. This can be changed with the -relativeimport command line option. The -relativeimport instructs -SWIG to organize imports as in point 2 (for Python < 2.7.0) or as in point 4 -for Python 2.7.0 and newer. This is a check done at the time the module is -imported. In short, if you have +SWIG to organize imports as in point 4 for Python 2.7.0 and newer. +

    + +

    +Compatibility Note: Versions of SWIG prior to SWIG-4.0.0 supported Python < 2.7.0 +and would organize the imports as in point 2 if an older version of Python was detected at runtime. +

    + +

    +In short, if you have mod2.i and mod3.i as above, then without -relativeimport SWIG will write

    @@ -5788,13 +6132,8 @@ write

    -from sys import version_info
    -if version_info >= (2, 7, 0):
    -    from . import pkg2
    -    import pkg1.pkg2.mod3
    -else:
    -    import pkg2.mod3
    -del version_info
    +from . import pkg2
    +from .pkg2 import mod3
     
    @@ -5806,7 +6145,7 @@ uses relative imports. Second case is, when one puts import directives in __init__.py to import symbols from submodules or subpackages and the submodule depends on other submodules (discussed later).

    -

    36.11.3 Enforcing absolute import semantics

    +

    32.11.3 Enforcing absolute import semantics

    As you may know, there is an incompatibility in import semantics (for the @@ -5832,7 +6171,7 @@ from __future__ import absolute_import -

    at the very beginning of his proxy *.py file. In SWIG, it may be +

    at the very beginning of your proxy *.py file. In SWIG, it may be accomplished with %pythonbegin directive as follows:

    @@ -5843,7 +6182,7 @@ from __future__ import absolute_import
    -

    36.11.4 Importing from __init__.py

    +

    32.11.4 Importing from __init__.py

    Imports in __init__.py are handy when you want to populate a @@ -5953,7 +6292,7 @@ class Bar(pkg3.foo.Foo): pass effect (note, that the Python 2 case also needs the -relativeimport workaround).

    -

    36.11.5 Implicit Namespace Packages

    +

    32.11.5 Implicit namespace packages

    Python 3.3 introduced @@ -6000,7 +6339,7 @@ packages you can place these files in the following configurations: -

    Finally suppose that your pure python code is stored in a .zip file or +

    Finally suppose that your pure Python code is stored in a .zip file or some other way (database, web service connection, etc). Python can load the robin.py module using a custom importer. But the _robin.so module will need to be located on a file system. Implicit namespace packages make this @@ -6031,42 +6370,180 @@ zipimporter requires python-3.5.1 or newer to work with subpackages.

    -

    36.11.6 Searching for the wrapper module

    +

    32.11.6 Location of modules

    When SWIG creates wrappers from an interface file, say foo.i, two Python modules are -created. There is a pure Python module module (foo.py) and C/C++ code which is -built and linked into a dynamically (or statically) loaded low-level module _foo -(see the Preliminaries section for details). So, the interface +created. There is a pure Python module (foo.py) and C/C++ code which is +compiled and linked into a dynamically (or statically) loaded low-level module _foo +(see the Preliminaries section for details). So, the interface file really defines two Python modules. How these two modules are loaded is covered next.

    -The pure Python module needs to load the C/C++ module in order to link -to the wrapped C/C++ methods. To do this it must make some assumptions -about what package the C/C++ module may be located in. The approach the -pure Python module uses to find the C/C++ module is as follows: +The pure Python module needs to load the C/C++ module in order to call +the wrapped C/C++ methods. To do this it must make some assumptions +about the location of the C/C++ module. +There are two configurations that are supported by default.

      -
    1. The pure Python module, foo.py, tries to load the C/C++ module, _foo, from the same package foo.py is - located in. The package name is determined from the __name__ - attribute given to foo.py by the Python loader that imported - foo.py. If foo.py is not in a package then _foo is loaded - as a global module.

      +
    2. Both modules in the same package

    3. -
    4. If the above import of _foo results in an ImportError - being thrown, then foo.py makes a final attempt to load _foo - as a global module.

      +
    5. Both modules are global

    -The Python code implementing the loading logic described above is quite complex to handle multiple -versions of Python, but it can be replaced with custom code. -This is not recommended unless you understand the full intricacies of importing Python modules. +Additional configurations are supported but require custom import code. +

    + + +

    +The following sub-sections look more closely at the two default configurations as well as some customized configurations. +An input interface file, foo.i, results in the two modules foo.py and _foo.so for each of the configurations. +

    + +

    32.11.6.1 Both modules in the same package

    + + +

    +In this configuration, the pure Python module, foo.py, tries to load the C/C++ module, _foo, from the same package foo.py is +located in. The package name is determined from the __package__ +attribute if available, see PEP 366. Otherwise it is derived from the __name__ +attribute given to foo.py by the Python loader that imported foo.py. +The interface file for this configuration would contain: +

    + +
    +
    +%module(package="mypackage") foo
    +
    +
    + +

    The location of the files could be as follows:

    +
    +
    +/dir/mypackage/foo.py
    +/dir/mypackage/__init__.py
    +/dir/mypackage/_foo.so
    +
    +
    + +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    + +
    +
    +from mypackage import foo
    +
    +
    + + +

    32.11.6.2 Both modules are global

    + + +

    +In this configuration, there are no packages. +If foo.py is not in a package, that is, it is a global module, then _foo is loaded +as a global module. +The interface file for this configuration would contain: +

    + +
    +
    +%module foo
    +
    +
    + +

    The location of the files could be as follows:

    +
    +
    +/dir/foo.py
    +/dir/_foo.so
    +
    +
    + +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    + +
    +
    +import foo
    +
    +
    + +

    32.11.6.3 Split modules custom configuration

    + + +

    In this non-standard 'split module' configuration, the pure Python module is in a package and the low level C/C++ module is global. +This configuration is not generally recommended and is not supported by default as it needs a custom configuration. +The module import code customization required is via the moduleimport attribute in the %module directive. +The next sub-section elaborates further on this. +The interface file for this split module configuration would contain: +

    + +
    +
    +%module(package="mypackage", moduleimport="import _foo") foo
    +
    +
    + +

    +When using -builtin, use the following instead (the reasons are also covered shortly in the next sub-section): +

    + +
    +
    +%module(package="mypackage", moduleimport="from _foo import *") foo
    +
    +
    + +

    The location of the files could be as follows:

    +
    +
    +/dir/mypackage/foo.py
    +/dir/mypackage/__init__.py
    +/dir/_foo.so
    +
    +
    + +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    + +
    +
    +from mypackage import foo
    +
    +
    + +

    +Compatibility Note: Versions of SWIG prior to SWIG-4.0.0 supported split modules without the above customization. +However, this had to be removed as the default import code often led to confusion due to obfuscation of genuine Python ImportError problems. +Using one of the two default configurations is the recommended approach now. +

    + + +

    32.11.6.4 More on customizing the module import code

    + + +

    +The Python code implementing the default import logic is shown below. It supports the two configurations described earlier, that is, +either both modules are in a package or loading both as global modules. +The code is generated into the pure Python module, foo.py, and merely imports the low-level _foo module. +

    + +
    +
    +if __package__ or '.' in __name__:
    +    from . import _foo
    +else:
    +    import _foo
    +
    +
    + +

    +This import code implementation is non-trivial but it can be replaced with custom code providing opportunities to make it simpler and/or more flexible. +This is not normally recommended though unless you have a good understanding of the intricacies of importing Python modules. The custom code can be specified by setting the moduleimport option of the %module directive with the appropriate import code. For example:

    @@ -6077,8 +6554,33 @@ The custom code can be specified by setting the moduleimport option of

    -The special variable $module will also be expanded into the low-level C/C++ module name, _foo in the case above. -When you have more than just a line or so then you can retain the easy +This will replace the default import logic above and generate the following into the pure Python module, foo.py: +

    + +
    +
    +import _foo
    +
    +
    + +

    +In fact the above is a simplification customization for the configuration where both modules are global; +it removes the logic for also handling the modules being in a package. +

    + +

    +There is a special variable, $module, which is expanded into the low-level C/C++ module name, _foo in the case above. +The identical output would be generated if instead the following had been used: +

    + +
    +
    +%module(moduleimport="import $module") foo
    +
    +
    + +

    +When you have many lines you can retain the easy readability of the %module directive by using a macro. For example:

    @@ -6097,79 +6599,51 @@ print 'Module has loaded' -

    -Now let's consider an example using the SWIG default loading logic. -Suppose foo.i is compiled into foo.py and _foo.so. Assuming -/dir is on PYTHONPATH, then the two modules can be installed and used in the -following ways: +This will of course generate the following into the pure Python module:

    - -

    36.11.6.1 Both modules in the same package

    - - -

    Both modules are in one package:

    -
    +
    -/dir/package/foo.py
    -/dir/package/__init__.py
    -/dir/package/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -from package import foo
    -
    -
    - - -

    36.11.6.2 Split modules

    - - -

    The pure python module is in a package and the C/C++ module is global:

    -
    -
    -/dir/package/foo.py
    -/dir/package/__init__.py
    -/dir/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -from package import foo
    -
    -
    - - -

    36.11.6.3 Both modules are global

    - - -

    Both modules are global:

    -
    -
    -/dir/foo.py
    -/dir/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -import foo
    +print 'Loading low-level module $module'
    +import _foo
    +print 'Module has loaded'
     

    -If _foo is statically linked into an embedded Python interpreter, then it may or -may not be in a Python package. This depends in the exact way the module was -loaded statically. The above search order will still be used for statically -loaded modules. So, one may place the module either globally or in a package -as desired. +When using the -builtin option, the link between the pure Python module and the low-level C/C++ module is slightly different as +all the objects from the low-level module are imported directly into the pure Python module. +The default import loading code is thus different:

    -

    36.11.6.4 Statically linked C modules

    +
    +
    +if __package__ or '.' in __name__:
    +    from ._foo import *
    +else:
    +    from _foo import *
    +
    +
    + +

    +Any customizations must import the code in a similar manner. +The best way to support both with and without -builtin is to make use of the SWIGPYTHON_BUILTIN macro which is defined when -builtin is specified. +The following will do this for the split modules case above. +

    + + +
    +
    +#if defined(SWIGPYTHON_BUILTIN) /* defined when using -builtin */
    +%module(package="mypackage", moduleimport="from $module import *") foo
    +#else
    +%module(package="mypackage", moduleimport="import $module") foo
    +#endif
    +
    +
    + +

    32.11.6.5 Statically linked C modules

    It is strongly recommended to use dynamically linked modules for the C @@ -6178,7 +6652,7 @@ If for some reason you still need to link the C module of the pair of Python modules generated by SWIG into your interpreter, then this section provides some details on how this impacts the pure Python modules ability to locate the other part of the pair. -Please also see the Static Linking section. +Please also see the Static Linking section.

    When Python is extended with C code the Python interpreter needs to be @@ -6195,7 +6669,7 @@ new SWIG C module exists. which would have normally been called when the shared object was dynamically loaded. The specific name of this method is not given here because statically linked modules are not encouraged with SWIG -(Static Linking). However one can find this +(Static Linking). However one can find this init function in the C file generated by SWIG.

    @@ -6207,8 +6681,8 @@ they treat it affects how the pure Python module will be able to locate the C module.

    -

    The details concerning this are covered completly in the documentation -for Python itself. Links to the relavent sections follow: +

    The details concerning this are covered completely in the documentation +for Python itself. Links to the relevant sections follow:

      @@ -6218,21 +6692,21 @@ for Python itself. Links to the relavent sections follow:

      There are two keys things to understand. The first is that in Python 2 the init() function returns void. In Python 3 the init() function -returns a PyObject * which points to the new module. Secondly, when +returns a PyObject * which points to the new module. Secondly, when you call the init() method manually, you are the Python importer. So, you determine which package the C module will be located in.

      So, if you are using Python 3 it is important that you follow what is described in the Python documentation linked above. In particular, you can't -simply call the init() function generated by SWIG and cast the PyObject +simply call the init() function generated by SWIG and cast the PyObject pointer it returns over the side. If you do then Python 3 will have no idea that your C module exists and the pure Python half of your wrapper will not be able to find it. You need to register your module with the Python interpreter as described in the Python docs.

      -

      With Python 2 things are somewhat more simple. In this case the init function +

      With Python 2 things are somewhat more simple. In this case the init() function returns void. Calling it will register your new C module as a global module. The pure Python part of the SWIG wrapper will be able to find it because it tries both the pure Python module it is part of and the global @@ -6241,17 +6715,15 @@ module then you will either need to refer to the Python documentation on how to do this (remember you are now the Python importer) or use dynamic linking.

      -

      36.12 Python 3 Support

      +

      32.12 Python 3 Support

      -SWIG is able to support Python 3.0. The wrapper code generated by -SWIG can be compiled with both Python 2.x or 3.0. Further more, by +SWIG is able to support Python 3.x. The wrapper code generated by +SWIG can be compiled with both Python 2.x or 3.x. Further more, by passing the -py3 command line option to SWIG, wrapper code with some Python 3 specific features can be generated (see below -subsections for details of these features). The -py3 option also -disables some incompatible features for Python 3, such as --classic. +subsections for details of these features).

      There is a list of known-to-be-broken features in Python 3: @@ -6264,11 +6736,11 @@ There is a list of known-to-be-broken features in Python 3:

    -The following are Python 3.0 new features that are currently supported by +The following are Python 3 new features that are currently supported by SWIG.

    -

    36.12.1 Function annotation

    +

    32.12.1 Function annotation

    @@ -6301,12 +6773,12 @@ For detailed usage of function annotation, see PEP 3107.

    -

    36.12.2 Buffer interface

    +

    32.12.2 Buffer interface

    -Buffer protocols were revised in Python 3. SWIG also gains a series of -new typemaps to support buffer interfaces. These typemap macros are +SWIG has a series of +typemaps to support buffer interfaces. These typemap macros are defined in pybuffer.i, which must be included in order to use them. By using these typemaps, your wrapped function will be able to accept any Python object that exposes a suitable buffer interface. @@ -6323,15 +6795,15 @@ void get_path(char *s);

    Then you can write a typemap like this: (the following example is -applied to both Python 3.0 and 2.6, since the bytearray type -is backported to 2.6. +applied to both Python 2 and 3, since the bytearray type +was backported to 2.6.

     %include <pybuffer.i>
     %pybuffer_mutable_string(char *str);
    -void get_path(char *s);
    +void get_path(char *str);
     

    @@ -6378,7 +6850,7 @@ In Python: >>> snprintf(buf, "Hello world!") >>> print(buf) bytearray(b'Hello\x00') ->>> +>>>

    @@ -6414,7 +6886,7 @@ bytearray(b'FOO\x00')

    Both %pybuffer_mutable_binary and %pybuffer_mutable_string -require the provided buffer to be mutable, eg. they can accept a +require the provided buffer to be mutable, eg. they can accept a bytearray type but can't accept an immutable byte type.

    @@ -6431,7 +6903,7 @@ type. This macro maps an object's buffer to a pointer parm and a size size_parm. It is similar to %pybuffer_mutable_binary, except the -%pybuffer_binary an accept both mutable and immutable +%pybuffer_binary can accept both mutable and immutable buffers. As a result, the wrapped function should not modify the buffer.

    @@ -6453,13 +6925,14 @@ modify the buffer. -

    36.12.3 Abstract base classes

    +

    32.12.3 Abstract base classes

    By including pyabc.i and using the -py3 command line option when calling SWIG, the proxy classes of the STL containers -will automatically gain an appropriate abstract base class. For +will automatically gain an appropriate abstract base class from the +collections.abc module. For example, the following SWIG interface:

    @@ -6476,8 +6949,8 @@ namespace std {

    will generate a Python proxy class Mapii inheriting from -collections.MutableMap and a proxy class IntList -inheriting from collections.MutableSequence. +collections.abc.MutableMap and a proxy class IntList +inheriting from collections.abc.MutableSequence.

    @@ -6486,7 +6959,7 @@ used to define an abstract base class for your own C++ class:

    -%pythonabc(MySet, collections.MutableSet);
    +%pythonabc(MySet, collections.abc.MutableSet);
     

    @@ -6494,7 +6967,15 @@ For details of abstract base class, please see PEP 3119.

    -

    36.12.4 Byte string output conversion

    +

    +Compatibility Note: SWIG-4.0.0 changed the base classes to use the +collections.abc module instead of collections due to the deprecation +of the classes in the collections module in Python 3.7. +The collections.abc module was introduced in Python 3.3 and hence this feature +requires Python 3.3 or later. +

    + +

    32.12.4 Byte string output conversion

    @@ -6511,18 +6992,21 @@ string that cannot be completely decoded as UTF-8:

     %module example
     
    -%include <std_string.i>
    -
     %inline %{
     
    -const char* non_utf8_c_str(void) {
    -        return "h\xe9llo w\xc3\xb6rld";
    +const char * non_utf8_c_str(void) {
    +  return "h\xe9llo w\xc3\xb6rld";
    +}
    +
    +void instring(const char *s) {
    +  ...
     }
     
     %}
     

    +Note that "\xe9" is an invalid UTF-8 encoding, but "\xc3\xb6" is valid. When this method is called from Python 3, the return value is the following text string:

    @@ -6580,6 +7064,20 @@ For more details about the surrogateescape error handler, please see PEP 383.

    +

    +When Python 3 strings are passed to the C/C++ layer, they are expected to be valid UTF8 Unicode strings too. +For example, when the instring method above is wrapped and called, any invalid UTF8 Unicode code strings +will result in a TypeError because the attempted conversion fails: +

    + +
    +>>> example.instring('h\xe9llo')
    +>>> example.instring('h\udce9llo')
    +Traceback (most recent call last):
    +  File "<stdin>", line 1, in <module>
    +TypeError: in method 'instring', argument 1 of type 'char const *'
    +
    +

    In some cases, users may wish to instead handle all byte strings as bytes objects in Python 3. This can be accomplished by adding @@ -6658,7 +7156,7 @@ overloads taking both std::string (as Python bytes) and std::wstring (as Python unicode).

    -

    36.12.5 Python 2 Unicode

    +

    32.12.5 Python 2 Unicode

    @@ -6730,6 +7228,110 @@ the first is allowing unicode conversion and the second is explicitly prohibiting it.

    +

    32.13 Support for Multithreaded Applications

    + + +

    By default, SWIG does not enable support for multithreaded Python applications. More +specifically, the Python wrappers generated by SWIG will not release the + Python's interpreter's Global Interpreter Lock (GIL) when wrapped C/C++ code is +entered. Hence, while any of the wrapped C/C++ code is executing, the Python interpreter +will not be able to run any other threads, even if the wrapped C/C++ code is waiting + in a blocking call for something like network or disk IO. + + Fortunately, SWIG does have the ability to enable multithreaded support and automatic + release of the GIL either for all wrapped code in a module or on a more selective basis. The user + interface for this is described in the next section. +

    + +

    32.13.1 UI for Enabling Multithreading Support

    + + +

    The user interface is as follows:

    +
      +
    1. Module thread support can be enabled in two ways:

      +
        +
      • +

        + The -threads SWIG Python option at the command line (or in setup.py): +

        +
        $ swig -python -threads example.i
        +
      • +
      • +

        + The threads module option in the *.i template file: +

        +
        %module("threads"=1)
        +
      • +
      +
    2. +
    3. You can disable thread support for a given method:

      +
      %feature("nothread") method;
      + or +
      %nothread method;
      +
    4. +
    5. You can partially disable thread support for a given method:

      +
        +
      • To disable the C++/Python thread protection:

        +
        %feature("nothreadblock") method;
        + or +
        %nothreadblock method;
        +
      • +
      • +

        To disable the Python/C++ thread protection

        +
        %feature("nothreadallow") method;
        + or +
        %nothreadallow method;
        +
      • +
      +
    6. +
    + +

    32.13.2 Multithread Performance

    + + +

    + For the curious about performance, here are some numbers for the profiletest.i test, + which is used to check the speed of the wrapped code: +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Thread ModeExecution Time (sec)Comment
    Single Threaded9.6no "-threads" option given
    Fully Multithreaded15.5"-threads" option = 'allow' + 'block'
    No Thread block12.2only 'allow'
    No Thread Allow13.6only block'
    + +

    + Fully threaded code decreases the wrapping performance by + around 60%. If that is important to your application, you + can tune each method using the different 'nothread', + 'nothreadblock' or 'nothreadallow' features as + needed. Note that for some methods deactivating the + 'thread block' or 'thread allow' code is not an option, + so, be careful. +

    + diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/R.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/R.html similarity index 68% rename from winx64/bin/swig-3.0.12/Doc/Manual/R.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/R.html index 40b96d6c..45e5541d 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/R.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/R.html @@ -7,7 +7,7 @@ -

    37 SWIG and R

    +

    33 SWIG and R

      @@ -34,7 +34,7 @@ compile and run an R interface to QuantLib running on Mandriva Linux with gcc. The R bindings also work on Microsoft Windows using Visual C++.

      -

      37.1 Bugs

      +

      33.1 Bugs

      @@ -46,7 +46,7 @@ Currently the following features are not implemented or broken:

    • C Array wrappings
    -

    37.2 Using R and SWIG

    +

    33.2 Using R and SWIG

    @@ -129,7 +129,7 @@ These two files can be loaded in any order

  • If you do not set the output file name appropriately, you might see errors like
    -> fact(4)
    +> fact(4)
     Error in .Call("R_swig_fact", s_arg1, as.logical(.copy), PACKAGE = "example") :
       "R_swig_fact" not available for .Call() for package "example"
     
    @@ -137,7 +137,7 @@ Error in .Call("R_swig_fact", s_arg1, as.logical(.copy), PACKAGE = "example") :
  • Make sure the architecture of the shared library(x64 for instance), matches the architecture of the R program you want to load your shared library into -

    37.3 Precompiling large R files

    +

    33.3 Precompiling large R files

    In cases where the R file is large, one make save a lot of loading @@ -155,7 +155,7 @@ will save a large amount of loading time. -

    37.4 General policy

    +

    33.4 General policy

    @@ -164,7 +164,7 @@ wrapping over the underlying functions and rely on the R type system to provide R syntax.

    -

    37.5 Language conventions

    +

    33.5 Language conventions

    @@ -173,7 +173,7 @@ and [ are overloaded to allow for R syntax (one based indices and slices)

    -

    37.6 C++ classes

    +

    33.6 C++ classes

    @@ -185,13 +185,53 @@ keep track of the pointer object which removes the necessity for a lot of the proxy class baggage you see in other languages.

    -

    37.7 Enumerations

    +

    33.7 Enumerations

    -enumerations are characters which are then converted back and forth to -ints before calling the C routines. All of the enumeration code is -done in R. +R doesn't have a native enumeration type. Enumerations are represented +as character strings in R, with calls to R functions that convert back +and forth between integers. + +The details of enumeration names and contents are stored in hidden R +environments, which are named according the the enumeration name - for +example, an enumeration colour: +

    +enum colour { red=-1, blue, green = 10 };
    +
    + +will be initialized by the following call in R: +
    +defineEnumeration("_colour",
    + .values=c("red" = .Call('R_swig_colour_red_get',FALSE, PACKAGE='enum_thorough'),
    +"blue" = .Call('R_swig_colour_blue_get',FALSE, PACKAGE='enum_thorough'),
    +"green" = .Call('R_swig_colour_green_get',FALSE, PACKAGE='enum_thorough')))
    +
    +
    + +

    +which will create an environment named .__E___colour. The enumeration +values are initialised via calls to C/C++ code, allowing complex +values for enumerations to be used. Calls to the C/C++ code require +the compiled library to be loaded, so a delayedAssign is employed +within defineEnumeration in order to allow the code to be easily used in R +packages. + +The user typically does not need to access the enumeration lookup +functions or know the name of the enumeration type used by +R. Attributes containing the type information are attached by swig to +functions requiring enumeration arguments or returning enumeration +values, and those attributes are used to identify and access the +appropriate environments and thus translate between characters +and integers. + +The relevant functions, for debugging purposes, are enumToInteger and +enumFromInteger. + +Anonymous enumerations are ignored by the binding generation process, +leaving no way of accessing the value of anonymous enumerations from R +code. +

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/README b/winx64/bin/swigwin-4.0.0/Doc/Manual/README similarity index 100% rename from winx64/bin/swig-3.0.12/Doc/Manual/README rename to winx64/bin/swigwin-4.0.0/Doc/Manual/README diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Ruby.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Ruby.html similarity index 95% rename from winx64/bin/swig-3.0.12/Doc/Manual/Ruby.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Ruby.html index 89de4301..aa421266 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Ruby.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Ruby.html @@ -8,7 +8,7 @@ -

    38 SWIG and Ruby

    +

    34 SWIG and Ruby

      @@ -149,7 +149,7 @@

      This chapter describes SWIG's support of Ruby.

      -

      38.1 Preliminaries

      +

      34.1 Preliminaries

      SWIG 3.0 is known to work with Ruby versions 1.8 and later. @@ -164,7 +164,7 @@ read the "SWIG Basics" chapter. It is also assumed that the reader has a basic understanding of Ruby.

      -

      38.1.1 Running SWIG

      +

      34.1.1 Running SWIG

      To build a Ruby module, run SWIG using the -ruby @@ -188,7 +188,7 @@ if compiling a C++ extension) that contains all of the code needed to build a Ruby extension module. To finish building the module, you need to compile this file and link it with the rest of your program.

      -

      38.1.2 Getting the right header files

      +

      34.1.2 Getting the right header files

      In order to compile the wrapper code, the compiler needs the ruby.h @@ -202,7 +202,7 @@ the compiler options needed to compile the code is to ask Ruby itself:

    -

    38.1.3 Compiling a dynamic module

    +

    34.1.3 Compiling a dynamic module

    Ruby extension modules are typically compiled into shared @@ -275,7 +275,7 @@ manual pages for your compiler and linker to determine the correct set of options. You might also check the SWIG Wiki for additional information.

    -

    38.1.4 Using your module

    +

    34.1.4 Using your module

    Ruby module names must be capitalized, @@ -305,7 +305,7 @@ begins with:

    will result in an extension module using the feature name "example" and Ruby module name "Example".

    -

    38.1.5 Static linking

    +

    34.1.5 Static linking

    An alternative approach to dynamic linking is to rebuild the @@ -320,7 +320,7 @@ finding the Ruby source, adding an entry to the ext/Setup file, adding your directory to the list of extensions in the file, and finally rebuilding Ruby.

    -

    38.1.6 Compilation of C++ extensions

    +

    34.1.6 Compilation of C++ extensions

    On most machines, C++ extension modules should be linked @@ -352,7 +352,7 @@ $libs = append_library($libs, "supc++") create_makefile('example') -

    38.2 Building Ruby Extensions under Windows 95/NT

    +

    34.2 Building Ruby Extensions under Windows 95/NT

    Building a SWIG extension to Ruby under Windows 95/NT is @@ -377,7 +377,7 @@ order to build extensions, you may need to download the source distribution to the Ruby package, as you will need the Ruby header files.

    -

    38.2.1 Running SWIG from Developer Studio

    +

    34.2.1 Running SWIG from Developer Studio

    If you are developing your application within Microsoft @@ -441,13 +441,13 @@ Foo = 3.0 -

    38.3 The Ruby-to-C/C++ Mapping

    +

    34.3 The Ruby-to-C/C++ Mapping

    This section describes the basics of how SWIG maps C or C++ declarations in your SWIG interface files to Ruby constructs.

    -

    38.3.1 Modules

    +

    34.3.1 Modules

    The SWIG %module directive specifies @@ -519,7 +519,7 @@ option to wrap everything into the global module, take care that the names of your constants, classes and methods don't conflict with any of Ruby's built-in names.

    -

    38.3.2 Functions

    +

    34.3.2 Functions

    Global functions are wrapped as Ruby module methods. For @@ -553,7 +553,7 @@ irb(main):002:0> Example.fact(4) 24 -

    38.3.3 Variable Linking

    +

    34.3.3 Variable Linking

    C/C++ global variables are wrapped as a pair of singleton @@ -615,7 +615,7 @@ directive. For example:

    effect until it is explicitly disabled using %mutable.

    -

    38.3.4 Constants

    +

    34.3.4 Constants

    C/C++ constants are wrapped as module constants initialized @@ -643,7 +643,7 @@ irb(main):002:0> Example::PI 3.14159 -

    38.3.5 Pointers

    +

    34.3.5 Pointers

    "Opaque" pointers to arbitrary C/C++ types (i.e. types that @@ -667,7 +667,7 @@ returns an instance of an internally generated Ruby class:

    A NULL pointer is always represented by the Ruby nil object.

    -

    38.3.6 Structures

    +

    34.3.6 Structures

    C/C++ structs are wrapped as Ruby classes, with accessor @@ -772,7 +772,7 @@ void Bar_f_set(Bar *b, Foo *val) { } -

    38.3.7 C++ classes

    +

    34.3.7 C++ classes

    Like structs, C++ classes are wrapped by creating a new Ruby @@ -827,7 +827,7 @@ Ale 3 -

    38.3.8 C++ Inheritance

    +

    34.3.8 C++ Inheritance

    The SWIG type-checker is fully aware of C++ inheritance. @@ -980,7 +980,7 @@ inherit from both Base1 and Base2 (i.e. they exhibit "Duck Typing").

    -

    38.3.9 C++ Overloaded Functions

    +

    34.3.9 C++ Overloaded Functions

    C++ overloaded functions, methods, and constructors are @@ -1070,7 +1070,7 @@ arises--in this case, the first declaration takes precedence.

    Please refer to the "SWIG and C++" chapter for more information about overloading.

    -

    38.3.10 C++ Operators

    +

    34.3.10 C++ Operators

    For the most part, overloaded operators are handled @@ -1112,7 +1112,7 @@ c = Example.add_complex(a, b) is discussed in the section on operator overloading.

    -

    38.3.11 C++ namespaces

    +

    34.3.11 C++ namespaces

    SWIG is aware of C++ namespaces, but namespace names do not @@ -1169,7 +1169,7 @@ and create extension modules for each namespace separately. If your program utilizes thousands of small deeply nested namespaces each with identical symbol names, well, then you get what you deserve.

    -

    38.3.12 C++ templates

    +

    34.3.12 C++ templates

    C++ templates don't present a huge problem for SWIG. However, @@ -1211,7 +1211,7 @@ irb(main):004:0> p.second 4 -

    38.3.13 C++ Standard Template Library (STL)

    +

    34.3.13 C++ Standard Template Library (STL)

    On a related note, the standard SWIG library contains a @@ -1304,7 +1304,7 @@ puts v shown in these examples. More details can be found in the SWIG and C++ chapter.

    -

    38.3.14 C++ STL Functors

    +

    34.3.14 C++ STL Functors

    Some containers in the STL allow you to modify their default @@ -1365,7 +1365,7 @@ b -

    38.3.15 C++ STL Iterators

    +

    34.3.15 C++ STL Iterators

    The STL is well known for the use of iterators. There @@ -1448,10 +1448,10 @@ i

    If you'd rather have STL classes without any iterators, you should define -DSWIG_NO_EXPORT_ITERATOR_METHODS when running swig.

    -

    38.3.16 C++ Smart Pointers

    +

    34.3.16 C++ Smart Pointers

    -

    38.3.16.1 The shared_ptr Smart Pointer

    +

    34.3.16.1 The shared_ptr Smart Pointer

    @@ -1462,7 +1462,7 @@ in the shared_ptr smart pointer -

    38.3.16.2 Generic Smart Pointers

    +

    34.3.16.2 Generic Smart Pointers

    In certain C++ programs, it is common to use classes that @@ -1527,7 +1527,7 @@ method. For example:

    irb(main):004:0> f = p.__deref__() # Returns underlying Foo *
    -

    38.3.17 Cross-Language Polymorphism

    +

    34.3.17 Cross-Language Polymorphism

    SWIG's Ruby module supports cross-language polymorphism @@ -1536,7 +1536,7 @@ module. Rather than duplicate the information presented in the 38.3.17.1 Exception Unrolling +

    34.3.17.1 Exception Unrolling

    Whenever a C++ director class routes one of its virtual @@ -1559,7 +1559,7 @@ method is "wrapped" using the rb_rescue2() function from Ruby's C API. If any Ruby exception is raised, it will be caught here and a C++ exception is raised in its place.

    -

    38.4 Naming

    +

    34.4 Naming

    Ruby has several common naming conventions. Constants are @@ -1597,7 +1597,7 @@ generated by SWIG, it is turned off by default in SWIG 1.3.28. However, it is planned to become the default option in future releases.

    -

    38.4.1 Defining Aliases

    +

    34.4.1 Defining Aliases

    It's a fairly common practice in the Ruby built-ins and @@ -1667,7 +1667,7 @@ matching rules used for other kinds of features apply (see the chapter on "Customization Features") for more details).

    -

    38.4.2 Predicate Methods

    +

    34.4.2 Predicate Methods

    Ruby methods that return a boolean value and end in a @@ -1716,7 +1716,7 @@ using SWIG's "features" mechanism and so the same name matching rules used for other kinds of features apply (see the chapter on "Customization Features") for more details).

    -

    38.4.3 Bang Methods

    +

    34.4.3 Bang Methods

    Ruby methods that modify an object in-place and end in an @@ -1748,7 +1748,7 @@ using SWIG's "features" mechanism and so the same name matching rules used for other kinds of features apply (see the chapter on "Customization Features") for more details).

    -

    38.4.4 Getters and Setters

    +

    34.4.4 Getters and Setters

    Often times a C++ library will expose properties through @@ -1783,7 +1783,7 @@ irb(main):003:0> puts foo.value %rename("value=") Foo::setValue(int value); -

    38.5 Input and output parameters

    +

    34.5 Input and output parameters

    A common problem in some C programs is handling parameters @@ -1922,10 +1922,10 @@ void get_dimensions(Matrix *m, int *rows, int*columns);

    r, c = Example.get_dimensions(m)
    -

    38.6 Exception handling

    +

    34.6 Exception handling

    -

    38.6.1 Using the %exception directive

    +

    34.6.1 Using the %exception directive

    The SWIG %exception directive can be @@ -2034,7 +2034,7 @@ methods and functions named getitem and setitem. limited to C++ exception handling. See the chapter on Customization Features for more examples.

    -

    38.6.2 Handling Ruby Blocks

    +

    34.6.2 Handling Ruby Blocks

    One of the highlights of Ruby and most of its standard library @@ -2101,7 +2101,7 @@ a special in typemap, like:

    For more information on typemaps, see Typemaps.

    -

    38.6.3 Raising exceptions

    +

    34.6.3 Raising exceptions

    There are three ways to raise exceptions from C++ code to @@ -2258,7 +2258,7 @@ function. The first argument passed to rb_raise() is the exception type. You can raise a custom exception type or one of the built-in Ruby exception types.

    -

    38.6.4 Exception classes

    +

    34.6.4 Exception classes

    Starting with SWIG 1.3.28, the Ruby module supports the %exceptionclass @@ -2295,7 +2295,7 @@ end

    For another example look at swig/Examples/ruby/exception_class.

    -

    38.7 Typemaps

    +

    34.7 Typemaps

    This section describes how you can modify SWIG's default @@ -2310,7 +2310,7 @@ a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect of the primitive C-Ruby interface.

    -

    38.7.1 What is a typemap?

    +

    34.7.1 What is a typemap?

    A typemap is nothing more than a code generation rule that is @@ -2467,7 +2467,7 @@ to be used as follows (notice how the length parameter is omitted):

    2 -

    38.7.2 Typemap scope

    +

    34.7.2 Typemap scope

    Once defined, a typemap remains in effect for all of the @@ -2513,7 +2513,7 @@ where the class itself is defined. For example:

    }; -

    38.7.3 Copying a typemap

    +

    34.7.3 Copying a typemap

    A typemap is copied by using assignment. For example:

    @@ -2555,7 +2555,7 @@ rules as for %apply (char *buf, int len) { (char *buffer, int size) }; // Multiple arguments -

    38.7.4 Deleting a typemap

    +

    34.7.4 Deleting a typemap

    A typemap can be deleted by simply defining no code. For @@ -2580,7 +2580,7 @@ defined by typemaps, clearing a fundamental type like int will make that type unusable unless you also define a new set of typemaps immediately after the clear operation.

    -

    38.7.5 Placement of typemaps

    +

    34.7.5 Placement of typemaps

    Typemap declarations can be declared in the global scope, @@ -2651,13 +2651,13 @@ In this example, this is done using the class declaration class string .

    -

    38.7.6 Ruby typemaps

    +

    34.7.6 Ruby typemaps

    The following list details all of the typemap methods that can be used by the Ruby module:

    -

    38.7.6.1 "in" typemap

    +

    34.7.6.1 "in" typemap

    Converts Ruby objects to input @@ -2724,7 +2724,7 @@ arguments to be specified. For example:

    At this time, only zero or one arguments may be converted.

    -

    38.7.6.2 "typecheck" typemap

    +

    34.7.6.2 "typecheck" typemap

    The "typecheck" typemap is used to support overloaded @@ -2746,7 +2746,7 @@ program uses overloaded methods, you should also define a collection of "typecheck" typemaps. More details about this follow in a later section on "Typemaps and Overloading."

    -

    38.7.6.3 "out" typemap

    +

    34.7.6.3 "out" typemap

    Converts return value of a C function @@ -2797,7 +2797,7 @@ version of the C datatype matched by the typemap. -

    38.7.6.4 "arginit" typemap

    +

    34.7.6.4 "arginit" typemap

    The "arginit" typemap is used to set the initial value of a @@ -2812,7 +2812,7 @@ applications. For example:

    } -

    38.7.6.5 "default" typemap

    +

    34.7.6.5 "default" typemap

    The "default" typemap is used to turn an argument into a @@ -2837,7 +2837,7 @@ arguments that follow must have default values. See the 38.7.6.6 "check" typemap +

    34.7.6.6 "check" typemap

    The "check" typemap is used to supply value checking code @@ -2852,7 +2852,7 @@ arguments have been converted. For example:

    } -

    38.7.6.7 "argout" typemap

    +

    34.7.6.7 "argout" typemap

    The "argout" typemap is used to return values from arguments. @@ -2906,7 +2906,7 @@ some function like SWIG_Ruby_AppendOutput.

    See the typemaps.i library for examples.

    -

    38.7.6.8 "freearg" typemap

    +

    34.7.6.8 "freearg" typemap

    The "freearg" typemap is used to cleanup argument data. It is @@ -2933,7 +2933,7 @@ This code is also placed into a special variable $cleanup that may be used in other typemaps whenever a wrapper function needs to abort prematurely.

    -

    38.7.6.9 "newfree" typemap

    +

    34.7.6.9 "newfree" typemap

    The "newfree" typemap is used in conjunction with the %newobject @@ -2957,7 +2957,7 @@ string *foo();

    See Object ownership and %newobject for further details.

    -

    38.7.6.10 "memberin" typemap

    +

    34.7.6.10 "memberin" typemap

    The "memberin" typemap is used to copy data from an @@ -2975,21 +2975,21 @@ example:

    already provides a default implementation for arrays, strings, and other objects.

    -

    38.7.6.11 "varin" typemap

    +

    34.7.6.11 "varin" typemap

    The "varin" typemap is used to convert objects in the target language to C for the purposes of assigning to a C/C++ global variable. This is implementation specific.

    -

    38.7.6.12 "varout" typemap

    +

    34.7.6.12 "varout" typemap

    The "varout" typemap is used to convert a C/C++ object to an object in the target language when reading a C/C++ global variable. This is implementation specific.

    -

    38.7.6.13 "throws" typemap

    +

    34.7.6.13 "throws" typemap

    The "throws" typemap is only used when SWIG parses a C++ @@ -3030,7 +3030,7 @@ specification yet they do throw exceptions, SWIG cannot know how to deal with them. For a neat way to handle these, see the Exception handling with %exception section.

    -

    38.7.6.14 directorin typemap

    +

    34.7.6.14 directorin typemap

    Converts C++ objects in director @@ -3089,7 +3089,7 @@ referring to the class itself. -

    38.7.6.15 directorout typemap

    +

    34.7.6.15 directorout typemap

    Converts Ruby objects in director @@ -3162,7 +3162,7 @@ exception.

    -

    38.7.6.16 directorargout typemap

    +

    34.7.6.16 directorargout typemap

    Output argument processing in director @@ -3220,19 +3220,19 @@ referring to the instance of the class itself -

    38.7.6.17 ret typemap

    +

    34.7.6.17 ret typemap

    Cleanup of function return values

    -

    38.7.6.18 globalin typemap

    +

    34.7.6.18 globalin typemap

    Setting of C global variables

    -

    38.7.7 Typemap variables

    +

    34.7.7 Typemap variables

    @@ -3282,7 +3282,7 @@ so that their values can be properly assigned.

    The Ruby name of the wrapper function being created.
    -

    38.7.8 Useful Functions

    +

    34.7.8 Useful Functions

    When you write a typemap, you usually have to work directly @@ -3297,7 +3297,7 @@ stick to the swig functions instead of the native Ruby functions. That should help you avoid having to rewrite a lot of typemaps across multiple languages.

    -

    38.7.8.1 C Datatypes to Ruby Objects

    +

    34.7.8.1 C Datatypes to Ruby Objects

    @@ -3339,11 +3339,11 @@ SWIG_From_float(float)
    -

    38.7.8.2 Ruby Objects to C Datatypes

    +

    34.7.8.2 Ruby Objects to C Datatypes

    Here, while the Ruby versions return the value directly, the SWIG -versions do not, but return a status value to indicate success (SWIG_OK). While more akward to use, this allows you to write typemaps that report more helpful error messages, like:

    +versions do not, but return a status value to indicate success (SWIG_OK). While more awkward to use, this allows you to write typemaps that report more helpful error messages, like:

    @@ -3407,7 +3407,7 @@ versions do not, but return a status value to indicate success (SWIG_OK
     
     
    -

    38.7.8.3 Macros for VALUE

    +

    34.7.8.3 Macros for VALUE

    RSTRING_LEN(str)

    @@ -3430,7 +3430,7 @@ versions do not, but return a status value to indicate success (SWIG_OK
    pointer to array storage
    -

    38.7.8.4 Exceptions

    +

    34.7.8.4 Exceptions

    void rb_raise(VALUE exception, const char *fmt, @@ -3509,7 +3509,7 @@ message to standard error if Ruby was invoked with the -w flag. The given format string fmt and remaining arguments are interpreted as with printf(). -

    38.7.8.5 Iterators

    +

    34.7.8.5 Iterators

    void rb_iter_break()

    @@ -3555,14 +3555,14 @@ VALUE), VALUE value)

    Equivalent to Ruby's throw.
    -

    38.7.9 Typemap Examples

    +

    34.7.9 Typemap Examples

    This section includes a few examples of typemaps. For more examples, you might look at the examples in the Example/ruby directory.

    -

    38.7.10 Converting a Ruby array to a char **

    +

    34.7.10 Converting a Ruby array to a char **

    A common problem in many C programs is the processing of @@ -3627,7 +3627,7 @@ array. Since dynamic memory allocation is used to allocate memory for the array, the "freearg" typemap is used to later release this memory after the execution of the C function.

    -

    38.7.11 Collecting arguments in a hash

    +

    34.7.11 Collecting arguments in a hash

    Ruby's solution to the "keyword arguments" capability of some @@ -3704,7 +3704,7 @@ value:

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
     }
    @@ -3717,7 +3717,7 @@ the keys and values from the hash:

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
    @@ -3736,13 +3736,13 @@ of the keys) and then start looping over the elements in that array: 

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
           }
         }
    @@ -3758,13 +3758,13 @@ corresponding to that key in the hash: 

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
             key = rb_ary_entry(keys_arr, i);
             val = rb_hash_aref($input, key);
    @@ -3781,13 +3781,13 @@ value is a Fixnum: 

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
             key = rb_ary_entry(keys_arr, i);
             val = rb_hash_aref($input, key);
    @@ -3805,13 +3805,13 @@ equivalents and store them in our local C arrays: 

    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
       Check_Type($input, T_HASH);
    -  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
       $2 = NULL;
       $3 = NULL;
       if ($1 > 0) {
         $2 = (char **) malloc($1*sizeof(char *));
         $3 = (int *) malloc($1*sizeof(int));
    -    keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +    keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
         for (i = 0; i < $1; i++) {
           key = rb_ary_entry(keys_arr, i);
           val = rb_hash_aref($input, key);
    @@ -3841,7 +3841,7 @@ memory leak. Fortunately, this typemap is a lot easier to write: 

    program that uses the extension, can be found in the Examples/ruby/hashargs directory of the SWIG distribution.

    -

    38.7.12 Pointer handling

    +

    34.7.12 Pointer handling

    Occasionally, it might be necessary to convert pointer values @@ -3900,7 +3900,7 @@ For example:

    }
    -

    38.7.12.1 Ruby Datatype Wrapping

    +

    34.7.12.1 Ruby Datatype Wrapping

    VALUE Data_Wrap_Struct(VALUE class, void @@ -3927,7 +3927,7 @@ as above. type c-type from the data object obj and assigns that pointer to ptr. -

    38.7.13 Example: STL Vector to Ruby Array

    +

    34.7.13 Example: STL Vector to Ruby Array

    Another use for macros and type maps is to create a Ruby array @@ -4019,7 +4019,7 @@ STL with ruby, you are advised to use the standard swig STL library, which does much more than this. Refer to the section called the C++ Standard Template Library. -

    38.8 Docstring Features

    +

    34.8 Docstring Features

    @@ -4053,7 +4053,7 @@ generate ri documentation from a c wrap file, you could do:

    $ rdoc -r file_wrap.c
    -

    38.8.1 Module docstring

    +

    34.8.1 Module docstring

    @@ -4083,7 +4083,7 @@ layout of controls on a panel, etc. to be loaded from an XML file." %module(docstring=DOCSTRING) xrc

    -

    38.8.2 %feature("autodoc")

    +

    34.8.2 %feature("autodoc")

    Since SWIG does know everything about the function it wraps, @@ -4104,7 +4104,7 @@ several options for autodoc controlled by the value given to the feature, described below.

    -

    38.8.2.1 %feature("autodoc", "0")

    +

    34.8.2.1 %feature("autodoc", "0")

    @@ -4128,7 +4128,7 @@ Then Ruby code like this will be generated: ...

    -

    38.8.2.2 %feature("autodoc", "1")

    +

    34.8.2.2 %feature("autodoc", "1")

    @@ -4148,7 +4148,7 @@ this: ...

    -

    38.8.2.3 %feature("autodoc", "2")

    +

    34.8.2.3 %feature("autodoc", "2")

    @@ -4160,7 +4160,7 @@ parameter types with the "2" option will result in Ruby code like this:

    -

    38.8.2.4 %feature("autodoc", "3")

    +

    34.8.2.4 %feature("autodoc", "3")

    @@ -4181,7 +4181,7 @@ Parameters: bar - Bar -

    38.8.2.5 %feature("autodoc", "docstring")

    +

    34.8.2.5 %feature("autodoc", "docstring")

    @@ -4197,7 +4197,7 @@ generated string. For example: void GetPosition(int* OUTPUT, int* OUTPUT); -

    38.8.3 %feature("docstring")

    +

    34.8.3 %feature("docstring")

    @@ -4208,10 +4208,10 @@ docstring associated with classes, function or methods are output. If an item already has an autodoc string then it is combined with the docstring and they are output together.

    -

    38.9 Advanced Topics

    +

    34.9 Advanced Topics

    -

    38.9.1 Operator overloading

    +

    34.9.1 Operator overloading

    SWIG allows operator overloading with, by using the %extend @@ -4392,7 +4392,7 @@ separate method for handling inequality since Ruby parses the expression a != b as !(a == b).

    -

    38.9.2 Creating Multi-Module Packages

    +

    34.9.2 Creating Multi-Module Packages

    The chapter on Working @@ -4518,7 +4518,7 @@ irb(main):005:0> c.getX() 5.0 -

    38.9.3 Specifying Mixin Modules

    +

    34.9.3 Specifying Mixin Modules

    The Ruby language doesn't support multiple inheritance, but @@ -4585,7 +4585,7 @@ matching rules used for other kinds of features apply (see the chapter on "Customization Features") for more details).

    -

    38.10 Memory Management

    +

    34.10 Memory Management

    One of the most common issues in generating SWIG bindings for @@ -4608,7 +4608,7 @@ to C++ (or vice versa) depending on what function or methods are invoked. Clearly, developing a SWIG wrapper requires a thorough understanding of how the underlying library manages memory.

    -

    38.10.1 Mark and Sweep Garbage Collector

    +

    34.10.1 Mark and Sweep Garbage Collector

    Ruby uses a mark and sweep garbage collector. When the garbage @@ -4639,7 +4639,7 @@ any memory has been allocated in creating the underlying C struct or C++ struct, then a "free" function must be defined that deallocates this memory.

    -

    38.10.2 Object Ownership

    +

    34.10.2 Object Ownership

    As described above, memory management depends on clearly @@ -4784,7 +4784,7 @@ public:

    This code can be seen in swig/examples/ruby/tracking.

    -

    38.10.3 Object Tracking

    +

    34.10.3 Object Tracking

    The remaining parts of this section will use the class library @@ -5010,7 +5010,7 @@ However, if you implement your own free functions (see below) you may also have to call the SWIG_RubyRemoveTracking and RubyUnlinkObjects methods.

    -

    38.10.4 Mark Functions

    +

    34.10.4 Mark Functions

    With a bit more testing, we see that our class library still @@ -5139,7 +5139,7 @@ irb(main):016:0>

    This code can be seen in swig/examples/ruby/mark_function.

    -

    38.10.5 Free Functions

    +

    34.10.5 Free Functions

    By default, SWIG creates a "free" function that is called when @@ -5307,7 +5307,7 @@ been freed, and thus raises a runtime exception.

    This code can be seen in swig/examples/ruby/free_function.

    -

    38.10.6 Embedded Ruby and the C++ Stack

    +

    34.10.6 Embedded Ruby and the C++ Stack

    As has been said, the Ruby GC runs and marks objects before diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/SWIG.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIG.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/SWIG.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/SWIG.html index e5b441fb..d1492d30 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/SWIG.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIG.html @@ -88,7 +88,7 @@

    This chapter describes the basic operation of SWIG, the structure of its -input files, and how it handles standard ANSI C declarations. C++ support is +input files, and how it handles standard ISO C declarations. C++ support is described in the next chapter. However, C++ programmers should still read this chapter to understand the basics. Specific details about each target language are described in later @@ -103,71 +103,156 @@ To run SWIG, use the swig command with options and a filename like this

    -swig [ options ] filename
    +swig [ options ] filename
     

    where filename is a SWIG interface file or a C/C++ header file. -Below is a subset of options that can be used. +Full help can be seen by running swig -help. +Below is the common set of options that can be used. Additional options are also defined for each target language. A full list -can be obtained by typing swig -help or swig --<lang> -help for language <lang> specific options. +can be obtained by running swig +-<lang> -help for language <lang> specific options, +for example, swig -ruby -help for Ruby.

    --allegrocl            Generate ALLEGROCL wrappers
    --chicken              Generate CHICKEN wrappers
    --clisp                Generate CLISP wrappers
    --cffi                 Generate CFFI wrappers
    --csharp               Generate C# wrappers
    --d                    Generate D wrappers
    --go                   Generate Go wrappers
    --guile                Generate Guile wrappers
    --java                 Generate Java wrappers
    --javascript           Generate Javascript wrappers
    --lua                  Generate Lua wrappers
    --modula3              Generate Modula 3 wrappers
    --mzscheme             Generate Mzscheme wrappers
    --ocaml                Generate Ocaml wrappers
    --octave               Generate Octave wrappers
    --perl                 Generate Perl wrappers
    --php5                 Generate PHP5 wrappers
    --php7                 Generate PHP7 wrappers
    --pike                 Generate Pike wrappers
    --python               Generate Python wrappers
    --r                    Generate R (aka GNU S) wrappers
    --ruby                 Generate Ruby wrappers
    --scilab               Generate Scilab wrappers
    --sexp                 Generate Lisp S-Expressions wrappers
    --tcl                  Generate Tcl wrappers
    --uffi                 Generate Common Lisp / UFFI wrappers
    --xml                  Generate XML wrappers
    +Supported Target Language Options
    +     -csharp         - Generate C# wrappers
    +     -d              - Generate D wrappers
    +     -go             - Generate Go wrappers
    +     -guile          - Generate Guile wrappers
    +     -java           - Generate Java wrappers
    +     -javascript     - Generate Javascript wrappers
    +     -lua            - Generate Lua wrappers
    +     -octave         - Generate Octave wrappers
    +     -perl5          - Generate Perl 5 wrappers
    +     -php7           - Generate PHP 7 wrappers
    +     -python         - Generate Python wrappers
    +     -r              - Generate R (aka GNU S) wrappers
    +     -ruby           - Generate Ruby wrappers
    +     -scilab         - Generate Scilab wrappers
    +     -tcl8           - Generate Tcl 8 wrappers
    +     -xml            - Generate XML wrappers
     
    --c++                  Enable C++ processing
    --cppext ext           Change file extension of C++ generated files to ext
    -                      (default is cxx, except for PHP5 which uses cpp)
    --Dsymbol              Define a preprocessor symbol
    --Fmicrosoft           Display error/warning messages in Microsoft format
    --Fstandard            Display error/warning messages in commonly used format
    --help                 Display all options
    --Idir                 Add a directory to the file include path
    --lifile               Include SWIG library file <ifile>
    --module name          Set the name of the SWIG module
    --o outfile            Set name of C/C++ output file to <outfile>
    --oh headfile          Set name of C++ output header file for directors to <headfile>
    --outcurrentdir        Set default output dir to current dir instead of input file's path
    --outdir dir           Set language specific files output directory
    --pcreversion          Display PCRE version information
    --swiglib              Report location of SWIG library and exit
    --version              Display SWIG version number
    +Experimental Target Language Options
    +     -mzscheme       - Generate MzScheme/Racket wrappers
    +     -ocaml          - Generate OCaml wrappers
     
    +General Options
    +     -addextern      - Add extra extern declarations
    +     -c++            - Enable C++ processing
    +     -co <file>      - Check <file> out of the SWIG library
    +     -copyctor       - Automatically generate copy constructors wherever possible
    +     -cpperraswarn   - Treat the preprocessor #error statement as #warning (default)
    +     -cppext <ext>   - Change file extension of generated C++ files to <ext>
    +                       (default is cxx)
    +     -copyright      - Display copyright notices
    +     -debug-classes  - Display information about the classes found in the interface
    +     -debug-module <n>- Display module parse tree at stages 1-4, <n> is a csv list of stages
    +     -debug-symtabs  - Display symbol tables information
    +     -debug-symbols  - Display target language symbols in the symbol tables
    +     -debug-csymbols - Display C symbols in the symbol tables
    +     -debug-lsymbols - Display target language layer symbols
    +     -debug-tags     - Display information about the tags found in the interface
    +     -debug-template - Display information for debugging templates
    +     -debug-top <n>  - Display entire parse tree at stages 1-4, <n> is a csv list of stages
    +     -debug-typedef  - Display information about the types and typedefs in the interface
    +     -debug-typemap  - Display typemap debugging information
    +     -debug-tmsearch - Display typemap search debugging information
    +     -debug-tmused   - Display typemaps used debugging information
    +     -directors      - Turn on director mode for all the classes, mainly for testing
    +     -dirprot        - Turn on wrapping of protected members for director classes (default)
    +     -D<symbol>      - Define a symbol <symbol> (for conditional compilation)
    +     -E              - Preprocess only, does not generate wrapper code
    +     -external-runtime [file] - Export the SWIG runtime stack
    +     -fakeversion <v>- Make SWIG fake the program version number to <v>
    +     -fcompact       - Compile in compact mode
    +     -features <list>- Set global features, where <list> is a comma separated list of
    +                       features, eg -features directors,autodoc=1
    +                       If no explicit value is given to the feature, a default of 1 is used
    +     -fastdispatch   - Enable fast dispatch mode to produce faster overload dispatcher code
    +     -Fmicrosoft     - Display error/warning messages in Microsoft format
    +     -Fstandard      - Display error/warning messages in commonly used format
    +     -fvirtual       - Compile in virtual elimination mode
    +     -help           - Display help
    +     -I-             - Don't search the current directory
    +     -I<dir>         - Look for SWIG files in directory <dir>
    +     -ignoremissing  - Ignore missing include files
    +     -importall      - Follow all #include statements as imports
    +     -includeall     - Follow all #include statements
    +     -l<ifile>       - Include SWIG library file <ifile>
    +     -macroerrors    - Report errors inside macros
    +     -makedefault    - Create default constructors/destructors (the default)
    +     -M              - List all dependencies
    +     -MD             - Is equivalent to `-M -MF <file>', except `-E' is not implied
    +     -MF <file>      - Generate dependencies into <file> and continue generating wrappers
    +     -MM             - List dependencies, but omit files in SWIG library
    +     -MMD            - Like `-MD', but omit files in SWIG library
    +     -module <name>  - Set module name to <name>
    +     -MP             - Generate phony targets for all dependencies
    +     -MT <target>    - Set the target of the rule emitted by dependency generation
    +     -nocontract     - Turn off contract checking
    +     -nocpperraswarn - Do not treat the preprocessor #error statement as #warning
    +     -nodefault      - Do not generate default constructors nor default destructors
    +     -nodefaultctor  - Do not generate implicit default constructors
    +     -nodefaultdtor  - Do not generate implicit default destructors
    +     -nodirprot      - Do not wrap director protected members
    +     -noexcept       - Do not wrap exception specifiers
    +     -nofastdispatch - Disable fast dispatch mode (default)
    +     -nopreprocess   - Skip the preprocessor step
    +     -notemplatereduce - Disable reduction of the typedefs in templates
    +     -O              - Enable the optimization options:
    +                        -fastdispatch -fvirtual
    +     -o <outfile>    - Set name of C/C++ output file to <outfile>
    +     -oh <headfile>  - Set name of C++ output header file for directors to <headfile>
    +     -outcurrentdir  - Set default output dir to current dir instead of input file's path
    +     -outdir <dir>   - Set language specific files output directory to <dir>
    +     -pcreversion    - Display PCRE version information
    +     -small          - Compile in virtual elimination and compact mode
    +     -swiglib        - Report location of SWIG library and exit
    +     -templatereduce - Reduce all the typedefs in templates
    +     -v              - Run in verbose mode
    +     -version        - Display SWIG version number
    +     -Wall           - Remove all warning suppression, also implies -Wextra
    +     -Wallkw         - Enable keyword warnings for all the supported languages
    +     -Werror         - Treat warnings as errors
    +     -Wextra         - Adds the following additional warnings: 202,309,403,405,512,321,322
    +     -w<list>        - Suppress/add warning messages, eg -w401,+321 - see Warnings.html
    +     -xmlout <file>  - Write XML version of the parse tree to <file> after normal processing
     
    +

    +Arguments may also be passed in a command-line options file (also known as a +response file) which is useful if they exceed the system command line length +limit. To do this, put the arguments in a file, then provide the file name +prefixed with @ like so: +

    + +
    +swig @file
    +
    + +

    +The options read from the file are inserted in place of the file option. If the +file does not exist, or cannot be read, then the option will be treated +literally and not removed. +

    + +

    +Options in the file are separated by whitespace. A whitespace character may be +included in an option by surrounding the entire option in either single or +double quotes. Any character (including a backslash) may be included by +prefixing the character to be included with a backslash. The file may itself +contain additional @file options; any such options will be processed +recursively. +

    +

    5.1.1 Input format

    -As input, SWIG expects a file containing ANSI C/C++ declarations and +As input, SWIG expects a file containing ISO C/C++ declarations and special SWIG directives. More often than not, this is a special SWIG interface file which is usually denoted with a special .i or .swg suffix. In certain cases, SWIG can be used directly on @@ -185,7 +270,7 @@ The most common format of a SWIG interface is as follows: %{ #include "myheader.h" %} -// Now list ANSI C/C++ declarations +// Now list ISO C/C++ declarations int foo; int bar(int x); ... @@ -389,7 +474,7 @@ For example /* bar not wrapped unless foo has been defined and the declaration of bar within foo has already been parsed */ int foo::bar(int) { - ... whatever ... + ... whatever ... } @@ -1043,14 +1128,14 @@ expect :

     # Copy a file 
     def filecopy(source, target):
    -  f1 = fopen(source, "r")
    -  f2 = fopen(target, "w")
    -  buffer = malloc(8192)
    -  nbytes = fread(buffer, 8192, 1, f1)
    -  while (nbytes > 0):
    -    fwrite(buffer, 8192, 1, f2)
    -          nbytes = fread(buffer, 8192, 1, f1)
    -  free(buffer)
    +    f1 = fopen(source, "r")
    +    f2 = fopen(target, "w")
    +    buffer = malloc(8192)
    +    nbytes = fread(buffer, 8192, 1, f1)
    +    while (nbytes > 0):
    +        fwrite(buffer, 8192, 1, f2)
    +            nbytes = fread(buffer, 8192, 1, f1)
    +    free(buffer)
     

    @@ -1236,9 +1321,9 @@ creating a wrapper equivalent to the following:

     double wrap_dot_product(Vector *a, Vector *b) {
    -    Vector x = *a;
    -    Vector y = *b;
    -    return dot_product(x, y);
    +  Vector x = *a;
    +  Vector y = *b;
    +  return dot_product(x, y);
     }
     
    @@ -1266,12 +1351,12 @@ pointers. As a result, SWIG creates a wrapper like this:
     Vector *wrap_cross_product(Vector *v1, Vector *v2) {
    -        Vector x = *v1;
    -        Vector y = *v2;
    -        Vector *result;
    -        result = (Vector *) malloc(sizeof(Vector));
    -        *(result) = cross(x, y);
    -        return result;
    +  Vector x = *v1;
    +  Vector y = *v2;
    +  Vector *result;
    +  result = (Vector *) malloc(sizeof(Vector));
    +  *(result) = cross(x, y);
    +  return result;
     }
     
    @@ -1280,10 +1365,10 @@ or if SWIG was run with the -c++ option:

     Vector *wrap_cross(Vector *v1, Vector *v2) {
    -        Vector x = *v1;
    -        Vector y = *v2;
    -        Vector *result = new Vector(cross(x, y)); // Uses default copy constructor
    -        return result;
    +  Vector x = *v1;
    +  Vector y = *v2;
    +  Vector *result = new Vector(cross(x, y)); // Uses default copy constructor
    +  return result;
     }
     
    @@ -1736,6 +1821,16 @@ already defined in the target scripting language. However, if you are careful about namespaces and your use of modules, you can usually avoid these problems.

    +

    +When wrapping C code, simple use of identifiers/symbols with %rename usually suffices. +When wrapping C++ code, simple use of simple identifiers/symbols with %rename might be too +limiting when using C++ features such as function overloading, default arguments, namespaces, template specialization etc. +If you are using the %rename directive and C++, make sure you read the +SWIG and C++ chapter and in particular the section on +Renaming and ambiguity resolution +for method overloading and default arguments. +

    +

    Closely related to %rename is the %ignore directive. %ignore instructs SWIG to ignore declarations that match a given identifier. For example: @@ -2078,7 +2173,7 @@ except those consisting of capital letters only:

    Finally, variants of %rename and %ignore directives can be used to help wrap C++ overloaded functions and methods or C++ methods which use default arguments. This is described in the -Ambiguity resolution and renaming section in the C++ chapter. +Renaming and ambiguity resolution section in the C++ chapter.

    @@ -2147,7 +2242,7 @@ used in Tcl as follows :

    -Although the ANSI C standard does not allow default arguments, default +Although the ISO C standard does not allow default arguments, default arguments specified in a SWIG interface work with both C and C++.

    @@ -2167,7 +2262,7 @@ in the C++ chapter for further details.

    Occasionally, a C library may include functions that expect to receive pointers to functions--possibly to serve as callbacks. SWIG -provides full support for function pointers provided that the callback +provides full support for function pointers when the callback functions are defined in C and not in the target language. For example, consider a function like this:

    @@ -2311,14 +2406,16 @@ And now, a final note about function pointer support. Although SWIG does not normally allow callback functions to be written in the target language, this can be accomplished with the use of typemaps and other advanced SWIG features. See the Typemaps chapter for more about typemaps -and individual target language chapters for more on callbacks and the 'director' feature. +and individual target language chapters for more on callbacks. +The 'director' feature can be used to make callbacks from C/C++ into the target language, +see Callbacks to the target language.

    5.5 Structures and unions

    -This section describes the behavior of SWIG when processing ANSI C structures and union declarations. Extensions to +This section describes the behavior of SWIG when processing ISO C structures and union declarations. Extensions to handle C++ are described in the next section.

    @@ -2368,10 +2465,10 @@ defined in the interface. For example:
     struct Vector *new_Vector() {
    -    return (Vector *) calloc(1, sizeof(struct Vector));
    +  return (Vector *) calloc(1, sizeof(struct Vector));
     }
     void delete_Vector(struct Vector *obj) {
    -    free(obj);
    +  free(obj);
     }
     
    @@ -2602,10 +2699,10 @@ like this:
     WORD Foo_w_get(Foo *f) {
    -    return f->w;
    +  return f->w;
     }
     void Foo_w_set(FOO *f, WORD value) {
    -    f->w = value;
    +  f->w = value;
     }
     
    @@ -2896,7 +2993,7 @@ instead of a method. To do this, you might write some code like this:
     // Add a new attribute to Vector
     %extend Vector {
    -    const double magnitude;
    +  const double magnitude;
     }
     // Now supply the implementation of the Vector_magnitude_get function
     %{
    @@ -3293,11 +3390,27 @@ Vector *new_Vector() {
       return (Vector *) malloc(sizeof(Vector));
     }
     %}
    -
     

    -The %inline directive inserts all of the code that follows +This is the same as writing: +

    + +
    +%{
    +/* Create a new vector */
    +Vector *new_Vector() {
    +  return (Vector *) malloc(sizeof(Vector));
    +}
    +%}
    +
    +/* Create a new vector */
    +Vector *new_Vector() {
    +  return (Vector *) malloc(sizeof(Vector));
    +}
    +
    +

    +In other words, the %inline directive inserts all of the code that follows verbatim into the header portion of an interface file. The code is then parsed by both the SWIG preprocessor and parser. Thus, the above example creates a new command new_Vector using only one @@ -3305,6 +3418,11 @@ declaration. Since the code inside an %inline %{ ... %} block is given to both the C compiler and SWIG, it is illegal to include any SWIG directives inside a %{ ... %} block.

    + +

    +Note: The usual SWIG C preprocessor rules apply to code in %apply blocks when SWIG parses this code. For example, as mentioned earlier, SWIG's C Preprocessor does not follow #include directives by default. +

    +

    5.6.4 Initialization blocks

    @@ -3351,7 +3469,7 @@ interface to your program. SWIG's %include directive to process an entire C source/header file. -
  • Make sure everything in the interface file uses ANSI C/C++ syntax. +
  • Make sure everything in the interface file uses ISO C/C++ syntax.
  • Make sure all necessary `typedef' declarations and type-information is available in the interface file. diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.html similarity index 50% rename from winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.html index 88fd07cc..28a73ea3 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/SWIGDocumentation.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.html @@ -1,8 +1,8 @@ - + -SWIG-3.0 Documentation - +SWIG-4.0 Documentation + -
    SWIG-3.0 Documentation
    -

    SWIG-3.0 Documentation


    +
    SWIG-4.0 Documentation
    +

    SWIG-4.0 Documentation



    -

    Table of Contents

    -
    -
    SWIG-3.0 Documentation - -1 Preface - -2 Introduction - -3 Getting started on Windows - -4 Scripting Languages - -5 SWIG Basics - -6 SWIG and C++ - -7 SWIG and C++11 - -8 Preprocessing - -9 SWIG library - -10 Argument Handling - -11 Typemaps - -12 Customization Features - -13 Contracts - -14 Variable Length Arguments - -15 Warning Messages - -16 Working with Modules - -17 Using SWIG with ccache - ccache-swig(1) manpage - - -18 SWIG and Allegro Common Lisp - -19 SWIG and Android - -20 SWIG and C# - -21 SWIG and Chicken - -22 SWIG and D - -23 SWIG and Go - -24 SWIG and Guile - -25 SWIG and Java - -26 SWIG and Javascript - -27 SWIG and Common Lisp - -28 SWIG and Lua - -29 SWIG and Modula-3 - -30 SWIG and MzScheme/Racket - -31 SWIG and Ocaml - -32 SWIG and Octave - -33 SWIG and Perl5 - -34 SWIG and PHP - -35 SWIG and Pike - -36 SWIG and Python - -37 SWIG and R - -38 SWIG and Ruby - -39 SWIG and Scilab - -40 SWIG and Tcl - -41 Extending SWIG to support new languages - +

    Table of Contents

    +
    +
    SWIG-4.0 Documentation + +1 Preface + +2 Introduction + +3 Getting started on Windows + +4 Scripting Languages + +5 SWIG Basics + +6 SWIG and C++ + +7 SWIG and C++11 + +8 SWIG and C++14 + +9 SWIG and C++17 + +10 Preprocessing + +11 SWIG library + +12 Argument Handling + +13 Typemaps + +14 Customization Features + +15 Contracts + +16 Variable Length Arguments + +17 SWIG and Doxygen Translation + +18 Warning Messages + +19 Working with Modules + +20 Using SWIG with ccache - ccache-swig(1) manpage + + +21 SWIG and Android + +22 SWIG and C# + +23 SWIG and D + +24 SWIG and Go + +25 SWIG and Guile + +26 SWIG and Java + +27 SWIG and Javascript + +28 SWIG and Lua + +29 SWIG and Octave + +30 SWIG and Perl5 + +31 SWIG and PHP + +32 SWIG and Python + +33 SWIG and R + +34 SWIG and Ruby + +35 SWIG and Scilab + +36 SWIG and Tcl + +37 SWIG and MzScheme/Racket + +38 SWIG and OCaml + +39 Extending SWIG to support new languages +
    -

    SWIG-3.0 Documentation

    -

    Last update : SWIG-3.0.12 (27 Jan 2017)

    -

    Sections

    -

    SWIG Core Documentation

    - -

    Language Module Documentation -

    - -

    Developer Documentation

    - +

    SWIG-4.0 Documentation

    +

    Last update : SWIG-4.0.0 (27 Apr 2019)

    +

    Sections

    +

    SWIG Core Documentation

    + +

    Supported Language Modules + Documentation

    + +

    Experimental + Language Modules Documentation

    + +

    Developer Documentation

    +
    -

    1 Preface

    +

    1 Preface

    - + -

    1.1 Introduction

    -

    SWIG (Simplified Wrapper and Interface Generator) is a software +

    1.1 Introduction

    +

    SWIG (Simplified Wrapper and Interface Generator) is a software development tool for building scripting language interfaces to C and C++ programs. Originally developed in 1995, SWIG was first used by scientists in the Theoretical Physics Division at Los Alamos National @@ -2415,57 +2375,61 @@ body { font-family: serif; } interface provided a simple yet highly flexible foundation for solving these types of problems. SWIG simplifies development by largely automating the task of scripting language integration--allowing - developers and users to focus on more important problems.

    -

    Although SWIG was originally developed for scientific applications, + developers and users to focus on more important problems.

    +

    Although SWIG was originally developed for scientific applications, it has since evolved into a general purpose tool that is used in a wide variety of applications--in fact almost anything where C/C++ - programming is involved.

    -

    1.2 SWIG Versions

    -

    In the late 1990's, the most stable version of SWIG was release + programming is involved.

    +

    1.2 SWIG Versions

    +

    In the late 1990's, the most stable version of SWIG was release 1.1p5. Versions 1.3.x were officially development versions and these were released over a period of 10 years starting from the year 2000. The final version in the 1.3.x series was 1.3.40, but in truth the 1.3.x series had been stable for many years. An official stable version was released along with the decision to make SWIG license changes and - this gave rise to version 2.0.0 in 2010.

    -

    1.3 SWIG License

    -

    The LICENSE file shipped with SWIG in the top level directory + this gave rise to version 2.0.0 in 2010. Version 3.0.0 was released in + 2014 focusing on adding C++11 support and C++ nested classes. Version + 4.0.0 was released in 2019 to add in Doxygen support. Some target + languages were disabled as part of a clean up and others were given a + new status of either 'Supported' or 'Experimental'.

    +

    1.3 SWIG License

    +

    The LICENSE file shipped with SWIG in the top level directory contains the SWIG license. For further insight into the license including the license of SWIG's output code, please visit the SWIG - legal page - -http://www.swig.org/legal.html.

    -

    The license was clarified in version 2.0.0 so that the code that + legal page - +http://www.swig.org/legal.html.

    +

    The license was clarified in version 2.0.0 so that the code that SWIG generated could be distributed under license terms of the user's choice/requirements and at the same time the SWIG source was placed - under the GNU General Public License version 3.

    -

    1.4 SWIG resources

    -

    The official location of SWIG related material is

    - -

    This site contains the latest version of the software, users guide, + under the GNU General Public License version 3.

    +

    1.4 SWIG resources

    +

    The official location of SWIG related material is

    + +

    This site contains the latest version of the software, users guide, and information regarding bugs, installation problems, and - implementation tricks.

    -

    You can also subscribe to the swig-user mailing list by visiting the - page

    - -

    The mailing list often discusses some of the more technical aspects - of SWIG along with information about beta releases and future work.

    -

    Git and Subversion access to the latest version of SWIG is also - available. More information about this can be obtained at:

    - -

    1.5 Prerequisites

    -

    This manual assumes that you know how to write C/C++ programs and + implementation tricks.

    +

    You can also subscribe to the swig-user mailing list by visiting the + page

    + +

    The mailing list often discusses some of the more technical aspects + of SWIG along with information about beta releases and future work.

    +

    Git and Subversion access to the latest version of SWIG is also + available. More information about this can be obtained at:

    + +

    1.5 Prerequisites

    +

    This manual assumes that you know how to write C/C++ programs and that you have at least heard of scripting languages such as Tcl, Python, and Perl. A detailed knowledge of these scripting languages is not required although some familiarity won't hurt. No prior experience @@ -2473,181 +2437,181 @@ http://www.swig.org/legal.html.

    this is what SWIG does automatically. However, you should be reasonably familiar with the use of compilers, linkers, and makefiles since making scripting language extensions is somewhat more complicated than writing - a normal C program.

    -

    Over time SWIG releases have become significantly more capable in + a normal C program.

    +

    Over time SWIG releases have become significantly more capable in their C++ handling--especially support for advanced features like namespaces, overloaded operators, and templates. Whenever possible, this manual tries to cover the technicalities of this interface. However, this isn't meant to be a tutorial on C++ programming. For many of the gory details, you will almost certainly want to consult a good C++ reference. If you don't program in C++, you may just want to skip - those parts of the manual.

    -

    1.6 Organization of this manual

    -

    The first few chapters of this manual describe SWIG in general and + those parts of the manual.

    +

    1.6 Organization of this manual

    +

    The first few chapters of this manual describe SWIG in general and provide an overview of its capabilities. The remaining chapters are devoted to specific SWIG language modules and are self contained. Thus, if you are using SWIG to build Python interfaces, you can probably skip - to that chapter and find almost everything you need to know.

    -

    1.7 How to avoid reading the manual

    -

    If you hate reading manuals, glance at the "Introduction" which + to that chapter and find almost everything you need to know.

    +

    1.7 How to avoid reading the manual

    +

    If you hate reading manuals, glance at the "Introduction" which contains a few simple examples. These examples contain about 95% of everything you need to know to use SWIG. After that, simply use the language-specific chapters as a reference. The SWIG distribution also comes with a large directory of examples that illustrate different - topics.

    -

    1.8 Backwards compatibility

    -

    If you are a previous user of SWIG, don't expect SWIG to provide + topics.

    +

    1.8 Backwards compatibility

    +

    If you are a previous user of SWIG, don't expect SWIG to provide complete backwards compatibility. Although the developers strive to the utmost to keep backwards compatibility, this isn't always possible as the primary goal over time is to make SWIG better---a process that would simply be impossible if the developers are constantly bogged down with backwards compatibility issues. Potential incompatibilities are - clearly marked in the detailed release - notes.

    -

    If you need to work with different versions of SWIG and backwards + clearly marked in the detailed release + notes.

    +

    If you need to work with different versions of SWIG and backwards compatibility is an issue, you can use the SWIG_VERSION preprocessor symbol which holds the version of SWIG being executed. SWIG_VERSION is a hexadecimal integer such as 0x010311 (corresponding to SWIG-1.3.11). This can be used in an interface file to define different typemaps, - take advantage of different features etc:

    -
    -
    + take advantage of different features etc:

    +
    +
     #if SWIG_VERSION >= 0x010311
     /* Use some fancy new feature */
     #endif
    -
    -
    -

    Note: The version symbol is not defined in the generated SWIG +

    +
    +

    Note: The version symbol is not defined in the generated SWIG wrapper file. The SWIG preprocessor has defined SWIG_VERSION since - SWIG-1.3.11.

    -

    1.9 Release notes

    -

    The CHANGES.current, CHANGES and RELEASENOTES files shipped with + SWIG-1.3.11.

    +

    1.9 Release notes

    +

    The CHANGES.current, CHANGES and RELEASENOTES files shipped with SWIG in the top level directory contain, respectively, detailed release notes for the current version, detailed release notes for previous - releases and summary release notes from SWIG-1.3.22 onwards.

    -

    1.10 Credits

    -

    SWIG is an unfunded project that would not be possible without the + releases and summary release notes from SWIG-1.3.22 onwards.

    +

    1.10 Credits

    +

    SWIG is an unfunded project that would not be possible without the contributions of many people working in their spare time. If you have - benefitted from using SWIG, please consider -Donating to SWIG to keep development going. There have been a large + benefitted from using SWIG, please consider +Donating to SWIG to keep development going. There have been a large varied number of people who have made contributions at all levels over time. Contributors are mentioned either in the COPYRIGHT file or - CHANGES files shipped with SWIG or in submitted bugs.

    -

    1.11 Bug reports

    -

    Although every attempt has been made to make SWIG bug-free, we are + CHANGES files shipped with SWIG or in submitted bugs.

    +

    1.11 Bug reports

    +

    Although every attempt has been made to make SWIG bug-free, we are also trying to make feature improvements that may introduce bugs. To - report a bug, either send mail to the SWIG developer list at the -swig-devel mailing list or report a bug at the -SWIG bug tracker. In your report, be as specific as possible, + report a bug, either send mail to the SWIG developer list at the +swig-devel mailing list or report a bug at the +SWIG bug tracker. In your report, be as specific as possible, including (if applicable), error messages, tracebacks (if a core dump occurred), corresponding portions of the SWIG interface file used, and any important pieces of the SWIG generated wrapper code. We can only - fix bugs if we know about them.

    -

    1.12 Installation

    -

    1.12.1 Windows installation -

    -

    Please see the dedicated Windows chapter for + fix bugs if we know about them.

    +

    1.12 Installation

    +

    1.12.1 Windows installation +

    +

    Please see the dedicated Windows chapter for instructions on installing SWIG on Windows and running the examples. The Windows distribution is called swigwin and includes a prebuilt SWIG executable, swig.exe, included in the top level directory. Otherwise it is exactly the same as the main SWIG distribution. There is no need to - download anything else.

    -

    1.12.2 Unix installation

    -

    These installation instructions are for using the distributed - tarball, for example, swig-3.0.8.tar.gz. If you wish to build + download anything else.

    +

    1.12.2 Unix installation

    +

    These installation instructions are for using the distributed + tarball, for example, swig-3.0.8.tar.gz. If you wish to build and install from source on Github, extra steps are required. Please see - the Bleeding Edge page on the - SWIG website.

    -

    You must use GNU make - to build and install SWIG.

    -

    PCRE needs to be installed on + the Bleeding Edge page on the + SWIG website.

    +

    You must use GNU make + to build and install SWIG.

    +

    PCRE needs to be installed on your system to build SWIG, in particular pcre-config must be available. If you have PCRE headers and libraries but not pcre-config itself or, alternatively, wish to override the compiler or linker flags returned by pcre-config, you may set PCRE_LIBS and PCRE_CFLAGS variables to be used instead. And if you don't have PCRE at all, the configure script - will provide instructions for obtaining it.

    -

    To build and install SWIG, simply type the following:

    -
    -
    + will provide instructions for obtaining it.

    +

    To build and install SWIG, simply type the following:

    +
    +
     $ ./configure
     $ make
     $ make install
    -
    -
    -

    By default SWIG installs itself in /usr/local. If you need to +

    +
    +

    By default SWIG installs itself in /usr/local. If you need to install SWIG in a different location or in your home directory, use the - --prefix option to ./configure. For example:

    -
    -
    + --prefix option to ./configure. For example:

    +
    +
     $ ./configure --prefix=/home/yourname/projects
     $ make
     $ make install
    -
    -
    -

    Note: the directory given to --prefix must be an absolute - pathname. Do not use the ~ shell-escape to refer to your home - directory. SWIG won't work properly if you do this.

    -

    The INSTALL file shipped in the top level directory details more - about using configure. Also try

    -
    -
    +
    +
    +

    Note: the directory given to --prefix must be an absolute + pathname. Do not use the ~ shell-escape to refer to your home + directory. SWIG won't work properly if you do this.

    +

    The INSTALL file shipped in the top level directory details more + about using configure. Also try

    +
    +
     $ ./configure --help.
    -
    -
    -

    The configure script will attempt to locate various packages on your +

    +
    +

    The configure script will attempt to locate various packages on your machine including Tcl, Perl5, Python and all the other target languages that SWIG supports. Don't panic if you get 'not found' messages -- SWIG does not need these packages to compile or run. The configure script is actually looking for these packages so that you can try out the SWIG examples contained in the 'Examples' directory without having to hack - Makefiles. Note that the --without-xxx options, where xxx is a + Makefiles. Note that the --without-xxx options, where xxx is a target language, have minimal effect. All they do is reduce the amount of testing done with 'make check'. The SWIG executable and library files installed cannot currently be configured with a subset of target - languages.

    -

    SWIG used to include a set of runtime libraries for some languages + languages.

    +

    SWIG used to include a set of runtime libraries for some languages for working with multiple modules. These are no longer built during the installation stage. However, users can build them just like any wrapper - module as described in the Modules chapter. The + module as described in the Modules chapter. The CHANGES file shipped with SWIG in the top level directory also lists - some examples which build the runtime library.

    -

    Note:

    -
      -
    • If you checked the code out via Git, you will have to run -./autogen.sh before ./configure. In addition, a full build + some examples which build the runtime library.

      +

      Note:

      +
        +
      • If you checked the code out via Git, you will have to run +./autogen.sh before ./configure. In addition, a full build of SWIG requires a number of packages to be installed. Full - instructions at SWIG bleeding - edge.
      • -
      -

      1.12.3 Macintosh OS X - installation

      -

      SWIG is known to work on various flavors of OS X. Follow the Unix + instructions at SWIG bleeding + edge.

    • +
    +

    1.12.3 Macintosh OS X + installation

    +

    SWIG is known to work on various flavors of OS X. Follow the Unix installation instructions above. However, as of this writing, there is - still great deal of inconsistency with how shared libaries are handled - by various scripting languages on OS X.

    -

    Users of OS X should be aware that Darwin handles shared libraries + still great deal of inconsistency with how shared libraries are handled + by various scripting languages on OS X.

    +

    Users of OS X should be aware that Darwin handles shared libraries and linking in a radically different way than most Unix systems. In order to test SWIG and run the examples, SWIG configures itself to use - flat namespaces and to allow undefined symbols (-flat_namespace - -undefined suppress). This mostly closely follows the Unix model + flat namespaces and to allow undefined symbols (-flat_namespace + -undefined suppress). This mostly closely follows the Unix model and makes it more likely that the SWIG examples will work with whatever installation of software you might have. However, this is generally not the recommended technique for building larger extension modules. Instead, you should utilize Darwin's two-level namespaces. Some details - about this can be found here -Understanding Two-Level Namespaces.

    -

    Needless to say, you might have to experiment a bit to get things - working at first.

    -

    1.12.4 Testing

    -

    If you want to test SWIG after building it, a check can be performed - on Unix operating systems. Type the following:

    -
    -
    + about this can be found here 
    +Understanding Two-Level Namespaces.

    +

    Needless to say, you might have to experiment a bit to get things + working at first.

    +

    1.12.4 Testing

    +

    If you want to test SWIG after building it, a check can be performed + on Unix operating systems. Type the following:

    +
    +
         $ make -k check
    -
    -
    -

    This step can be performed either before or after installation. The +

    +
    +

    This step can be performed either before or after installation. The check requires at least one of the target languages to be installed. If it fails, it may mean that you have an uninstalled language module or that the file 'Examples/Makefile' has been incorrectly configured. It @@ -2657,86 +2621,92 @@ Understanding Two-Level Namespaces.

    examples and some makefiles to get it to work. Some tests may also fail due to missing dependency packages, eg PCRE or Boost, but this will require careful analysis of the configure output done during - configuration.

    -

    The test suite executed by the check is designed to stress-test many + configuration.

    +

    The test suite executed by the check is designed to stress-test many parts of the implementation including obscure corner cases. If some of these tests fail or generate warning messages, there is no reason for alarm --- the test may be related to some new SWIG feature or a difficult bug that we're trying to resolve. Chances are that SWIG will work just fine for you. Note that if you have more than one CPU/core, then you can use parallel make to speed up the check as it does take - quite some time to run, for example:

    -
    -
    + quite some time to run, for example:

    +
    +
         $ make -j2 -k check
    -
    -
    -

    Also, SWIG's support for C++ is sufficiently advanced that certain +

    +
    +

    Also, SWIG's support for C++ is sufficiently advanced that certain tests may fail on older C++ compilers (for instance if your compiler does not support member templates). These errors are harmless if you - don't intend to use these features in your own programs.

    -

    Note: The test-suite currently contains over 500 tests. If you have + don't intend to use these features in your own programs.

    +

    Note: The test-suite currently contains over 600 tests. If you have many different target languages installed and a slow machine, it might - take more than an hour to run the test-suite.

    -

    1.12.5 Examples

    -

    The Examples directory contains a variety of examples of using SWIG + take more than an hour to run the test-suite.

    +

    1.12.5 Examples

    +

    The Examples directory contains a variety of examples of using SWIG and it has some browsable documentation. Simply point your browser to - the file "Example/index.html".

    -

    The Examples directory also includes Visual C++ project 6 (.dsp) + the file "Example/index.html".

    +

    The Examples directory also includes Visual C++ project 6 (.dsp) files for building some of the examples on Windows. Later versions of Visual Studio will convert these old style project files into a current - solution file.

    + solution file.


    -

    2 Introduction

    +

    2 Introduction

    - + -

    2.1 What is SWIG?

    -

    SWIG is a software development tool that simplifies the task of +

    2.1 What is SWIG?

    +

    SWIG is a software development tool that simplifies the task of interfacing different languages to C and C++ programs. In a nutshell, SWIG is a compiler that takes C/C++ declarations and creates the wrappers needed to access those declarations from other languages including Perl, Python, Tcl, Ruby, Guile, and Java. SWIG normally requires no modifications to existing code and can often be used to build a usable interface in only a few minutes. Possible applications - of SWIG include:

    -
      -
    • Building interpreted interfaces to existing C programs.
    • -
    • Rapid prototyping and application development.
    • -
    • Interactive debugging.
    • -
    • Reengineering or refactoring of legacy software into scripting - language components.
    • -
    • Making a graphical user interface (using Tk for example).
    • -
    • Testing of C libraries and programs (using scripts).
    • -
    • Building high performance C modules for scripting languages.
    • -
    • Making C programming more enjoyable (or tolerable depending on your - point of view).
    • -
    • Impressing your friends.
    • -
    • Obtaining vast sums of research funding (although obviously not - applicable to the author).
    • -
    -

    SWIG was originally designed to make it extremely easy for + of SWIG include:

    +
      +
    • Building interpreted interfaces to existing C programs.
    • +
    • Rapid prototyping and application development.
    • +
    • Interactive debugging.
    • +
    • Reengineering or refactoring of legacy software into scripting + language components.
    • +
    • Making a graphical user interface (using Tk for example).
    • +
    • Testing of C libraries and programs (using scripts).
    • +
    • Building high performance C modules for scripting languages.
    • +
    • Making C programming more enjoyable (or tolerable depending on your + point of view).
    • +
    • Impressing your friends.
    • +
    • Obtaining vast sums of research funding (although obviously not + applicable to the author).
    • +
    +

    SWIG was originally designed to make it extremely easy for scientists and engineers to build extensible scientific software without having to get a degree in software engineering. Because of this, the use of SWIG tends to be somewhat informal and ad-hoc (e.g., @@ -2746,29 +2716,29 @@ Understanding Two-Level Namespaces.

    well suited to software development in the small; especially the research and development work that is commonly found in scientific and engineering projects. However, nowadays SWIG is known to be used in - many large open source and commercial projects.

    -

    2.2 Why use SWIG?

    -

    As stated in the previous section, the primary purpose of SWIG is to + many large open source and commercial projects.

    +

    2.2 Why use SWIG?

    +

    As stated in the previous section, the primary purpose of SWIG is to simplify the task of integrating C/C++ with other programming languages. However, why would anyone want to do that? To answer that - question, it is useful to list a few strengths of C/C++ programming:

    -
      -
    • Excellent support for writing programming libraries.
    • -
    • High performance (number crunching, data processing, graphics, - etc.).
    • -
    • Systems programming and systems integration.
    • -
    • Large user community and software base.
    • -
    -

    Next, let's list a few problems with C/C++ programming

    -
      -
    • Writing a user interface is rather painful (i.e., consider - programming with MFC, X11, GTK, or any number of other libraries).
    • -
    • Testing is time consuming (the compile/debug cycle).
    • -
    • Not easy to reconfigure or customize without recompilation.
    • -
    • Modularization can be tricky.
    • -
    • Security concerns (buffer overflows for instance).
    • -
    -

    To address these limitations, many programmers have arrived at the + question, it is useful to list a few strengths of C/C++ programming:

    +
      +
    • Excellent support for writing programming libraries.
    • +
    • High performance (number crunching, data processing, graphics, + etc.).
    • +
    • Systems programming and systems integration.
    • +
    • Large user community and software base.
    • +
    +

    Next, let's list a few problems with C/C++ programming

    +
      +
    • Writing a user interface is rather painful (i.e., consider + programming with MFC, X11, GTK, or any number of other libraries).
    • +
    • Testing is time consuming (the compile/debug cycle).
    • +
    • Not easy to reconfigure or customize without recompilation.
    • +
    • Modularization can be tricky.
    • +
    • Security concerns (buffer overflows for instance).
    • +
    +

    To address these limitations, many programmers have arrived at the conclusion that it is much easier to use different programming languages for different tasks. For instance, writing a graphical user interface may be significantly easier in a scripting language like @@ -2781,35 +2751,92 @@ Understanding Two-Level Namespaces.

    weaknesses. Moreover, it is extremely unlikely that any programming is ever going to be perfect. Therefore, by combining languages together, you can utilize the best features of each language and greatly simplify - certain aspects of software development.

    -

    From the standpoint of C/C++, a lot of people use SWIG because they + certain aspects of software development.

    +

    From the standpoint of C/C++, a lot of people use SWIG because they want to break out of the traditional monolithic C programming model - which usually results in programs that resemble this:

    -
      -
    • A collection of functions and variables that do something useful.
    • -
    • A main() program that starts everything.
    • -
    • A horrible collection of hacks that form some kind of user interface - (but which no-one really wants to touch).
    • -
    -

    Instead of going down that route, incorporating C/C++ into a higher + which usually results in programs that resemble this:

    +
      +
    • A collection of functions and variables that do something useful.
    • +
    • A main() program that starts everything.
    • +
    • A horrible collection of hacks that form some kind of user interface + (but which no-one really wants to touch).
    • +
    +

    Instead of going down that route, incorporating C/C++ into a higher level language often results in a more modular design, less code, - better flexibility, and increased programmer productivity.

    -

    SWIG tries to make the problem of C/C++ integration as painless as + better flexibility, and increased programmer productivity.

    +

    SWIG tries to make the problem of C/C++ integration as painless as possible. This allows you to focus on the underlying C program and using the high-level language interface, but not the tedious and complex chore of making the two languages talk to each other. At the same time, SWIG recognizes that all applications are different. Therefore, it provides a wide variety of customization features that let you change almost every aspect of the language bindings. This is - the main reason why SWIG has such a large user manual ;-).

    -

    2.3 A SWIG example

    -

    The best way to illustrate SWIG is with a simple example. Consider - the following C code:

    -
    -
    + the main reason why SWIG has such a large user manual ;-).

    +

    2.3 Target languages

    +

    SWIG in essence is a tool to generate code for making C/C++ code + available to various other programming languages. These higher level + programming languages are the target languages for the SWIG code + generator and C or C++ are the input languages. A single target + language must be specified when SWIG is run. This results in generating + code for C/C++ and the specified target language to interface with each + other. SWIG can be invoked multiple times, but with a different target + language specified on each invocation. This ability to interface C/C++ + to many different target languages is one of SWIG's core strengths and + features.

    +

    SWIG is very broadly composed of two components. A core component + creates a parse tree from the input ISO C/C++ and SWIG directives + (extensions to the C/C++ standards). The parse tree is then passed to a + second component, one of the target language modules for generating + code specific to a higher level language. SWIG supports many different + target languages. These target languages are given a status of either + Supported or Experimental. This status is provided to indicate the + level of maturity to expect when using a particular target language as + not all target languages are fully developed.

    +

    The second part of the SWIG documentation contains a chapter for + each target level language. Each chapter will state the status + (Supported or Experimental) for that language.

    +

    2.3.1 Supported status

    +

    A target language is given the 'Supported' status when

    +
      +
    • It is in a mature, well functioning state.
    • +
    • It has its own comprehensive chapter in the documentation.
    • +
    • It passes all of the main SWIG test-suite and has a range of working + examples.
    • +
    • It supports the vast majority of SWIG features.
    • +
    • It provides strong backwards compatibility between releases.
    • +
    +

    The above is a short summary and further details are outlined in the + Supported status section in + the Extending chapter. The good news is that all the well-known and + most popular languages have this status.

    +

    2.3.2 Experimental status +

    +

    A target language is given the 'Experimental' status when

    +
      +
    • It is of sub-standard quality, failing to meet the above 'Supported' + status.
    • +
    • It is somewhere between the mid to mature stage of development.
    • +
    • It does not guarantee any backwards compatibility between releases.
    • +
    • It is in need of help to finish development.
    • +
    +

    Anyone using an experimental target language is strongly urged to + assist with development of the target language module if they wish to + use it.

    +

    SWIG displays a warning when an experimental target language is used + in order to set expectations and emphasize the experimental status of + the target language. The usual warning + suppression techniques can be used if required.

    +

    The above is a short summary and further details are outlined in the + Experimental status + section in the Extending chapter.

    +

    2.4 A SWIG example

    +

    The best way to illustrate SWIG is with a simple example. Consider + the following C code:

    +
    +
     /* File : example.c */
     
    -double  My_variable  = 3.0;
    +double My_variable = 3.0;
     
     /* Compute factorial of n */
     int fact(int n) {
    @@ -2823,15 +2850,15 @@ int fact(int n) {
     int my_mod(int n, int m) {
       return(n % m);
     }
    -
    -
    -

    Suppose that you wanted to access these functions and the global - variable My_variable from Tcl. You start by making a SWIG +

    +
    +

    Suppose that you wanted to access these functions and the global + variable My_variable from Tcl. You start by making a SWIG interface file as shown below (by convention, these files carry a .i - suffix) :

    -

    2.3.1 SWIG interface file

    -
    -
    + suffix) :

    +

    2.4.1 SWIG interface file

    +
    +
     /* File : example.i */
     %module example
     %{
    @@ -2844,170 +2871,172 @@ extern int    my_mod(int n, int m);
     extern double My_variable;
     extern int    fact(int);
     extern int    my_mod(int n, int m);
    -
    -
    -

    The interface file contains ANSI C function prototypes and variable - declarations. The %module directive defines the name of the - module that will be created by SWIG. The %{ %} block provides +

    +
    +

    The interface file contains ISO C function prototypes and variable + declarations. The %module directive defines the name of the + module that will be created by SWIG. The %{ %} block provides a location for inserting additional code, such as C header files or - additional C declarations, into the generated C wrapper code.

    -

    2.3.2 The swig command

    -

    SWIG is invoked using the swig command. We can use this to - build a Tcl module (under Linux) as follows :

    -
    -
    -unix > swig -tcl example.i
    -unix > gcc -c -fpic example.c example_wrap.c -I/usr/local/include
    -unix > gcc -shared example.o example_wrap.o -o example.so
    -unix > tclsh
    -% load ./example.so
    -% fact 4
    + additional C declarations, into the generated C wrapper code.

    +

    2.4.2 The swig command

    +

    SWIG is invoked using the swig command. We can use this to + build a Tcl module (under Linux) as follows :

    +
    +
    +unix > swig -tcl example.i
    +unix > gcc -c -fpic example.c example_wrap.c -I/usr/local/include
    +unix > gcc -shared example.o example_wrap.o -o example.so
    +unix > tclsh
    +% load ./example.so
    +% fact 4
     24
    -% my_mod 23 7
    +% my_mod 23 7
     2
    -% expr $My_variable + 4.5
    +% expr $My_variable + 4.5
     7.5
     %
    -
    -
    -

    The swig command produced a new file called -example_wrap.c that should be compiled along with the example.c +

    +
    +

    The swig command produced a new file called +example_wrap.c that should be compiled along with the example.c file. Most operating systems and scripting languages now support dynamic loading of modules. In our example, our Tcl module has been compiled into a shared library that can be loaded into Tcl. When loaded, Tcl can now access the functions and variables declared in the - SWIG interface. A look at the file example_wrap.c reveals a - hideous mess. However, you almost never need to worry about it.

    -

    2.3.3 Building a Perl5 module

    -

    Now, let's turn these functions into a Perl5 module. Without making - any changes type the following (shown for Solaris):

    -
    -
    -unix > swig -perl5 example.i
    -unix > gcc -c example.c example_wrap.c \
    -        -I/usr/local/lib/perl5/sun4-solaris/5.003/CORE
    -unix > ld -G example.o example_wrap.o -o example.so # This is for Solaris
    -unix > perl5.003
    + SWIG interface. A look at the file example_wrap.c reveals a
    + hideous mess. However, you almost never need to worry about it.

    +

    2.4.3 Building a Perl5 module

    +

    Now, let's turn these functions into a Perl5 module. Without making + any changes type the following (shown for Solaris):

    +
    +
    +unix > swig -perl5 example.i
    +unix > gcc -c example.c example_wrap.c \
    +        -I/usr/local/lib/perl5/sun4-solaris/5.003/CORE
    +unix > ld -G example.o example_wrap.o -o example.so # This is for Solaris
    +unix > perl5.003
     use example;
     print example::fact(4), "\n";
     print example::my_mod(23, 7), "\n";
     print $example::My_variable + 4.5, "\n";
    -<ctrl-d>
    +<ctrl-d>
     24
     2
     7.5
     unix >
    -
    -
    -

    2.3.4 Building a Python module

    -

    Finally, let's build a module for Python (shown for Irix).

    -
    -
    -unix > swig -python example.i
    -unix > gcc -c -fpic example.c example_wrap.c -I/usr/local/include/python2.0
    -unix > gcc -shared example.o example_wrap.o -o _example.so
    -unix > python
    +
    +
    +

    2.4.4 Building a Python module

    +

    Finally, let's build a module for Python (shown for Irix).

    +
    +
    +unix > swig -python example.i
    +unix > gcc -c -fpic example.c example_wrap.c -I/usr/local/include/python2.0
    +unix > gcc -shared example.o example_wrap.o -o _example.so
    +unix > python
     Python 2.0 (#6, Feb 21 2001, 13:29:45)
     [GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2
     Type "copyright", "credits" or "license" for more information.     
    ->>> import example
    ->>> example.fact(4)
    +>>> import example
    +>>> example.fact(4)
     24
    ->>> example.my_mod(23, 7)
    +>>> example.my_mod(23, 7)
     2
    ->>> example.cvar.My_variable + 4.5
    +>>> example.cvar.My_variable + 4.5
     7.5
    -
    -
    -

    2.3.5 Shortcuts

    -

    To the truly lazy programmer, one may wonder why we needed the extra +

    +
    +

    2.4.5 Shortcuts

    +

    To the truly lazy programmer, one may wonder why we needed the extra interface file at all. As it turns out, you can often do without it. For example, you could also build a Perl5 module by just running SWIG - on the C header file and specifying a module name as follows

    -
    -
    -unix > swig -perl5 -module example example.h
    -unix > gcc -c example.c example_wrap.c \
    -        -I/usr/local/lib/perl5/sun4-solaris/5.003/CORE
    -unix > ld -G example.o example_wrap.o -o example.so
    -unix > perl5.003
    + on the C header file and specifying a module name as follows

    +
    +
    +unix > swig -perl5 -module example example.h
    +unix > gcc -c example.c example_wrap.c \
    +        -I/usr/local/lib/perl5/sun4-solaris/5.003/CORE
    +unix > ld -G example.o example_wrap.o -o example.so
    +unix > perl5.003
     use example;
     print example::fact(4), "\n";
     print example::my_mod(23, 7), "\n";
     print $example::My_variable + 4.5, "\n";
    -<ctrl-d>
    +<ctrl-d>
     24
     2
     7.5
    -
    -
    -

    2.4 Supported C/C++ language features -

    -

    A primary goal of the SWIG project is to make the language binding +

    +
    +

    2.5 Supported C/C++ language features +

    +

    A primary goal of the SWIG project is to make the language binding process extremely easy. Although a few simple examples have been shown, SWIG is quite capable in supporting most of C++. Some of the major - features include:

    -
      -
    • Full C99 preprocessing.
    • -
    • All ANSI C and C++ datatypes.
    • -
    • Functions, variables, and constants.
    • -
    • Classes.
    • -
    • Single and multiple inheritance.
    • -
    • Overloaded functions and methods.
    • -
    • Overloaded operators.
    • -
    • C++ templates (including member templates, specialization, and - partial specialization).
    • -
    • Namespaces.
    • -
    • Variable length arguments.
    • -
    • C++ smart pointers.
    • -
    -

    Most of C++11 is also supported. Details are in the -C++11 section.

    -

    It is important to stress that SWIG is not a simplistic C++ lexing + features include:

    +
      +
    • Full C99 preprocessing.
    • +
    • All ISO C and C++ datatypes.
    • +
    • Functions, variables, and constants.
    • +
    • Classes.
    • +
    • Single and multiple inheritance.
    • +
    • Overloaded functions and methods.
    • +
    • Overloaded operators.
    • +
    • C++ templates (including member templates, specialization, and + partial specialization).
    • +
    • Namespaces.
    • +
    • Variable length arguments.
    • +
    • C++ smart pointers.
    • +
    +

    Most of C++11 is also supported. Details are in the +C++11 chapter. C++14 support is covered in the +C++14 chapter. C++17 support is covered in the +C++17 chapter.

    +

    It is important to stress that SWIG is not a simplistic C++ lexing tool like several apparently similar wrapper generation tools. SWIG not only parses C++, it implements the full C++ type system and it is able to understand C++ semantics. SWIG generates its wrappers with full knowledge of this information. As a result, you will find SWIG to be just as capable of dealing with nasty corner cases as it is in wrapping simple C++ code. In fact, SWIG is able to handle C++ code that stresses - the very limits of many C++ compilers.

    -

    2.5 Non-intrusive interface building

    -

    When used as intended, SWIG requires minimal (if any) modification + the very limits of many C++ compilers.

    +

    2.6 Non-intrusive interface building

    +

    When used as intended, SWIG requires minimal (if any) modification to existing C or C++ code. This makes SWIG extremely easy to use with existing packages and promotes software reuse and modularity. By making the C/C++ code independent of the high level interface, you can change the interface and reuse the code in other applications. It is also possible to support different types of interfaces depending on the - application.

    -

    2.6 Incorporating SWIG into a - build system

    -

    SWIG is a command line tool and as such can be incorporated into any + application.

    +

    2.7 Incorporating SWIG into a + build system

    +

    SWIG is a command line tool and as such can be incorporated into any build system that supports invoking external tools/compilers. SWIG is most commonly invoked from within a Makefile, but is also known to be - invoked from popular IDEs such as Microsoft Visual Studio.

    -

    If you are using the GNU Autotools ( -Autoconf/ Automake -/ Libtool) to + invoked from popular IDEs such as Microsoft Visual Studio.

    +

    If you are using the GNU Autotools ( +Autoconf/ Automake +/ Libtool) to configure SWIG use in your project, the SWIG Autoconf macros can be - used. The primary macro is ax_pkg_swig, see + used. The primary macro is ax_pkg_swig, see http://www.gnu.org/software/autoconf-archive/ax_pkg_swig.html#ax_pkg_swig -. The ax_python_devel macro is also helpful for generating - Python extensions. See the -Autoconf Archive for further information on this and other Autoconf - macros.

    -

    There is growing support for SWIG in some build tools, for example CMake is a cross-platform, open-source build - manager with built in support for SWIG. CMake can detect the SWIG +. The ax_python_devel macro is also helpful for generating + Python extensions. See the +Autoconf Archive for further information on this and other Autoconf + macros.

    +

    There is growing support for SWIG in some build tools, for example CMake is a cross-platform, open-source + build manager with built in support for SWIG. CMake can detect the SWIG executable and many of the target language libraries for linking against. CMake knows how to build shared libraries and loadable modules on many different operating systems. This allows easy cross platform SWIG development. It can also generate the custom commands necessary for driving SWIG from IDEs and makefiles. All of this can be done from a single cross platform input file. The following example is a CMake - input file for creating a python wrapper for the SWIG interface file, - example.i:

    -
    -
    + input file for creating a Python wrapper for the SWIG interface file,
    + example.i:

    +
    +
     
     # This is a CMake example for Python
     
    @@ -3026,23 +3055,23 @@ SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS "-includeall&qu
     SWIG_ADD_MODULE(example python example.i example.cxx)
     SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES})
     
    -
    -
    -

    The above example will generate native build files such as +

    +
    +

    The above example will generate native build files such as makefiles, nmake files and Visual Studio projects which will invoke SWIG and compile the generated C++ files into _example.so (UNIX) or _example.pyd (Windows). For other target languages on Windows a dll, - instead of a .pyd file, is usually generated.

    -

    2.7 Hands off code generation

    -

    SWIG is designed to produce working code that needs no + instead of a .pyd file, is usually generated.

    +

    2.8 Hands off code generation

    +

    SWIG is designed to produce working code that needs no hand-modification (in fact, if you look at the output, you probably won't want to modify it). You should think of your target language interface being defined entirely by the input to SWIG, not the resulting output file. While this approach may limit flexibility for hard-core hackers, it allows others to forget about the low-level - implementation details.

    -

    2.8 SWIG and freedom

    -

    No, this isn't a special section on the sorry state of world + implementation details.

    +

    2.9 SWIG and freedom

    +

    No, this isn't a special section on the sorry state of world politics. However, it may be useful to know that SWIG was written with a certain "philosophy" about programming---namely that programmers are smart and that tools should just stay out of their way. Because of @@ -3050,11 +3079,11 @@ SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES}) you get away with. In fact, you can use SWIG to go well beyond "shooting yourself in the foot" if dangerous programming is your goal. On the other hand, this kind of freedom may be exactly what is needed - to work with complicated and unusual C/C++ applications.

    -

    Ironically, the freedom that SWIG provides is countered by an + to work with complicated and unusual C/C++ applications.

    +

    Ironically, the freedom that SWIG provides is countered by an extremely conservative approach to code generation. At its core, SWIG tries to distill even the most advanced C++ code down to a small - well-defined set of interface building techniques based on ANSI C + well-defined set of interface building techniques based on ISO C programming. Because of this, you will find that SWIG interfaces can be easily compiled by virtually every C/C++ compiler and that they can be used on any platform. Again, this is an important part of staying out @@ -3065,396 +3094,396 @@ SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES}) party libraries are not used in the generated code. SWIG will also generally avoid generating code that introduces a dependency on the C++ Standard Template Library (STL). SWIG will generate code that depends - on the C libraries though.

    + on the C libraries though.


    -

    3 Getting started on Windows

    +

    3 Getting started on Windows

    - + -

    This chapter describes SWIG usage on Microsoft Windows. Installing +

    This chapter describes SWIG usage on Microsoft Windows. Installing SWIG and running the examples is covered as well as building the SWIG executable. Usage within the Unix like environments MinGW and Cygwin is - also detailed.

    -

    3.1 Installation on Windows

    -

    SWIG does not come with the usual Windows type installation program, - however it is quite easy to get started. The main steps are:

    -
      -
    • Download the swigwin zip package from the -SWIG website and unzip into a directory. This is all that needs - downloading for the Windows platform.
    • -
    • Set environment variables as described in the -SWIG Windows Examples section in order to run examples using Visual - C++.
    • -
    -

    3.1.1 Windows Executable

    -

    The swigwin distribution contains the SWIG Windows executable, + also detailed.

    +

    3.1 Installation on Windows

    +

    SWIG does not come with the usual Windows type installation program, + however it is quite easy to get started. The main steps are:

    +
      +
    • Download the swigwin zip package from the +SWIG website and unzip into a directory. This is all that needs + downloading for the Windows platform.
    • +
    • Set environment variables as described in the +SWIG Windows Examples section in order to run examples using Visual + C++.
    • +
    +

    3.1.1 Windows Executable

    +

    The swigwin distribution contains the SWIG Windows executable, swig.exe, which will run on 32 bit versions of Windows, ie Windows 95 - and later. If you want to build your own swig.exe have a look at -Building swig.exe on Windows.

    -

    3.2 SWIG Windows Examples

    -

    Using Microsoft Visual C++ is the most common approach to compiling + and later. If you want to build your own swig.exe have a look at +Building swig.exe on Windows.

    +

    3.2 SWIG Windows Examples

    +

    Using Microsoft Visual C++ is the most common approach to compiling and linking SWIG's output. The Examples directory has a few Visual C++ project files (.dsp files). These were produced by Visual C++ 6. Newer versions of Visual Studio should be able to open and convert these project files. Each C# example comes with a Visual Studio 2005 solution and associated project files instead of Visual C++ 6 project files. The project files have been set up to execute SWIG in a custom build rule - for the SWIG interface (.i) file. Alternatively run the -examples using Cygwin.

    -

    More information on each of the examples is available with the - examples distributed with SWIG (Examples/index.html).

    -

    3.2.1 Instructions for using the - Examples with Visual Studio

    -

    Ensure the SWIG executable is as supplied in the SWIG root directory + for the SWIG interface (.i) file. Alternatively run the +examples using Cygwin.

    +

    More information on each of the examples is available with the + examples distributed with SWIG (Examples/index.html).

    +

    3.2.1 Instructions for using the + Examples with Visual Studio

    +

    Ensure the SWIG executable is as supplied in the SWIG root directory in order for the examples to work. Most languages require some - environment variables to be set before running Visual C++. Note + environment variables to be set before running Visual C++. Note that Visual C++ must be re-started to pick up any changes in environment variables. Open up an example .dsp file, Visual C++ will create a workspace for you (.dsw file). Ensure the Release build is selected then do a Rebuild All from the Build menu. The required - environment variables are displayed with their current values.

    -

    The list of required environment variables for each module language + environment variables are displayed with their current values.

    +

    The list of required environment variables for each module language is also listed below. They are usually set from the Control Panel and System properties, but this depends on which flavour of Windows you are running. If you don't want to use environment variables then change all occurrences of the environment variables in the .dsp files with hard coded values. If you are interested in how the project files are set up there is explanatory information in some of the language module's - documentation.

    -

    3.2.1.1 C#

    -

    The C# examples do not require any environment variables to be set + documentation.

    +

    3.2.1.1 C#

    +

    The C# examples do not require any environment variables to be set as a C# project file is included. Just open up the .sln solution file in Visual Studio .NET 2003 or later, select Release Build, and do a Rebuild All from the Build menu. The accompanying C# and C++ project - files are automatically used by the solution file.

    -

    3.2.1.2 Java

    -

    JAVA_INCLUDE : Set this to the directory containing + files are automatically used by the solution file.

    +

    3.2.1.2 Java

    +

    JAVA_INCLUDE : Set this to the directory containing jni.h -
    JAVA_BIN : Set this to the bin directory containing - javac.exe

    -

    Example using JDK1.3: -
    JAVA_INCLUDE: D:\jdk1.3\include -
    JAVA_BIN: D:\jdk1.3\bin -

    -

    3.2.1.3 Perl

    -

    PERL5_INCLUDE : Set this to the directory containing +
    JAVA_BIN : Set this to the bin directory containing + javac.exe

    +

    Example using JDK1.3: +
    JAVA_INCLUDE: D:\jdk1.3\include +
    JAVA_BIN: D:\jdk1.3\bin +

    +

    3.2.1.3 Perl

    +

    PERL5_INCLUDE : Set this to the directory containing perl.h -
    PERL5_LIB : Set this to the Perl library including - path for linking

    -

    Example using nsPerl 5.004_04:

    -

    PERL5_INCLUDE: D:\nsPerl5.004_04\lib\CORE -
    PERL5_LIB: D:\nsPerl5.004_04\lib\CORE\perl.lib -

    -

    3.2.1.4 Python

    -

    PYTHON_INCLUDE : Set this to the directory that +
    PERL5_LIB : Set this to the Perl library including + path for linking

    +

    Example using nsPerl 5.004_04:

    +

    PERL5_INCLUDE: D:\nsPerl5.004_04\lib\CORE +
    PERL5_LIB: D:\nsPerl5.004_04\lib\CORE\perl.lib +

    +

    3.2.1.4 Python

    +

    PYTHON_INCLUDE : Set this to the directory that contains Python.h -
    PYTHON_LIB : Set this to the python library - including path for linking

    -

    Example using Python 2.1.1: -
    PYTHON_INCLUDE: D:\python21\include -
    PYTHON_LIB: D:\python21\libs\python21.lib -

    -

    3.2.1.5 TCL

    -

    TCL_INCLUDE : Set this to the directory containing +
    PYTHON_LIB : Set this to the Python library + including path for linking

    +

    Example using Python 2.1.1: +
    PYTHON_INCLUDE: D:\python21\include +
    PYTHON_LIB: D:\python21\libs\python21.lib +

    +

    3.2.1.5 TCL

    +

    TCL_INCLUDE : Set this to the directory containing tcl.h -
    TCL_LIB : Set this to the TCL library including - path for linking

    -

    Example using ActiveTcl 8.3.3.3 -
    TCL_INCLUDE: D:\tcl\include -
    TCL_LIB: D:\tcl\lib\tcl83.lib -

    -

    3.2.1.6 R

    -

    R_INCLUDE : Set this to the directory containing R.h -
    R_LIB : Set this to the R library (Rdll.lib) +
    TCL_LIB : Set this to the TCL library including + path for linking

    +

    Example using ActiveTcl 8.3.3.3 +
    TCL_INCLUDE: D:\tcl\include +
    TCL_LIB: D:\tcl\lib\tcl83.lib +

    +

    3.2.1.6 R

    +

    R_INCLUDE : Set this to the directory containing R.h +
    R_LIB : Set this to the R library (Rdll.lib) including path for linking. The library needs to be built as described in the R README.packages file (the pexports.exe approach is the - easiest).

    -

    Example using R 2.5.1: -
    R_INCLUDE: C:\Program Files\R\R-2.5.1\include -
    R_LIB: C:\Program Files\R\R-2.5.1\bin\Rdll.lib -

    -

    3.2.1.7 Ruby

    -

    RUBY_INCLUDE : Set this to the directory containing + easiest).

    +

    Example using R 2.5.1: +
    R_INCLUDE: C:\Program Files\R\R-2.5.1\include +
    R_LIB: C:\Program Files\R\R-2.5.1\bin\Rdll.lib +

    +

    3.2.1.7 Ruby

    +

    RUBY_INCLUDE : Set this to the directory containing ruby.h -
    RUBY_LIB : Set this to the ruby library including - path for linking

    -

    Example using Ruby 1.6.4: -
    RUBY_INCLUDE: D:\ruby\lib\ruby\1.6\i586-mswin32 -
    RUBY_LIB: D:\ruby\lib\mswin32-ruby16.lib -

    -

    3.2.2 Instructions for using the - Examples with other compilers

    -

    If you do not have access to Visual C++ you will have to set up +
    RUBY_LIB : Set this to the ruby library including + path for linking

    +

    Example using Ruby 1.6.4: +
    RUBY_INCLUDE: D:\ruby\lib\ruby\1.6\i586-mswin32 +
    RUBY_LIB: D:\ruby\lib\mswin32-ruby16.lib +

    +

    3.2.2 Instructions for using the + Examples with other compilers

    +

    If you do not have access to Visual C++ you will have to set up project files / Makefiles for your chosen compiler. There is a section in each of the language modules detailing what needs setting up using Visual C++ which may be of some guidance. Alternatively you may want to - use Cygwin as described in the following section.

    -

    3.3 SWIG on Cygwin and MinGW

    -

    SWIG can also be compiled and run using -Cygwin or MinGW which provides a - Unix like front end to Windows and comes free with gcc, an ANSI C/C++ + use Cygwin as described in the following section.

    +

    3.3 SWIG on Cygwin and MinGW

    +

    SWIG can also be compiled and run using +Cygwin or MinGW which provides a + Unix like front end to Windows and comes free with gcc, an ISO C/C++ compiler. However, this is not a recommended approach as the prebuilt - executable is supplied.

    -

    3.3.1 Building swig.exe on Windows

    -

    If you want to replicate the build of swig.exe that comes with the + executable is supplied.

    +

    3.3.1 Building swig.exe on Windows

    +

    If you want to replicate the build of swig.exe that comes with the download, follow the MinGW instructions below. This is not necessary to use the supplied swig.exe. This information is provided for those that want to modify the SWIG source code in a Windows environment. Normally - this is not needed, so most people will want to ignore this section.

    -

    3.3.1.1 Building swig.exe using MinGW - and MSYS

    -

    The short abbreviated instructions follow...

    -
      -
    • Install MinGW and MSYS from the MinGW - site. This provides a Unix environment on Windows.
    • -
    • Follow the usual Unix instructions in the README file in the SWIG - root directory to build swig.exe from the MinGW command prompt.
    • -
    -

    The step by step instructions to download and install MinGW and + this is not needed, so most people will want to ignore this section.

    +

    3.3.1.1 Building swig.exe using MinGW + and MSYS

    +

    The short abbreviated instructions follow...

    +
      +
    • Install MinGW and MSYS from the MinGW + site. This provides a Unix environment on Windows.
    • +
    • Follow the usual Unix instructions in the README file in the SWIG + root directory to build swig.exe from the MinGW command prompt.
    • +
    +

    The step by step instructions to download and install MinGW and MSYS, then download and build the latest version of SWIG from Github follow... Note that the instructions for obtaining SWIG from Github are - also online at SWIG Bleeding - Edge.

    -

    Pitfall note: Execute the steps in the order shown and don't + also online at SWIG Bleeding + Edge.

    +

    Pitfall note: Execute the steps in the order shown and don't use spaces in path names. In fact it is best to use the default - installation directories.

    -
      -
    1. Download the following packages from the -MinGW download page or -MinGW SourceForge download page. Note that at the time of writing, + installation directories.

      +
        +
      1. Download the following packages from the +MinGW download page or +MinGW SourceForge download page. Note that at the time of writing, the majority of these are in the Current release list and some are in the Snapshot or Previous release list. -
          -
        • MinGW-3.1.0-1.exe
        • -
        • MSYS-1.0.11-2004.04.30-1.exe
        • -
        • msysDTK-1.0.1.exe
        • -
        • bison-2.0-MSYS.tar.gz
        • -
        • msys-autoconf-2.59.tar.bz2
        • -
        • msys-automake-1.8.2.tar.bz2
        • -
        -
      2. -
      3. Install MinGW-3.1.0-1.exe (C:\MinGW is default location.)
      4. -
      5. Install MSYS-1.0.11-2004.04.30-1.exe. Make sure you install it on +
          +
        • MinGW-3.1.0-1.exe
        • +
        • MSYS-1.0.11-2004.04.30-1.exe
        • +
        • msysDTK-1.0.1.exe
        • +
        • bison-2.0-MSYS.tar.gz
        • +
        • msys-autoconf-2.59.tar.bz2
        • +
        • msys-automake-1.8.2.tar.bz2
        • +
        +
      6. +
      7. Install MinGW-3.1.0-1.exe (C:\MinGW is default location.)
      8. +
      9. Install MSYS-1.0.11-2004.04.30-1.exe. Make sure you install it on the same windows drive letter as MinGW (C:\msys\1.0 is default). In the post install script, -
          -
        • Answer y to the "do you wish to continue with the post install?"
        • -
        • Answer y to the "do you have MinGW installed?"
        • -
        • Type in the folder in which you installed MinGW (C:/MinGW is - default)
        • -
        -
      10. -
      11. Install msysDTK-1.0.1.exe to the same folder that you installed - MSYS (C:\msys\1.0 is default).
      12. -
      13. Copy the following to the MSYS install folder (C:\msys\1.0 is +
          +
        • Answer y to the "do you wish to continue with the post install?"
        • +
        • Answer y to the "do you have MinGW installed?"
        • +
        • Type in the folder in which you installed MinGW (C:/MinGW is + default)
        • +
        +
      14. +
      15. Install msysDTK-1.0.1.exe to the same folder that you installed + MSYS (C:\msys\1.0 is default).
      16. +
      17. Copy the following to the MSYS install folder (C:\msys\1.0 is default): -
          -
        • msys-automake-1.8.2.tar.bz2
        • -
        • msys-autoconf-2.59.tar.bz2
        • -
        • bison-2.0-MSYS.tar.gz
        • -
        -
      18. -
      19. Start the MSYS command prompt and execute:
        -
        +
          +
        • msys-automake-1.8.2.tar.bz2
        • +
        • msys-autoconf-2.59.tar.bz2
        • +
        • bison-2.0-MSYS.tar.gz
        • +
        +
      20. +
      21. Start the MSYS command prompt and execute:
        +
         cd /
         tar -jxf msys-automake-1.8.2.tar.bz2
         tar -jxf msys-autoconf-2.59.tar.bz2
         tar -zxf bison-2.0-MSYS.tar.gz
        -
        -
      22. -
      23. The very latest development version of SWIG is available from -SWIG on Github and can be downloaded as a zip file or if you have - Git installed, via Git. Either download the latest -Zip file snapshot and unzip and rename the top level folder to - /usr/src/swig. Otherwise if using Git, type in the following:
        -
        +
        +
      24. +
      25. The very latest development version of SWIG is available from +SWIG on Github and can be downloaded as a zip file or if you have + Git installed, via Git. Either download the latest +Zip file snapshot and unzip and rename the top level folder to + /usr/src/swig. Otherwise if using Git, type in the following:
        +
         mkdir /usr/src
         cd /usr/src
         git clone https://github.com/swig/swig.git
        -
        -
        Pitfall note: If you want to place SWIG in a different + + Pitfall note: If you want to place SWIG in a different folder to the proposed /usr/src/swig, do not use MSYS emulated windows - drive letters, because the autotools will fail miserably on those.
      26. -
      27. The PCRE third party library needs to be built next. Download the - latest PCRE source tarball, such as pcre-8.10.tar.bz2, from -PCRE and place in the /usr/src/swig directory. Build PCRE - as a static library using the Tools/pcre-build.sh script as follows:
        +
      28. The PCRE third party library needs to be built next. Download the + latest PCRE source tarball, such as pcre-8.10.tar.bz2, from +PCRE and place in the /usr/src/swig directory. Build PCRE + as a static library using the Tools/pcre-build.sh script as follows:
        -
        +
         cd /usr/src/swig
         Tools/pcre-build.sh
        -
        -
      29. -
      30. You are now ready to build SWIG. Execute the following commands to - build swig.exe:
        -
        +
        +
      31. +
      32. You are now ready to build SWIG. Execute the following commands to + build swig.exe:
        +
         cd /usr/src/swig
         ./autogen.sh
         ./configure
         make
        -
        -
      33. -
      -

      3.3.1.2 Building swig.exe using Cygwin

      -

      Note that SWIG can also be built using Cygwin. However, SWIG will + +

    2. +
    +

    3.3.1.2 Building swig.exe using Cygwin

    +

    Note that SWIG can also be built using Cygwin. However, SWIG will then require the Cygwin DLL when executing. Follow the Unix instructions in the README file in the SWIG root directory. Note that the Cygwin environment will also allow one to regenerate the autotool generated files which are supplied with the release distribution. These - files are generated using the autogen.sh script and will only - need regenerating in circumstances such as changing the build system.

    -

    3.3.1.3 Building swig.exe - alternatives

    -

    If you don't want to install Cygwin or MinGW, use a different + files are generated using the autogen.sh script and will only + need regenerating in circumstances such as changing the build system.

    +

    3.3.1.3 Building swig.exe + alternatives

    +

    If you don't want to install Cygwin or MinGW, use a different compiler to build SWIG. For example, all the source code files can be added to a Visual C++ project file in order to build swig.exe from the - Visual C++ IDE.

    -

    3.3.2 Running the examples on - Windows using Cygwin

    -

    The examples and test-suite work as successfully on Cygwin as on any + Visual C++ IDE.

    +

    3.3.2 Running the examples on + Windows using Cygwin

    +

    The examples and test-suite work as successfully on Cygwin as on any other Unix operating system. The modules which are known to work are Python, Tcl, Perl, Ruby, Java and C#. Follow the Unix instructions in - the README file in the SWIG root directory to build the examples.

    -

    3.4 Microsoft extensions and other - Windows quirks

    -

    A common problem when using SWIG on Windows are the Microsoft + the README file in the SWIG root directory to build the examples.

    +

    3.4 Microsoft extensions and other + Windows quirks

    +

    A common problem when using SWIG on Windows are the Microsoft function calling conventions which are not in the C++ standard. SWIG - parses ISO C/C++ so cannot deal with proprietary conventions such as -__declspec(dllimport), __stdcall etc. There is a Windows - interface file, windows.i, to deal with these calling + parses ISO C/C++ so cannot deal with proprietary conventions such as +__declspec(dllimport), __stdcall etc. There is a Windows + interface file, windows.i, to deal with these calling conventions though. The file also contains typemaps for handling - commonly used Windows specific types such as __int64, BOOL -, DWORD etc. Include it like you would any other interface - file, for example:

    -
    -
    + commonly used Windows specific types such as __int64, BOOL
    +, DWORD etc. Include it like you would any other interface
    + file, for example:

    +
    +
     %include <windows.i>
     
     __declspec(dllexport) ULONG __stdcall foo(DWORD, __int32);
    -
    -
    -

    Note that if you follow Microsoft's recommendation of wrapping the -__declspec calls in a preprocessor definition, you will need to +

    +
    +

    Note that if you follow Microsoft's recommendation of wrapping the +__declspec calls in a preprocessor definition, you will need to make sure that the definition is included by SWIG as well, by either defining it manually or via a header. For example, if you have - specified the preprocessor definition in a header named -export_lib.h and include other headers which depend on it, you - should use the %include directive to include the definition - explicitly. For example, if you had a header file, bar.h, - which depended on export_lib.h, your SWIG definition file - might look like:

    -
    -
    + specified the preprocessor definition in a header named 
    +export_lib.h and include other headers which depend on it, you
    + should use the %include directive to include the definition
    + explicitly. For example, if you had a header file, bar.h,
    + which depended on export_lib.h, your SWIG definition file
    + might look like:

    +
    +
     // bar.i
     %module bar
     %include <windows.i>
     %include "export_lib.h"
     %include "bar.h"
    -
    -
    -

    where export_lib.h may contain:

    -
    -
    +
    +
    +

    where export_lib.h may contain:

    +
    +
     // export_lib.h
     #define BAR_API __declspec(dllexport)
    -
    -
    -

    and bar.h may look like:

    -
    -
    +
    +
    +

    and bar.h may look like:

    +
    +
     // bar.h
     #include "export_lib.h"
     BAR_API void bar_function(int, double);
    -
    -
    -

    Using the preprocessor to remove BAR_API is a popular simpler - solution:

    -
    -
    +
    +
    +

    Using the preprocessor to remove BAR_API is a popular simpler + solution:

    +
    +
     // bar.i
     %module bar
     #define BAR_API
     %include "bar.h"
    -
    -

    -

    4 Scripting Languages

    +
    +

    +

    4 Scripting Languages

    - + -

    This chapter provides a brief overview of scripting language +

    This chapter provides a brief overview of scripting language extension programming and the mechanisms by which scripting language - interpreters access C and C++ code.

    -

    4.1 The two language view of the world

    -

    When a scripting language is used to control a C program, the - resulting system tends to look as follows:

    -
    Scripting language input - C/C++ functions output
    -

    In this programming model, the scripting language interpreter is + interpreters access C and C++ code.

    +

    4.1 The two language view of the world

    +

    When a scripting language is used to control a C program, the + resulting system tends to look as follows:

    +
    Scripting language input - C/C++ functions output
    +

    In this programming model, the scripting language interpreter is used for high level control whereas the underlying functionality of the C/C++ program is accessed through special scripting language "commands." If you have ever tried to write your own simple command @@ -3463,16 +3492,16 @@ src="ch2.1.png" WIDTH="377">

    a package such as MATLAB or IDL, it is a very similar model--the interpreter executes user commands and scripts. However, most of the underlying functionality is written in a low-level language like C or - Fortran.

    -

    The two-language model of computing is extremely powerful because it + Fortran.

    +

    The two-language model of computing is extremely powerful because it exploits the strengths of each language. C/C++ can be used for maximal performance and complicated systems programming tasks. Scripting languages can be used for rapid prototyping, interactive debugging, scripting, and access to high-level data structures such associative - arrays.

    -

    4.2 How does a scripting language talk to C? -

    -

    Scripting languages are built around a parser that knows how to + arrays.

    +

    4.2 How does a scripting language talk to C? +

    +

    Scripting languages are built around a parser that knows how to execute commands and scripts. Within this parser, there is a mechanism for executing commands and accessing variables. Normally, this is used to implement the builtin features of the language. However, by @@ -3480,40 +3509,40 @@ src="ch2.1.png" WIDTH="377"> and variables. To do this, most languages define a special API for adding new commands. Furthermore, a special foreign function interface defines how these new commands are supposed to hook into the - interpreter.

    -

    Typically, when you add a new command to a scripting interpreter you + interpreter.

    +

    Typically, when you add a new command to a scripting interpreter you need to do two things; first you need to write a special "wrapper" function that serves as the glue between the interpreter and the underlying C function. Then you need to give the interpreter information about the wrapper by providing details about the name of the function, arguments, and so forth. The next few sections illustrate - the process.

    -

    4.2.1 Wrapper functions

    -

    Suppose you have an ordinary C function like this :

    -
    -
    + the process.

    +

    4.2.1 Wrapper functions

    +

    Suppose you have an ordinary C function like this :

    +
    +
     int fact(int n) {
       if (n <= 1)
         return 1;
       else
         return n*fact(n-1);
     }
    -
    -
    -

    In order to access this function from a scripting language, it is +

    +
    +

    In order to access this function from a scripting language, it is necessary to write a special "wrapper" function that serves as the glue between the scripting language and the underlying C function. A wrapper - function must do three things :

    -
      -
    • Gather function arguments and make sure they are valid.
    • -
    • Call the C function.
    • -
    • Convert the return value into a form recognized by the scripting - language.
    • -
    -

    As an example, the Tcl wrapper function for the fact() - function above example might look like the following :

    -
    -
    + function must do three things :

    +
      +
    • Gather function arguments and make sure they are valid.
    • +
    • Call the C function.
    • +
    • Convert the return value into a form recognized by the scripting + language.
    • +
    +

    As an example, the Tcl wrapper function for the fact() + function above example might look like the following :

    +
    +
     int wrap_fact(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) {
       int result;
       int arg0;
    @@ -3527,93 +3556,93 @@ int wrap_fact(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
       return TCL_OK;
     }
     
    -
    -
    -

    Once you have created a wrapper function, the final step is to tell +

    +
    +

    Once you have created a wrapper function, the final step is to tell the scripting language about the new function. This is usually done in an initialization function called by the language when the module is loaded. For example, adding the above function to the Tcl interpreter - requires code like the following :

    -
    -
    + requires code like the following :

    +
    +
     int Wrap_Init(Tcl_Interp *interp) {
       Tcl_CreateCommand(interp, "fact", wrap_fact, (ClientData) NULL,
                         (Tcl_CmdDeleteProc *) NULL);
       return TCL_OK;
     }
    -
    -
    -

    When executed, Tcl will now have a new command called "fact -" that you can use like any other Tcl command.

    -

    Although the process of adding a new function to Tcl has been +

    +
    +

    When executed, Tcl will now have a new command called "fact +" that you can use like any other Tcl command.

    +

    Although the process of adding a new function to Tcl has been illustrated, the procedure is almost identical for Perl and Python. Both require special wrappers to be written and both need additional - initialization code. Only the specific details are different.

    -

    4.2.2 Variable linking

    -

    Variable linking refers to the problem of mapping a C/C++ global + initialization code. Only the specific details are different.

    +

    4.2.2 Variable linking

    +

    Variable linking refers to the problem of mapping a C/C++ global variable to a variable in the scripting language interpreter. For - example, suppose you had the following variable:

    -
    -
    + example, suppose you had the following variable:

    +
    +
     double Foo = 3.5;
    -
    -
    -

    It might be nice to access it from a script as follows (shown for - Perl):

    -
    -
    +
    +
    +

    It might be nice to access it from a script as follows (shown for + Perl):

    +
    +
     $a = $Foo * 2.3;   # Evaluation
     $Foo = $a + 2.0;   # Assignment
    -
    -
    -

    To provide such access, variables are commonly manipulated using a +

    +
    +

    To provide such access, variables are commonly manipulated using a pair of get/set functions. For example, whenever the value of a variable is read, a "get" function is invoked. Similarly, whenever the - value of a variable is changed, a "set" function is called.

    -

    In many languages, calls to the get/set functions can be attached to + value of a variable is changed, a "set" function is called.

    +

    In many languages, calls to the get/set functions can be attached to evaluation and assignment operators. Therefore, evaluating a variable - such as $Foo might implicitly call the get function. - Similarly, typing $Foo = 4 would call the underlying set - function to change the value.

    -

    4.2.3 Constants

    -

    In many cases, a C program or library may define a large collection - of constants. For example:

    -
    -
    + such as $Foo might implicitly call the get function.
    + Similarly, typing $Foo = 4 would call the underlying set
    + function to change the value.

    +

    4.2.3 Constants

    +

    In many cases, a C program or library may define a large collection + of constants. For example:

    +
    +
     #define RED   0xff0000
     #define BLUE  0x0000ff
     #define GREEN 0x00ff00
    -
    -
    -

    To make constants available, their values can be stored in scripting - language variables such as $RED, $BLUE, and -$GREEN. Virtually all scripting languages provide C functions for +

    +
    +

    To make constants available, their values can be stored in scripting + language variables such as $RED, $BLUE, and +$GREEN. Virtually all scripting languages provide C functions for creating variables so installing constants is usually a trivial - exercise.

    -

    4.2.4 Structures and classes

    -

    Although scripting languages have no trouble accessing simple + exercise.

    +

    4.2.4 Structures and classes

    +

    Although scripting languages have no trouble accessing simple functions and variables, accessing C/C++ structures and classes present a different problem. This is because the implementation of structures is largely related to the problem of data representation and layout. Furthermore, certain language features are difficult to map to an interpreter. For instance, what does C++ inheritance mean in a Perl - interface?

    -

    The most straightforward technique for handling structures is to + interface?

    +

    The most straightforward technique for handling structures is to implement a collection of accessor functions that hide the underlying - representation of a structure. For example,

    -
    -
    + representation of a structure. For example,

    +
    +
     struct Vector {
       Vector();
       ~Vector();
       double x, y, z;
     };
     
    -
    -
    -

    can be transformed into the following set of functions :

    -
    -
    +
    +
    +

    can be transformed into the following set of functions :

    +
    +
     Vector *new_Vector();
     void delete_Vector(Vector *v);
     double Vector_x_get(Vector *v);
    @@ -3623,88 +3652,88 @@ void Vector_x_set(Vector *v, double x);
     void Vector_y_set(Vector *v, double y);
     void Vector_z_set(Vector *v, double z);
     
    -
    -
    -

    Now, from an interpreter these function might be used as follows:

    -
    -
    +
    +
    +

    Now, from an interpreter these function might be used as follows:

    +
    +
     % set v [new_Vector]
     % Vector_x_set $v 3.5
     % Vector_y_get $v
     % delete_Vector $v
     % ...
    -
    -
    -

    Since accessor functions provide a mechanism for accessing the +

    +
    +

    Since accessor functions provide a mechanism for accessing the internals of an object, the interpreter does not need to know anything - about the actual representation of a Vector.

    -

    4.2.5 Proxy classes

    -

    In certain cases, it is possible to use the low-level accessor + about the actual representation of a Vector.

    +

    4.2.5 Proxy classes

    +

    In certain cases, it is possible to use the low-level accessor functions to create a proxy class, also known as a shadow class. A proxy class is a special kind of object that gets created in a scripting language to access a C/C++ class (or struct) in a way that looks like the original structure (that is, it proxies the real C++ - class). For example, if you have the following C++ definition :

    -
    -
    + class). For example, if you have the following C++ definition :

    +
    +
     class Vector {
     public:
       Vector();
       ~Vector();
       double x, y, z;
     };
    -
    -
    -

    A proxy classing mechanism would allow you to access the structure +

    +
    +

    A proxy classing mechanism would allow you to access the structure in a more natural manner from the interpreter. For example, in Python, - you might want to do this:

    -
    -
    + you might want to do this:

    +
    +
     >>> v = Vector()
     >>> v.x = 3
     >>> v.y = 4
     >>> v.z = -13
     >>> ...
     >>> del v
    -
    -
    -

    Similarly, in Perl5 you may want the interface to work like this:

    -
    -
    +
    +
    +

    Similarly, in Perl5 you may want the interface to work like this:

    +
    +
     $v = new Vector;
     $v->{x} = 3;
     $v->{y} = 4;
     $v->{z} = -13;
     
    -
    -
    -

    Finally, in Tcl :

    -
    -
    +
    +
    +

    Finally, in Tcl :

    +
    +
     Vector v
     v configure -x 3 -y 4 -z -13
     
    -
    -
    -

    When proxy classes are used, two objects are really at work--one in +

    +
    +

    When proxy classes are used, two objects are really at work--one in the scripting language, and an underlying C/C++ object. Operations affect both objects equally and for all practical purposes, it appears - as if you are simply manipulating a C/C++ object.

    -

    4.3 Building scripting language extensions -

    -

    The final step in using a scripting language with your C/C++ + as if you are simply manipulating a C/C++ object.

    +

    4.3 Building scripting language extensions +

    +

    The final step in using a scripting language with your C/C++ application is adding your extensions to the scripting language itself. There are two primary approaches for doing this. The preferred technique is to build a dynamically loadable extension in the form of a shared library. Alternatively, you can recompile the scripting language - interpreter with your extensions added to it.

    -

    4.3.1 Shared libraries and dynamic loading -

    -

    To create a shared library or DLL, you often need to look at the + interpreter with your extensions added to it.

    +

    4.3.1 Shared libraries and dynamic loading +

    +

    To create a shared library or DLL, you often need to look at the manual pages for your compiler and linker. However, the procedure for a - few common platforms is shown below:

    -
    -
    + few common platforms is shown below:

    +
    +
     # Build a shared library for Solaris
     gcc -fpic -c example.c example_wrap.c -I/usr/local/include
     ld -G example.o example_wrap.o -o example.so
    @@ -3712,37 +3741,37 @@ ld -G example.o example_wrap.o -o example.so
     # Build a shared library for Linux
     gcc -fpic -c example.c example_wrap.c -I/usr/local/include
     gcc -shared example.o example_wrap.o -o example.so
    -
    -
    -

    To use your shared library, you simply use the corresponding command +

    +
    +

    To use your shared library, you simply use the corresponding command in the scripting language (load, import, use, etc...). This will import - your module and allow you to start using it. For example:

    -
    -
    + your module and allow you to start using it. For example:

    +
    +
     % load ./example.so
     % fact 4
     24
     %
    -
    -
    -

    When working with C++ codes, the process of building shared +

    +
    +

    When working with C++ codes, the process of building shared libraries may be more complicated--primarily due to the fact that C++ modules may need additional code in order to operate correctly. On many machines, you can build a shared C++ module by following the above - procedures, but changing the link line to the following :

    -
    -
    + procedures, but changing the link line to the following :

    +
    +
     c++ -shared example.o example_wrap.o -o example.so
    -
    -
    -

    4.3.2 Linking with shared libraries

    -

    When building extensions as shared libraries, it is not uncommon for +

    +
    +

    4.3.2 Linking with shared libraries

    +

    When building extensions as shared libraries, it is not uncommon for your extension to rely upon other shared libraries on your machine. In order for the extension to work, it needs to be able to find all of these libraries at run-time. Otherwise, you may get an error such as - the following :

    -
    -
    + the following :

    +
    +
     >>> import graph
     Traceback (innermost last):
       File "<stdin>", line 1, in ?
    @@ -3752,333 +3781,409 @@ ImportError:  1101:/home/sci/data1/beazley/bin/python: rld: Fatal Error: cannot
     successfully map soname 'libgraph.so' under any of the filenames /usr/lib/libgraph.so:/
     lib/libgraph.so:/lib/cmplrs/cc/libgraph.so:/usr/lib/cmplrs/cc/libgraph.so:
     >>>
    -
    -
    -

    What this error means is that the extension module created by SWIG - depends upon a shared library called "libgraph.so" that the +

    +
    +

    What this error means is that the extension module created by SWIG + depends upon a shared library called "libgraph.so" that the system was unable to locate. To fix this problem, there are a few - approaches you can take.

    -
      -
    • Link your extension and explicitly tell the linker where the + approaches you can take.

      +
        +
      • Link your extension and explicitly tell the linker where the required libraries are located. Often times, this can be done with a - special linker flag such as -R, -rpath, etc. This is + special linker flag such as -R, -rpath, etc. This is not implemented in a standard manner so read the man pages for your linker to find out more about how to set the search path for shared - libraries.
      • -
      • Put shared libraries in the same directory as the executable. This + libraries.
      • +
      • Put shared libraries in the same directory as the executable. This technique is sometimes required for correct operation on non-Unix - platforms.
      • -
      • Set the UNIX environment variable LD_LIBRARY_PATH to the + platforms.
      • +
      • Set the UNIX environment variable LD_LIBRARY_PATH to the directory where shared libraries are located before running Python. Although this is an easy solution, it is not recommended. Consider - setting the path using linker options instead.
      • -
      -

      4.3.3 Static linking

      -

      With static linking, you rebuild the scripting language interpreter + setting the path using linker options instead.

    • +
    +

    4.3.3 Static linking

    +

    With static linking, you rebuild the scripting language interpreter with extensions. The process usually involves compiling a short main program that adds your customized commands to the language and starts the interpreter. You then link your program with a library to produce a - new scripting language executable.

    -

    Although static linking is supported on all platforms, this is not + new scripting language executable.

    +

    Although static linking is supported on all platforms, this is not the preferred technique for building scripting language extensions. In fact, there are very few practical reasons for doing this--consider - using shared libraries instead.

    + using shared libraries instead.


    -

    5 SWIG Basics

    +

    5 SWIG Basics

    - + -

    This chapter describes the basic operation of SWIG, the structure of - its input files, and how it handles standard ANSI C declarations. C++ +

    This chapter describes the basic operation of SWIG, the structure of + its input files, and how it handles standard ISO C declarations. C++ support is described in the next chapter. However, C++ programmers should still read this chapter to understand the basics. Specific - details about each target language are described in later chapters.

    -

    5.1 Running SWIG

    -

    To run SWIG, use the swig command with options and a - filename like this:

    -
    -
    -swig [ options ] filename
    -
    -
    -

    where filename is a SWIG interface file or a C/C++ header - file. Below is a subset of options that can be used. - Additional options are also defined for each target language. A full - list can be obtained by typing swig -help or swig - -<lang> -help for language <lang> specific options.

    -
    -
    --allegrocl            Generate ALLEGROCL wrappers
    --chicken              Generate CHICKEN wrappers
    --clisp                Generate CLISP wrappers
    --cffi                 Generate CFFI wrappers
    --csharp               Generate C# wrappers
    --d                    Generate D wrappers
    --go                   Generate Go wrappers
    --guile                Generate Guile wrappers
    --java                 Generate Java wrappers
    --javascript           Generate Javascript wrappers
    --lua                  Generate Lua wrappers
    --modula3              Generate Modula 3 wrappers
    --mzscheme             Generate Mzscheme wrappers
    --ocaml                Generate Ocaml wrappers
    --octave               Generate Octave wrappers
    --perl                 Generate Perl wrappers
    --php5                 Generate PHP5 wrappers
    --php7                 Generate PHP7 wrappers
    --pike                 Generate Pike wrappers
    --python               Generate Python wrappers
    --r                    Generate R (aka GNU S) wrappers
    --ruby                 Generate Ruby wrappers
    --scilab               Generate Scilab wrappers
    --sexp                 Generate Lisp S-Expressions wrappers
    --tcl                  Generate Tcl wrappers
    --uffi                 Generate Common Lisp / UFFI wrappers
    --xml                  Generate XML wrappers
    + details about each target language are described in later chapters.

    +

    5.1 Running SWIG

    +

    To run SWIG, use the swig command with options and a + filename like this:

    +
    +
    +swig [ options ] filename
    +
    +
    +

    where filename is a SWIG interface file or a C/C++ header + file. Full help can be seen by running swig -help. Below is + the common set of options that can be used. Additional options are also + defined for each target language. A full list can be obtained by + running swig -<lang> -help for language <lang> + specific options, for example, swig -ruby -help for Ruby.

    +
    +
    +Supported Target Language Options
    +     -csharp         - Generate C# wrappers
    +     -d              - Generate D wrappers
    +     -go             - Generate Go wrappers
    +     -guile          - Generate Guile wrappers
    +     -java           - Generate Java wrappers
    +     -javascript     - Generate Javascript wrappers
    +     -lua            - Generate Lua wrappers
    +     -octave         - Generate Octave wrappers
    +     -perl5          - Generate Perl 5 wrappers
    +     -php7           - Generate PHP 7 wrappers
    +     -python         - Generate Python wrappers
    +     -r              - Generate R (aka GNU S) wrappers
    +     -ruby           - Generate Ruby wrappers
    +     -scilab         - Generate Scilab wrappers
    +     -tcl8           - Generate Tcl 8 wrappers
    +     -xml            - Generate XML wrappers
     
    --c++                  Enable C++ processing
    --cppext ext           Change file extension of C++ generated files to ext
    -                      (default is cxx, except for PHP5 which uses cpp)
    --Dsymbol              Define a preprocessor symbol
    --Fmicrosoft           Display error/warning messages in Microsoft format
    --Fstandard            Display error/warning messages in commonly used format
    --help                 Display all options
    --Idir                 Add a directory to the file include path
    --lifile               Include SWIG library file <ifile>
    --module name          Set the name of the SWIG module
    --o outfile            Set name of C/C++ output file to <outfile>
    --oh headfile          Set name of C++ output header file for directors to <headfile>
    --outcurrentdir        Set default output dir to current dir instead of input file's path
    --outdir dir           Set language specific files output directory
    --pcreversion          Display PCRE version information
    --swiglib              Report location of SWIG library and exit
    --version              Display SWIG version number
    +Experimental Target Language Options
    +     -mzscheme       - Generate MzScheme/Racket wrappers
    +     -ocaml          - Generate OCaml wrappers
     
    -
    -
    -

    5.1.1 Input format

    -

    As input, SWIG expects a file containing ANSI C/C++ declarations and +General Options + -addextern - Add extra extern declarations + -c++ - Enable C++ processing + -co <file> - Check <file> out of the SWIG library + -copyctor - Automatically generate copy constructors wherever possible + -cpperraswarn - Treat the preprocessor #error statement as #warning (default) + -cppext <ext> - Change file extension of generated C++ files to <ext> + (default is cxx) + -copyright - Display copyright notices + -debug-classes - Display information about the classes found in the interface + -debug-module <n>- Display module parse tree at stages 1-4, <n> is a csv list of stages + -debug-symtabs - Display symbol tables information + -debug-symbols - Display target language symbols in the symbol tables + -debug-csymbols - Display C symbols in the symbol tables + -debug-lsymbols - Display target language layer symbols + -debug-tags - Display information about the tags found in the interface + -debug-template - Display information for debugging templates + -debug-top <n> - Display entire parse tree at stages 1-4, <n> is a csv list of stages + -debug-typedef - Display information about the types and typedefs in the interface + -debug-typemap - Display typemap debugging information + -debug-tmsearch - Display typemap search debugging information + -debug-tmused - Display typemaps used debugging information + -directors - Turn on director mode for all the classes, mainly for testing + -dirprot - Turn on wrapping of protected members for director classes (default) + -D<symbol> - Define a symbol <symbol> (for conditional compilation) + -E - Preprocess only, does not generate wrapper code + -external-runtime [file] - Export the SWIG runtime stack + -fakeversion <v>- Make SWIG fake the program version number to <v> + -fcompact - Compile in compact mode + -features <list>- Set global features, where <list> is a comma separated list of + features, eg -features directors,autodoc=1 + If no explicit value is given to the feature, a default of 1 is used + -fastdispatch - Enable fast dispatch mode to produce faster overload dispatcher code + -Fmicrosoft - Display error/warning messages in Microsoft format + -Fstandard - Display error/warning messages in commonly used format + -fvirtual - Compile in virtual elimination mode + -help - Display help + -I- - Don't search the current directory + -I<dir> - Look for SWIG files in directory <dir> + -ignoremissing - Ignore missing include files + -importall - Follow all #include statements as imports + -includeall - Follow all #include statements + -l<ifile> - Include SWIG library file <ifile> + -macroerrors - Report errors inside macros + -makedefault - Create default constructors/destructors (the default) + -M - List all dependencies + -MD - Is equivalent to `-M -MF <file>', except `-E' is not implied + -MF <file> - Generate dependencies into <file> and continue generating wrappers + -MM - List dependencies, but omit files in SWIG library + -MMD - Like `-MD', but omit files in SWIG library + -module <name> - Set module name to <name> + -MP - Generate phony targets for all dependencies + -MT <target> - Set the target of the rule emitted by dependency generation + -nocontract - Turn off contract checking + -nocpperraswarn - Do not treat the preprocessor #error statement as #warning + -nodefault - Do not generate default constructors nor default destructors + -nodefaultctor - Do not generate implicit default constructors + -nodefaultdtor - Do not generate implicit default destructors + -nodirprot - Do not wrap director protected members + -noexcept - Do not wrap exception specifiers + -nofastdispatch - Disable fast dispatch mode (default) + -nopreprocess - Skip the preprocessor step + -notemplatereduce - Disable reduction of the typedefs in templates + -O - Enable the optimization options: + -fastdispatch -fvirtual + -o <outfile> - Set name of C/C++ output file to <outfile> + -oh <headfile> - Set name of C++ output header file for directors to <headfile> + -outcurrentdir - Set default output dir to current dir instead of input file's path + -outdir <dir> - Set language specific files output directory to <dir> + -pcreversion - Display PCRE version information + -small - Compile in virtual elimination and compact mode + -swiglib - Report location of SWIG library and exit + -templatereduce - Reduce all the typedefs in templates + -v - Run in verbose mode + -version - Display SWIG version number + -Wall - Remove all warning suppression, also implies -Wextra + -Wallkw - Enable keyword warnings for all the supported languages + -Werror - Treat warnings as errors + -Wextra - Adds the following additional warnings: 202,309,403,405,512,321,322 + -w<list> - Suppress/add warning messages, eg -w401,+321 - see Warnings.html + -xmlout <file> - Write XML version of the parse tree to <file> after normal processing +

    +
    +

    Arguments may also be passed in a command-line options file (also + known as a response file) which is useful if they exceed the system + command line length limit. To do this, put the arguments in a file, + then provide the file name prefixed with @ like so:

    +
    +
    +swig @file
    +
    +
    +

    The options read from the file are inserted in place of the file + option. If the file does not exist, or cannot be read, then the option + will be treated literally and not removed.

    +

    Options in the file are separated by whitespace. A whitespace + character may be included in an option by surrounding the entire option + in either single or double quotes. Any character (including a + backslash) may be included by prefixing the character to be included + with a backslash. The file may itself contain additional @file + options; any such options will be processed recursively.

    +

    5.1.1 Input format

    +

    As input, SWIG expects a file containing ISO C/C++ declarations and special SWIG directives. More often than not, this is a special SWIG - interface file which is usually denoted with a special .i or -.swg suffix. In certain cases, SWIG can be used directly on raw + interface file which is usually denoted with a special .i or +.swg suffix. In certain cases, SWIG can be used directly on raw header files or source files. However, this is not the most typical case and there are several reasons why you might not want to do this - (described later).

    -

    The most common format of a SWIG interface is as follows:

    -
    -
    + (described later).

    +

    The most common format of a SWIG interface is as follows:

    +
    +
     %module mymodule 
     %{
     #include "myheader.h"
     %}
    -// Now list ANSI C/C++ declarations
    +// Now list ISO C/C++ declarations
     int foo;
     int bar(int x);
     ...
    -
    -
    -

    The module name is supplied using the special %module - directive. Modules are described further in the -Modules Introduction section.

    -

    Everything in the %{ ... %} block is simply copied verbatim +

    +
    +

    The module name is supplied using the special %module + directive. Modules are described further in the +Modules Introduction section.

    +

    Everything in the %{ ... %} block is simply copied verbatim to the resulting wrapper file created by SWIG. This section is almost always used to include header files and other declarations that are required to make the generated wrapper code compile. It is important to emphasize that just because you include a declaration in a SWIG input - file, that declaration does not automatically appear in the + file, that declaration does not automatically appear in the generated wrapper code---therefore you need to make sure you include - the proper header files in the %{ ... %} section. It should be - noted that the text enclosed in %{ ... %} is not parsed or - interpreted by SWIG. The %{...%} syntax and semantics in SWIG + the proper header files in the %{ ... %} section. It should be + noted that the text enclosed in %{ ... %} is not parsed or + interpreted by SWIG. The %{...%} syntax and semantics in SWIG is analogous to that of the declarations section used in input files to - parser generation tools such as yacc or bison.

    -

    5.1.2 SWIG Output

    -

    The output of SWIG is a C/C++ file that contains all of the wrapper + parser generation tools such as yacc or bison.

    +

    5.1.2 SWIG Output

    +

    The output of SWIG is a C/C++ file that contains all of the wrapper code needed to build an extension module. SWIG may generate some additional files depending on the target language. By default, an input - file with the name file.i is transformed into a file -file_wrap.c or file_wrap.cxx (depending on whether or not - the -c++ option has been used). The name of the output C/C++ - file can be changed using the -o option. In certain cases, + file with the name file.i is transformed into a file +file_wrap.c or file_wrap.cxx (depending on whether or not + the -c++ option has been used). The name of the output C/C++ + file can be changed using the -o option. In certain cases, file suffixes are used by the compiler to determine the source language - (C, C++, etc.). Therefore, you have to use the -o option to + (C, C++, etc.). Therefore, you have to use the -o option to change the suffix of the SWIG-generated wrapper file if you want - something different than the default. For example:

    -
    -
    + something different than the default. For example:

    +
    +
     $ swig -c++ -python -o example_wrap.cpp example.i
    -
    -
    -

    The C/C++ output file created by SWIG often contains everything that +

    +
    +

    The C/C++ output file created by SWIG often contains everything that is needed to construct an extension module for the target scripting language. SWIG is not a stub compiler nor is it usually necessary to edit the output file (and if you look at the output, you probably won't want to). To build the final extension module, the SWIG output file is compiled and linked with the rest of your C/C++ program to create a - shared library.

    -

    For many target languages SWIG will also generate proxy class files + shared library.

    +

    For many target languages SWIG will also generate proxy class files in the target language. The default output directory for these language specific files is the same directory as the generated C/C++ file. This - can be modified using the -outdir option. For example:

    -
    -
    + can be modified using the -outdir option. For example:

    +
    +
     $ swig -c++ -python -outdir pyfiles -o cppfiles/example_wrap.cpp example.i
    -
    -
    -

    If the directories cppfiles and pyfiles exist, the - following will be generated:

    -
    -
    +
    +
    +

    If the directories cppfiles and pyfiles exist, the + following will be generated:

    +
    +
     cppfiles/example_wrap.cpp
     pyfiles/example.py
    -
    -
    -

    If the -outcurrentdir option is used (without -o) +

    +
    +

    If the -outcurrentdir option is used (without -o) then SWIG behaves like a typical C/C++ compiler and the default output directory is then the current directory. Without this option the - default output directory is the path to the input file. If -o - and -outcurrentdir are used together, -outcurrentdir + default output directory is the path to the input file. If -o + and -outcurrentdir are used together, -outcurrentdir is effectively ignored as the output directory for the language files is the same directory as the generated C/C++ file if not overridden - with -outdir.

    -

    5.1.3 Comments

    -

    C and C++ style comments may appear anywhere in interface files. In + with -outdir.

    +

    5.1.3 Comments

    +

    C and C++ style comments may appear anywhere in interface files. In previous versions of SWIG, comments were used to generate documentation files. However, this feature is currently under repair and will - reappear in a later SWIG release.

    -

    5.1.4 C Preprocessor

    -

    Like C, SWIG preprocesses all input files through an enhanced + reappear in a later SWIG release.

    +

    5.1.4 C Preprocessor

    +

    Like C, SWIG preprocesses all input files through an enhanced version of the C preprocessor. All standard preprocessor features are supported including file inclusion, conditional compilation and macros. - However, #include statements are ignored unless the --includeall command line option has been supplied. The reason for + However, #include statements are ignored unless the +-includeall command line option has been supplied. The reason for disabling includes is that SWIG is sometimes used to process raw C header files. In this case, you usually only want the extension module to include functions in the supplied header file rather than everything that might be included by that header file (i.e., system headers, C - library functions, etc.).

    -

    It should also be noted that the SWIG preprocessor skips all text - enclosed inside a %{...%} block. In addition, the preprocessor + library functions, etc.).

    +

    It should also be noted that the SWIG preprocessor skips all text + enclosed inside a %{...%} block. In addition, the preprocessor includes a number of macro handling enhancements that make it more powerful than the normal C preprocessor. These extensions are described - in the "Preprocessor" chapter.

    -

    5.1.5 SWIG Directives

    -

    Most of SWIG's operation is controlled by special directives that - are always preceded by a "%" to distinguish them from normal C + in the "Preprocessor" chapter.

    +

    5.1.5 SWIG Directives

    +

    Most of SWIG's operation is controlled by special directives that + are always preceded by a "%" to distinguish them from normal C declarations. These directives are used to give SWIG hints or to alter - SWIG's parsing behavior in some manner.

    -

    Since SWIG directives are not legal C syntax, it is generally not + SWIG's parsing behavior in some manner.

    +

    Since SWIG directives are not legal C syntax, it is generally not possible to include them in header files. However, SWIG directives can - be included in C header files using conditional compilation like this:

    -
    -
    + be included in C header files using conditional compilation like this:

    +
    +
     /* header.h  --- Some header file */
     
     /* SWIG directives -- only seen if SWIG is running */ 
     #ifdef SWIG
     %module foo
     #endif
    -
    -
    -

    SWIG is a special preprocessing symbol defined by SWIG when - it is parsing an input file.

    -

    5.1.6 Parser Limitations

    -

    Although SWIG can parse most C/C++ declarations, it does not provide +

    +
    +

    SWIG is a special preprocessing symbol defined by SWIG when + it is parsing an input file.

    +

    5.1.6 Parser Limitations

    +

    Although SWIG can parse most C/C++ declarations, it does not provide a complete C/C++ parser implementation. Most of these limitations pertain to very complicated type declarations and certain advanced C++ features. Specifically, the following features are not currently - supported:

    -
      -
    • -

      Non-conventional type declarations. For example, SWIG does not + supported:

      +
        +
      • +

        Non-conventional type declarations. For example, SWIG does not support declarations such as the following (even though this is legal - C):

        -
        -
        + C):

        +
        +
         /* Non-conventional placement of storage specifier (extern) */
         const int extern Number;
         
        @@ -4088,47 +4193,47 @@ Matrix (foo);    // A global variable
         /* Extra declarator grouping in parameters */
         void bar(Spam (Grok)(Doh));
         
        -
        -
        -

        In practice, few (if any) C programmers actually write code like +

        +
        +

        In practice, few (if any) C programmers actually write code like this since this style is never featured in programming books. However, if you're feeling particularly obfuscated, you can certainly break SWIG - (although why would you want to?).

        -
      • -
      • -

        Running SWIG on C++ source files (the code in a .C, .cpp or .cxx + (although why would you want to?).

        +
      • +
      • +

        Running SWIG on C++ source files (the code in a .C, .cpp or .cxx file) is not recommended. The usual approach is to feed SWIG header files for parsing C++ definitions and declarations. The main reason is if SWIG parses a scoped definition or declaration (as is normal for C++ source files), it is ignored, unless a declaration for the symbol was - parsed earlier. For example

        -
        -
        + parsed earlier. For example

        +
        +
         /* bar not wrapped unless foo has been defined and 
            the declaration of bar within foo has already been parsed */
         int foo::bar(int) {
        -    ... whatever ...
        +  ... whatever ...
         }
        -
        -
      • -
      • -

        Certain advanced features of C++ such as nested classes are not yet - fully supported. Please see the C++ -Nested classes section for more information.

        -
      • -
      -

      In the event of a parsing error, conditional compilation can be used - to skip offending code. For example:

      -
      -
      +
      +
    • +
    • +

      Certain advanced features of C++ such as nested classes are not yet + fully supported. Please see the C++ +Nested classes section for more information.

      +
    • +
    +

    In the event of a parsing error, conditional compilation can be used + to skip offending code. For example:

    +
    +
     #ifndef SWIG
     ... some bad declarations ...
     #endif
    -
    -
    -

    Alternatively, you can just delete the offending code from the - interface file.

    -

    One of the reasons why SWIG does not provide a full C++ parser + + +

    Alternatively, you can just delete the offending code from the + interface file.

    +

    One of the reasons why SWIG does not provide a full C++ parser implementation is that it has been designed to work with incomplete specifications and to be very permissive in its handling of C/C++ datatypes (e.g., SWIG can generate interfaces even when there are @@ -4137,14 +4242,14 @@ Nested classes section for more information.

    C/C++ parser as most compilers use type information to assist in the parsing of more complex declarations (for the truly curious, the primary complication in the implementation is that the SWIG parser does - not utilize a separate typedef-name terminal symbol as - described on p. 234 of K&R).

    -

    5.2 Wrapping Simple C Declarations

    -

    SWIG wraps simple C declarations by creating an interface that + not utilize a separate typedef-name terminal symbol as + described on p. 234 of K&R).

    +

    5.2 Wrapping Simple C Declarations

    +

    SWIG wraps simple C declarations by creating an interface that closely matches the way in which the declarations would be used in a C - program. For example, consider the following interface file:

    -
    -
    + program. For example, consider the following interface file:

    +
    +
     %module example
     
     %inline %{
    @@ -4154,15 +4259,15 @@ extern int Foo;
     %}
     #define STATUS 50
     #define VERSION "1.1"
    -
    -
    -

    In this file, there are two functions sin() and -strcmp(), a global variable Foo, and two constants -STATUS and VERSION. When SWIG creates an extension module, +

    +
    +

    In this file, there are two functions sin() and +strcmp(), a global variable Foo, and two constants +STATUS and VERSION. When SWIG creates an extension module, these declarations are accessible as scripting language functions, - variables, and constants respectively. For example, in Tcl:

    -
    -
    + variables, and constants respectively. For example, in Tcl:

    +
    +
     % sin 3
     5.2335956
     % strcmp Dave Mike
    @@ -4173,11 +4278,11 @@ STATUS and VERSION. When SWIG creates an extension module,
     50
     % puts $VERSION
     1.1
    -
    -
    -

    Or in Python:

    -
    -
    +
    +
    +

    Or in Python:

    +
    +
     >>> example.sin(3)
     5.2335956
     >>> example.strcmp('Dave', 'Mike')
    @@ -4188,25 +4293,25 @@ STATUS and VERSION. When SWIG creates an extension module,
     50
     >>> print example.VERSION
     1.1
    -
    -
    -

    Whenever possible, SWIG creates an interface that closely matches +

    +
    +

    Whenever possible, SWIG creates an interface that closely matches the underlying C/C++ code. However, due to subtle differences between languages, run-time environments, and semantics, it is not always possible to do so. The next few sections describe various aspects of - this mapping.

    -

    5.2.1 Basic Type Handling

    -

    In order to build an interface, SWIG has to convert C/C++ datatypes + this mapping.

    +

    5.2.1 Basic Type Handling

    +

    In order to build an interface, SWIG has to convert C/C++ datatypes to equivalent types in the target language. Generally, scripting languages provide a more limited set of primitive types than C. Therefore, this conversion process involves a certain amount of type - coercion.

    -

    Most scripting languages provide a single integer type that is - implemented using the int or long datatype in C. The + coercion.

    +

    Most scripting languages provide a single integer type that is + implemented using the int or long datatype in C. The following list shows all of the C datatypes that SWIG will convert to - and from integers in the target language:

    -
    -
    + and from integers in the target language:

    +
    +
     int
     short
     long
    @@ -4217,94 +4322,94 @@ unsigned long
     unsigned char
     signed char
     bool
    -
    -
    -

    When an integral value is converted from C, a cast is used to +

    +
    +

    When an integral value is converted from C, a cast is used to convert it to the representation in the target language. Thus, a 16 bit short in C may be promoted to a 32 bit integer. When integers are converted in the other direction, the value is cast back into the original C type. If the value is too large to fit, it is silently truncated. -

    -

    unsigned char and signed char are special cases - that are handled as small 8-bit integers. Normally, the char - datatype is mapped as a one-character ASCII string.

    -

    The bool datatype is cast to and from an integer value of 0 - and 1 unless the target language provides a special boolean type.

    -

    Some care is required when working with large integer values. Most +

    +

    unsigned char and signed char are special cases + that are handled as small 8-bit integers. Normally, the char + datatype is mapped as a one-character ASCII string.

    +

    The bool datatype is cast to and from an integer value of 0 + and 1 unless the target language provides a special boolean type.

    +

    Some care is required when working with large integer values. Most scripting languages use 32-bit integers so mapping a 64-bit long integer may lead to truncation errors. Similar problems may arise with 32 bit unsigned integers (which may appear as large negative numbers). - As a rule of thumb, the int datatype and all variations of -char and short datatypes are safe to use. For unsigned - int and long datatypes, you will need to carefully check + As a rule of thumb, the int datatype and all variations of +char and short datatypes are safe to use. For unsigned + int and long datatypes, you will need to carefully check the correct operation of your program after it has been wrapped with - SWIG.

    -

    Although the SWIG parser supports the long long datatype, - not all language modules support it. This is because long long + SWIG.

    +

    Although the SWIG parser supports the long long datatype, + not all language modules support it. This is because long long usually exceeds the integer precision available in the target language. - In certain modules such as Tcl and Perl5, long long integers + In certain modules such as Tcl and Perl5, long long integers are encoded as strings. This allows the full range of these numbers to - be represented. However, it does not allow long long values to + be represented. However, it does not allow long long values to be used in arithmetic expressions. It should also be noted that - although long long is part of the ISO C99 standard, it is not + although long long is part of the ISO C99 standard, it is not universally supported by all C compilers. Make sure you are using a - compiler that supports long long before trying to use this - type with SWIG.

    -

    SWIG recognizes the following floating point types :

    -
    -
    + compiler that supports long long before trying to use this
    + type with SWIG.

    +

    SWIG recognizes the following floating point types :

    +
    +
     float
     double
    -
    -
    -

    Floating point numbers are mapped to and from the natural +

    +
    +

    Floating point numbers are mapped to and from the natural representation of floats in the target language. This is almost always - a C double. The rarely used datatype of long double - is not supported by SWIG.

    -

    The char datatype is mapped into a NULL terminated ASCII + a C double. The rarely used datatype of long double + is not supported by SWIG.

    +

    The char datatype is mapped into a NULL terminated ASCII string with a single character. When used in a scripting language it shows up as a tiny string containing the character value. When converting the value back into C, SWIG takes a character string from the scripting language and strips off the first character as the char - value. Thus if the value "foo" is assigned to a char datatype, - it gets the value `f'.

    -

    The char * datatype is handled as a NULL-terminated ASCII + value. Thus if the value "foo" is assigned to a char datatype, + it gets the value `f'.

    +

    The char * datatype is handled as a NULL-terminated ASCII string. SWIG maps this into a 8-bit character string in the target scripting language. SWIG converts character strings in the target language to NULL terminated strings before passing them into C/C++. The default handling of these strings does not allow them to have embedded - NULL bytes. Therefore, the char * datatype is not generally + NULL bytes. Therefore, the char * datatype is not generally suitable for passing binary data. However, it is possible to change - this behavior by defining a SWIG typemap. See the chapter on -Typemaps for details about this.

    -

    At this time, SWIG provides limited support for Unicode and - wide-character strings (the C wchar_t type). Some languages + this behavior by defining a SWIG typemap. See the chapter on +Typemaps for details about this.

    +

    At this time, SWIG provides limited support for Unicode and + wide-character strings (the C wchar_t type). Some languages provide typemaps for wchar_t, but bear in mind these might not be portable across different operating systems. This is a delicate topic that is poorly understood by many programmers and not implemented in a consistent manner across languages. For those scripting languages that provide Unicode support, Unicode strings are often available in an - 8-bit representation such as UTF-8 that can be mapped to the char * + 8-bit representation such as UTF-8 that can be mapped to the char * type (in which case the SWIG interface will probably work). If the program you are wrapping uses Unicode, there is no guarantee that Unicode characters in the target language will use the same internal representation (e.g., UCS-2 vs. UCS-4). You may need to write some - special conversion functions.

    -

    5.2.2 Global Variables

    -

    Whenever possible, SWIG maps C/C++ global variables into scripting - language variables. For example,

    -
    -
    + special conversion functions.

    +

    5.2.2 Global Variables

    +

    Whenever possible, SWIG maps C/C++ global variables into scripting + language variables. For example,

    +
    +
     %module example
     double foo;
     
    -
    -
    -

    results in a scripting language variable like this:

    -
    -
    +
    +
    +

    results in a scripting language variable like this:

    +
    +
     # Tcl
     set foo [3.5]                   ;# Set foo to 3.5
     puts $foo                       ;# Print the value of foo
    @@ -4320,28 +4425,28 @@ print $foo, "\n";               # Print value of foo
     # Ruby
     Module.foo = 3.5               # Set foo to 3.5
     print Module.foo, "\n"         # Print value of foo
    -
    -
    -

    Whenever the scripting language variable is used, the underlying C +

    +
    +

    Whenever the scripting language variable is used, the underlying C global variable is accessed. Although SWIG makes every attempt to make global variables work like scripting language variables, it is not always possible to do so. For instance, in Python, all global variables - must be accessed through a special variable object known as cvar + must be accessed through a special variable object known as cvar (shown above). In Ruby, variables are accessed as attributes of the module. Other languages may convert variables to a pair of accessor - functions. For example, the Java module generates a pair of functions -double get_foo() and set_foo(double val) that are used to - manipulate the value.

    -

    Finally, if a global variable has been declared as const, + functions. For example, the Java module generates a pair of functions +double get_foo() and set_foo(double val) that are used to + manipulate the value.

    +

    Finally, if a global variable has been declared as const, it only supports read-only access. Note: this behavior is new to - SWIG-1.3. Earlier versions of SWIG incorrectly handled const - and created constants instead.

    -

    5.2.3 Constants

    -

    Constants can be created using #define, enumerations, or a - special %constant directive. The following interface file - shows a few valid constant declarations :

    -
    -
    + SWIG-1.3. Earlier versions of SWIG incorrectly handled const
    + and created constants instead.

    +

    5.2.3 Constants

    +

    Constants can be created using #define, enumerations, or a + special %constant directive. The following interface file + shows a few valid constant declarations :

    +
    +
     #define I_CONST       5               // An integer constant
     #define PI            3.14159         // A Floating point constant
     #define S_CONST       "hello world"   // A string constant
    @@ -4354,117 +4459,117 @@ enum months {JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,
     #define PI_4 PI/4
     #define FLAGS 0x04 | 0x08 | 0x40
     
    -
    -
    -

    In #define declarations, the type of a constant is inferred +

    +
    +

    In #define declarations, the type of a constant is inferred by syntax. For example, a number with a decimal point is assumed to be floating point. In addition, SWIG must be able to fully resolve all of - the symbols used in a #define in order for a constant to - actually be created. This restriction is necessary because #define + the symbols used in a #define in order for a constant to + actually be created. This restriction is necessary because #define is also used to define preprocessor macros that are definitely not - meant to be part of the scripting language interface. For example:

    -
    -
    + meant to be part of the scripting language interface. For example:

    +
    +
     #define EXTERN extern
     
     EXTERN void foo();
    -
    -
    -

    In this case, you probably don't want to create a constant called -EXTERN (what would the value be?). In general, SWIG will not create +

    +
    +

    In this case, you probably don't want to create a constant called +EXTERN (what would the value be?). In general, SWIG will not create constants for macros unless the value can be completely determined by - the preprocessor. For instance, in the above example, the declaration

    -
    -
    + the preprocessor. For instance, in the above example, the declaration

    +
    +
     #define PI_4  PI/4
    -
    -
    -

    defines a constant because PI was already defined as a +

    +
    +

    defines a constant because PI was already defined as a constant and the value is known. However, for the same conservative - reasons even a constant with a simple cast will be ignored, such as

    -
    -
    + reasons even a constant with a simple cast will be ignored, such as

    +
    +
     #define F_CONST (double) 5            // A floating point constant with cast
    -
    -
    -

    The use of constant expressions is allowed, but SWIG does not +

    +
    +

    The use of constant expressions is allowed, but SWIG does not evaluate them. Rather, it passes them through to the output file and lets the C compiler perform the final evaluation (SWIG does perform a - limited form of type-checking however).

    -

    For enumerations, it is critical that the original enum definition + limited form of type-checking however).

    +

    For enumerations, it is critical that the original enum definition be included somewhere in the interface file (either in a header file or - in the %{ %} block). SWIG only translates the enumeration into + in the %{ %} block). SWIG only translates the enumeration into code needed to add the constants to a scripting language. It needs the original enumeration declaration in order to get the correct enum - values as assigned by the C compiler.

    -

    The %constant directive is used to more precisely create + values as assigned by the C compiler.

    +

    The %constant directive is used to more precisely create constants corresponding to different C datatypes. Although it is not usually needed for simple values, it is more useful when working with - pointers and other more complex datatypes. Typically, %constant + pointers and other more complex datatypes. Typically, %constant is only used when you want to add constants to the scripting language - interface that are not defined in the original header file.

    -

    5.2.4 A brief word about const

    -

    A common confusion with C programming is the semantic meaning of the - const qualifier in declarations--especially when it is mixed + interface that are not defined in the original header file.

    +

    5.2.4 A brief word about const

    +

    A common confusion with C programming is the semantic meaning of the + const qualifier in declarations--especially when it is mixed with pointers and other type modifiers. In fact, previous versions of - SWIG handled const incorrectly--a situation that SWIG-1.3.7 - and newer releases have fixed.

    -

    Starting with SWIG-1.3, all variable declarations, regardless of any - use of const, are wrapped as global variables. If a - declaration happens to be declared as const, it is wrapped as - a read-only variable. To tell if a variable is const or not, - you need to look at the right-most occurrence of the const - qualifier (that appears before the variable name). If the right-most -const occurs after all other type modifiers (such as pointers), - then the variable is const. Otherwise, it is not.

    -

    Here are some examples of const declarations.

    -
    -
    + SWIG handled const incorrectly--a situation that SWIG-1.3.7
    + and newer releases have fixed.

    +

    Starting with SWIG-1.3, all variable declarations, regardless of any + use of const, are wrapped as global variables. If a + declaration happens to be declared as const, it is wrapped as + a read-only variable. To tell if a variable is const or not, + you need to look at the right-most occurrence of the const + qualifier (that appears before the variable name). If the right-most +const occurs after all other type modifiers (such as pointers), + then the variable is const. Otherwise, it is not.

    +

    Here are some examples of const declarations.

    +
    +
     const char a;           // A constant character
     char const b;           // A constant character (the same)
     char *const c;          // A constant pointer to a character
     const char *const d;    // A constant pointer to a constant character
    -
    -
    -

    Here is an example of a declaration that is not const:

    -
    -
    +
    +
    +

    Here is an example of a declaration that is not const:

    +
    +
     const char *e;          // A pointer to a constant character.  The pointer
                             // may be modified.
    -
    -
    -

    In this case, the pointer e can change---it's only the - value being pointed to that is read-only.

    -

    Please note that for const parameters or return types used in a +

    +
    +

    In this case, the pointer e can change---it's only the + value being pointed to that is read-only.

    +

    Please note that for const parameters or return types used in a function, SWIG pretty much ignores the fact that these are const, see - the section on const-correctness for more - information.

    -

    Compatibility Note: One reason for changing SWIG to handle -const declarations as read-only variables is that there are many - situations where the value of a const variable might change. - For example, a library might export a symbol as const in its + the section on const-correctness for more + information.

    +

    Compatibility Note: One reason for changing SWIG to handle +const declarations as read-only variables is that there are many + situations where the value of a const variable might change. + For example, a library might export a symbol as const in its public API to discourage modification, but still allow the value to change through some other kind of internal mechanism. Furthermore, programmers often overlook the fact that with a constant declaration - like char *const, the underlying data being pointed to can be + like char *const, the underlying data being pointed to can be modified--it's only the pointer itself that is constant. In an embedded - system, a const declaration might refer to a read-only memory + system, a const declaration might refer to a read-only memory address such as the location of a memory-mapped I/O device port (where the value changes, but writing to the port is not supported by the hardware). Rather than trying to build a bunch of special cases into - the const qualifier, the new interpretation of const - as "read-only" is simple and exactly matches the actual semantics of -const in C/C++. If you really want to create a constant as in older - versions of SWIG, use the %constant directive instead. For - example:

    -
    -
    + the const qualifier, the new interpretation of const
    + as "read-only" is simple and exactly matches the actual semantics of 
    +const in C/C++. If you really want to create a constant as in older
    + versions of SWIG, use the %constant directive instead. For
    + example:

    +
    +
     %constant double PI = 3.14159;
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     #ifdef SWIG
     #define const %constant
     #endif
    @@ -4476,110 +4581,110 @@ const int    spam = 42;
     #endif
     ...
     
    -
    -
    -

    5.2.5 A cautionary tale of char *

    -

    Before going any further, there is one bit of caution involving -char * that must now be mentioned. When strings are passed from a - scripting language to a C char *, the pointer usually points +

    +
    +

    5.2.5 A cautionary tale of char *

    +

    Before going any further, there is one bit of caution involving +char * that must now be mentioned. When strings are passed from a + scripting language to a C char *, the pointer usually points to string data stored inside the interpreter. It is almost always a really bad idea to modify this data. Furthermore, some languages may explicitly disallow it. For instance, in Python, strings are supposed to be immutable. If you violate this, you will probably receive a vast - amount of wrath when you unleash your module on the world.

    -

    The primary source of problems are functions that might modify - string data in place. A classic example would be a function like this:

    -
    -
    + amount of wrath when you unleash your module on the world.

    +

    The primary source of problems are functions that might modify + string data in place. A classic example would be a function like this:

    +
    +
     char *strcat(char *s, const char *t)
    -
    -
    -

    Although SWIG will certainly generate a wrapper for this, its +

    +
    +

    Although SWIG will certainly generate a wrapper for this, its behavior will be undefined. In fact, it will probably cause your application to crash with a segmentation fault or other memory related - problem. This is because s refers to some internal data in the - target language---data that you shouldn't be touching.

    -

    The bottom line: don't rely on char * for anything other + problem. This is because s refers to some internal data in the + target language---data that you shouldn't be touching.

    +

    The bottom line: don't rely on char * for anything other than read-only input values. However, it must be noted that you could - change the behavior of SWIG using typemaps.

    -

    5.3 Pointers and complex objects

    -

    Most C programs manipulate arrays, structures, and other types of - objects. This section discusses the handling of these datatypes.

    -

    5.3.1 Simple pointers

    -

    Pointers to primitive C datatypes such as

    -
    -
    + change the behavior of SWIG using typemaps.

    +

    5.3 Pointers and complex objects

    +

    Most C programs manipulate arrays, structures, and other types of + objects. This section discusses the handling of these datatypes.

    +

    5.3.1 Simple pointers

    +

    Pointers to primitive C datatypes such as

    +
    +
     int *
     double ***
     char **
    -
    -
    -

    are fully supported by SWIG. Rather than trying to convert the data +

    +
    +

    are fully supported by SWIG. Rather than trying to convert the data being pointed to into a scripting representation, SWIG simply encodes the pointer itself into a representation that contains the actual value of the pointer and a type-tag. Thus, the SWIG representation of the - above pointers (in Tcl), might look like this:

    -
    -
    + above pointers (in Tcl), might look like this:

    +
    +
     _10081012_p_int
     _1008e124_ppp_double
     _f8ac_pp_char
    -
    -
    -

    A NULL pointer is represented by the string "NULL" or the value 0 - encoded with type information.

    -

    All pointers are treated as opaque objects by SWIG. Thus, a pointer +

    +
    +

    A NULL pointer is represented by the string "NULL" or the value 0 + encoded with type information.

    +

    All pointers are treated as opaque objects by SWIG. Thus, a pointer may be returned by a function and passed around to other C functions as needed. For all practical purposes, the scripting language interface works in exactly the same way as you would use the pointer in a C program. The only difference is that there is no mechanism for dereferencing the pointer since this would require the target language - to understand the memory layout of the underlying object.

    -

    The scripting language representation of a pointer value should + to understand the memory layout of the underlying object.

    +

    The scripting language representation of a pointer value should never be manipulated directly. Even though the values shown look like hexadecimal addresses, the numbers used may differ from the actual machine address (e.g., on little-endian machines, the digits may appear in reverse order). Furthermore, SWIG does not normally map pointers into high-level objects such as associative arrays or lists (for - example, converting an int * into an list of integers). There - are several reasons why SWIG does not do this:

    -
      -
    • There is not enough information in a C declaration to properly map - pointers into higher level constructs. For example, an int * + example, converting an int * into an list of integers). There + are several reasons why SWIG does not do this:

      +
        +
      • There is not enough information in a C declaration to properly map + pointers into higher level constructs. For example, an int * may indeed be an array of integers, but if it contains ten million - elements, converting it into a list object is probably a bad idea.
      • -
      • The underlying semantics associated with a pointer is not known by - SWIG. For instance, an int * might not be an array at - all--perhaps it is an output value!
      • -
      • By handling all pointers in a consistent manner, the implementation - of SWIG is greatly simplified and less prone to error.
      • -
      -

      5.3.2 Run time pointer type checking

      -

      By allowing pointers to be manipulated from a scripting language, + elements, converting it into a list object is probably a bad idea.

    • +
    • The underlying semantics associated with a pointer is not known by + SWIG. For instance, an int * might not be an array at + all--perhaps it is an output value!
    • +
    • By handling all pointers in a consistent manner, the implementation + of SWIG is greatly simplified and less prone to error.
    • +
    +

    5.3.2 Run time pointer type checking

    +

    By allowing pointers to be manipulated from a scripting language, extension modules effectively bypass compile-time type checking in the C/C++ compiler. To prevent errors, a type signature is encoded into all pointer values and is used to perform run-time type checking. This type-checking process is an integral part of SWIG and can not be disabled or modified without using typemaps (described in later - chapters).

    -

    Like C, void * matches any kind of pointer. Furthermore, -NULL pointers can be passed to any function that expects to receive - a pointer. Although this has the potential to cause a crash, NULL + chapters).

    +

    Like C, void * matches any kind of pointer. Furthermore, +NULL pointers can be passed to any function that expects to receive + a pointer. Although this has the potential to cause a crash, NULL pointers are also sometimes used as sentinel values or to denote a missing/empty value. Therefore, SWIG leaves NULL pointer checking up to - the application.

    -

    5.3.3 Derived types, structs, and classes

    -

    For everything else (structs, classes, arrays, etc...) SWIG applies - a very simple rule :

    -
    Everything else is a pointer
    -

    In other words, SWIG manipulates everything else by reference. This + the application.

    +

    5.3.3 Derived types, structs, and classes

    +

    For everything else (structs, classes, arrays, etc...) SWIG applies + a very simple rule :

    +
    Everything else is a pointer
    +

    In other words, SWIG manipulates everything else by reference. This model makes sense because most C/C++ programs make heavy use of pointers and SWIG can use the type-checked pointer mechanism already - present for handling pointers to basic datatypes.

    -

    Although this probably sounds complicated, it's really quite simple. - Suppose you have an interface file like this :

    -
    -
    + present for handling pointers to basic datatypes.

    +

    Although this probably sounds complicated, it's really quite simple. + Suppose you have an interface file like this :

    +
    +
     %module fileio
     FILE *fopen(char *, char *);
     int fclose(FILE *);
    @@ -4588,239 +4693,239 @@ unsigned fwrite(void *ptr, unsigned size, unsigned nobj, FILE *);
     void *malloc(int nbytes);
     void free(void *);
     
    -
    -
    -

    In this file, SWIG doesn't know what a FILE is, but since +

    +
    +

    In this file, SWIG doesn't know what a FILE is, but since it's used as a pointer, so it doesn't really matter what it is. If you wrapped this module into Python, you can use the functions just like - you expect :

    -
    -
    + you expect :

    +
    +
     # Copy a file 
     def filecopy(source, target):
    -  f1 = fopen(source, "r")
    -  f2 = fopen(target, "w")
    -  buffer = malloc(8192)
    -  nbytes = fread(buffer, 8192, 1, f1)
    -  while (nbytes > 0):
    -    fwrite(buffer, 8192, 1, f2)
    -          nbytes = fread(buffer, 8192, 1, f1)
    -  free(buffer)
    -
    -
    -

    In this case f1, f2, and buffer are all + f1 = fopen(source, "r") + f2 = fopen(target, "w") + buffer = malloc(8192) + nbytes = fread(buffer, 8192, 1, f1) + while (nbytes > 0): + fwrite(buffer, 8192, 1, f2) + nbytes = fread(buffer, 8192, 1, f1) + free(buffer) +

    +
    +

    In this case f1, f2, and buffer are all opaque objects containing C pointers. It doesn't matter what value they - contain--our program works just fine without this knowledge.

    -

    5.3.4 Undefined datatypes

    -

    When SWIG encounters an undeclared datatype, it automatically + contain--our program works just fine without this knowledge.

    +

    5.3.4 Undefined datatypes

    +

    When SWIG encounters an undeclared datatype, it automatically assumes that it is a structure or class. For example, suppose the - following function appeared in a SWIG input file:

    -
    -
    + following function appeared in a SWIG input file:

    +
    +
     void matrix_multiply(Matrix *a, Matrix *b, Matrix *c);
    -
    -
    -

    SWIG has no idea what a "Matrix" is. However, it is +

    +
    +

    SWIG has no idea what a "Matrix" is. However, it is obviously a pointer to something so SWIG generates a wrapper using its - generic pointer handling code.

    -

    Unlike C or C++, SWIG does not actually care whether Matrix + generic pointer handling code.

    +

    Unlike C or C++, SWIG does not actually care whether Matrix has been previously defined in the interface file or not. This allows SWIG to generate interfaces from only partial or limited information. - In some cases, you may not care what a Matrix really is as + In some cases, you may not care what a Matrix really is as long as you can pass an opaque reference to one around in the scripting - language interface.

    -

    An important detail to mention is that SWIG will gladly generate + language interface.

    +

    An important detail to mention is that SWIG will gladly generate wrappers for an interface when there are unspecified type names. - However, all unspecified types are internally handled as pointers to - structures or classes! For example, consider the following - declaration:

    -
    -
    + However, all unspecified types are internally handled as pointers to
    + structures or classes! For example, consider the following
    + declaration:

    +
    +
     void foo(size_t num);
    -
    -
    -

    If size_t is undeclared, SWIG generates wrappers that - expect to receive a type of size_t * (this mapping is +

    +
    +

    If size_t is undeclared, SWIG generates wrappers that + expect to receive a type of size_t * (this mapping is described shortly). As a result, the scripting interface might behave - strangely. For example:

    -
    -
    + strangely. For example:

    +
    +
     foo(40);
     TypeError: expected a _p_size_t.
    -
    -
    -

    The only way to fix this problem is to make sure you properly - declare type names using typedef.

    +
    +
    +

    The only way to fix this problem is to make sure you properly + declare type names using typedef.

    -

    5.3.5 Typedef

    -

    Like C, typedef can be used to define new type names in - SWIG. For example:

    -
    -
    +

    5.3.5 Typedef

    +

    Like C, typedef can be used to define new type names in + SWIG. For example:

    +
    +
     typedef unsigned int size_t;
    -
    -
    -

    typedef definitions appearing in a SWIG interface are not +

    +
    +

    typedef definitions appearing in a SWIG interface are not propagated to the generated wrapper code. Therefore, they either need to be defined in an included header file or placed in the declarations - section like this:

    -
    -
    + section like this:

    +
    +
     %{
     /* Include in the generated wrapper file */
     typedef unsigned int size_t;
     %}
     /* Tell SWIG about it */
     typedef unsigned int size_t;
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %inline %{
     typedef unsigned int size_t;
     %}
    -
    -
    -

    In certain cases, you might be able to include other header files to - collect type information. For example:

    -
    -
    +
    +
    +

    In certain cases, you might be able to include other header files to + collect type information. For example:

    +
    +
     %module example
     %import "sys/types.h"
    -
    -
    -

    In this case, you might run SWIG as follows:

    -
    -
    +
    +
    +

    In this case, you might run SWIG as follows:

    +
    +
     $ swig -I/usr/include -includeall example.i
    -
    -
    -

    It should be noted that your mileage will vary greatly here. System +

    +
    +

    It should be noted that your mileage will vary greatly here. System headers are notoriously complicated and may rely upon a variety of non-standard C coding extensions (e.g., such as special directives to GCC). Unless you exactly specify the right include directories and preprocessor symbols, this may not work correctly (you will have to - experiment).

    -

    SWIG tracks typedef declarations and uses this information - for run-time type checking. For instance, if you use the above -typedef and had the following function declaration:

    -
    -
    + experiment).

    +

    SWIG tracks typedef declarations and uses this information + for run-time type checking. For instance, if you use the above +typedef and had the following function declaration:

    +
    +
     void foo(unsigned int *ptr);
    -
    -
    -

    The corresponding wrapper function will accept arguments of type -unsigned int * or size_t *.

    -

    5.4 Other Practicalities

    -

    So far, this chapter has presented almost everything you need to +

    +
    +

    The corresponding wrapper function will accept arguments of type +unsigned int * or size_t *.

    +

    5.4 Other Practicalities

    +

    So far, this chapter has presented almost everything you need to know to use SWIG for simple interfaces. However, some C programs use idioms that are somewhat more difficult to map to a scripting language - interface. This section describes some of these issues.

    -

    5.4.1 Passing structures by value

    -

    Sometimes a C function takes structure parameters that are passed by - value. For example, consider the following function:

    -
    -
    + interface. This section describes some of these issues.

    +

    5.4.1 Passing structures by value

    +

    Sometimes a C function takes structure parameters that are passed by + value. For example, consider the following function:

    +
    +
     double dot_product(Vector a, Vector b);
    -
    -
    -

    To deal with this, SWIG transforms the function to use pointers by - creating a wrapper equivalent to the following:

    -
    -
    +
    +
    +

    To deal with this, SWIG transforms the function to use pointers by + creating a wrapper equivalent to the following:

    +
    +
     double wrap_dot_product(Vector *a, Vector *b) {
    -    Vector x = *a;
    -    Vector y = *b;
    -    return dot_product(x, y);
    +  Vector x = *a;
    +  Vector y = *b;
    +  return dot_product(x, y);
     }
    -
    -
    -

    In the target language, the dot_product() function now +

    +
    +

    In the target language, the dot_product() function now accepts pointers to Vectors instead of Vectors. For the most part, this - transformation is transparent so you might not notice.

    -

    5.4.2 Return by value

    -

    C functions that return structures or classes datatypes by value are - more difficult to handle. Consider the following function:

    -
    -
    + transformation is transparent so you might not notice.

    +

    5.4.2 Return by value

    +

    C functions that return structures or classes datatypes by value are + more difficult to handle. Consider the following function:

    +
    +
     Vector cross_product(Vector v1, Vector v2);
    -
    -
    -

    This function wants to return Vector, but SWIG only really - supports pointers. As a result, SWIG creates a wrapper like this:

    -
    -
    +
    +
    +

    This function wants to return Vector, but SWIG only really + supports pointers. As a result, SWIG creates a wrapper like this:

    +
    +
     Vector *wrap_cross_product(Vector *v1, Vector *v2) {
    -        Vector x = *v1;
    -        Vector y = *v2;
    -        Vector *result;
    -        result = (Vector *) malloc(sizeof(Vector));
    -        *(result) = cross(x, y);
    -        return result;
    +  Vector x = *v1;
    +  Vector y = *v2;
    +  Vector *result;
    +  result = (Vector *) malloc(sizeof(Vector));
    +  *(result) = cross(x, y);
    +  return result;
     }
    -
    -
    -

    or if SWIG was run with the -c++ option:

    -
    -
    +
    +
    +

    or if SWIG was run with the -c++ option:

    +
    +
     Vector *wrap_cross(Vector *v1, Vector *v2) {
    -        Vector x = *v1;
    -        Vector y = *v2;
    -        Vector *result = new Vector(cross(x, y)); // Uses default copy constructor
    -        return result;
    +  Vector x = *v1;
    +  Vector y = *v2;
    +  Vector *result = new Vector(cross(x, y)); // Uses default copy constructor
    +  return result;
     }
    -
    -
    -

    In both cases, SWIG allocates a new object and returns a reference +

    +
    +

    In both cases, SWIG allocates a new object and returns a reference to it. It is up to the user to delete the returned object when it is no longer in use. Clearly, this will leak memory if you are unaware of the implicit memory allocation and don't take steps to free the result. That said, it should be noted that some language modules can now automatically track newly created objects and reclaim memory for you. - Consult the documentation for each language module for more details.

    -

    It should also be noted that the handling of pass/return by value in + Consult the documentation for each language module for more details.

    +

    It should also be noted that the handling of pass/return by value in C++ has some special cases. For example, the above code fragments don't - work correctly if Vector doesn't define a default constructor. - The section on SWIG and C++ has more information about this case.

    -

    5.4.3 Linking to structure variables

    -

    When global variables or class members involving structures are + work correctly if Vector doesn't define a default constructor. + The section on SWIG and C++ has more information about this case.

    +

    5.4.3 Linking to structure variables

    +

    When global variables or class members involving structures are encountered, SWIG handles them as pointers. For example, a global - variable like this

    -
    -
    + variable like this

    +
    +
     Vector unit_i;
    -
    -
    -

    gets mapped to an underlying pair of set/get functions like this :

    -
    -
    +
    +
    +

    gets mapped to an underlying pair of set/get functions like this :

    +
    +
     Vector *unit_i_get() {
       return &unit_i;
     }
     void unit_i_set(Vector *value) {
       unit_i = *value;
     }
    -
    -
    -

    Again some caution is in order. A global variable created in this +

    +
    +

    Again some caution is in order. A global variable created in this manner will show up as a pointer in the target scripting language. It would be an extremely bad idea to free or destroy such a pointer. Also, C++ classes must supply a properly defined copy constructor in order - for assignment to work correctly.

    -

    5.4.4 Linking to char *

    -

    When a global variable of type char * appears, SWIG uses -malloc() or new to allocate memory for the new value. - Specifically, if you have a variable like this

    -
    -
    + for assignment to work correctly.

    +

    5.4.4 Linking to char *

    +

    When a global variable of type char * appears, SWIG uses +malloc() or new to allocate memory for the new value. + Specifically, if you have a variable like this

    +
    +
     char *foo;
    -
    -
    -

    SWIG generates the following code:

    -
    -
    +
    +
    +

    SWIG generates the following code:

    +
    +
     /* C mode */
     void foo_set(char *value) {
       if (foo) free(foo);
    @@ -4834,127 +4939,127 @@ void foo_set(char *value) {
       foo = new char[strlen(value)+1];
       strcpy(foo, value);
     }
    -
    -
    -

    If this is not the behavior that you want, consider making the - variable read-only using the %immutable directive. +

    +
    +

    If this is not the behavior that you want, consider making the + variable read-only using the %immutable directive. Alternatively, you might write a short assist-function to set the value - exactly like you want. For example:

    -
    -
    + exactly like you want. For example:

    +
    +
     %inline %{
       void set_foo(char *value) {
         strncpy(foo, value, 50);
       }
     %}
    -
    -
    -

    Note: If you write an assist function like this, you will have to +

    +
    +

    Note: If you write an assist function like this, you will have to call it as a function from the target scripting language (it does not - work like a variable). For example, in Python you will have to write:

    -
    -
    + work like a variable). For example, in Python you will have to write:

    +
    +
     >>> set_foo("Hello World")
    -
    -
    -

    A common mistake with char * variables is to link to a - variable declared like this:

    -
    -
    +
    +
    +

    A common mistake with char * variables is to link to a + variable declared like this:

    +
    +
     char *VERSION = "1.0";
    -
    -
    -

    In this case, the variable will be readable, but any attempt to +

    +
    +

    In this case, the variable will be readable, but any attempt to change the value results in a segmentation or general protection fault. This is due to the fact that SWIG is trying to release the old value - using free or delete when the string literal value - currently assigned to the variable wasn't allocated using malloc() - or new. To fix this behavior, you can either mark the variable + using free or delete when the string literal value + currently assigned to the variable wasn't allocated using malloc() + or new. To fix this behavior, you can either mark the variable as read-only, write a typemap (as described in Chapter 6), or write a special set function as shown. Another alternative is to declare the - variable as an array:

    -
    -
    + variable as an array:

    +
    +
     char VERSION[64] = "1.0";
    -
    -
    -

    When variables of type const char * are declared, SWIG +

    +
    +

    When variables of type const char * are declared, SWIG still generates functions for setting and getting the value. However, - the default behavior does not release the previous contents + the default behavior does not release the previous contents (resulting in a possible memory leak). In fact, you may get a warning - message such as this when wrapping such a variable:

    -
    -
    + message such as this when wrapping such a variable:

    +
    +
     example.i:20. Typemap warning. Setting const char * variable may leak memory
    -
    -
    -

    The reason for this behavior is that const char * variables - are often used to point to string literals. For example:

    -
    -
    +
    +
    +

    The reason for this behavior is that const char * variables + are often used to point to string literals. For example:

    +
    +
     const char *foo = "Hello World\n";
    -
    -
    -

    Therefore, it's a really bad idea to call free() on such a - pointer. On the other hand, it is legal to change the pointer +

    +
    +

    Therefore, it's a really bad idea to call free() on such a + pointer. On the other hand, it is legal to change the pointer to point to some other value. When setting a variable of this type, SWIG allocates a new string (using malloc or new) and changes the pointer to point to the new value. However, repeated modifications of the value will result in a memory leak since the old value is not - released.

    -

    5.4.5 Arrays

    -

    Arrays are fully supported by SWIG, but they are always handled as + released.

    +

    5.4.5 Arrays

    +

    Arrays are fully supported by SWIG, but they are always handled as pointers instead of mapping them to a special array object or list in - the target language. Thus, the following declarations :

    -
    -
    + the target language. Thus, the following declarations :

    +
    +
     int foobar(int a[40]);
     void grok(char *argv[]);
     void transpose(double a[20][20]);
    -
    -
    -

    are processed as if they were really declared like this:

    -
    -
    +
    +
    +

    are processed as if they were really declared like this:

    +
    +
     int foobar(int *a);
     void grok(char **argv);
     void transpose(double (*a)[20]);
    -
    -
    -

    Like C, SWIG does not perform array bounds checking. It is up to the +

    +
    +

    Like C, SWIG does not perform array bounds checking. It is up to the user to make sure the pointer points to a suitably allocated region of - memory.

    -

    Multi-dimensional arrays are transformed into a pointer to an array - of one less dimension. For example:

    -
    -
    + memory.

    +

    Multi-dimensional arrays are transformed into a pointer to an array + of one less dimension. For example:

    +
    +
     int [10];         // Maps to int *
     int [10][20];     // Maps to int (*)[20]
     int [10][20][30]; // Maps to int (*)[20][30]
    -
    -
    -

    It is important to note that in the C type system, a - multidimensional array a[][] is NOT equivalent to a - single pointer *a or a double pointer such as **a. +

    +
    +

    It is important to note that in the C type system, a + multidimensional array a[][] is NOT equivalent to a + single pointer *a or a double pointer such as **a. Instead, a pointer to an array is used (as shown above) where the actual value of the pointer is the starting memory location of the array. The reader is strongly advised to dust off their C book and - re-read the section on arrays before using them with SWIG.

    -

    Array variables are supported, but are read-only by default. For - example:

    -
    -
    + re-read the section on arrays before using them with SWIG.

    +

    Array variables are supported, but are read-only by default. For + example:

    +
    +
     int   a[100][200];
    -
    -
    -

    In this case, reading the variable 'a' returns a pointer of type -int (*)[200] that points to the first element of the array -&a[0][0]. Trying to modify 'a' results in an error. This is because +

    +
    +

    In this case, reading the variable 'a' returns a pointer of type +int (*)[200] that points to the first element of the array +&a[0][0]. Trying to modify 'a' results in an error. This is because SWIG does not know how to copy data from the target language into the array. To work around this limitation, you may want to write a few - simple assist functions like this:

    -
    -
    + simple assist functions like this:

    +
    +
     %inline %{
     void a_set(int i, int j, int val) {
       a[i][j] = val;
    @@ -4963,12 +5068,12 @@ int a_get(int i, int j) {
       return a[i][j];
     }
     %}
    -
    -
    -

    To dynamically create arrays of various sizes and shapes, it may be - useful to write some helper functions in your interface. For example:

    -
    -
    +
    +
    +

    To dynamically create arrays of various sizes and shapes, it may be + useful to write some helper functions in your interface. For example:

    +
    +
     // Some array helpers
     %inline %{
       /* Create any sort of [size] array */
    @@ -4980,35 +5085,35 @@ int a_get(int i, int j) {
         return (int (*)[10]) malloc(size*10*sizeof(int));
       }
     %}
    -
    -
    -

    Arrays of char are handled as a special case by SWIG. In +

    +
    +

    Arrays of char are handled as a special case by SWIG. In this case, strings in the target language can be stored in the array. - For example, if you have a declaration like this,

    -
    -
    + For example, if you have a declaration like this,

    +
    +
     char pathname[256];
    -
    -
    -

    SWIG generates functions for both getting and setting the value that - are equivalent to the following code:

    -
    -
    +
    +
    +

    SWIG generates functions for both getting and setting the value that + are equivalent to the following code:

    +
    +
     char *pathname_get() {
       return pathname;
     }
     void pathname_set(char *value) {
       strncpy(pathname, value, 256);
     }
    -
    -
    -

    In the target language, the value can be set like a normal variable.

    -

    5.4.6 Creating read-only variables -

    -

    A read-only variable can be created by using the %immutable - directive as shown :

    -
    -
    +
    +
    +

    In the target language, the value can be set like a normal variable.

    +

    5.4.6 Creating read-only variables +

    +

    A read-only variable can be created by using the %immutable + directive as shown :

    +
    +
     // File : interface.i
     
     int a;       // Can read/write
    @@ -5016,34 +5121,34 @@ int a;       // Can read/write
     int b, c, d;   // Read only variables
     %mutable;
     double x, y;  // read/write
    -
    -
    -

    The %immutable directive enables read-only mode until it is - explicitly disabled using the %mutable directive. As an +

    +
    +

    The %immutable directive enables read-only mode until it is + explicitly disabled using the %mutable directive. As an alternative to turning read-only mode off and on like this, individual - declarations can also be tagged as immutable. For example:

    -
    -
    + declarations can also be tagged as immutable. For example:

    +
    +
     %immutable x;                   // Make x read-only
     ...
     double x;                       // Read-only (from earlier %immutable directive)
     double y;                       // Read-write
     ...
    -
    -
    -

    The %mutable and %immutable directives are - actually %feature directives - defined like this:

    -
    -
    +
    +
    +

    The %mutable and %immutable directives are + actually %feature directives + defined like this:

    +
    +
     #define %immutable   %feature("immutable")
     #define %mutable     %feature("immutable", "")
    -
    -
    -

    If you wanted to make all wrapped variables read-only, barring one - or two, it might be easier to take this approach:

    -
    -
    +
    +
    +

    If you wanted to make all wrapped variables read-only, barring one + or two, it might be easier to take this approach:

    +
    +
     %immutable;                     // Make all variables read-only
     %feature("immutable", "0") x;   // except, make x read/write
     ...
    @@ -5051,32 +5156,32 @@ double x;
     double y;
     double z;
     ...
    -
    -
    -

    Read-only variables are also created when declarations are declared - as const. For example:

    -
    -
    +
    +
    +

    Read-only variables are also created when declarations are declared + as const. For example:

    +
    +
     const int foo;               /* Read only variable */
     char * const version="1.0";  /* Read only variable */
    -
    -
    -

    Compatibility note: Read-only access used to be controlled by - a pair of directives %readonly and %readwrite. +

    +
    +

    Compatibility note: Read-only access used to be controlled by + a pair of directives %readonly and %readwrite. Although these directives still work, they generate a warning message. - Simply change the directives to %immutable; and %mutable; - to silence the warning. Don't forget the extra semicolon!

    -

    5.4.7 Renaming and ignoring - declarations

    -

    5.4.7.1 Simple renaming of specific identifiers -

    -

    Normally, the name of a C declaration is used when that declaration + Simply change the directives to %immutable; and %mutable; + to silence the warning. Don't forget the extra semicolon!

    +

    5.4.7 Renaming and ignoring + declarations

    +

    5.4.7.1 Simple renaming of specific identifiers +

    +

    Normally, the name of a C declaration is used when that declaration is wrapped into the target language. However, this may generate a conflict with a keyword or already existing function in the scripting - language. To resolve a name conflict, you can use the %rename - directive as shown :

    -
    -
    + language. To resolve a name conflict, you can use the %rename
    + directive as shown :

    +
    +
     // interface.i
     
     %rename(my_print) print;
    @@ -5085,73 +5190,82 @@ extern void print(const char *);
     %rename(foo) a_really_long_and_annoying_name;
     extern int a_really_long_and_annoying_name;
     
    -
    -
    -

    SWIG still calls the correct C function, but in this case the - function print() will really be called "my_print()" - in the target language.

    -

    The placement of the %rename directive is arbitrary as long +

    +
    +

    SWIG still calls the correct C function, but in this case the + function print() will really be called "my_print()" + in the target language.

    +

    The placement of the %rename directive is arbitrary as long as it appears before the declarations to be renamed. A common technique - is to write code for wrapping a header file like this:

    -
    -
    + is to write code for wrapping a header file like this:

    +
    +
     // interface.i
     
     %rename(my_print) print;
     %rename(foo) a_really_long_and_annoying_name;
     
     %include "header.h"
    -
    -
    -

    %rename applies a renaming operation to all future +

    +
    +

    %rename applies a renaming operation to all future occurrences of a name. The renaming applies to functions, variables, class and structure names, member functions, and member data. For example, if you had two-dozen C++ classes, all with a member function named `print' (which is a keyword in Python), you could rename them all - to `output' by specifying :

    -
    -
    + to `output' by specifying :

    +
    +
     %rename(output) print; // Rename all `print' functions to `output'
    -
    -
    -

    SWIG does not normally perform any checks to see if the functions it +

    +
    +

    SWIG does not normally perform any checks to see if the functions it wraps are already defined in the target scripting language. However, if you are careful about namespaces and your use of modules, you can - usually avoid these problems.

    -

    Closely related to %rename is the %ignore - directive. %ignore instructs SWIG to ignore declarations that - match a given identifier. For example:

    -
    -
    + usually avoid these problems.

    +

    When wrapping C code, simple use of identifiers/symbols with +%rename usually suffices. When wrapping C++ code, simple use of + simple identifiers/symbols with %rename might be too limiting + when using C++ features such as function overloading, default + arguments, namespaces, template specialization etc. If you are using + the %rename directive and C++, make sure you read the +SWIG and C++ chapter and in particular the section on +Renaming and ambiguity resolution for method overloading and default + arguments.

    +

    Closely related to %rename is the %ignore + directive. %ignore instructs SWIG to ignore declarations that + match a given identifier. For example:

    +
    +
     %ignore print;         // Ignore all declarations named print
     %ignore MYMACRO;       // Ignore a macro
     ...
     #define MYMACRO 123
     void print(const char *);
     ...
    -
    -
    -

    Any function, variable etc which matches %ignore will not +

    +
    +

    Any function, variable etc which matches %ignore will not be wrapped and therefore will not be available from the target - language. A common usage of %ignore is to selectively remove + language. A common usage of %ignore is to selectively remove certain declarations from a header file without having to add conditional compilation to the header. However, it should be stressed that this only works for simple declarations. If you need to remove a whole section of problematic code, the SWIG preprocessor should be used - instead.

    -

    Compatibility note: Older versions of SWIG provided a special - %name directive for renaming declarations. For example:

    -
    -
    + instead.

    +

    Compatibility note: Older versions of SWIG provided a special + %name directive for renaming declarations. For example:

    +
    +
     %name(output) extern void print(const char *);
    -
    -
    -

    This directive is still supported, but it is deprecated and should - probably be avoided. The %rename directive is more powerful - and better supports wrapping of raw header file information.

    -

    5.4.7.2 Advanced renaming support -

    -

    While writing %rename for specific declarations is simple +

    +
    +

    This directive is still supported, but it is deprecated and should + probably be avoided. The %rename directive is more powerful + and better supports wrapping of raw header file information.

    +

    5.4.7.2 Advanced renaming support +

    +

    While writing %rename for specific declarations is simple enough, sometimes the same renaming rule needs to be applied to many, maybe all, identifiers in the SWIG input. For example, it may be necessary to apply some transformation to all the names in the target @@ -5159,119 +5273,118 @@ void print(const char *); specific prefix to all wrapped functions. Doing it individually for each function is impractical so SWIG supports applying a renaming rule to all declarations if the name of the identifier to be renamed is not - specified:

    -
    -
    + specified:

    +
    +
     %rename("myprefix_%s") ""; // print -> myprefix_print
    -
    -
    -

    This also shows that the argument of %rename doesn't have - to be a literal string but can be a printf()-like format - string. In the simplest form, "%s" is replaced with the name +

    +
    +

    This also shows that the argument of %rename doesn't have + to be a literal string but can be a printf()-like format + string. In the simplest form, "%s" is replaced with the name of the original declaration, as shown above. However this is not always enough and SWIG provides extensions to the usual format string syntax to allow applying a (SWIG-defined) function to the argument. For - example, to wrap all C functions do_something_long() as more - Java-like doSomethingLong() you can use the -"lowercamelcase" extended format specifier like this:

    -
    -
    + example, to wrap all C functions do_something_long() as more
    + Java-like doSomethingLong() you can use the 
    +"lowercamelcase" extended format specifier like this:

    +
    +
     %rename("%(lowercamelcase)s") ""; // foo_bar -> fooBar; FooBar -> fooBar
    -
    -
    -

    Some functions can be parametrized, for example the "strip" +

    +
    +

    Some functions can be parametrized, for example the "strip" one strips the provided prefix from its argument. The prefix is specified as part of the format string, following a colon after the - function name:

    -
    -
    + function name:

    +
    +
     %rename("%(strip:[wx])s") ""; // wxHello -> Hello; FooBar -> FooBar
    -
    -
    -

    Below is the table summarizing all currently defined functions with +

    +
    +

    Below is the table summarizing all currently defined functions with an example of applying each one. Note that some of them have two names, a shorter one and a more descriptive one, but the two functions are - otherwise equivalent:

    - - - - - - - - - - +
    FunctionReturnsExample (in/out)
    uppercase or upperUpper case version - of the string.PrintPRINT
    lowercase or lowerLower case version - of the string.Printprint
    titleString with first letter capitalized and - the rest in lower case.printPrint
    firstuppercaseString with the first letter - capitalized and the rest unchanged.printIt -PrintIt
    firstlowercaseString with the first letter in - lower case and the rest unchanged.PrintIt -printIt
    camelcase or ctitleString with + otherwise equivalent:

    + + + + + + + + + + - + - + - - + + - + - + - + -
    FunctionReturnsExample (in/out)
    uppercase or upperUpper case version + of the string.PrintPRINT
    lowercase or lowerLower case version + of the string.Printprint
    titleString with first letter capitalized and + the rest in lower case.printPrint
    firstuppercaseString with the first letter + capitalized and the rest unchanged.printIt +PrintIt
    firstlowercaseString with the first letter in + lower case and the rest unchanged.PrintIt +printIt
    camelcase or ctitleString with capitalized first letter and any letter following an underscore (which - are removed in the process) and rest in lower case. -print_itPrintIt
    lowercamelcase or lctitleString with + are removed in the process) and rest in lower case. +print_itPrintIt
    lowercamelcase or lctitleString with every letter following an underscore (which is removed in the process) - capitalized and rest, including the first letter, in lower case. -print_itprintIt
    undercase or utitleLower case string + capitalized and rest, including the first letter, in lower case. +print_itprintIt
    undercase or utitleLower case string with underscores inserted before every upper case letter in the original string and any number not at the end of string. Logically, - this is the reverse of camelcase.PrintIt -print_it
    schemifyString with all underscores replaced - with dashes, resulting in more Lispers/Schemers-pleasing name. -print_itprint-it
    strip:[prefix]String without the given prefix + this is the reverse of camelcase.PrintIt +print_it
    schemifyString with all underscores replaced + with dashes, resulting in more Lispers/Schemers-pleasing name. +print_itprint-it
    strip:[prefix]String without the given prefix or the original string if it doesn't start with this prefix. Note that - square brackets should be used literally, e.g. -%rename("strip:[wx]")wxPrintPrint -
    rstrip:[suffix]String without the given suffix + square brackets should be used literally, e.g. +%rename("strip:[wx]")wxPrintPrint +
    rstrip:[suffix]String without the given suffix or the original string if it doesn't end with this suffix. Note that - square brackets should be used literally, e.g. -%rename("rstrip:[Cls]")PrintClsPrint -
    - -regex:/pattern/subst/String after (Perl-like) regex - substitution operation. This function allows to apply arbitrary regular - expressions to the identifier names. The pattern part is a - regular expression in Perl syntax (as supported by the -Perl Compatible Regular Expressions (PCRE)) library and the subst - string can contain back-references of the form \N where N - is a digit from 0 to 9, or one of the following escape sequences: -\l, \L, \u, \U or \E. The + square brackets should be used literally, e.g. +%rename("rstrip:[Cls]")PrintClsPrint +
    regex:/pattern/subst/ +String after (Perl-like) regex substitution operation. + This function allows to apply arbitrary regular expressions to the + identifier names. The pattern part is a regular expression in + Perl syntax (as supported by the Perl + Compatible Regular Expressions (PCRE)) library and the subst + string can contain back-references of the form \N where N + is a digit from 0 to 9, or one of the following escape sequences: +\l, \L, \u, \U or \E. The back-references are replaced with the contents of the corresponding capture group while the escape sequences perform the case conversion in - the substitution string: \l and \L convert to the - lower case, while \u and \U convert to the upper - case. The difference between the elements of each pair is that \l - and \u change the case of the next character only, while -\L and \U do it for all the remaining characters or until -\E is encountered. Finally please notice that backslashes need to - be escaped in C strings, so in practice "\\" must be used in + the substitution string: \l and \L convert to the + lower case, while \u and \U convert to the upper + case. The difference between the elements of each pair is that \l + and \u change the case of the next character only, while +\L and \U do it for all the remaining characters or until +\E is encountered. Finally please notice that backslashes need to + be escaped in C strings, so in practice "\\" must be used in all these escape sequences. For example, to remove any alphabetic prefix before an underscore and capitalize the remaining part you could - use the following directive: %rename("regex:/(\\w+)_(.*)/\\u\\2/") -prefix_printPrint
    command:cmdOutput of an external command -cmd with the string passed to it as input. Notice that this + use the following directive: %rename("regex:/(\\w+)_(.*)/\\u\\2/") +prefix_printPrint
    command:cmdOutput of an external command +cmd with the string passed to it as input. Notice that this function is extremely slow compared to all the other ones as it involves spawning a separate process and using it for many declarations - is not recommended. The cmd is not enclosed in square brackets - but must be terminated with a triple '<' sign, e.g. -%rename("command:tr -d aeiou <<<") (nonsensical example removing - all vowels)PrintPrnt
    -

    The most general function of all of the above ones (not counting -command which is even more powerful in principle but which should - generally be avoided because of performance considerations) is the -regex one. Here are some more examples of its use:

    -
    -
    + is not recommended. The cmd is not enclosed in square brackets
    + but must be terminated with a triple '<' sign, e.g. 
    +%rename("command:tr -d aeiou <<<") (nonsensical example removing
    + all vowels)
    PrintPrnt
    +

    The most general function of all of the above ones (not counting +command which is even more powerful in principle but which should + generally be avoided because of performance considerations) is the +regex one. Here are some more examples of its use:

    +
    +
     // Strip the wx prefix from all identifiers except those starting with wxEVT
     %rename("%(regex:/wx(?!EVT)(.*)/\\1/)s") ""; // wxSomeWidget -> SomeWidget
                                                  // wxEVT_PAINT -> wxEVT_PAINT
    @@ -5283,113 +5396,113 @@ regex one. Here are some more examples of its use:

    // Remove all "Set/Get" prefixes. %rename("%(regex:/^(Set|Get)(.*)/\\2/)s") ""; // SetValue -> Value // GetValue -> Value -
    -
    -

    As before, everything that was said above about %rename - also applies to %ignore. In fact, the latter is just a special + + +

    As before, everything that was said above about %rename + also applies to %ignore. In fact, the latter is just a special case of the former and ignoring an identifier is the same as renaming - it to the special "$ignore" value. So the following snippets

    -
    -
    + it to the special "$ignore" value. So the following snippets

    +
    +
     %ignore print;
    -
    -
    -

    and

    -
    -
    +
    +
    +

    and

    +
    +
     %rename("$ignore") print;
    -
    -
    -

    are exactly equivalent and %rename can be used to +

    +
    +

    are exactly equivalent and %rename can be used to selectively ignore multiple declarations using the previously described - matching possibilities.

    -

    5.4.7.3 Limiting global renaming - rules

    -

    As explained in the previous sections, it is possible to either + matching possibilities.

    +

    5.4.7.3 Limiting global renaming + rules

    +

    As explained in the previous sections, it is possible to either rename individual declarations or apply a rename rule to all of them at once. In practice, the latter is however rarely appropriate as there are always some exceptions to the general rules. To deal with them, the - scope of an unnamed %rename can be limited using subsequent -match parameters. They can be applied to any of the attributes + scope of an unnamed %rename can be limited using subsequent +match parameters. They can be applied to any of the attributes associated by SWIG with the declarations appearing in its input. For - example:

    -
    -
    + example:

    +
    +
     %rename("foo", match$name="bar") "";
    -
    -
    -

    can be used to achieve the same effect as the simpler

    -
    -
    +
    +
    +

    can be used to achieve the same effect as the simpler

    +
    +
     %rename("foo") bar;
    -
    -
    -

    and so is not very interesting on its own. However match - can also be applied to the declaration type, for example -match="class" restricts the match to class declarations only (in - C++) and match="enumitem" restricts it to the enum elements. +

    +
    +

    and so is not very interesting on its own. However match + can also be applied to the declaration type, for example +match="class" restricts the match to class declarations only (in + C++) and match="enumitem" restricts it to the enum elements. SWIG also provides convenience macros for such match expressions, for - example

    -
    -
    + example

    +
    +
     %rename("%(title)s", %$isenumitem) "";
    -
    -
    -

    will capitalize the names of all the enum elements but not change - the case of the other declarations. Similarly, %$isclass, -%$isfunction, %$isconstructor, %$isunion, -%$istemplate, and %$isvariable can be used. Many other +

    +
    +

    will capitalize the names of all the enum elements but not change + the case of the other declarations. Similarly, %$isclass, +%$isfunction, %$isconstructor, %$isunion, +%$istemplate, and %$isvariable can be used. Many other checks are possible and this documentation is not exhaustive, see the - "%rename predicates" section in swig.swg for the full list of - supported match expressions.

    -

    In addition to literally matching some string with match - you can also use regexmatch or notregexmatch to match + "%rename predicates" section in swig.swg for the full list of + supported match expressions.

    +

    In addition to literally matching some string with match + you can also use regexmatch or notregexmatch to match a string against a regular expression. For example, to ignore all - functions having "Old" as a suffix you could use

    -
    -
    + functions having "Old" as a suffix you could use

    +
    +
     %rename("$ignore", regexmatch$name="Old$") "";
    -
    -
    -

    For simple cases like this, specifying the regular expression for +

    +
    +

    For simple cases like this, specifying the regular expression for the declaration name directly can be preferable and can also be done - using regextarget:

    -
    -
    + using regextarget:

    +
    +
     %rename("$ignore", regextarget=1) "Old$";
    -
    -
    -

    Notice that the check is done only against the name of the +

    +
    +

    Notice that the check is done only against the name of the declaration itself, if you need to match the full name of a C++ - declaration you must use fullname attribute:

    -
    -
    + declaration you must use fullname attribute:

    +
    +
     %rename("$ignore", regextarget=1, fullname=1) "NameSpace::ClassName::.*Old$";
    -
    -
    -

    As for notregexmatch, it restricts the match only to the +

    +
    +

    As for notregexmatch, it restricts the match only to the strings not matching the specified regular expression. So to rename all declarations to lower case except those consisting of capital letters - only:

    -
    -
    + only:

    +
    +
     %rename("$(lower)s", notregexmatch$name="^[A-Z]+$") "";
    -
    -
    -

    Finally, variants of %rename and %ignore +

    +
    +

    Finally, variants of %rename and %ignore directives can be used to help wrap C++ overloaded functions and methods or C++ methods which use default arguments. This is described - in the Ambiguity - resolution and renaming section in the C++ chapter.

    -

    5.4.7.4 Ignoring everything then - wrapping a few selected symbols

    -

    Using the techniques described above it is possible to ignore + in the Renaming and + ambiguity resolution section in the C++ chapter.

    +

    5.4.7.4 Ignoring everything then + wrapping a few selected symbols

    +

    Using the techniques described above it is possible to ignore everything in a header and then selectively wrap a few chosen methods - or classes. For example, consider a header, myheader.h which - has many classes in it and just the one class called Star is - wanted within this header, the following approach could be taken:

    -
    -
    + or classes. For example, consider a header, myheader.h which
    + has many classes in it and just the one class called Star is
    + wanted within this header, the following approach could be taken:

    +
    +
     %ignore ""; // Ignore everything
     
     // Unignore chosen class 'Star'
    @@ -5402,64 +5515,64 @@ match="class" restricts the match to class declarations only (in
     %rename("%s") Star::shine; // named method
     
     %include "myheader.h"
    -
    -
    -

    Another approach which might be more suitable as it does not require +

    +
    +

    Another approach which might be more suitable as it does not require naming all the methods in the chosen class is to begin by ignoring just the classes. This does not add an explicit ignore to any members of the class, so when the chosen class is unignored, all of its methods will - be wrapped.

    -
    -
    + be wrapped.

    +
    +
     %rename($ignore, %$isclass) ""; // Only ignore all classes
     %rename("%s") Star; // Unignore 'Star'
     %include "myheader.h"
    -
    -
    -

    5.4.8 Default/optional arguments

    -

    SWIG supports default arguments in both C and C++ code. For example:

    -
    -
    +
    +
    +

    5.4.8 Default/optional arguments

    +

    SWIG supports default arguments in both C and C++ code. For example:

    +
    +
     int plot(double x, double y, int color=WHITE);
    -
    -
    -

    In this case, SWIG generates wrapper code where the default +

    +
    +

    In this case, SWIG generates wrapper code where the default arguments are optional in the target language. For example, this - function could be used in Tcl as follows :

    -
    -
    + function could be used in Tcl as follows :

    +
    +
     % plot -3.4 7.5    # Use default value
     % plot -3.4 7.5 10 # set color to 10 instead
     
    -
    -
    -

    Although the ANSI C standard does not allow default arguments, +

    +
    +

    Although the ISO C standard does not allow default arguments, default arguments specified in a SWIG interface work with both C and - C++.

    -

    Note: There is a subtle semantic issue concerning the use of + C++.

    +

    Note: There is a subtle semantic issue concerning the use of default arguments and the SWIG generated wrapper code. When default arguments are used in C code, the default values are emitted into the wrappers and the function is invoked with a full set of arguments. This is different to when wrapping C++ where an overloaded wrapper method is - generated for each defaulted argument. Please refer to the section on default arguments in the C++ chapter - for further details.

    -

    5.4.9 Pointers to functions and callbacks

    -

    Occasionally, a C library may include functions that expect to + generated for each defaulted argument. Please refer to the section on default arguments in the C++ chapter + for further details.

    +

    5.4.9 Pointers to functions and callbacks

    +

    Occasionally, a C library may include functions that expect to receive pointers to functions--possibly to serve as callbacks. SWIG - provides full support for function pointers provided that the callback - functions are defined in C and not in the target language. For example, - consider a function like this:

    -
    -
    + provides full support for function pointers when the callback functions
    + are defined in C and not in the target language. For example, consider
    + a function like this:

    +
    +
     int binary_op(int a, int b, int (*op)(int, int));
    -
    -
    -

    When you first wrap something like this into an extension module, +

    +
    +

    When you first wrap something like this into an extension module, you may find the function to be impossible to use. For instance, in - Python:

    -
    -
    + Python:

    +
    +
     >>> def add(x, y):
     ...     return x+y
     ...
    @@ -5468,15 +5581,15 @@ Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: Type error. Expected _p_f_int_int__int
     >>>
    -
    -
    -

    The reason for this error is that SWIG doesn't know how to map a +

    +
    +

    The reason for this error is that SWIG doesn't know how to map a scripting language function into a C callback. However, existing C functions can be used as arguments provided you install them as - constants. One way to do this is to use the %constant - directive like this:

    -
    -
    + constants. One way to do this is to use the %constant
    + directive like this:

    +
    +
     /* Function with a callback */
     int binary_op(int a, int b, int (*op)(int, int));
     
    @@ -5484,36 +5597,36 @@ int binary_op(int a, int b, int (*op)(int, int));
     %constant int add(int, int);
     %constant int sub(int, int);
     %constant int mul(int, int);
    -
    -
    -

    In this case, add, sub, and mul become +

    +
    +

    In this case, add, sub, and mul become function pointer constants in the target scripting language. This - allows you to use them as follows:

    -
    -
    + allows you to use them as follows:

    +
    +
     >>> binary_op(3, 4, add)
     7
     >>> binary_op(3, 4, mul)
     12
     >>>
    -
    -
    -

    Unfortunately, by declaring the callback functions as constants, - they are no longer accessible as functions. For example:

    -
    -
    +
    +
    +

    Unfortunately, by declaring the callback functions as constants, + they are no longer accessible as functions. For example:

    +
    +
     >>> add(3, 4)
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: object is not callable: '_ff020efc_p_f_int_int__int'
     >>>
    -
    -
    -

    If you want to make a function available as both a callback function - and a function, you can use the %callback and %nocallback - directives like this:

    -
    -
    +
    +
    +

    If you want to make a function available as both a callback function + and a function, you can use the %callback and %nocallback + directives like this:

    +
    +
     /* Function with a callback */
     int binary_op(int a, int b, int (*op)(int, int));
     
    @@ -5523,15 +5636,15 @@ int add(int, int);
     int sub(int, int);
     int mul(int, int);
     %nocallback;
    -
    -
    -

    The argument to %callback is a printf-style format string - that specifies the naming convention for the callback constants (%s +

    +
    +

    The argument to %callback is a printf-style format string + that specifies the naming convention for the callback constants (%s gets replaced by the function name). The callback mode remains in - effect until it is explicitly disabled using %nocallback. When - you do this, the interface now works as follows:

    -
    -
    + effect until it is explicitly disabled using %nocallback. When
    + you do this, the interface now works as follows:

    +
    +
     >>> binary_op(3, 4, add_cb)
     7
     >>> binary_op(3, 4, mul_cb)
    @@ -5540,55 +5653,57 @@ int mul(int, int);
     7
     >>> mul(3, 4)
     12
    -
    -
    -

    Notice that when the function is used as a callback, special names - such as add_cb are used instead. To call the function - normally, just use the original function name such as add().

    -

    SWIG provides a number of extensions to standard C printf formatting +

    +
    +

    Notice that when the function is used as a callback, special names + such as add_cb are used instead. To call the function + normally, just use the original function name such as add().

    +

    SWIG provides a number of extensions to standard C printf formatting that may be useful in this context. For instance, the following - variation installs the callbacks as all upper case constants such as -ADD, SUB, and MUL:

    -
    -
    + variation installs the callbacks as all upper case constants such as 
    +ADD, SUB, and MUL:

    +
    +
     /* Some callback functions */
     %callback("%(uppercase)s");
     int add(int, int);
     int sub(int, int);
     int mul(int, int);
     %nocallback;
    -
    -
    -

    A format string of "%(lowercase)s" converts all characters - to lower case. A string of "%(title)s" capitalizes the first - character and converts the rest to lower case.

    -

    And now, a final note about function pointer support. Although SWIG +

    +
    +

    A format string of "%(lowercase)s" converts all characters + to lower case. A string of "%(title)s" capitalizes the first + character and converts the rest to lower case.

    +

    And now, a final note about function pointer support. Although SWIG does not normally allow callback functions to be written in the target language, this can be accomplished with the use of typemaps and other - advanced SWIG features. See the Typemaps chapter + advanced SWIG features. See the Typemaps chapter for more about typemaps and individual target language chapters for - more on callbacks and the 'director' feature.

    -

    5.5 Structures and unions

    -

    This section describes the behavior of SWIG when processing ANSI C + more on callbacks. The 'director' feature can be used to make callbacks + from C/C++ into the target language, see +Callbacks to the target language.

    +

    5.5 Structures and unions

    +

    This section describes the behavior of SWIG when processing ISO C structures and union declarations. Extensions to handle C++ are - described in the next section.

    -

    If SWIG encounters the definition of a structure or union, it + described in the next section.

    +

    If SWIG encounters the definition of a structure or union, it creates a set of accessor functions. Although SWIG does not need structure definitions to build an interface, providing definitions makes it possible to access structure members. The accessor functions generated by SWIG simply take a pointer to an object and allow access - to an individual member. For example, the declaration :

    -
    -
    + to an individual member. For example, the declaration :

    +
    +
     struct Vector {
       double x, y, z;
     }
     
    -
    -
    -

    gets transformed into the following set of accessor functions :

    -
    -
    +
    +
    +

    gets transformed into the following set of accessor functions :

    +
    +
     double Vector_x_get(struct Vector *obj) {
       return obj->x;
     }
    @@ -5607,78 +5722,78 @@ void Vector_y_set(struct Vector *obj, double value) {
     void Vector_z_set(struct Vector *obj, double value) {
       obj->z = value;
     }
    -
    -
    -

    In addition, SWIG creates default constructor and destructor - functions if none are defined in the interface. For example:

    -
    -
    +
    +
    +

    In addition, SWIG creates default constructor and destructor + functions if none are defined in the interface. For example:

    +
    +
     struct Vector *new_Vector() {
    -    return (Vector *) calloc(1, sizeof(struct Vector));
    +  return (Vector *) calloc(1, sizeof(struct Vector));
     }
     void delete_Vector(struct Vector *obj) {
    -    free(obj);
    +  free(obj);
     }
    -
    -
    -

    Using these low-level accessor functions, an object can be minimally - manipulated from the target language using code like this:

    -
    -
    +
    +
    +

    Using these low-level accessor functions, an object can be minimally + manipulated from the target language using code like this:

    +
    +
     v = new_Vector()
     Vector_x_set(v, 2)
     Vector_y_set(v, 10)
     Vector_z_set(v, -5)
     ...
     delete_Vector(v)
    -
    -
    -

    However, most of SWIG's language modules also provide a high-level - interface that is more convenient. Keep reading.

    -

    5.5.1 Typedef and structures

    -

    SWIG supports the following construct which is quite common in C - programs :

    -
    -
    +
    +
    +

    However, most of SWIG's language modules also provide a high-level + interface that is more convenient. Keep reading.

    +

    5.5.1 Typedef and structures

    +

    SWIG supports the following construct which is quite common in C + programs :

    +
    +
     typedef struct {
       double x, y, z;
     } Vector;
     
    -
    -
    -

    When encountered, SWIG assumes that the name of the object is +

    +
    +

    When encountered, SWIG assumes that the name of the object is `Vector' and creates accessor functions like before. The only - difference is that the use of typedef allows SWIG to drop the -struct keyword on its generated code. For example:

    -
    -
    + difference is that the use of typedef allows SWIG to drop the 
    +struct keyword on its generated code. For example:

    +
    +
     double Vector_x_get(Vector *obj) {
       return obj->x;
     }
    -
    -
    -

    If two different names are used like this :

    -
    -
    +
    +
    +

    If two different names are used like this :

    +
    +
     typedef struct vector_struct {
       double x, y, z;
     } Vector;
     
    -
    -
    -

    the name Vector is used instead of vector_struct +

    +
    +

    the name Vector is used instead of vector_struct since this is more typical C programming style. If declarations defined - later in the interface use the type struct vector_struct, SWIG - knows that this is the same as Vector and it generates the - appropriate type-checking code.

    -

    5.5.2 Character strings and structures

    -

    Structures involving character strings require some care. SWIG - assumes that all members of type char * have been dynamically - allocated using malloc() and that they are NULL-terminated + later in the interface use the type struct vector_struct, SWIG + knows that this is the same as Vector and it generates the + appropriate type-checking code.

    +

    5.5.2 Character strings and structures

    +

    Structures involving character strings require some care. SWIG + assumes that all members of type char * have been dynamically + allocated using malloc() and that they are NULL-terminated ASCII strings. When such a member is modified, the previous contents - will be released, and the new contents allocated. For example :

    -
    -
    + will be released, and the new contents allocated. For example :

    +
    +
     %module mymodule
     ...
     struct Foo {
    @@ -5686,11 +5801,11 @@ struct Foo {
       ...
     }
     
    -
    -
    -

    This results in the following accessor functions :

    -
    -
    +
    +
    +

    This results in the following accessor functions :

    +
    +
     char *Foo_name_get(Foo *obj) {
       return Foo->name;
     }
    @@ -5702,34 +5817,34 @@ char *Foo_name_set(Foo *obj, char *c) {
       strcpy(obj->name, c);
       return obj->name;
     }
    -
    -
    -

    If this behavior differs from what you need in your applications, +

    +
    +

    If this behavior differs from what you need in your applications, the SWIG "memberin" typemap can be used to change it. See the typemaps - chapter for further details.

    -

    Note: If the -c++ option is used, new and -delete are used to perform memory allocation.

    -

    5.5.3 Array members

    -

    Arrays may appear as the members of structures, but they will be + chapter for further details.

    +

    Note: If the -c++ option is used, new and +delete are used to perform memory allocation.

    +

    5.5.3 Array members

    +

    Arrays may appear as the members of structures, but they will be read-only. SWIG will write an accessor function that returns the pointer to the first element of the array, but will not write a function to change the contents of the array itself. When this situation is detected, SWIG may generate a warning message such as the - following :

    -
    -
    + following :

    +
    +
     interface.i:116. Warning. Array member will be read-only
    -
    -
    -

    To eliminate the warning message, typemaps can be used, but this is +

    +
    +

    To eliminate the warning message, typemaps can be used, but this is discussed in a later chapter. In many cases, the warning message is - harmless.

    -

    5.5.4 Structure data members -

    -

    Occasionally, a structure will contain data members that are - themselves structures. For example:

    -
    -
    + harmless.

    +

    5.5.4 Structure data members +

    +

    Occasionally, a structure will contain data members that are + themselves structures. For example:

    +
    +
     typedef struct Foo {
       int x;
     } Foo;
    @@ -5738,104 +5853,104 @@ typedef struct Bar {
       int y;
       Foo f;           /* struct member */
     } Bar;
    -
    -
    -

    When a structure member is wrapped, it is handled as a pointer, - unless the %naturalvar directive is used where it is handled - more like a C++ reference (see C++ - Member data). The accessors to the member variable as a pointer are - effectively wrapped as follows:

    -
    -
    +
    +
    +

    When a structure member is wrapped, it is handled as a pointer, + unless the %naturalvar directive is used where it is handled + more like a C++ reference (see C++ + Member data). The accessors to the member variable as a pointer are + effectively wrapped as follows:

    +
    +
     Foo *Bar_f_get(Bar *b) {
       return &b->f;
     }
     void Bar_f_set(Bar *b, Foo *value) {
       b->f = *value;
     }
    -
    -
    -

    The reasons for this are somewhat subtle but have to do with the +

    +
    +

    The reasons for this are somewhat subtle but have to do with the problem of modifying and accessing data inside the data member. For - example, suppose you wanted to modify the value of f.x of a -Bar object like this:

    -
    -
    + example, suppose you wanted to modify the value of f.x of a 
    +Bar object like this:

    +
    +
     Bar *b;
     b->f.x = 37;
    -
    -
    -

    Translating this assignment to function calls (as would be used - inside the scripting language interface) results in the following code:

    -
    -
    +
    +
    +

    Translating this assignment to function calls (as would be used + inside the scripting language interface) results in the following code:

    +
    +
     Bar *b;
     Foo_x_set(Bar_f_get(b), 37);
    -
    -
    -

    In this code, if the Bar_f_get() function were to return a -Foo instead of a Foo *, then the resulting modification - would be applied to a copy of f and not the data - member f itself. Clearly that's not what you want!

    -

    It should be noted that this transformation to pointers only occurs +

    +
    +

    In this code, if the Bar_f_get() function were to return a +Foo instead of a Foo *, then the resulting modification + would be applied to a copy of f and not the data + member f itself. Clearly that's not what you want!

    +

    It should be noted that this transformation to pointers only occurs if SWIG knows that a data member is a structure or class. For instance, - if you had a structure like this,

    -
    -
    + if you had a structure like this,

    +
    +
     struct Foo {
       WORD   w;
     };
    -
    -
    -

    and nothing was known about WORD, then SWIG will generate - more normal accessor functions like this:

    -
    -
    +
    +
    +

    and nothing was known about WORD, then SWIG will generate + more normal accessor functions like this:

    +
    +
     WORD Foo_w_get(Foo *f) {
    -    return f->w;
    +  return f->w;
     }
     void Foo_w_set(FOO *f, WORD value) {
    -    f->w = value;
    +  f->w = value;
     }
    -
    -
    -

    Compatibility Note: SWIG-1.3.11 and earlier releases +

    +
    +

    Compatibility Note: SWIG-1.3.11 and earlier releases transformed all non-primitive member datatypes to pointers. Starting in - SWIG-1.3.12, this transformation only occurs if a datatype is + SWIG-1.3.12, this transformation only occurs if a datatype is known to be a structure, class, or union. This is unlikely to break existing code. However, if you need to tell SWIG that an undeclared datatype is really a struct, simply use a forward struct declaration - such as "struct Foo;".

    -

    5.5.5 C constructors and destructors

    -

    When wrapping structures, it is generally useful to have a mechanism + such as "struct Foo;".

    +

    5.5.5 C constructors and destructors

    +

    When wrapping structures, it is generally useful to have a mechanism for creating and destroying objects. If you don't do anything, SWIG will automatically generate functions for creating and destroying - objects using malloc() and free(). Note: the use of -malloc() only applies when SWIG is used on C code (i.e., when the --c++ option is not supplied on the command line). C++ is - handled differently.

    -

    If you don't want SWIG to generate default constructors for your - interfaces, you can use the %nodefaultctor directive or the --nodefaultctor command line option. For example:

    -
    -
    + objects using malloc() and free(). Note: the use of 
    +malloc() only applies when SWIG is used on C code (i.e., when the 
    +-c++ option is not supplied on the command line). C++ is
    + handled differently.

    +

    If you don't want SWIG to generate default constructors for your + interfaces, you can use the %nodefaultctor directive or the +-nodefaultctor command line option. For example:

    +
    +
     swig -nodefaultctor example.i 
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %module foo
     ...
     %nodefaultctor;        // Don't create default constructors
     ... declarations ...
     %clearnodefaultctor;   // Re-enable default constructors
    -
    -
    -

    If you need more precise control, %nodefaultctor can - selectively target individual structure definitions. For example:

    -
    -
    +
    +
    +

    If you need more precise control, %nodefaultctor can + selectively target individual structure definitions. For example:

    +
    +
     %nodefaultctor Foo;      // No default constructor for Foo
     ...
     struct Foo {             // No default constructor generated.
    @@ -5843,14 +5958,14 @@ struct Foo {             // No default constructor generated.
     
     struct Bar {             // Default constructor generated.
     };
    -
    -
    -

    Since ignoring the implicit or default destructors most of the time +

    +
    +

    Since ignoring the implicit or default destructors most of the time produces memory leaks, SWIG will always try to generate them. If needed, however, you can selectively disable the generation of the - default/implicit destructor by using %nodefaultdtor

    -
    -
    + default/implicit destructor by using %nodefaultdtor

    +
    +
     %nodefaultdtor Foo; // No default/implicit destructor for Foo
     ...
     struct Foo {              // No default destructor is generated.
    @@ -5858,43 +5973,43 @@ struct Foo {              // No default destructor is generated.
     
     struct Bar {              // Default destructor generated.
     };
    -
    -
    -

    Compatibility note: Prior to SWIG-1.3.7, SWIG did not +

    +
    +

    Compatibility note: Prior to SWIG-1.3.7, SWIG did not generate default constructors or destructors unless you explicitly - turned them on using -make_default. However, it appears that + turned them on using -make_default. However, it appears that most users want to have constructor and destructor functions so it has - now been enabled as the default behavior.

    -

    Note: There are also the -nodefault option and -%nodefault directive, which disable both the default or implicit + now been enabled as the default behavior.

    +

    Note: There are also the -nodefault option and +%nodefault directive, which disable both the default or implicit destructor generation. This could lead to memory leaks across the - target languages, and it is highly recommended you don't use them.

    -

    5.5.6 Adding member functions - to C structures

    -

    Most languages provide a mechanism for creating classes and + target languages, and it is highly recommended you don't use them.

    +

    5.5.6 Adding member functions + to C structures

    +

    Most languages provide a mechanism for creating classes and supporting object oriented programming. From a C standpoint, object oriented programming really just boils down to the process of attaching functions to structures. These functions normally operate on an instance of the structure (or object). Although there is a natural mapping of C++ to such a scheme, there is no direct mechanism for - utilizing it with C code. However, SWIG provides a special %extend + utilizing it with C code. However, SWIG provides a special %extend directive that makes it possible to attach methods to C structures for purposes of building an object oriented interface. Suppose you have a C - header file with the following declaration :

    -
    -
    + header file with the following declaration :

    +
    +
     /* file : vector.h */
     ...
     typedef struct Vector {
       double x, y, z;
     } Vector;
     
    -
    -
    -

    You can make a Vector look a lot like a class by writing a - SWIG interface like this:

    -
    -
    +
    +
    +

    You can make a Vector look a lot like a class by writing a + SWIG interface like this:

    +
    +
     // file : vector.i
     %module mymodule
     %{
    @@ -5922,33 +6037,33 @@ typedef struct Vector {
       }
     };
     
    -
    -
    -

    Note the usage of the $self special variable. Its usage is +

    +
    +

    Note the usage of the $self special variable. Its usage is identical to a C++ 'this' pointer and should be used whenever access to the struct instance is required. Also note that C++ constructor and destructor syntax has been used to simulate a constructor and destructor, even for C code. There is one subtle difference to a normal C++ constructor implementation though and that is although the constructor declaration is as per a normal C++ constructor, the newly - constructed object must be returned as if the constructor - declaration had a return value, a Vector * in this case.

    -

    Now, when used with proxy classes in Python, you can do things like - this :

    -
    -
    + constructed object must be returned as if the constructor
    + declaration had a return value, a Vector * in this case.

    +

    Now, when used with proxy classes in Python, you can do things like + this :

    +
    +
     >>> v = Vector(3, 4, 0)                 # Create a new vector
     >>> print v.magnitude()                # Print magnitude
     5.0
     >>> v.print()                  # Print it out
     [ 3, 4, 0 ]
     >>> del v                      # Destroy it
    -
    -
    -

    The %extend directive can also be used inside the - definition of the Vector structure. For example:

    -
    -
    +
    +
    +

    The %extend directive can also be used inside the + definition of the Vector structure. For example:

    +
    +
     // file : vector.i
     %module mymodule
     %{
    @@ -5963,13 +6078,13 @@ typedef struct Vector {
         ...
       }
     } Vector;
    -
    -
    -

    Note that %extend can be used to access externally written +

    +
    +

    Note that %extend can be used to access externally written functions provided they follow the naming convention used in this - example :

    -
    -
    + example :

    +
    +
     /* File : vector.c */
     /* Vector methods */
     #include "vector.h"
    @@ -6005,12 +6120,12 @@ typedef struct Vector {
         ...
       }
     } Vector;
    -
    -
    -

    The name used for %extend should be the name of the struct and not - the name of any typedef to the struct. For example:

    -
    -
    +
    +
    +

    The name used for %extend should be the name of the struct and not + the name of any typedef to the struct. For example:

    +
    +
     typedef struct Integer {
       int value;
     } Int;
    @@ -6023,28 +6138,28 @@ struct Float {
     typedef struct Float FloatValue;
     %extend Float { ...  } /* Correct name */
     %extend FloatValue { ...  } /* Incorrect name */
    -
    -
    -

    There is one exception to this rule and that is when the struct is - anonymously named such as:

    -
    -
    +
    +
    +

    There is one exception to this rule and that is when the struct is + anonymously named such as:

    +
    +
     typedef struct {
       double value;
     } Double;
     %extend Double { ...  } /* Okay */
    -
    -
    -

    A little known feature of the %extend directive is that it +

    +
    +

    A little known feature of the %extend directive is that it can also be used to add synthesized attributes or to modify the behavior of existing data attributes. For example, suppose you wanted - to make magnitude a read-only attribute of Vector - instead of a method. To do this, you might write some code like this:

    -
    -
    + to make magnitude a read-only attribute of Vector
    + instead of a method. To do this, you might write some code like this:

    +
    +
     // Add a new attribute to Vector
     %extend Vector {
    -    const double magnitude;
    +  const double magnitude;
     }
     // Now supply the implementation of the Vector_magnitude_get function
     %{
    @@ -6053,25 +6168,25 @@ const double Vector_magnitude_get(Vector *v) {
     }
     %}
     
    -
    -
    -

    Now, for all practical purposes, magnitude will appear like - an attribute of the object.

    -

    A similar technique can also be used to work with data members that - you want to process. For example, consider this interface:

    -
    -
    +
    +
    +

    Now, for all practical purposes, magnitude will appear like + an attribute of the object.

    +

    A similar technique can also be used to work with data members that + you want to process. For example, consider this interface:

    +
    +
     typedef struct Person {
       char name[50];
       ...
     } Person;
    -
    -
    -

    Say you wanted to ensure name was always upper case, you +

    +
    +

    Say you wanted to ensure name was always upper case, you can rewrite the interface as follows to ensure this occurs whenever a - name is read or written to:

    -
    -
    + name is read or written to:

    +
    +
     typedef struct Person {
       %extend {
         char name[50];
    @@ -6101,21 +6216,21 @@ void Person_name_set(Person *p, char *val) {
       make_upper(p->name);
     }
     %}
    -
    -
    -

    Finally, it should be stressed that even though %extend can +

    +
    +

    Finally, it should be stressed that even though %extend can be used to add new data members, these new members can not require the allocation of additional storage in the object (e.g., their values must be entirely synthesized from existing attributes of the structure or - obtained elsewhere).

    -

    Compatibility note: The %extend directive is a new - name for the %addmethods directive. Since %addmethods + obtained elsewhere).

    +

    Compatibility note: The %extend directive is a new + name for the %addmethods directive. Since %addmethods could be used to extend a structure with more than just methods, a more - suitable directive name has been chosen.

    -

    5.5.7 Nested structures

    -

    Occasionally, a C program will involve structures like this :

    -
    -
    + suitable directive name has been chosen.

    +

    5.5.7 Nested structures

    +

    Occasionally, a C program will involve structures like this :

    +
    +
     typedef struct Object {
       int objtype;
       union {
    @@ -6126,13 +6241,13 @@ typedef struct Object {
       } intRep;
     } Object;
     
    -
    -
    -

    When SWIG encounters this, it performs a structure splitting +

    +
    +

    When SWIG encounters this, it performs a structure splitting operation that transforms the declaration into the equivalent of the - following:

    -
    -
    + following:

    +
    +
     typedef union {
       int ivalue;
       double dvalue;
    @@ -6145,13 +6260,13 @@ typedef struct Object {
       Object_intRep intRep;
     } Object;
     
    -
    -
    -

    SWIG will then create an Object_intRep structure for use +

    +
    +

    SWIG will then create an Object_intRep structure for use inside the interface file. Accessor functions will be created for both - structures. In this case, functions like this would be created :

    -
    -
    + structures. In this case, functions like this would be created :

    +
    +
     Object_intRep *Object_intRep_get(Object *o) {
       return (Object_intRep *) &o->intRep;
     }
    @@ -6166,48 +6281,48 @@ double Object_intRep_dvalue_get(Object_intRep *o) {
     }
     ... etc ...
     
    -
    -
    -

    Although this process is a little hairy, it works like you would +

    +
    +

    Although this process is a little hairy, it works like you would expect in the target scripting language--especially when proxy classes - are used. For instance, in Perl:

    -
    -
    + are used. For instance, in Perl:

    +
    +
     # Perl5 script for accessing nested member
     $o = CreateObject();                    # Create an object somehow
     $o->{intRep}->{ivalue} = 7              # Change value of o.intRep.ivalue
    -
    -
    -

    If you have a lot of nested structure declarations, it is advisable +

    +
    +

    If you have a lot of nested structure declarations, it is advisable to double-check them after running SWIG. Although, there is a good chance that they will work, you may have to modify the interface file - in certain cases.

    -

    Finally, note that nesting is handled differently in C++ mode, see Nested classes.

    -

    5.5.8 Other things to note about structure - wrapping

    -

    SWIG doesn't care if the declaration of a structure in a .i + in certain cases.

    +

    Finally, note that nesting is handled differently in C++ mode, see Nested classes.

    +

    5.5.8 Other things to note about structure + wrapping

    +

    SWIG doesn't care if the declaration of a structure in a .i file exactly matches that used in the underlying C code (except in the case of nested structures). For this reason, there are no problems omitting problematic members or simply omitting the structure definition altogether. If you are happy passing pointers around, this - can be done without ever giving SWIG a structure definition.

    -

    Starting with SWIG1.3, a number of improvements have been made to + can be done without ever giving SWIG a structure definition.

    +

    Starting with SWIG1.3, a number of improvements have been made to SWIG's code generator. Specifically, even though structure access has - been described in terms of high-level accessor functions such as this,

    -
    -
    + been described in terms of high-level accessor functions such as this,

    +
    +
     double Vector_x_get(Vector *v) {
       return v->x;
     }
    -
    -
    -

    most of the generated code is actually inlined directly into wrapper - functions. Therefore, no function Vector_x_get() actually +

    +
    +

    most of the generated code is actually inlined directly into wrapper + functions. Therefore, no function Vector_x_get() actually exists in the generated wrapper file. For example, when creating a Tcl - module, the following function is generated instead:

    -
    -
    + module, the following function is generated instead:

    +
    +
     static int
     _wrap_Vector_x_get(ClientData clientData, Tcl_Interp *interp, 
                        int objc, Tcl_Obj *CONST objv[]) {
    @@ -6221,74 +6336,74 @@ _wrap_Vector_x_get(ClientData clientData, Tcl_Interp *interp,
       Tcl_SetObjResult(interp, Tcl_NewDoubleObj((double) result));
       return TCL_OK;
     }
    -
    -
    -

    The only exception to this rule are methods defined with %extend -. In this case, the added code is contained in a separate function.

    -

    Finally, it is important to note that most language modules may +

    +
    +

    The only exception to this rule are methods defined with %extend +. In this case, the added code is contained in a separate function.

    +

    Finally, it is important to note that most language modules may choose to build a more advanced interface. Although you may never use the low-level interface described here, most of SWIG's language modules - use it in some way or another.

    -

    5.6 Code Insertion

    -

    Sometimes it is necessary to insert special code into the resulting + use it in some way or another.

    +

    5.6 Code Insertion

    +

    Sometimes it is necessary to insert special code into the resulting wrapper file generated by SWIG. For example, you may want to include additional C code to perform initialization or other operations. There are four common ways to insert code, but it's useful to know how the - output of SWIG is structured first.

    -

    5.6.1 The output of SWIG

    -

    When SWIG creates its output C/C++ file, it is broken up into five + output of SWIG is structured first.

    +

    5.6.1 The output of SWIG

    +

    When SWIG creates its output C/C++ file, it is broken up into five sections corresponding to runtime code, headers, wrapper functions, and - module initialization code (in that order).

    -
      -
    • Begin section. -
      A placeholder for users to put code at the beginning of the C/C++ + module initialization code (in that order).

      +
        +
      • Begin section. +
        A placeholder for users to put code at the beginning of the C/C++ wrapper file. This is most often used to define preprocessor macros - that are used in later sections.
      • -
      • Runtime code. -
        This code is internal to SWIG and is used to include type-checking - and other support functions that are used by the rest of the module.
      • -
      • Header section. -
        This is user-defined support code that has been included by the -%{ ... %} directive. Usually this consists of header files and - other helper functions.
      • -
      • Wrapper code. -
        These are the wrappers generated automatically by SWIG.
      • -
      • Module initialization. -
        The function generated by SWIG to initialize the module upon - loading.
      • -
      -

      5.6.2 Code insertion blocks

      -

      The %insert directive enables inserting blocks of code into + that are used in later sections.

    • +
    • Runtime code. +
      This code is internal to SWIG and is used to include type-checking + and other support functions that are used by the rest of the module.
    • +
    • Header section. +
      This is user-defined support code that has been included by the +%{ ... %} directive. Usually this consists of header files and + other helper functions.
    • +
    • Wrapper code. +
      These are the wrappers generated automatically by SWIG.
    • +
    • Module initialization. +
      The function generated by SWIG to initialize the module upon + loading.
    • +
    +

    5.6.2 Code insertion blocks

    +

    The %insert directive enables inserting blocks of code into a given section of the generated code. It can be used in one of two - ways:

    -
    -
    + ways:

    +
    +
     %insert("section") "filename"
     %insert("section") %{ ... %}
    -
    -
    -

    The first will dump the contents of the file in the given -filename into the named section. The second inserts the - code between the braces into the named section. For example, - the following adds code into the runtime section:

    -
    -
    +
    +
    +

    The first will dump the contents of the file in the given +filename into the named section. The second inserts the + code between the braces into the named section. For example, + the following adds code into the runtime section:

    +
    +
     %insert("runtime") %{
       ... code in runtime section ...
     %}
    -
    -
    -

    There are the 5 sections, however, some target languages add in +

    +
    +

    There are the 5 sections, however, some target languages add in additional sections and some of these result in code being generated into a target language file instead of the C/C++ wrapper file. These are documented when available in the target language chapters. Macros named after the code sections are available as additional directives - and these macro directives are normally used instead of %insert -. For example, %runtime is used instead of -%insert("runtime"). The valid sections and order of the sections in - the generated C/C++ wrapper file is as shown:

    -
    -
    + and these macro directives are normally used instead of %insert
    +. For example, %runtime is used instead of 
    +%insert("runtime"). The valid sections and order of the sections in
    + the generated C/C++ wrapper file is as shown:

    +
    +
     %begin %{
       ... code in begin section ...
     %}
    @@ -6308,19 +6423,19 @@ filename into the named section. The second inserts the
     %init %{
       ... code in init section ...
     %}
    -
    -
    -

    The bare %{ ... %} directive is a shortcut that is the same - as %header %{ ... %}.

    -

    The %begin section is effectively empty as it just contains +

    +
    +

    The bare %{ ... %} directive is a shortcut that is the same + as %header %{ ... %}.

    +

    The %begin section is effectively empty as it just contains the SWIG banner by default. This section is provided as a way for users to insert code at the top of the wrapper file before any other code is generated. Everything in a code insertion block is copied verbatim into the output file and is not parsed by SWIG. Most SWIG input files have at least one such block to include header files and support C code. - Additional code blocks may be placed anywhere in a SWIG file as needed.

    -
    -
    + Additional code blocks may be placed anywhere in a SWIG file as needed.

    +
    +
     %module mymodule
     %{
     #include "my_header.h"
    @@ -6332,14 +6447,14 @@ void some_extra_function() {
       ...
     }
     %}
    -
    -
    -

    A common use for code blocks is to write "helper" functions. These +

    +
    +

    A common use for code blocks is to write "helper" functions. These are functions that are used specifically for the purpose of building an interface, but which are generally not visible to the normal C program. - For example :

    -
    -
    + For example :

    +
    +
     %{
     /* Create a new vector */
     static Vector *new_Vector() {
    @@ -6349,63 +6464,82 @@ static Vector *new_Vector() {
     %}
     // Now wrap it 
     Vector *new_Vector();
    -
    -
    -

    5.6.3 Inlined code blocks

    -

    Since the process of writing helper functions is fairly common, - there is a special inlined form of code block that is used as follows :

    -
    -
    +
    +
    +

    5.6.3 Inlined code blocks

    +

    Since the process of writing helper functions is fairly common, + there is a special inlined form of code block that is used as follows :

    +
    +
     %inline %{
     /* Create a new vector */
     Vector *new_Vector() {
       return (Vector *) malloc(sizeof(Vector));
     }
     %}
    +
    +
    +

    This is the same as writing:

    +
    +
    +%{
    +/* Create a new vector */
    +Vector *new_Vector() {
    +  return (Vector *) malloc(sizeof(Vector));
    +}
    +%}
     
    -
    -
    -

    The %inline directive inserts all of the code that follows - verbatim into the header portion of an interface file. The code is then - parsed by both the SWIG preprocessor and parser. Thus, the above - example creates a new command new_Vector using only one - declaration. Since the code inside an %inline %{ ... %} block - is given to both the C compiler and SWIG, it is illegal to include any - SWIG directives inside a %{ ... %} block.

    -

    5.6.4 Initialization blocks

    -

    When code is included in the %init section, it is copied +/* Create a new vector */ +Vector *new_Vector() { + return (Vector *) malloc(sizeof(Vector)); +} +

    +
    +

    In other words, the %inline directive inserts all of the + code that follows verbatim into the header portion of an interface + file. The code is then parsed by both the SWIG preprocessor and parser. + Thus, the above example creates a new command new_Vector using + only one declaration. Since the code inside an %inline %{ ... %} + block is given to both the C compiler and SWIG, it is illegal to + include any SWIG directives inside a %{ ... %} block.

    +

    Note: The usual SWIG C preprocessor rules apply to code in +%apply blocks when SWIG parses this code. For example, as mentioned + earlier, SWIG's C Preprocessor does not follow +#include directives by default.

    +

    5.6.4 Initialization blocks

    +

    When code is included in the %init section, it is copied directly into the module initialization function. For example, if you needed to perform some extra initialization on module loading, you - could write this:

    -
    -
    + could write this:

    +
    +
     %init %{
       init_variables();
     %}
    -
    -
    -

    5.7 An Interface Building Strategy

    -

    This section describes the general approach for building interfaces +

    +
    +

    5.7 An Interface Building Strategy

    +

    This section describes the general approach for building interfaces with SWIG. The specifics related to a particular scripting language are - found in later chapters.

    -

    5.7.1 Preparing a C program for SWIG

    -

    SWIG doesn't require modifications to your C code, but if you feed + found in later chapters.

    +

    5.7.1 Preparing a C program for SWIG

    +

    SWIG doesn't require modifications to your C code, but if you feed it a collection of raw C header files or source code, the results might not be what you expect---in fact, they might be awful. Here's a series - of steps you can follow to make an interface for a C program :

    -
      -
    • Identify the functions that you want to wrap. It's probably not + of steps you can follow to make an interface for a C program :

      +
        +
      • Identify the functions that you want to wrap. It's probably not necessary to access every single function of a C program--thus, a little forethought can dramatically simplify the resulting scripting language interface. C header files are a particularly good source for - finding things to wrap.
      • -
      • Create a new interface file to describe the scripting language - interface to your program.
      • -
      • Copy the appropriate declarations into the interface file or use - SWIG's %include directive to process an entire C source/header - file.
      • -
      • Make sure everything in the interface file uses ANSI C/C++ syntax.
      • -
      • Make sure all necessary `typedef' declarations and + finding things to wrap.
      • +
      • Create a new interface file to describe the scripting language + interface to your program.
      • +
      • Copy the appropriate declarations into the interface file or use + SWIG's %include directive to process an entire C source/header + file.
      • +
      • Make sure everything in the interface file uses ISO C/C++ syntax.
      • +
      • Make sure all necessary `typedef' declarations and type-information is available in the interface file. In particular, ensure that the type information is specified in the correct order as required by a C/C++ compiler. Most importantly, define a type before it @@ -6413,25 +6547,25 @@ Vector *new_Vector() { available if it is needed, whereas SWIG will usually not warn or error out as it is designed to work without full type information. However, if type information is not specified correctly, the wrappers can be - sub-optimal and even result in uncompilable C/C++ code.
      • -
      • If your program has a main() function, you may need to rename it - (read on).
      • -
      • Run SWIG and compile.
      • -
      -

      Although this may sound complicated, the process turns out to be - fairly easy once you get the hang of it.

      -

      In the process of building an interface, SWIG may encounter syntax + sub-optimal and even result in uncompilable C/C++ code.

    • +
    • If your program has a main() function, you may need to rename it + (read on).
    • +
    • Run SWIG and compile.
    • +
    +

    Although this may sound complicated, the process turns out to be + fairly easy once you get the hang of it.

    +

    In the process of building an interface, SWIG may encounter syntax errors or other problems. The best way to deal with this is to simply copy the offending code into a separate interface file and edit it. However, the SWIG developers have worked very hard to improve the SWIG - parser--you should report parsing errors to the -swig-devel mailing list or to the -SWIG bug tracker.

    -

    5.7.2 The SWIG interface file

    -

    The preferred method of using SWIG is to generate a separate - interface file. Suppose you have the following C header file :

    -
    -
    + parser--you should report parsing errors to the 
    +swig-devel mailing list or to the 
    +SWIG bug tracker.

    +

    5.7.2 The SWIG interface file

    +

    The preferred method of using SWIG is to generate a separate + interface file. Suppose you have the following C header file :

    +
    +
     /* File : header.h */
     
     #include <stdio.h>
    @@ -6441,12 +6575,12 @@ extern int foo(double);
     extern double bar(int, int);
     extern void dump(FILE *f);
     
    -
    -
    -

    A typical SWIG interface file for this header file would look like - the following :

    -
    -
    +
    +
    +

    A typical SWIG interface file for this header file would look like + the following :

    +
    +
     /* File : interface.i */
     %module mymodule
     %{
    @@ -6456,50 +6590,50 @@ extern int foo(double);
     extern double bar(int, int);
     extern void dump(FILE *f);
     
    -
    -
    -

    Of course, in this case, our header file is pretty simple so we - could use a simpler approach and use an interface file like this:

    -
    -
    +
    +
    +

    Of course, in this case, our header file is pretty simple so we + could use a simpler approach and use an interface file like this:

    +
    +
     /* File : interface.i */
     %module mymodule
     %{
     #include "header.h"
     %}
     %include "header.h"
    -
    -
    -

    The main advantage of this approach is minimal maintenance of an +

    +
    +

    The main advantage of this approach is minimal maintenance of an interface file for when the header file changes in the future. In more - complex projects, an interface file containing numerous %include - and #include statements like this is one of the most common - approaches to interface file design due to lower maintenance overhead.

    -

    5.7.3 Why use separate interface files?

    -

    Although SWIG can parse many header files, it is more common to - write a special .i file defining the interface to a package. - There are several reasons why you might want to do this:

    -
      -
    • It is rarely necessary to access every single function in a large + complex projects, an interface file containing numerous %include + and #include statements like this is one of the most common + approaches to interface file design due to lower maintenance overhead.

      +

      5.7.3 Why use separate interface files?

      +

      Although SWIG can parse many header files, it is more common to + write a special .i file defining the interface to a package. + There are several reasons why you might want to do this:

      +
        +
      • It is rarely necessary to access every single function in a large package. Many C functions might have little or no use in a scripted - environment. Therefore, why wrap them?
      • -
      • Separate interface files provide an opportunity to provide more - precise rules about how an interface is to be constructed.
      • -
      • Interface files can provide more structure and organization.
      • -
      • SWIG can't parse certain definitions that appear in header files. + environment. Therefore, why wrap them?
      • +
      • Separate interface files provide an opportunity to provide more + precise rules about how an interface is to be constructed.
      • +
      • Interface files can provide more structure and organization.
      • +
      • SWIG can't parse certain definitions that appear in header files. Having a separate file allows you to eliminate or work around these - problems.
      • -
      • Interface files provide a more precise definition of what the + problems.
      • +
      • Interface files provide a more precise definition of what the interface is. Users wanting to extend the system can go to the interface file and immediately see what is available without having to - dig it out of header files.
      • -
      -

      5.7.4 Getting the right header files

      -

      Sometimes, it is necessary to use certain header files in order for + dig it out of header files.

    • +
    +

    5.7.4 Getting the right header files

    +

    Sometimes, it is necessary to use certain header files in order for the code generated by SWIG to compile properly. Make sure you include - certain header files by using a %{ %} block like this:

    -
    -
    + certain header files by using a %{ %} block like this:

    +
    +
     %module graphics
     %{
     #include <GL/gl.h>
    @@ -6508,132 +6642,157 @@ extern void dump(FILE *f);
     
     // Put the rest of the declarations here
     ...
    -
    -
    -

    5.7.5 What to do with main()

    -

    If your program defines a main() function, you may need to +

    +
    +

    5.7.5 What to do with main()

    +

    If your program defines a main() function, you may need to get rid of it or rename it in order to use a scripting language. Most - scripting languages define their own main() procedure that is - called instead. main() also makes no sense when working with - dynamic loading. There are a few approaches to solving the main() - conflict :

    -
      -
    • Get rid of main() entirely.
    • -
    • Rename main() to something else. You can do this by - compiling your C program with an option like -Dmain=oldmain.
    • -
    • Use conditional compilation to only include main() when not - using a scripting language.
    • -
    -

    Getting rid of main() may cause potential initialization + scripting languages define their own main() procedure that is + called instead. main() also makes no sense when working with + dynamic loading. There are a few approaches to solving the main() + conflict :

    +
      +
    • Get rid of main() entirely.
    • +
    • Rename main() to something else. You can do this by + compiling your C program with an option like -Dmain=oldmain.
    • +
    • Use conditional compilation to only include main() when not + using a scripting language.
    • +
    +

    Getting rid of main() may cause potential initialization problems of a program. To handle this problem, you may consider writing - a special function called program_init() that initializes your + a special function called program_init() that initializes your program upon startup. This function could then be called either from the scripting language as the first operation, or when the SWIG - generated module is loaded.

    -

    As a general note, many C programs only use the main() + generated module is loaded.

    +

    As a general note, many C programs only use the main() function to parse command line options and to set parameters. However, by using a scripting language, you are probably trying to create a - program that is more interactive. In many cases, the old main() - program can be completely replaced by a Perl, Python, or Tcl script.

    -

    Note: In some cases, you might be inclined to create a - scripting language wrapper for main(). If you do this, the + program that is more interactive. In many cases, the old main() + program can be completely replaced by a Perl, Python, or Tcl script.

    +

    Note: In some cases, you might be inclined to create a + scripting language wrapper for main(). If you do this, the compilation will probably work and your module might even load - correctly. The only trouble is that when you call your main() - wrapper, you will find that it actually invokes the main() of + correctly. The only trouble is that when you call your main() + wrapper, you will find that it actually invokes the main() of the scripting language interpreter itself! This behavior is a side effect of the symbol binding mechanism used in the dynamic linker. The - bottom line: don't do this.

    + bottom line: don't do this.


    -

    6 SWIG and C++

    +

    6 SWIG and C++

    - +
    + +
    -

    This chapter describes SWIG's support for wrapping C++. As a - prerequisite, you should first read the chapter SWIG - Basics to see how SWIG wraps ANSI C. Support for C++ builds upon - ANSI C wrapping and that material will be useful in understanding this - chapter.

    -

    6.1 Comments on C++ Wrapping

    -

    Because of its complexity and the fact that C++ can be difficult to +

    This chapter describes SWIG's support for wrapping C++. It is mostly + concerned about C++ as defined by the C++ 98 and 03 standards. For + additions to the original C++ standard, please read the +SWIG and C++11, SWIG and C++14 and +SWIG and C++17 chapters. As a prerequisite, you should first read + the chapter SWIG Basics to see how SWIG wraps ISO + C. Support for C++ builds upon ISO C wrapping and that material will be + useful in understanding this chapter.

    +

    6.1 Comments on C++ Wrapping

    +

    Because of its complexity and the fact that C++ can be difficult to integrate with itself let alone other languages, SWIG only provides support for a subset of C++ features. Fortunately, this is now a rather - large subset.

    -

    In part, the problem with C++ wrapping is that there is no + large subset.

    +

    In part, the problem with C++ wrapping is that there is no semantically obvious (or automatic ) way to map many of its advanced features into other languages. As a simple example, consider the problem of wrapping C++ multiple inheritance to a target language with no such support. Similarly, the use of overloaded operators and overloaded functions can be problematic when no such capability exists - in a target language.

    -

    A more subtle issue with C++ has to do with the way that some C++ + in a target language.

    +

    A more subtle issue with C++ has to do with the way that some C++ programmers think about programming libraries. In the world of SWIG, you are really trying to create binary-level software components for use in other languages. In order for this to work, a "component" has to @@ -6642,7 +6801,7 @@ extern void dump(FILE *f); C++ has increasingly relied upon generic programming and templates for much of its functionality. Although templates are a powerful feature, they are largely orthogonal to the whole notion of binary components - and libraries. For example, an STL vector does not define any + and libraries. For example, an STL vector does not define any kind of binary object for which SWIG can just create a wrapper. To further complicate matters, these libraries often utilize a lot of behind the scenes magic in which the semantics of seemingly basic @@ -6651,10 +6810,10 @@ extern void dump(FILE *f); "magic" may present few problems in a C++-only universe, it greatly complicates the problem of crossing language boundaries and provides many opportunities to shoot yourself in the foot. You will just have to - be careful.

    -

    6.2 Approach

    -

    To wrap C++, SWIG uses a layered approach to code generation. At the - lowest level, SWIG generates a collection of procedural ANSI-C style + be careful.

    +

    6.2 Approach

    +

    To wrap C++, SWIG uses a layered approach to code generation. At the + lowest level, SWIG generates a collection of procedural ISO C style wrappers. These wrappers take care of basic type conversion, type checking, error handling, and other low-level details of the C++ binding. These wrappers are also sufficient to bind C++ into any target @@ -6665,8 +6824,8 @@ extern void dump(FILE *f); interface to the underlying code. The proxy classes are typically written in the target language itself. For instance, in Python, a real Python class is used to provide a wrapper around the underlying C++ - object.

    -

    It is important to emphasize that SWIG takes a deliberately + object.

    +

    It is important to emphasize that SWIG takes a deliberately conservative and non-intrusive approach to C++ wrapping. SWIG does not encapsulate C++ classes inside a special C++ adaptor, it does not rely upon templates, nor does it add in additional C++ inheritance when @@ -6678,76 +6837,76 @@ extern void dump(FILE *f); sneaky tricks with the C++ type system, it doesn't mess with your class hierarchies, and it doesn't introduce new semantics. Although this approach might not provide the most seamless integration with C++, it - is safe, simple, portable, and debuggable.

    -

    Some of this chapter focuses on the low-level procedural interface + is safe, simple, portable, and debuggable.

    +

    Some of this chapter focuses on the low-level procedural interface to C++ that is used as the foundation for all language modules. Keep in mind that the target languages also provide the high-level OO interface via proxy classes. More detailed coverage can be found in the - documentation for each target language.

    -

    6.3 Supported C++ features

    -

    SWIG currently supports most C++ features including the following:

    -
      -
    • Classes
    • -
    • Constructors and destructors
    • -
    • Virtual functions
    • -
    • Public inheritance (including multiple inheritance)
    • -
    • Static functions
    • -
    • Function and method overloading
    • -
    • Operator overloading for many standard operators
    • -
    • References
    • -
    • Templates (including specialization and member templates)
    • -
    • Pointers to members
    • -
    • Namespaces
    • -
    • Default parameters
    • -
    • Smart pointers
    • -
    -

    The following C++ features are not currently supported:

    -
      -
    • Overloaded versions of certain operators (new, delete, etc.)
    • -
    -

    As a rule of thumb, SWIG should not be used on raw C++ source files, - use header files only.

    -

    SWIG's C++ support is an ongoing project so some of these + documentation for each target language.

    +

    6.3 Supported C++ features

    +

    SWIG currently supports most C++ features including the following:

    +
      +
    • Classes
    • +
    • Constructors and destructors
    • +
    • Virtual functions
    • +
    • Public inheritance (including multiple inheritance)
    • +
    • Static functions
    • +
    • Function and method overloading
    • +
    • Operator overloading for many standard operators
    • +
    • References
    • +
    • Templates (including specialization and member templates)
    • +
    • Pointers to members
    • +
    • Namespaces
    • +
    • Default parameters
    • +
    • Smart pointers
    • +
    +

    The following C++ features are not currently supported:

    +
      +
    • Overloaded versions of certain operators (new, delete, etc.)
    • +
    +

    As a rule of thumb, SWIG should not be used on raw C++ source files, + use header files only.

    +

    SWIG's C++ support is an ongoing project so some of these limitations may be lifted in future releases. However, we make no promises. Also, submitting a bug report is a very good way to get - problems fixed (wink).

    -

    6.4 Command line options and compilation

    -

    When wrapping C++ code, it is critical that SWIG be called with the - `-c++' option. This changes the way a number of critical + problems fixed (wink).

    +

    6.4 Command line options and compilation

    +

    When wrapping C++ code, it is critical that SWIG be called with the + `-c++' option. This changes the way a number of critical features such as memory management are handled. It also enables the - recognition of C++ keywords. Without the -c++ flag, SWIG will + recognition of C++ keywords. Without the -c++ flag, SWIG will either issue a warning or a large number of syntax errors if it - encounters C++ code in an interface file.

    -

    When compiling and linking the resulting wrapper file, it is normal - to use the C++ compiler. For example:

    -
    -
    + encounters C++ code in an interface file.

    +

    When compiling and linking the resulting wrapper file, it is normal + to use the C++ compiler. For example:

    +
    +
     $ swig -c++ -tcl example.i
     $ c++ -fPIC -c example_wrap.cxx 
     $ c++ example_wrap.o $(OBJS) -o example.so
    -
    -
    -

    Unfortunately, the process varies slightly on each platform. Make +

    +
    +

    Unfortunately, the process varies slightly on each platform. Make sure you refer to the documentation on each target language for further - details. The SWIG Wiki also has further details.

    - Compatibility Note: Early versions of SWIG generated just a - flattened low-level C style API to C++ classes by default. The --noproxy commandline option is recognised by many target languages + details. The SWIG Wiki also has further details.

    + Compatibility Note: Early versions of SWIG generated just a + flattened low-level C style API to C++ classes by default. The +-noproxy commandline option is recognised by many target languages and will generate just this interface as in earlier versions. -

    6.5 Proxy classes

    -

    In order to provide a natural mapping from C++ classes to the target +

    6.5 Proxy classes

    +

    In order to provide a natural mapping from C++ classes to the target language classes, SWIG's target languages mostly wrap C++ classes with special proxy classes. These proxy classes are typically implemented in the target language itself. For example, if you're building a Python module, each C++ class is wrapped by a Python proxy class. Or if you're building a Java module, each C++ class is wrapped by a Java proxy - class.

    -

    6.5.1 Construction of proxy classes

    -

    Proxy classes are always constructed as an extra layer of wrapping + class.

    +

    6.5.1 Construction of proxy classes

    +

    Proxy classes are always constructed as an extra layer of wrapping that uses low-level accessor functions. To illustrate, suppose you had - a C++ class like this:

    -
    -
    + a C++ class like this:

    +
    +
     class Foo {
       public:
         Foo();
    @@ -6755,11 +6914,11 @@ class Foo {
         int  bar(int x);
         int  x;
     };
    -
    -
    -

    Using C++ as pseudocode, a proxy class looks something like this:

    -
    -
    +
    +
    +

    Using C++ as pseudocode, a proxy class looks something like this:

    +
    +
     class FooProxy {
       private:
         Foo    *self;
    @@ -6780,13 +6939,13 @@ class FooProxy {
           Foo_x_set(self, x);
         }
     };
    -
    -
    -

    Of course, always keep in mind that the real proxy class is written +

    +
    +

    Of course, always keep in mind that the real proxy class is written in the target language. For example, in Python, the proxy might look - roughly like this:

    -
    -
    + roughly like this:

    +
    +
     class Foo:
         def __init__(self):
             self.this = new_Foo()
    @@ -6802,18 +6961,18 @@ class Foo:
             if name == 'x':
                 Foo_x_set(self.this, value)
             ...
    -
    -
    -

    Again, it's important to emphasize that the low-level accessor +

    +
    +

    Again, it's important to emphasize that the low-level accessor functions are always used by the proxy classes. Whenever possible, proxies try to take advantage of language features that are similar to C++. This might include operator overloading, exception handling, and - other features.

    -

    6.5.2 Resource management in proxies

    -

    A major issue with proxies concerns the memory management of wrapped - objects. Consider the following C++ code:

    -
    -
    + other features.

    +

    6.5.2 Resource management in proxies

    +

    A major issue with proxies concerns the memory management of wrapped + objects. Consider the following C++ code:

    +
    +
     class Foo {
     public:
       Foo();
    @@ -6824,52 +6983,52 @@ public:
     
     class Spam {
     public:
    -      Foo *value;
    -      ...
    +  Foo *value;
    +  ...
     };
    -
    -
    -

    Consider some script code that uses these classes:

    -
    -
    +
    +
    +

    Consider some script code that uses these classes:

    +
    +
     f = Foo()               # Creates a new Foo
     s = Spam()              # Creates a new Spam
     s.value = f             # Stores a reference to f inside s
     g = s.value             # Returns stored reference
     g = 4                   # Reassign g to some other value
     del f                   # Destroy f 
    -
    -
    -

    Now, ponder the resulting memory management issues. When objects are +

    +
    +

    Now, ponder the resulting memory management issues. When objects are created in the script, the objects are wrapped by newly created proxy classes. That is, there is both a new proxy class instance and a new - instance of the underlying C++ class. In this example, both f - and s are created in this way. However, the statement -s.value is rather curious---when executed, a pointer to f + instance of the underlying C++ class. In this example, both f + and s are created in this way. However, the statement +s.value is rather curious---when executed, a pointer to f is stored inside another object. This means that the scripting proxy - class AND another C++ class share a reference to the same - object. To make matters even more interesting, consider the statement -g = s.value. When executed, this creates a new proxy class g - that provides a wrapper around the C++ object stored in s.value + class AND another C++ class share a reference to the same + object. To make matters even more interesting, consider the statement +g = s.value. When executed, this creates a new proxy class g + that provides a wrapper around the C++ object stored in s.value . In general, there is no way to know where this object came from---it could have been created by the script, but it could also have been - generated internally. In this particular example, the assignment of -g results in a second proxy class for f. In other words, a - reference to f is now shared by two proxy classes and - a C++ class.

    -

    Finally, consider what happens when objects are destroyed. In the - statement, g=4, the variable g is reassigned. In many - languages, this makes the old value of g available for garbage + generated internally. In this particular example, the assignment of +g results in a second proxy class for f. In other words, a + reference to f is now shared by two proxy classes and + a C++ class.

    +

    Finally, consider what happens when objects are destroyed. In the + statement, g=4, the variable g is reassigned. In many + languages, this makes the old value of g available for garbage collection. Therefore, this causes one of the proxy classes to be - destroyed. Later on, the statement del f destroys the other + destroyed. Later on, the statement del f destroys the other proxy class. Of course, there is still a reference to the original object stored inside another C++ object. What happens to it? Is the - object still valid?

    -

    To deal with memory management problems, proxy classes provide an + object still valid?

    +

    To deal with memory management problems, proxy classes provide an API for controlling ownership. In C++ pseudocode, ownership control - might look roughly like this:

    -
    -
    + might look roughly like this:

    +
    +
     class FooProxy {
       public:
         Foo    *self;
    @@ -6911,35 +7070,35 @@ class SpamProxy {
       }
       ...
     };
    -
    -
    -

    Looking at this code, there are a few central features:

    -
      -
    • Each proxy class keeps an extra flag to indicate ownership. C++ - objects are only destroyed if the ownership flag is set.
    • -
    • When new objects are created in the target language, the ownership - flag is set.
    • -
    • When a reference to an internal C++ object is returned, it is - wrapped by a proxy class, but the proxy class does not have ownership.
    • -
    • In certain cases, ownership is adjusted. For instance, when a value - is assigned to the member of a class, ownership is lost.
    • -
    • Manual ownership control is provided by special disown() - and acquire() methods.
    • -
    -

    Given the tricky nature of C++ memory management, it is impossible +

    +
    +

    Looking at this code, there are a few central features:

    +
      +
    • Each proxy class keeps an extra flag to indicate ownership. C++ + objects are only destroyed if the ownership flag is set.
    • +
    • When new objects are created in the target language, the ownership + flag is set.
    • +
    • When a reference to an internal C++ object is returned, it is + wrapped by a proxy class, but the proxy class does not have ownership.
    • +
    • In certain cases, ownership is adjusted. For instance, when a value + is assigned to the member of a class, ownership is lost.
    • +
    • Manual ownership control is provided by special disown() + and acquire() methods.
    • +
    +

    Given the tricky nature of C++ memory management, it is impossible for proxy classes to automatically handle every possible memory management problem. However, proxies do provide a mechanism for manual control that can be used (if necessary) to address some of the more - tricky memory management problems.

    -

    6.5.3 Language specific details

    -

    Language specific details on proxy classes are contained in the + tricky memory management problems.

    +

    6.5.3 Language specific details

    +

    Language specific details on proxy classes are contained in the chapters describing each target language. This chapter has merely - introduced the topic in a very general way.

    -

    6.6 Simple C++ wrapping

    -

    The following code shows a SWIG interface file for a simple C++ - class.

    -
    -
    + introduced the topic in a very general way.

    +

    6.6 Simple C++ wrapping

    +

    The following code shows a SWIG interface file for a simple C++ + class.

    +
    +
     %module list
     %{
     #include "list.h"
    @@ -6958,16 +7117,16 @@ public:
       int  length;
     static void print(List *l);
     };
    -
    -
    -

    To generate wrappers for this class, SWIG first reduces the class to +

    +
    +

    To generate wrappers for this class, SWIG first reduces the class to a collection of low-level C-style accessor functions which are then - used by the proxy classes.

    -

    6.6.1 Constructors and destructors

    -

    C++ constructors and destructors are translated into accessor - functions such as the following :

    -
    -
    + used by the proxy classes.

    +

    6.6.1 Constructors and destructors

    +

    C++ constructors and destructors are translated into accessor + functions such as the following :

    +
    +
     List * new_List(void) {
       return new List;
     }
    @@ -6975,52 +7134,52 @@ void delete_List(List *l) {
       delete l;
     }
     
    -
    -
    -

    6.6.2 Default constructors, copy constructors - and implicit destructors

    -

    Following the C++ rules for implicit constructor and destructors, +

    +
    +

    6.6.2 Default constructors, copy constructors + and implicit destructors

    +

    Following the C++ rules for implicit constructor and destructors, SWIG will automatically assume there is one even when they are not - explicitly declared in the class interface.

    -

    In general then:

    -
      -
    • If a C++ class does not declare any explicit constructor, SWIG will - automatically generate a wrapper for one.
    • -
    • If a C++ class does not declare an explicit copy constructor, SWIG - will automatically generate a wrapper for one if the %copyctor - is used.
    • -
    • If a C++ class does not declare an explicit destructor, SWIG will - automatically generate a wrapper for one.
    • -
    -

    And as in C++, a few rules that alters the previous behavior:

    -
      -
    • A default constructor is not created if a class already defines a - constructor with arguments.
    • -
    • Default constructors are not generated for classes with pure virtual + explicitly declared in the class interface.

      +

      In general then:

      +
        +
      • If a C++ class does not declare any explicit constructor, SWIG will + automatically generate a wrapper for one.
      • +
      • If a C++ class does not declare an explicit copy constructor, SWIG + will automatically generate a wrapper for one if the %copyctor + is used.
      • +
      • If a C++ class does not declare an explicit destructor, SWIG will + automatically generate a wrapper for one.
      • +
      +

      And as in C++, a few rules that alters the previous behavior:

      +
        +
      • A default constructor is not created if a class already defines a + constructor with arguments.
      • +
      • Default constructors are not generated for classes with pure virtual methods or for classes that inherit from an abstract class, but don't - provide definitions for all of the pure methods.
      • -
      • A default constructor is not created unless all base classes support - a default constructor.
      • -
      • Default constructors and implicit destructors are not created if a - class defines them in a private or protected section.
      • -
      • Default constructors and implicit destructors are not created if any - base class defines a non-public default constructor or destructor.
      • -
      -

      SWIG should never generate a default constructor, copy constructor + provide definitions for all of the pure methods.

    • +
    • A default constructor is not created unless all base classes support + a default constructor.
    • +
    • Default constructors and implicit destructors are not created if a + class defines them in a private or protected section.
    • +
    • Default constructors and implicit destructors are not created if any + base class defines a non-public default constructor or destructor.
    • +
    +

    SWIG should never generate a default constructor, copy constructor or default destructor wrapper for a class in which it is illegal to do so. In some cases, however, it could be necessary (if the complete class declaration is not visible from SWIG, and one of the above rules is violated) or desired (to reduce the size of the final interface) by - manually disabling the implicit constructor/destructor generation.

    -

    To manually disable these, the %nodefaultctor and -%nodefaultdtor feature flag + manually disabling the implicit constructor/destructor generation.

    +

    To manually disable these, the %nodefaultctor and +%nodefaultdtor feature flag directives can be used. Note that these directives only affects the implicit generation, and they have no effect if the default/copy constructors or destructor are explicitly declared in the class - interface.

    -

    For example:

    -
    -
    + interface.

    +

    For example:

    +
    +
     %nodefaultctor Foo;  // Disable the default constructor for class Foo.
     class Foo {          // No default constructor is generated, unless one is declared
     ...
    @@ -7028,12 +7187,12 @@ class Foo {          // No default constructor is generated, unless one is decla
     class Bar {          // A default constructor is generated, if possible
     ...
     };
    -
    -
    -

    The directive %nodefaultctor can also be applied - "globally", as in:

    -
    -
    +
    +
    +

    The directive %nodefaultctor can also be applied + "globally", as in:

    +
    +
     %nodefaultctor; // Disable creation of default constructors
     class Foo {     // No default constructor is generated, unless one is declared
     ...
    @@ -7043,63 +7202,63 @@ public:
       Bar();        // The default constructor is generated, since one is declared
     };
     %clearnodefaultctor; // Enable the creation of default constructors again
    -
    -
    -

    The corresponding %nodefaultdtor directive can be used to +

    +
    +

    The corresponding %nodefaultdtor directive can be used to disable the generation of the default or implicit destructor, if needed. Be aware, however, that this could lead to memory leaks in the target language. Hence, it is recommended to use this directive only in - well known cases. For example:

    -
    -
    + well known cases. For example:

    +
    +
     %nodefaultdtor Foo;   // Disable the implicit/default destructor for class Foo.
     class Foo {           // No destructor is generated, unless one is declared
     ...
     };
    -
    -
    -

    Compatibility Note: The generation of default +

    +
    +

    Compatibility Note: The generation of default constructors/implicit destructors was made the default behavior in SWIG 1.3.7. This may break certain older modules, but the old behavior can - be easily restored using %nodefault or the -nodefault + be easily restored using %nodefault or the -nodefault command line option. Furthermore, in order for SWIG to properly generate (or not generate) default constructors, it must be able to - gather information from both the private and protected + gather information from both the private and protected sections (specifically, it needs to know if a private or protected constructor/destructor is defined). In older versions of SWIG, it was fairly common to simply remove or comment out the private and protected sections of a class due to parser limitations. However, this removal may now cause SWIG to erroneously generate constructors for classes that define a constructor in those sections. Consider restoring those - sections in the interface or using %nodefault to fix the - problem.

    -

    Note: The %nodefault directive/-nodefault + sections in the interface or using %nodefault to fix the + problem.

    +

    Note: The %nodefault directive/-nodefault options described above, which disable both the default constructor and the implicit destructors, could lead to memory leaks, and so it is - strongly recommended to not use them.

    -

    6.6.3 When constructor wrappers aren't - created

    -

    If a class defines a constructor, SWIG normally tries to generate a + strongly recommended to not use them.

    +

    6.6.3 When constructor wrappers aren't + created

    +

    If a class defines a constructor, SWIG normally tries to generate a wrapper for it. However, SWIG will not generate a constructor wrapper if it thinks that it will result in illegal wrapper code. There are - really two cases where this might show up.

    -

    First, SWIG won't generate wrappers for protected or private - constructors. For example:

    -
    -
    + really two cases where this might show up.

    +

    First, SWIG won't generate wrappers for protected or private + constructors. For example:

    +
    +
     class Foo {
     protected:
       Foo();         // Not wrapped.
     public:
    -    ...
    +  ...
     };
    -
    -
    -

    Next, SWIG won't generate wrappers for a class if it appears to be +

    +
    +

    Next, SWIG won't generate wrappers for a class if it appears to be abstract--that is, it has undefined pure virtual methods. Here are some - examples:

    -
    -
    + examples:

    +
    +
     class Bar {
     public:
       Bar();               // Not wrapped.  Bar is abstract.
    @@ -7108,23 +7267,23 @@ public:
     
     class Grok : public Bar {
     public:
    -      Grok();            // Not wrapped. No implementation of abstract spam().
    +  Grok();              // Not wrapped. No implementation of abstract spam().
     };
    -
    -
    -

    Some users are surprised (or confused) to find missing constructor +

    +
    +

    Some users are surprised (or confused) to find missing constructor wrappers in their interfaces. In almost all cases, this is caused when classes are determined to be abstract. To see if this is the case, run - SWIG with all of its warnings turned on:

    -
    -
    + SWIG with all of its warnings turned on:

    +
    +
     % swig -Wall -python module.i
    -
    -
    -

    In this mode, SWIG will issue a warning for all abstract classes. It - is possible to force a class to be non-abstract using this:

    -
    -
    +
    +
    +

    In this mode, SWIG will issue a warning for all abstract classes. It + is possible to force a class to be non-abstract using this:

    +
    +
     %feature("notabstract") Foo;
     
     class Foo : public Bar {
    @@ -7132,111 +7291,111 @@ public:
       Foo();    // Generated no matter what---not abstract.
       ...
     };
    -
    -
    -

    More information about %feature can be found in the -Customization features chapter.

    -

    6.6.4 Copy constructors

    -

    If a class defines more than one constructor, its behavior depends +

    +
    +

    More information about %feature can be found in the +Customization features chapter.

    +

    6.6.4 Copy constructors

    +

    If a class defines more than one constructor, its behavior depends on the capabilities of the target language. If overloading is supported, the copy constructor is accessible using the normal - constructor function. For example, if you have this:

    -
    -
    + constructor function. For example, if you have this:

    +
    +
     class List {
     public:
    -    List();    
    -    List(const List &);      // Copy constructor
    -    ...
    +  List();    
    +  List(const List &);      // Copy constructor
    +  ...
     };
    -
    -
    -

    then the copy constructor can be used as follows:

    -
    -
    +
    +
    +

    then the copy constructor can be used as follows:

    +
    +
     x = List()               # Create a list
     y = List(x)              # Copy list x
    -
    -
    -

    If the target language does not support overloading, then the copy - constructor is available through a special function like this:

    -
    -
    +
    +
    +

    If the target language does not support overloading, then the copy + constructor is available through a special function like this:

    +
    +
     List *copy_List(List *f) {
    -    return new List(*f);
    +  return new List(*f);
     }
    -
    -
    -

    Note: For a class X, SWIG only treats a constructor - as a copy constructor if it can be applied to an object of type X - or X *. If more than one copy constructor is defined, only the +

    +
    +

    Note: For a class X, SWIG only treats a constructor + as a copy constructor if it can be applied to an object of type X + or X *. If more than one copy constructor is defined, only the first definition that appears is used as the copy constructor--other - definitions will result in a name-clash. Constructors such as -X(const X &), X(X &), and X(X *) are handled as - copy constructors in SWIG.

    -

    Note: SWIG does not generate a copy constructor + definitions will result in a name-clash. Constructors such as +X(const X &), X(X &), and X(X *) are handled as + copy constructors in SWIG.

    +

    Note: SWIG does not generate a copy constructor wrapper unless one is explicitly declared in the class. This differs from the treatment of default constructors and destructors. However, - copy constructor wrappers can be generated if using the copyctor - feature flag. For example:

    -
    -
    + copy constructor wrappers can be generated if using the copyctor
    + feature flag. For example:

    +
    +
     %copyctor List;
     
     class List {
     public:
    -    List();    
    +  List();    
     };
    -
    -
    -

    Will generate a copy constructor wrapper for List.

    -

    Compatibility note: Special support for copy constructors was +

    +
    +

    Will generate a copy constructor wrapper for List.

    +

    Compatibility note: Special support for copy constructors was not added until SWIG-1.3.12. In previous versions, copy constructors - could be wrapped, but they had to be renamed. For example:

    -
    -
    + could be wrapped, but they had to be renamed. For example:

    +
    +
     class Foo {
     public:
    -    Foo();
    +  Foo();
       %name(CopyFoo) Foo(const Foo &);
    -    ...
    +  ...
     };
    -
    -
    -

    For backwards compatibility, SWIG does not perform any special +

    +
    +

    For backwards compatibility, SWIG does not perform any special copy-constructor handling if the constructor has been manually renamed. For instance, in the above example, the name of the constructor is set - to new_CopyFoo(). This is the same as in older versions.

    -

    6.6.5 Member functions

    -

    All member functions are roughly translated into accessor functions - like this :

    -
    -
    + to new_CopyFoo(). This is the same as in older versions.

    +

    6.6.5 Member functions

    +

    All member functions are roughly translated into accessor functions + like this :

    +
    +
     int List_search(List *obj, char *value) {
       return obj->search(value);
     }
     
    -
    -
    -

    This translation is the same even if the member function has been - declared as virtual.

    -

    It should be noted that SWIG does not actually create a C +

    +
    +

    This translation is the same even if the member function has been + declared as virtual.

    +

    It should be noted that SWIG does not actually create a C accessor function in the code it generates. Instead, member access such - as obj->search(value) is directly inlined into the generated + as obj->search(value) is directly inlined into the generated wrapper functions. However, the name and calling convention of the low-level procedural wrappers match the accessor function prototype - described above.

    -

    6.6.6 Static members

    -

    Static member functions are called directly without making any - special transformations. For example, the static member function -print(List *l) directly invokes List::print(List *l) in - the generated wrapper code.

    -

    6.6.7 Member data

    -

    Member data is handled in exactly the same manner as for C + described above.

    +

    6.6.6 Static members

    +

    Static member functions are called directly without making any + special transformations. For example, the static member function +print(List *l) directly invokes List::print(List *l) in + the generated wrapper code.

    +

    6.6.7 Member data

    +

    Member data is handled in exactly the same manner as for C structures. A pair of accessor functions are effectively created. For - example :

    -
    -
    + example :

    +
    +
     int List_length_get(List *obj) {
       return obj->length;
     }
    @@ -7245,15 +7404,15 @@ int List_length_set(List *obj, int value) {
       return value;
     }
     
    -
    -
    -

    A read-only member can be created using the %immutable and -%mutable feature flag +

    +
    +

    A read-only member can be created using the %immutable and +%mutable feature flag directive. For example, we probably wouldn't want the user to change the length of a list so we could do the following to make the value - available, but read-only.

    -
    -
    + available, but read-only.

    +
    +
     class List {
     public:
     ...
    @@ -7262,12 +7421,12 @@ public:
     %mutable;
     ...
     };
    -
    -
    -

    Alternatively, you can specify an immutable member in advance like - this:

    -
    -
    +
    +
    +

    Alternatively, you can specify an immutable member in advance like + this:

    +
    +
     %immutable List::length;
     ...
     class List {
    @@ -7275,38 +7434,38 @@ class List {
       int length;         // Immutable by above directive
       ...
     };
    -
    -
    -

    Similarly, all data attributes declared as const are - wrapped as read-only members.

    -

    By default, SWIG uses the const reference typemaps for members that +

    +
    +

    Similarly, all data attributes declared as const are + wrapped as read-only members.

    +

    By default, SWIG uses the const reference typemaps for members that are primitive types. There are some subtle issues when wrapping data members that are not primitive types, such as classes. For instance, if - you had another class like this,

    -
    -
    + you had another class like this,

    +
    +
     class Foo {
     public:
    -    List items;
    -    ...
    -
    -
    -

    then the low-level accessor to the items member actually - uses pointers. For example:

    -
    -
    +  List items;
    +  ...
    +
    +
    +

    then the low-level accessor to the items member actually + uses pointers. For example:

    +
    +
     List *Foo_items_get(Foo *self) {
    -    return &self->items;
    +  return &self->items;
     }
     void Foo_items_set(Foo *self, List *value) {
    -    self->items = *value;
    +  self->items = *value;
     }
    -
    -
    -

    More information about this can be found in the SWIG Basics chapter, - Structure data members - section.

    -

    The wrapper code to generate the accessors for classes comes from +

    +
    +

    More information about this can be found in the SWIG Basics chapter, + Structure data members + section.

    +

    The wrapper code to generate the accessors for classes comes from the pointer typemaps. This can be somewhat unnatural for some types. For example, a user would expect the STL std::string class member variables to be wrapped as a string in the target language, rather than @@ -7314,22 +7473,22 @@ void Foo_items_set(Foo *self, List *value) { of marshalling, so there is a feature to tell SWIG to use the const reference typemaps rather than the pointer typemaps. It is the naturalvar feature and can be used to effectively change the way - accessors are generated to the following:

    -
    -
    + accessors are generated to the following:

    +
    +
     const List &Foo_items_get(Foo *self) {
    -    return self->items;
    +  return self->items;
     }
     void Foo_items_set(Foo *self, const List &value) {
    -    self->items = value;
    +  self->items = value;
     }
    -
    -
    -

    The %naturalvar directive is a macro for, and hence - equivalent to, %feature("naturalvar"). It can be used as - follows:

    -
    -
    +
    +
    +

    The %naturalvar directive is a macro for, and hence + equivalent to, %feature("naturalvar"). It can be used as + follows:

    +
    +
     // All List variables will use const List& typemaps
     %naturalvar List;
     
    @@ -7341,214 +7500,126 @@ struct Foo {
     
     // All non-primitive types will use const reference typemaps
     %naturalvar;
    -
    -
    -

    The observant reader will notice that %naturalvar works - like any other feature flag +

    +
    +

    The observant reader will notice that %naturalvar works + like any other feature flag directive but with some extra flexibility. The first of the example - usages above shows %naturalvar attaching to the myList -'s variable type, that is the List class. The second usage - shows %naturalvar attaching to the variable name. Hence the + usages above shows %naturalvar attaching to the myList +'s variable type, that is the List class. The second usage + shows %naturalvar attaching to the variable name. Hence the naturalvar feature can be used on either the variable's name or type. Note that using the naturalvar feature on a variable's name overrides - any naturalvar feature attached to the variable's type.

    -

    It is generally a good idea to use this feature globally as the + any naturalvar feature attached to the variable's type.

    +

    It is generally a good idea to use this feature globally as the reference typemaps have extra NULL checking compared to the pointer typemaps. A pointer can be NULL, whereas a reference cannot, so the extra checking ensures that the target language user does not pass in a value that translates to a NULL pointer and thereby preventing any - potential NULL pointer dereferences. The %naturalvar feature + potential NULL pointer dereferences. The %naturalvar feature will apply to global variables in addition to member variables in some - language modules, eg C# and Java.

    -

    The naturalvar behavior can also be turned on as a global setting - via the -naturalvar commandline option or the module mode - option, %module(naturalvar=1). However, any use of -%feature("naturalvar") will override the global setting.

    -

    Compatibility note: The %naturalvar feature was + language modules, eg C# and Java.

    +

    The naturalvar behavior can also be turned on as a global setting + via the -naturalvar commandline option or the module mode + option, %module(naturalvar=1). However, any use of +%feature("naturalvar") will override the global setting.

    +

    Compatibility note: The %naturalvar feature was introduced in SWIG-1.3.28, prior to which it was necessary to manually - apply the const reference typemaps, eg %apply const std::string & { - std::string * }, but this example would also apply the typemaps to - methods taking a std::string pointer.

    -

    Compatibility note: Read-only access used to be controlled by - a pair of directives %readonly and %readwrite. + apply the const reference typemaps, eg %apply const std::string & { + std::string * }, but this example would also apply the typemaps to + methods taking a std::string pointer.

    +

    Compatibility note: Read-only access used to be controlled by + a pair of directives %readonly and %readwrite. Although these directives still work, they generate a warning message. - Simply change the directives to %immutable; and %mutable; - to silence the warning. Don't forget the extra semicolon!

    -

    Compatibility note: Prior to SWIG-1.3.12, all members of + Simply change the directives to %immutable; and %mutable; + to silence the warning. Don't forget the extra semicolon!

    +

    Compatibility note: Prior to SWIG-1.3.12, all members of unknown type were wrapped into accessor functions using pointers. For - example, if you had a structure like this

    -
    -
    + example, if you had a structure like this

    +
    +
     struct Foo {
       size_t  len;
     };
    -
    -
    -

    and nothing was known about size_t, then accessors would be - written to work with size_t *. Starting in SWIG-1.3.12, this - behavior has been modified. Specifically, pointers will only +

    +
    +

    and nothing was known about size_t, then accessors would be + written to work with size_t *. Starting in SWIG-1.3.12, this + behavior has been modified. Specifically, pointers will only be used if SWIG knows that a datatype corresponds to a structure or class. Therefore, the above code would be wrapped into accessors - involving size_t. This change is subtle, but it smooths over a + involving size_t. This change is subtle, but it smooths over a few problems related to structure wrapping and some of SWIG's - customization features.

    -

    6.7 Default arguments

    -

    SWIG will wrap all types of functions that have default arguments. - For example member functions:

    -
    -
    -class Foo {
    -public:
    -    void bar(int x, int y = 3, int z = 4);
    -};
    -
    -
    -

    SWIG handles default arguments by generating an extra overloaded - method for each defaulted argument. SWIG is effectively handling - methods with default arguments as if it was wrapping the equivalent - overloaded methods. Thus for the example above, it is as if we had - instead given the following to SWIG:

    -
    -
    -class Foo {
    -public:
    -    void bar(int x, int y, int z);
    -    void bar(int x, int y);
    -    void bar(int x);
    -};
    -
    -
    -

    The wrappers produced are exactly the same as if the above code was - instead fed into SWIG. Details of this are covered later in the -Wrapping Overloaded Functions and Methods section. This approach - allows SWIG to wrap all possible default arguments, but can be verbose. - For example if a method has ten default arguments, then eleven wrapper - methods are generated.

    -

    Please see the -Features and default arguments section for more information on using - %feature with functions with default arguments. The -Ambiguity resolution and renaming section also deals with using -%rename and %ignore on methods with default arguments. If - you are writing your own typemaps for types used in methods with - default arguments, you may also need to write a typecheck - typemap. See the Typemaps and - overloading section for details or otherwise use the -compactdefaultargs feature flag as mentioned below.

    -

    Compatibility note: Versions of SWIG prior to SWIG-1.3.23 - wrapped default arguments slightly differently. Instead a single - wrapper method was generated and the default values were copied into - the C++ wrappers so that the method being wrapped was then called with - all the arguments specified. If the size of the wrappers are a concern - then this approach to wrapping methods with default arguments can be - re-activated by using the compactdefaultargs -feature flag.

    -
    -
    -%feature("compactdefaultargs") Foo::bar;
    -class Foo {
    -public:
    -    void bar(int x, int y = 3, int z = 4);
    -};
    -
    -
    -

    This is great for reducing the size of the wrappers, but the caveat - is it does not work for the statically typed languages, such as C# and - Java, which don't have optional arguments in the language, Another - restriction of this feature is that it cannot handle default arguments - that are not public. The following example illustrates this:

    -
    -
    -class Foo {
    -private:
    -  static const int spam;
    -public:
    -  void bar(int x, int y = spam);   // Won't work with %feature("compactdefaultargs") -
    -                                   // private default value
    -};
    -
    -
    -

    This produces uncompilable wrapper code because default values in - C++ are evaluated in the same scope as the member function whereas SWIG - evaluates them in the scope of a wrapper function (meaning that the - values have to be public).

    -

    The compactdefaultargs feature is automatically turned on - when wrapping C code with default - arguments. Some target languages will also automatically turn on - this feature if the keyword arguments feature (kwargs) is specified for - either C or C++ functions, and the target language supports kwargs, the - compactdefaultargs feature is also automatically turned on. - Keyword arguments are a language feature of some scripting languages, - for example Ruby and Python. SWIG is unable to support kwargs when - wrapping overloaded methods, so the default approach cannot be used.

    -

    6.8 Protection

    -

    SWIG wraps class members that are public following the C++ - conventions, i.e., by explicit public declaration or by the use of the -using directive. In general, anything specified in a private or + customization features.

    +

    6.7 Protection

    +

    SWIG wraps class members that are public following the C++ + conventions, i.e., by explicit public declaration or by the use of the +using directive. In general, anything specified in a private or protected section will be ignored, although the internal code generator sometimes looks at the contents of the private and protected sections so that it can properly generate code for default constructors and destructors. Directors could also modify the way non-public virtual - protected members are treated.

    -

    By default, members of a class definition are assumed to be private - until you explicitly give a `public:' declaration (This is the - same convention used by C++).

    -

    6.9 Enums and constants

    -

    Enumerations and constants are handled differently by the different + protected members are treated.

    +

    By default, members of a class definition are assumed to be private + until you explicitly give a `public:' declaration (This is the + same convention used by C++).

    +

    6.8 Enums and constants

    +

    Enumerations and constants are handled differently by the different language modules and are described in detail in the appropriate language chapter. However, many languages map enums and constants in a class definition into constants with the classname as a prefix. For - example :

    -
    -
    + example :

    +
    +
     class Swig {
     public:
       enum {ALE, LAGER, PORTER, STOUT};
     };
     
    -
    -
    -

    Generates the following set of constants in the target scripting - language :

    -
    -
    +
    +
    +

    Generates the following set of constants in the target scripting + language :

    +
    +
     Swig_ALE = Swig::ALE
     Swig_LAGER = Swig::LAGER
     Swig_PORTER = Swig::PORTER
     Swig_STOUT = Swig::STOUT
     
    -
    -
    -

    Members declared as const are wrapped as read-only members - and do not create constants.

    -

    6.10 Friends

    -

    Friend declarations are recognised by SWIG. For example, if you have - this code:

    -
    -
    +
    +
    +

    Members declared as const are wrapped as read-only members + and do not create constants.

    +

    6.9 Friends

    +

    Friend declarations are recognised by SWIG. For example, if you have + this code:

    +
    +
     class Foo {
     public:
       ...
       friend void blah(Foo *f);
       ...
     };
    -
    -
    -

    then the friend declaration does result in a wrapper code - equivalent to one generated for the following declaration

    -
    -
    +
    +
    +

    then the friend declaration does result in a wrapper code + equivalent to one generated for the following declaration

    +
    +
     class Foo {
     public:
    -    ...
    +  ...
     };
     
     void blah(Foo *f);    
    -
    -
    -

    A friend declaration, as in C++, is understood to be in the same - scope where the class is declared, hence, you can have

    -
    -
    +
    +
    +

    A friend declaration, as in C++, is understood to be in the same + scope where the class is declared, hence, you can have

    +
    +
     
     %ignore bar::blah(Foo *f);
     
    @@ -7561,171 +7632,171 @@ namespace bar {
         ...
       };
     }
    -
    -
    -

    and a wrapper for the method 'blah' will not be generated.

    -

    6.11 References and pointers

    -

    C++ references are supported, but SWIG transforms them back into - pointers. For example, a declaration like this :

    -
    -
    +
    +
    +

    and a wrapper for the method 'blah' will not be generated.

    +

    6.10 References and pointers

    +

    C++ references are supported, but SWIG transforms them back into + pointers. For example, a declaration like this :

    +
    +
     class Foo {
     public:
       double bar(double &a);
     }
    -
    -
    -

    has a low-level accessor

    -
    -
    +
    +
    +

    has a low-level accessor

    +
    +
     double Foo_bar(Foo *obj, double *a) {
       obj->bar(*a);
     }
    -
    -
    -

    As a special case, most language modules pass const - references to primitive datatypes (int, short, -float, etc.) by value instead of pointers. For example, if you have - a function like this,

    -
    -
    +
    +
    +

    As a special case, most language modules pass const + references to primitive datatypes (int, short, +float, etc.) by value instead of pointers. For example, if you have + a function like this,

    +
    +
     void foo(const int &x);
    -
    -
    -

    it is called from a script as follows:

    -
    -
    +
    +
    +

    it is called from a script as follows:

    +
    +
     foo(3)              # Notice pass by value
    -
    -
    -

    Functions that return a reference are remapped to return a pointer - instead. For example:

    -
    -
    +
    +
    +

    Functions that return a reference are remapped to return a pointer + instead. For example:

    +
    +
     class Bar {
     public:
       Foo &spam();
     };
    -
    -
    -

    Generates an accessor like this:

    -
    -
    +
    +
    +

    Generates an accessor like this:

    +
    +
     Foo *Bar_spam(Bar *obj) {
       Foo &result = obj->spam();
       return &result;
     }
    -
    -
    -

    However, functions that return const references to - primitive datatypes (int, short, etc.) normally +

    +
    +

    However, functions that return const references to + primitive datatypes (int, short, etc.) normally return the result as a value rather than a pointer. For example, a - function like this,

    -
    -
    + function like this,

    +
    +
     const int &bar();
    -
    -
    -

    will return integers such as 37 or 42 in the target scripting - language rather than a pointer to an integer.

    -

    Don't return references to objects allocated as local variables on +

    +
    +

    will return integers such as 37 or 42 in the target scripting + language rather than a pointer to an integer.

    +

    Don't return references to objects allocated as local variables on the stack. SWIG doesn't make a copy of the objects so this will - probably cause your program to crash.

    -

    Note: The special treatment for references to primitive + probably cause your program to crash.

    +

    Note: The special treatment for references to primitive datatypes is necessary to provide more seamless integration with more advanced C++ wrapping applications---especially related to templates - and the STL. This was first added in SWIG-1.3.12.

    -

    6.12 Pass and return by value

    -

    Occasionally, a C++ program will pass and return class objects by - value. For example, a function like this might appear:

    -
    -
    + and the STL. This was first added in SWIG-1.3.12.

    +

    6.11 Pass and return by value

    +

    Occasionally, a C++ program will pass and return class objects by + value. For example, a function like this might appear:

    +
    +
     Vector cross_product(Vector a, Vector b);
    -
    -
    -

    If no information is supplied about Vector, SWIG creates a - wrapper function similar to the following:

    -
    -
    +
    +
    +

    If no information is supplied about Vector, SWIG creates a + wrapper function similar to the following:

    +
    +
     Vector *wrap_cross_product(Vector *a, Vector *b) {
       Vector x = *a;
       Vector y = *b;
       Vector r = cross_product(x, y);
       return new Vector(r);
    -}
    -
    -

    In order for the wrapper code to compile, Vector must - define a copy constructor and a default constructor.

    -

    If Vector is defined as a class in the interface, but it +}

    +
    +

    In order for the wrapper code to compile, Vector must + define a copy constructor and a default constructor.

    +

    If Vector is defined as a class in the interface, but it does not support a default constructor, SWIG changes the wrapper code by encapsulating the arguments inside a special C++ template wrapper class, through a process called the "Fulton Transform". This produces a - wrapper that looks like this:

    -
    -
    + wrapper that looks like this:

    +
    +
     Vector cross_product(Vector *a, Vector *b) {
       SwigValueWrapper<Vector> x = *a;
       SwigValueWrapper<Vector> y = *b;
       SwigValueWrapper<Vector> r = cross_product(x, y);
       return new Vector(r);
     }
    -
    -
    -

    This transformation is a little sneaky, but it provides support for +

    +
    +

    This transformation is a little sneaky, but it provides support for pass-by-value even when a class does not provide a default constructor and it makes it possible to properly support a number of SWIG's - customization options. The definition of SwigValueWrapper can + customization options. The definition of SwigValueWrapper can be found by reading the SWIG wrapper code. This class is really nothing - more than a thin wrapper around a pointer.

    -

    Although SWIG usually detects the classes to which the Fulton + more than a thin wrapper around a pointer.

    +

    Although SWIG usually detects the classes to which the Fulton Transform should be applied, in some situations it's necessary to - override it. That's done with %feature("valuewrapper") to - ensure it is used and %feature("novaluewrapper") to ensure it - is not used:

    -
    -
    + override it. That's done with %feature("valuewrapper") to
    + ensure it is used and %feature("novaluewrapper") to ensure it
    + is not used:

    +
    +
     %feature("novaluewrapper") A;    
     class A;
     
     %feature("valuewrapper") B;
     struct B { 
    -    B();
    -    // ....
    +  B();
    +  // ....
     };   
    -
    -
    -

    It is well worth considering turning this feature on for classes +

    +
    +

    It is well worth considering turning this feature on for classes that do have a default constructor. It will remove a redundant constructor call at the point of the variable declaration in the wrapper, so will generate notably better performance for large objects or for classes with expensive construction. Alternatively consider - returning a reference or a pointer.

    -

    Note: this transformation has no effect on typemaps or any + returning a reference or a pointer.

    +

    Note: this transformation has no effect on typemaps or any other part of SWIG---it should be transparent except that you may see - this code when reading the SWIG output file.

    -

    Note: This template transformation is new in SWIG-1.3.11 and + this code when reading the SWIG output file.

    +

    Note: This template transformation is new in SWIG-1.3.11 and may be refined in future SWIG releases. In practice, it is only absolutely necessary to do this for classes that don't define a default - constructor.

    -

    Note: The use of this template only occurs when objects are + constructor.

    +

    Note: The use of this template only occurs when objects are passed or returned by value. It is not used for C++ pointers or - references.

    -

    6.13 Inheritance

    -

    SWIG supports C++ inheritance of classes and allows both single and + references.

    +

    6.12 Inheritance

    +

    SWIG supports C++ inheritance of classes and allows both single and multiple inheritance, as limited or allowed by the target language. The SWIG type-checker knows about the relationship between base and derived classes and allows pointers to any object of a derived class to be used in functions of a base class. The type-checker properly casts pointer - values and is safe to use with multiple inheritance.

    -

    SWIG treats private or protected inheritance as close to the C++ + values and is safe to use with multiple inheritance.

    +

    SWIG treats private or protected inheritance as close to the C++ spirit, and target language capabilities, as possible. In most cases, this means that SWIG will parse the non-public inheritance declarations, but that will have no effect in the generated code, - besides the implicit policies derived for constructors and destructors.

    -

    The following example shows how SWIG handles inheritance. For - clarity, the full C++ code has been omitted.

    -
    -
    + besides the implicit policies derived for constructors and destructors.

    +

    The following example shows how SWIG handles inheritance. For + clarity, the full C++ code has been omitted.

    +
    +
     // shapes.i
     %module shapes
     %{
    @@ -7753,12 +7824,12 @@ public:
       double area();
       double perimeter();
     }
    -
    -
    -

    When wrapped into Python, we can perform the following operations - (shown using the low level Python accessors):

    -
    -
    +
    +
    +

    When wrapped into Python, we can perform the following operations + (shown using the low level Python accessors):

    +
    +
     $ python
     >>> import shapes
     >>> circle = shapes.new_Circle(7)
    @@ -7773,51 +7844,51 @@ $ python
     >>> print shapes.Shape_perimeter(square)
     40.00000000000000000
     >>>
    -
    -
    -

    In this example, Circle and Square objects have been created. Member - functions can be invoked on each object by making calls to -Circle_area, Square_area, and so on. However, the same - results can be accomplished by simply using the Shape_area - function on either object.

    -

    One important point concerning inheritance is that the low-level +

    +
    +

    In this example, Circle and Square objects have been created. Member + functions can be invoked on each object by making calls to +Circle_area, Square_area, and so on. However, the same + results can be accomplished by simply using the Shape_area + function on either object.

    +

    One important point concerning inheritance is that the low-level accessor functions are only generated for classes in which they are - actually declared. For instance, in the above example, the method -set_location() is only accessible as Shape_set_location() - and not as Circle_set_location() or Square_set_location() -. Of course, the Shape_set_location() function will accept any + actually declared. For instance, in the above example, the method +set_location() is only accessible as Shape_set_location() + and not as Circle_set_location() or Square_set_location() +. Of course, the Shape_set_location() function will accept any kind of object derived from Shape. Similarly, accessor functions for - the attributes x and y are generated as -Shape_x_get(), Shape_x_set(), Shape_y_get(), and -Shape_y_set(). Functions such as Circle_x_get() are not - available--instead you should use Shape_x_get().

    -

    Note that there is a one to one correlation between the low-level + the attributes x and y are generated as +Shape_x_get(), Shape_x_set(), Shape_y_get(), and +Shape_y_set(). Functions such as Circle_x_get() are not + available--instead you should use Shape_x_get().

    +

    Note that there is a one to one correlation between the low-level accessor functions and the proxy methods and therefore there is also a one to one correlation between the C++ class methods and the generated - proxy class methods.

    -

    Note: For the best results, SWIG requires all base classes to + proxy class methods.

    +

    Note: For the best results, SWIG requires all base classes to be defined in an interface. Otherwise, you may get a warning message - like this:

    -
    -
    + like this:

    +
    +
     example.i:18: Warning 401: Nothing known about base class 'Foo'. Ignored.
    -
    -
    -

    If any base class is undefined, SWIG still generates correct type - relationships. For instance, a function accepting a Foo * will - accept any object derived from Foo regardless of whether or - not SWIG actually wrapped the Foo class. If you really don't +

    +
    +

    If any base class is undefined, SWIG still generates correct type + relationships. For instance, a function accepting a Foo * will + accept any object derived from Foo regardless of whether or + not SWIG actually wrapped the Foo class. If you really don't want to generate wrappers for the base class, but you want to silence - the warning, you might consider using the %import directive to - include the file that defines Foo. %import simply + the warning, you might consider using the %import directive to + include the file that defines Foo. %import simply gathers type information, but doesn't generate wrappers. Alternatively, - you could just define Foo as an empty class in the SWIG - interface or use warning suppression -.

    -

    Note: typedef-names can be used as base - classes. For example:

    -
    -
    + you could just define Foo as an empty class in the SWIG
    + interface or use warning suppression
    +.

    +

    Note: typedef-names can be used as base + classes. For example:

    +
    +
     class Foo {
     ...
     };
    @@ -7826,12 +7897,12 @@ typedef Foo FooObj;
     class Bar : public FooObj {     // Ok.  Base class is Foo
     ...
     };
    -
    -
    -

    Similarly, typedef allows unnamed structures to be used as - base classes. For example:

    -
    -
    +
    +
    +

    Similarly, typedef allows unnamed structures to be used as + base classes. For example:

    +
    +
     typedef struct {
       ...
     } Foo;
    @@ -7839,48 +7910,48 @@ typedef struct {
     class Bar : public Foo {    // Ok. 
     ...
     };
    -
    -
    -

    Compatibility Note: Starting in version 1.3.7, SWIG only +

    +
    +

    Compatibility Note: Starting in version 1.3.7, SWIG only generates low-level accessor wrappers for the declarations that are actually defined in each class. This differs from SWIG1.1 which used to inherit all of the declarations defined in base classes and regenerate - specialized accessor functions such as Circle_x_get(), -Square_x_get(), Circle_set_location(), and -Square_set_location(). This behavior resulted in huge amounts of + specialized accessor functions such as Circle_x_get(), +Square_x_get(), Circle_set_location(), and +Square_set_location(). This behavior resulted in huge amounts of replicated code for large class hierarchies and made it awkward to build applications spread across multiple modules (since accessor functions are duplicated in every single module). It is also unnecessary to have such wrappers when advanced features like proxy - classes are used. Note: Further optimizations are enabled when - using the -fvirtual option, which avoids the regenerating of + classes are used. Note: Further optimizations are enabled when + using the -fvirtual option, which avoids the regenerating of wrapper functions for virtual members that are already defined in a - base class.

    -

    6.14 A brief discussion of multiple - inheritance, pointers, and type checking

    -

    When a target scripting language refers to a C++ object, it normally + base class.

    +

    6.13 A brief discussion of multiple + inheritance, pointers, and type checking

    +

    When a target scripting language refers to a C++ object, it normally uses a tagged pointer object that contains both the value of the pointer and a type string. For example, in Tcl, a C++ pointer might be - encoded as a string like this:

    -
    -
    + encoded as a string like this:

    +
    +
     _808fea88_p_Circle
    -
    -
    -

    A somewhat common question is whether or not the type-tag could be +

    +
    +

    A somewhat common question is whether or not the type-tag could be safely removed from the pointer. For instance, to get better performance, could you strip all type tags and just use simple integers - instead?

    -

    In general, the answer to this question is no. In the wrappers, all + instead?

    +

    In general, the answer to this question is no. In the wrappers, all pointers are converted into a common data representation in the target - language. Typically this is the equivalent of casting a pointer to -void *. This means that any C++ type information associated with - the pointer is lost in the conversion.

    -

    The problem with losing type information is that it is needed to + language. Typically this is the equivalent of casting a pointer to +void *. This means that any C++ type information associated with + the pointer is lost in the conversion.

    +

    The problem with losing type information is that it is needed to properly support many advanced C++ features--especially multiple - inheritance. For example, suppose you had code like this:

    -
    -
    + inheritance. For example, suppose you had code like this:

    +
    +
     class A {
     public:
       int x;
    @@ -7901,51 +7972,51 @@ int A_function(A *a) {
     int B_function(B *b) {
       return b->y;
     }
    -
    -
    -

    Now, consider the following code that uses void *.

    -
    -
    +
    +
    +

    Now, consider the following code that uses void *.

    +
    +
     C *c = new C();
     void *p = (void *) c;
     ...
     int x = A_function((A *) p);
     int y = B_function((B *) p);
    -
    -
    -

    In this code, both A_function() and B_function() - may legally accept an object of type C * (via inheritance). +

    +
    +

    In this code, both A_function() and B_function() + may legally accept an object of type C * (via inheritance). However, one of the functions will always return the wrong result when - used as shown. The reason for this is that even though p - points to an object of type C, the casting operation doesn't + used as shown. The reason for this is that even though p + points to an object of type C, the casting operation doesn't work like you would expect. Internally, this has to do with the data - representation of C. With multiple inheritance, the data from - each base class is stacked together. For example:

    -
    -
    + representation of C. With multiple inheritance, the data from
    + each base class is stacked together. For example:

    +
    +
                  ------------    <--- (C *),  (A *)
                 |     A      |
                 |------------|   <--- (B *)
                 |     B      |
                  ------------   
    -
    -
    -

    Because of this stacking, a pointer of type C * may change - value when it is converted to a A * or B *. However, - this adjustment does not occur if you are converting from a -void *.

    -

    The use of type tags marks all pointers with the real type of the +

    +
    +

    Because of this stacking, a pointer of type C * may change + value when it is converted to a A * or B *. However, + this adjustment does not occur if you are converting from a +void *.

    +

    The use of type tags marks all pointers with the real type of the underlying object. This extra information is then used by SWIG generated wrappers to correctly cast pointer values under inheritance - (avoiding the above problem).

    -

    Some of the language modules are able to solve the problem by - storing multiple instances of the pointer, for example, A *, - in the A proxy class as well as C * in the C proxy class. The - correct cast can then be made by choosing the correct void * + (avoiding the above problem).

    +

    Some of the language modules are able to solve the problem by + storing multiple instances of the pointer, for example, A *, + in the A proxy class as well as C * in the C proxy class. The + correct cast can then be made by choosing the correct void * pointer to use and is guaranteed to work as the cast to a void pointer - and back to the same type does not lose any type information:

    -
    -
    + and back to the same type does not lose any type information:

    +
    +
     C *c = new C();
     void *p = (void *) c;
     void *pA = (void *) c;
    @@ -7953,39 +8024,127 @@ void *pB = (void *) c;
     ...
     int x = A_function((A *) pA);
     int y = B_function((B *) pB);
    -
    -
    -

    In practice, the pointer is held as an integral number in the target - language proxy class.

    -

    6.15 Wrapping Overloaded - Functions and Methods

    -

    In many language modules, SWIG provides partial support for +

    +
    +

    In practice, the pointer is held as an integral number in the target + language proxy class.

    +

    6.14 Default arguments

    +

    SWIG will wrap all types of functions that have default arguments. + For example member functions:

    +
    +
    +class Foo {
    +public:
    +  void bar(int x, int y = 3, int z = 4);
    +};
    +
    +
    +

    SWIG handles default arguments by generating an extra overloaded + method for each defaulted argument. SWIG is effectively handling + methods with default arguments as if it was wrapping the equivalent + overloaded methods. Thus for the example above, it is as if we had + instead given the following to SWIG:

    +
    +
    +class Foo {
    +public:
    +  void bar(int x, int y, int z);
    +  void bar(int x, int y);
    +  void bar(int x);
    +};
    +
    +
    +

    The wrappers produced are exactly the same as if the above code was + instead fed into SWIG. Details of this are covered in the next section Overloaded functions and methods +. This approach allows SWIG to wrap all possible default arguments, but + can be verbose. For example if a method has ten default arguments, then + eleven wrapper methods are generated.

    +

    Please see the +Features and default arguments section for more information on using + %feature with functions with default arguments. The +Renaming and ambiguity resolution section also deals with using +%rename and %ignore on methods with default arguments. If + you are writing your own typemaps for types used in methods with + default arguments, you may also need to write a typecheck + typemap. See the Typemaps and + overloading section for details or otherwise use the +compactdefaultargs feature flag as mentioned below.

    +

    Compatibility note: Versions of SWIG prior to SWIG-1.3.23 + wrapped default arguments slightly differently. Instead a single + wrapper method was generated and the default values were copied into + the C++ wrappers so that the method being wrapped was then called with + all the arguments specified. If the size of the wrappers are a concern + then this approach to wrapping methods with default arguments can be + re-activated by using the compactdefaultargs +feature flag.

    +
    +
    +%feature("compactdefaultargs") Foo::bar;
    +class Foo {
    +public:
    +  void bar(int x, int y = 3, int z = 4);
    +};
    +
    +
    +

    This is great for reducing the size of the wrappers, but the caveat + is it does not work for the statically typed languages, such as C# and + Java, which don't have optional arguments in the language, Another + restriction of this feature is that it cannot handle default arguments + that are not public. The following example illustrates this:

    +
    +
    +class Foo {
    +private:
    +  static const int spam;
    +public:
    +  void bar(int x, int y = spam);   // Won't work with %feature("compactdefaultargs") -
    +                                   // private default value
    +};
    +
    +
    +

    This produces uncompilable wrapper code because default values in + C++ are evaluated in the same scope as the member function whereas SWIG + evaluates them in the scope of a wrapper function (meaning that the + values have to be public).

    +

    The compactdefaultargs feature is automatically turned on + when wrapping C code with default + arguments. Some target languages will also automatically turn on + this feature if the keyword arguments feature (kwargs) is specified for + either C or C++ functions, and the target language supports kwargs, the + compactdefaultargs feature is also automatically turned on. + Keyword arguments are a language feature of some scripting languages, + for example Ruby and Python. SWIG is unable to support kwargs when + wrapping overloaded methods, so the default approach cannot be used.

    +

    6.15 Overloaded functions and + methods

    +

    In many language modules, SWIG provides partial support for overloaded functions, methods, and constructors. For example, if you - supply SWIG with overloaded functions like this:

    -
    -
    + supply SWIG with overloaded functions like this:

    +
    +
     void foo(int x) {
       printf("x is %d\n", x);
     }
     void foo(char *x) {
       printf("x is '%s'\n", x);
     }
    -
    -
    -

    The function is used in a completely natural way. For example:

    -
    -
    +
    +
    +

    The function is used in a completely natural way. For example:

    +
    +
     >>> foo(3)
     x is 3
     >>> foo("hello")
     x is 'hello'
     >>>
    -
    -
    -

    Overloading works in a similar manner for methods and constructors. - For example if you have this code,

    -
    -
    +
    +
    +

    Overloading works in a similar manner for methods and constructors. + For example if you have this code,

    +
    +
     class Foo {
     public:
       Foo();
    @@ -7993,48 +8152,48 @@ public:
       void bar(int x);
       void bar(char *s, int y);
     };
    -
    -
    -

    it might be used like this

    -
    -
    +
    +
    +

    it might be used like this

    +
    +
     >>> f = Foo()          # Create a Foo
     >>> f.bar(3)
     >>> g = Foo(f)         # Copy Foo
     >>> f.bar("hello", 2)
    -
    -
    -

    6.15.1 Dispatch function generation

    -

    The implementation of overloaded functions and methods is somewhat +

    +
    +

    6.15.1 Dispatch function generation

    +

    The implementation of overloaded functions and methods is somewhat complicated due to the dynamic nature of scripting languages. Unlike C++, which binds overloaded methods at compile time, SWIG must determine the proper function as a runtime check for scripting language targets. This check is further complicated by the typeless nature of certain scripting languages. For instance, in Tcl, all types are simply - strings. Therefore, if you have two overloaded functions like this,

    -
    -
    + strings. Therefore, if you have two overloaded functions like this,

    +
    +
     void foo(char *x);
     void foo(int x);
    -
    -
    -

    the order in which the arguments are checked plays a rather critical - role.

    -

    For statically typed languages, SWIG uses the language's method +

    +
    +

    the order in which the arguments are checked plays a rather critical + role.

    +

    For statically typed languages, SWIG uses the language's method overloading mechanism. To implement overloading for the scripting languages, SWIG generates a dispatch function that checks the number of passed arguments and their types. To create this function, SWIG first examines all of the overloaded methods and ranks them according to the - following rules:

    -
      -
    1. Number of required arguments. Methods are sorted by - increasing number of required arguments.
    2. -
    3. -

      Argument type precedence. All C++ datatypes are assigned a + following rules:

      +
        +
      1. Number of required arguments. Methods are sorted by + increasing number of required arguments.
      2. +
      3. +

        Argument type precedence. All C++ datatypes are assigned a numeric type precedence value (which is determined by the language - module).

        -
        -
        + module).

        +
        +
         Type              Precedence
         ----------------  ----------
         TYPE *            0     (High)
        @@ -8043,17 +8202,17 @@ Integers          40
         Floating point    60
         char              80
         Strings           100   (Low)
        -
        -
        -

        Using these precedence values, overloaded methods with the same +

        +
        +

        Using these precedence values, overloaded methods with the same number of required arguments are sorted in increased order of - precedence values.

        -
      4. -
      -

      This may sound very confusing, but an example will help. Consider - the following collection of overloaded methods:

      -
      -
      + precedence values.

      +
    4. +
    +

    This may sound very confusing, but an example will help. Consider + the following collection of overloaded methods:

    +
    +
     void foo(double);
     void foo(int);
     void foo(Bar *);
    @@ -8062,12 +8221,12 @@ void foo(int x, int y, int z, int w);
     void foo(int x, int y, int z = 3);
     void foo(double x, double y);
     void foo(double x, Bar *z);
    -
    -
    -

    The first rule simply ranks the functions by required argument - count. This would produce the following list:

    -
    -
    +
    +
    +

    The first rule simply ranks the functions by required argument + count. This would produce the following list:

    +
    +
     rank
     -----
     [0]   foo()
    @@ -8078,12 +8237,12 @@ rank
     [5]   foo(double x, double y)
     [6]   foo(double x, Bar *z)
     [7]   foo(int x, int y, int z, int w);
    -
    -
    -

    The second rule, simply refines the ranking by looking at argument - type precedence values.

    -
    -
    +
    +
    +

    The second rule, simply refines the ranking by looking at argument + type precedence values.

    +
    +
     rank
     -----
     [0]   foo()
    @@ -8094,127 +8253,127 @@ rank
     [5]   foo(double x, Bar *z)
     [6]   foo(double x, double y)
     [7]   foo(int x, int y, int z, int w);
    -
    -
    -

    Finally, to generate the dispatch function, the arguments passed to + + +

    Finally, to generate the dispatch function, the arguments passed to an overloaded method are simply checked in the same order as they - appear in this ranking.

    -

    If you're still confused, don't worry about it---SWIG is probably - doing the right thing.

    -

    6.15.2 Ambiguity in Overloading

    -

    Regrettably, SWIG is not able to support every possible use of valid - C++ overloading. Consider the following example:

    -
    -
    + appear in this ranking.

    +

    If you're still confused, don't worry about it---SWIG is probably + doing the right thing.

    +

    6.15.2 Ambiguity in overloading

    +

    Regrettably, SWIG is not able to support every possible use of valid + C++ overloading. Consider the following example:

    +
    +
     void foo(int x);
     void foo(long x);
    -
    -
    -

    In C++, this is perfectly legal. However, in a scripting language, +

    +
    +

    In C++, this is perfectly legal. However, in a scripting language, there is generally only one kind of integer object. Therefore, which one of these functions do you pick? Clearly, there is no way to truly - make a distinction just by looking at the value of the integer itself ( -int and long may even be the same precision). Therefore, + make a distinction just by looking at the value of the integer itself ( +int and long may even be the same precision). Therefore, when SWIG encounters this situation, it may generate a warning message - like this for scripting languages:

    -
    -
    + like this for scripting languages:

    +
    +
     example.i:4: Warning 509: Overloaded method foo(long) effectively ignored,
     example.i:3: Warning 509: as it is shadowed by foo(int).
    -
    -
    -

    or for statically typed languages like Java:

    -
    -
    +
    +
    +

    or for statically typed languages like Java:

    +
    +
     example.i:4: Warning 516: Overloaded method foo(long) ignored,
     example.i:3: Warning 516: using foo(int) instead.
     at example.i:3 used.
    -
    -
    -

    This means that the second overloaded function will be inaccessible +

    +
    +

    This means that the second overloaded function will be inaccessible from a scripting interface or the method won't be wrapped at all. This is done as SWIG does not know how to disambiguate it from an earlier - method.

    -

    Ambiguity problems are known to arise in the following situations:

    -
      -
    • Integer conversions. Datatypes such as int, long, - and short cannot be disambiguated in some languages. Shown - above.
    • -
    • Floating point conversion. float and double can - not be disambiguated in some languages.
    • -
    • Pointers and references. For example, Foo * and Foo & -.
    • -
    • Pointers and arrays. For example, Foo * and Foo [4] -.
    • -
    • Pointers and instances. For example, Foo and Foo * -. Note: SWIG converts all instances to pointers.
    • -
    • Qualifiers. For example, const Foo * and Foo *.
    • -
    • Default vs. non default arguments. For example, foo(int a, int - b) and foo(int a, int b = 3).
    • -
    -

    When an ambiguity arises, methods are checked in the same order as + method.

    +

    Ambiguity problems are known to arise in the following situations:

    +
      +
    • Integer conversions. Datatypes such as int, long, + and short cannot be disambiguated in some languages. Shown + above.
    • +
    • Floating point conversion. float and double can + not be disambiguated in some languages.
    • +
    • Pointers and references. For example, Foo * and Foo & +.
    • +
    • Pointers and arrays. For example, Foo * and Foo [4] +.
    • +
    • Pointers and instances. For example, Foo and Foo * +. Note: SWIG converts all instances to pointers.
    • +
    • Qualifiers. For example, const Foo * and Foo *.
    • +
    • Default vs. non default arguments. For example, foo(int a, int + b) and foo(int a, int b = 3).
    • +
    +

    When an ambiguity arises, methods are checked in the same order as they appear in the interface file. Therefore, earlier methods will - shadow methods that appear later.

    -

    When wrapping an overloaded function, there is a chance that you - will get a warning message like this:

    -
    -
    + shadow methods that appear later.

    +

    When wrapping an overloaded function, there is a chance that you + will get a warning message like this:

    +
    +
     example.i:3: Warning 467: Overloaded foo(int) not supported (incomplete type checking rule - 
     no precedence level in typecheck typemap for 'int').
    -
    -
    -

    This error means that the target language module supports +

    +
    +

    This error means that the target language module supports overloading, but for some reason there is no type-checking rule that can be used to generate a working dispatch function. The resulting - behavior is then undefined. You should report this as a bug to the -SWIG bug tracking database if this is due to one of the typemaps - supplied with SWIG.

    -

    If you get an error message such as the following,

    -
    -
    + behavior is then undefined. You should report this as a bug to the 
    +SWIG bug tracking database if this is due to one of the typemaps
    + supplied with SWIG.

    +

    If you get an error message such as the following,

    +
    +
     foo.i:6. Overloaded declaration ignored.  Spam::foo(double )
     foo.i:5. Previous declaration is Spam::foo(int )
     foo.i:7. Overloaded declaration ignored.  Spam::foo(Bar *, Spam *, int )
     foo.i:5. Previous declaration is Spam::foo(int )
    -
    -
    -

    it means that the target language module has not yet implemented +

    +
    +

    it means that the target language module has not yet implemented support for overloaded functions and methods. The only way to fix the - problem is to read the next section.

    -

    6.15.3 Ambiguity - resolution and renaming

    -

    If an ambiguity in overload resolution occurs or if a module doesn't + problem is to read the next section.

    +

    6.15.3 Renaming and + ambiguity resolution

    +

    If an ambiguity in overload resolution occurs or if a module doesn't allow overloading, there are a few strategies for dealing with the problem. First, you can tell SWIG to ignore one of the methods. This is - easy---simply use the %ignore directive. For example:

    -
    -
    + easy---simply use the %ignore directive. For example:

    +
    +
     %ignore foo(long);
     
     void foo(int);
     void foo(long);       // Ignored.  Oh well.
    -
    -
    -

    The other alternative is to rename one of the methods. This can be - done using %rename. For example:

    -
    -
    +
    +
    +

    The other alternative is to rename one of the methods. This can be + done using %rename. For example:

    +
    +
     %rename("foo_short") foo(short);
     %rename(foo_long) foo(long);
     
     void foo(int);
     void foo(short);      // Accessed as foo_short()
     void foo(long);       // Accessed as foo_long()
    -
    -
    -

    Note that the quotes around the new name are optional, however, +

    +
    +

    Note that the quotes around the new name are optional, however, should the new name be a C/C++ keyword they would be essential in order - to avoid a parsing error. The %ignore and %rename + to avoid a parsing error. The %ignore and %rename directives are both rather powerful in their ability to match declarations. When used in their simple form, they apply to both global - functions and methods. For example:

    -
    -
    + functions and methods. For example:

    +
    +
     /* Forward renaming declarations */
     %rename(foo_i) foo(int); 
     %rename(foo_d) foo(double);
    @@ -8228,24 +8387,24 @@ public:
       void foo(double);   // Becomes 'foo_d'
       ...
     };
    -
    -
    -

    If you only want the renaming to apply to a certain scope, the C++ - scope resolution operator (::) can be used. For example:

    -
    -
    +
    +
    +

    If you only want the renaming to apply to a certain scope, the C++ + scope resolution operator (::) can be used. For example:

    +
    +
     %rename(foo_i) ::foo(int);      // Only rename foo(int) in the global scope.
                                     // (will not rename class members)
     
     %rename(foo_i) Spam::foo(int);  // Only rename foo(int) in class Spam
    -
    -
    -

    When a renaming operator is applied to a class as in -Spam::foo(int), it is applied to that class and all derived +

    +
    +

    When a renaming operator is applied to a class as in +Spam::foo(int), it is applied to that class and all derived classes. This can be used to apply a consistent renaming across an - entire class hierarchy with only a few declarations. For example:

    -
    -
    + entire class hierarchy with only a few declarations. For example:

    +
    +
     %rename(foo_i) Spam::foo(int);
     %rename(foo_d) Spam::foo(double);
     
    @@ -8269,12 +8428,12 @@ public:
       virtual void foo(double);   // Renamed to foo_d
       ...
     };
    -
    -
    -

    It is also possible to include %rename specifications in - the class definition itself. For example:

    -
    -
    +
    +
    +

    It is also possible to include %rename specifications in + the class definition itself. For example:

    +
    +
     class Spam {
       %rename(foo_i) foo(int);
       %rename(foo_d) foo(double);
    @@ -8290,45 +8449,45 @@ public:
       virtual void foo(double);   // Renamed to foo_d
     ...
     };
    -
    -
    -

    In this case, the %rename directives still get applied +

    +
    +

    In this case, the %rename directives still get applied across the entire inheritance hierarchy, but it's no longer necessary - to explicitly specify the class prefix Spam::.

    -

    A special form of %rename can be used to apply a renaming - just to class members (of all classes):

    -
    -
    + to explicitly specify the class prefix Spam::.

    +

    A special form of %rename can be used to apply a renaming + just to class members (of all classes):

    +
    +
     %rename(foo_i) *::foo(int);   // Only rename foo(int) if it appears in a class.
    -
    -
    -

    Note: the *:: syntax is non-standard C++, but the '*' is +

    +
    +

    Note: the *:: syntax is non-standard C++, but the '*' is meant to be a wildcard that matches any class name (we couldn't think of a better alternative so if you have a better idea, send email to the - swig-devel mailing list.

    -

    Although this discussion has primarily focused on %rename - all of the same rules also apply to %ignore. For example:

    -
    -
    + swig-devel mailing list.

    +

    Although this discussion has primarily focused on %rename + all of the same rules also apply to %ignore. For example:

    +
    +
     %ignore foo(double);          // Ignore all foo(double)
     %ignore Spam::foo;            // Ignore foo in class Spam
     %ignore Spam::foo(double);    // Ignore foo(double) in class Spam
     %ignore *::foo(double);       // Ignore foo(double) in all classes
    -
    -
    -

    When applied to a base class, %ignore forces all - definitions in derived classes to disappear. For example, %ignore - Spam::foo(double) will eliminate foo(double) in Spam - and all classes derived from Spam.

    -

    Notes on %rename and %ignore:

    -
      -
    • -

      Since, the %rename declaration is used to declare a renaming +

    +
    +

    When applied to a base class, %ignore forces all + definitions in derived classes to disappear. For example, %ignore + Spam::foo(double) will eliminate foo(double) in Spam + and all classes derived from Spam.

    +

    Notes on %rename and %ignore:

    +
      +
    • +

      Since, the %rename declaration is used to declare a renaming in advance, it can be placed at the start of an interface file. This makes it possible to apply a consistent name resolution without having - to modify header files. For example:

      -
      -
      + to modify header files. For example:

      +
      +
       %module foo
       
       /* Rename these overloaded functions */
      @@ -8336,88 +8495,106 @@ public:
       %rename(foo_d) foo(double);
       
       %include "header.h"
      -
      -
    • -
    • -

      The scope qualifier (::) can also be used on simple names. For - example:

      -
      -
      +
      +
    • +
    • +

      The scope qualifier (::) can also be used on simple names. For + example:

      +
      +
       %rename(bar) ::foo;       // Rename foo to bar in global scope only
       %rename(bar) Spam::foo;   // Rename foo to bar in class Spam only
       %rename(bar) *::foo;      // Rename foo in classes only
      -
      -
    • -
    • -

      Name matching tries to find the most specific match that is defined. - A qualified name such as Spam::foo always has higher - precedence than an unqualified name foo. Spam::foo - has higher precedence than *::foo and *::foo has - higher precedence than foo. A parameterized name has higher + +

    • +
    • +

      Name matching tries to find the most specific match that is defined. + A qualified name such as Spam::foo always has higher + precedence than an unqualified name foo. Spam::foo + has higher precedence than *::foo and *::foo has + higher precedence than foo. A parameterized name has higher precedence than an unparameterized name within the same scope level. However, an unparameterized name with a scope qualifier has higher precedence than a parameterized name in global scope (e.g., a renaming - of Spam::foo takes precedence over a renaming of foo(int) -).

      -
    • -
    • -

      The order in which %rename directives are defined does not + of Spam::foo takes precedence over a renaming of foo(int) +).

      +
    • +
    • +

      The order in which %rename directives are defined does not matter as long as they appear before the declarations to be renamed. - Thus, there is no difference between saying:

      -
      -
      + Thus, there is no difference between saying:

      +
      +
       %rename(bar) foo;
       %rename(foo_i) Spam::foo(int);
       %rename(Foo) Spam::foo;
      -
      -
      -

      and this

      -
      -
      +
      +
      +

      and this

      +
      +
       %rename(Foo) Spam::foo;
       %rename(bar) foo;
       %rename(foo_i) Spam::foo(int);
      -
      -
      -

      (the declarations are not stored in a linked list and order has no - importance). Of course, a repeated %rename directive will - change the setting for a previous %rename directive if exactly - the same name, scope, and parameters are supplied.

      -
    • -
    • For multiple inheritance where renaming rules are defined for + + +

      (the declarations are not stored in a linked list and order has no + importance). Of course, a repeated %rename directive will + change the setting for a previous %rename directive if exactly + the same name, scope, and parameters are supplied.

      +
    • +
    • For multiple inheritance where renaming rules are defined for multiple base classes, the first renaming rule found on a depth-first - traversal of the class hierarchy is used.
    • -
    • -

      The name matching rules strictly follow member qualification rules. - For example, if you have a class like this:

      -
      -
      + traversal of the class hierarchy is used.
    • +
    • +

      The name matching rules strictly follow member qualifier rules. For + example, if you have a class and member with a member that is const + qualified like this:

      +
      +
       class Spam {
       public:
         ...
         void bar() const;
         ...
       };
      -
      -
      -

      the declaration

      -
      -
      +
      +
      +

      the declaration

      +
      +
       %rename(name) Spam::bar();
      -
      -
      -

      will not apply as there is no unqualified member bar(). The - following will apply as the qualifier matches correctly:

      -
      -
      +
      +
      +

      will not apply as there is no unqualified member bar(). The + following will apply the rename as the qualifier matches correctly:

      +
      +
       %rename(name) Spam::bar() const;
      -
      -
      -

      An often overlooked C++ feature is that classes can define two + + +

      Similarly for combinations of cv-qualifiers and ref-qualifiers, all + the qualifiers must be specified to match correctly:

      +
      +
      +%rename(name) Jam::bar();          // will not match
      +%rename(name) Jam::bar() &;        // will not match
      +%rename(name) Jam::bar() const;    // will not match
      +%rename(name) Jam::bar() const &;  // ok, will match
      +
      +class Jam {
      +public:
      +  ...
      +  void bar() const &;
      +  ...
      +};
      +
      +
      +

      An often overlooked C++ feature is that classes can define two different overloaded members that differ only in their qualifiers, like - this:

      -
      -
      + this:

      +
      +
       class Spam {
       public:
         ...
      @@ -8425,33 +8602,33 @@ public:
         void bar() const;   // Qualified member
         ...
       };
      -
      -
      -

      %rename can then be used to target each of the overloaded methods +

      +
      +

      %rename can then be used to target each of the overloaded methods individually. For example we can give them separate names in the target - language:

      -
      -
      + language:

      +
      +
       %rename(name1) Spam::bar();
       %rename(name2) Spam::bar() const;
      -
      -
      -

      Similarly, if you merely wanted to ignore one of the declarations, - use %ignore with the full qualification. For example, the - following directive would tell SWIG to ignore the const - version of bar() above:

      -
      -
      +
      +
      +

      Similarly, if you merely wanted to ignore one of the declarations, + use %ignore with the full qualifier. For example, the + following directive would tell SWIG to ignore the const + version of bar() above:

      +
      +
       %ignore Spam::bar() const;   // Ignore bar() const, but leave other bar() alone
      -
      -
    • -
    • -

      Currently no resolution is performed in order to match function + +

    • +
    • +

      Currently no resolution is performed in order to match function parameters. This means function parameter types must match exactly. For example, namespace qualifiers and typedefs will not work. The following - usage of typedefs demonstrates this:

      -
      -
      + usage of typedefs demonstrates this:

      +
      +
       typedef int Integer;
       
       %rename(foo_i) foo(int);
      @@ -8464,79 +8641,86 @@ class Ham {
       public:
         void foo(int);      // Renamed to foo_i
       };
      -
      -
    • -
    • -

      The name matching rules also use default arguments for finer control + +

    • +
    • +

      The name matching rules also use default arguments for finer control when wrapping methods that have default arguments. Recall that methods with default arguments are wrapped as if the equivalent overloaded - methods had been parsed (Default - arguments section). Let's consider the following example class:

      -
      -
      + methods had been parsed (Default
      + arguments section). Let's consider the following example class:

      +
      +
       class Spam {
       public:
         ...
         void bar(int i=-1, double d=0.0);
         ...
       };
      -
      -
      -

      The following %rename will match exactly and apply to all +

      +
      +

      The following %rename will match exactly and apply to all the target language overloaded methods because the declaration with the - default arguments exactly matches the wrapped method:

      -
      -
      + default arguments exactly matches the wrapped method:

      +
      +
       %rename(newbar) Spam::bar(int i=-1, double d=0.0);
      -
      -
      -

      The C++ method can then be called from the target language with the - new name no matter how many arguments are specified, for example: -newbar(2, 2.0), newbar(2) or newbar(). However, - if the %rename does not contain the default arguments, it will - only apply to the single equivalent target language overloaded method. - So if instead we have:

      -
      -
      +
      +
      +

      The C++ method can then be called from the target language with the + new name no matter how many arguments are specified, for example: +newbar(2, 2.0), newbar(2) or newbar(). However, + if the %rename does not contain the default arguments:

      +
      +
       %rename(newbar) Spam::bar(int i, double d);
      -
      -
      -

      The C++ method must then be called from the target language with the - new name newbar(2, 2.0) when both arguments are supplied or - with the original name as bar(2) (one argument) or bar() - (no arguments). In fact it is possible to use %rename on the - equivalent overloaded methods, to rename all the equivalent overloaded - methods:

      -
      -
      +
      +
      +

      then only one of the three equivalent overloaded methods will be + renamed and wrapped as if SWIG parsed:

      +
      +
      +void Spam::newbar(int i, double d);
      +void Spam::bar(int i);
      +void Spam::bar();
      +
      +
      +

      The C++ method must then be called from the target language with the + new name newbar(2, 2.0) when both arguments are supplied or + with the original name as bar(2) (one argument) or bar() + (no arguments).

      +

      In fact it is possible to use %rename on the equivalent + overloaded methods, to rename all the equivalent overloaded methods:

      +
      +
       %rename(bar_2args)   Spam::bar(int i, double d);
       %rename(bar_1arg)    Spam::bar(int i);
       %rename(bar_default) Spam::bar();
      -
      -
      -

      Similarly, the extra overloaded methods can be selectively ignored - using %ignore.

      -

      Compatibility note: The %rename directive introduced +

      +
      +

      Similarly, the extra overloaded methods can be selectively ignored + using %ignore.

      +

      Compatibility note: The %rename directive introduced the default argument matching rules in SWIG-1.3.23 at the same time as - the changes to wrapping methods with default arguments was introduced.

      -
    • -
    -

    6.15.4 Comments on overloading

    -

    Support for overloaded methods was first added in SWIG-1.3.14. The + the changes to wrapping methods with default arguments was introduced.

    +
  • + +

    6.15.4 Comments on overloading

    +

    Support for overloaded methods was first added in SWIG-1.3.14. The implementation is somewhat unusual when compared to similar tools. For instance, the order in which declarations appear is largely irrelevant in SWIG. Furthermore, SWIG does not rely upon trial execution or - exception handling to figure out which method to invoke.

    -

    Internally, the overloading mechanism is completely configurable by + exception handling to figure out which method to invoke.

    +

    Internally, the overloading mechanism is completely configurable by the target language module. Therefore, the degree of overloading support may vary from language to language. As a general rule, statically typed languages like Java are able to provide more support - than dynamically typed languages like Perl, Python, Ruby, and Tcl.

    -

    6.16 Wrapping overloaded operators

    -

    C++ overloaded operator declarations can be wrapped. For example, - consider a class like this:

    -
    -
    + than dynamically typed languages like Perl, Python, Ruby, and Tcl.

    +

    6.16 Overloaded operators

    +

    C++ overloaded operator declarations can be wrapped. For example, + consider a class like this:

    +
    +
     class Complex {
     private:
       double rpart, ipart;
    @@ -8564,136 +8748,136 @@ public:
       double re() const { return rpart; }
       double im() const { return ipart; }
     };
    -
    -
    -

    When operator declarations appear, they are handled in exactly +

    +
    +

    When operator declarations appear, they are handled in exactly the same manner as regular methods. However, the names of these methods - are set to strings like "operator +" or "operator -". + are set to strings like "operator +" or "operator -". The problem with these names is that they are illegal identifiers in most scripting languages. For instance, you can't just create a method - called "operator +" in Python--there won't be any way to call - it.

    -

    Some language modules already know how to automatically handle + called "operator +" in Python--there won't be any way to call + it.

    +

    Some language modules already know how to automatically handle certain operators (mapping them into operators in the target language). However, the underlying implementation of this is really managed in a - very general way using the %rename directive. For example, in - Python a declaration similar to this is used:

    -
    -
    + very general way using the %rename directive. For example, in
    + Python a declaration similar to this is used:

    +
    +
     %rename(__add__) Complex::operator+;
    -
    -
    -

    This binds the + operator to a method called __add__ (which +

    +
    +

    This binds the + operator to a method called __add__ (which is conveniently the same name used to implement the Python + operator). Internally, the generated wrapper code for a wrapped operator will look - something like this pseudocode:

    -
    -
    + something like this pseudocode:

    +
    +
     _wrap_Complex___add__(args) {
       ... get args ...
       obj->operator+(args);
       ...
     }
    -
    -
    -

    When used in the target language, it may now be possible to use the - overloaded operator normally. For example:

    -
    -
    +
    +
    +

    When used in the target language, it may now be possible to use the + overloaded operator normally. For example:

    +
    +
     >>> a = Complex(3, 4)
     >>> b = Complex(5, 2)
     >>> c = a + b           # Invokes __add__ method
    -
    -
    -

    It is important to realize that there is nothing magical happening - here. The %rename directive really only picks a valid method - name. If you wrote this:

    -
    -
    +
    +
    +

    It is important to realize that there is nothing magical happening + here. The %rename directive really only picks a valid method + name. If you wrote this:

    +
    +
     %rename(add) operator+;
    -
    -
    -

    The resulting scripting interface might work like this:

    -
    -
    +
    +
    +

    The resulting scripting interface might work like this:

    +
    +
     a = Complex(3, 4)
     b = Complex(5, 2)
     c = a.add(b)      # Call a.operator+(b)
    -
    -
    -

    All of the techniques described to deal with overloaded functions - also apply to operators. For example:

    -
    -
    +
    +
    +

    All of the techniques described to deal with overloaded functions + also apply to operators. For example:

    +
    +
     %ignore Complex::operator=;             // Ignore = in class Complex
     %ignore *::operator=;                   // Ignore = in all classes
     %ignore operator=;                      // Ignore = everywhere.
     
     %rename(__sub__) Complex::operator-; 
     %rename(__neg__) Complex::operator-();  // Unary - 
    -
    -
    -

    The last part of this example illustrates how multiple definitions - of the operator- method might be handled.

    -

    Handling operators in this manner is mostly straightforward. - However, there are a few subtle issues to keep in mind:

    -
      -
    • -

      In C++, it is fairly common to define different versions of the +

    +
    +

    The last part of this example illustrates how multiple definitions + of the operator- method might be handled.

    +

    Handling operators in this manner is mostly straightforward. + However, there are a few subtle issues to keep in mind:

    +
      +
    • +

      In C++, it is fairly common to define different versions of the operators to account for different types. For example, a class might - also include a friend function like this:

      -
      -
      + also include a friend function like this:

      +
      +
       class Complex {
       public:
         friend Complex operator+(Complex &, double);
       };
       Complex operator+(Complex &, double);
      -
      -
      -

      SWIG simply ignores all friend declarations. Furthermore, - it doesn't know how to associate the associated operator+ with - the class (because it's not a member of the class).

      -

      It's still possible to make a wrapper for this operator, but you'll - have to handle it like a normal function. For example:

      -
      -
      +
      +
      +

      SWIG simply ignores all friend declarations. Furthermore, + it doesn't know how to associate the associated operator+ with + the class (because it's not a member of the class).

      +

      It's still possible to make a wrapper for this operator, but you'll + have to handle it like a normal function. For example:

      +
      +
       %rename(add_complex_double) operator+(Complex &, double);
      -
      -
    • -
    • -

      Certain operators are ignored by default. For instance, new - and delete operators are ignored as well as conversion and - index operators. A warning such as the one below is shown:

      -
      -
      +
      +
    • +
    • +

      Certain operators are ignored by default. For instance, new + and delete operators are ignored as well as conversion and + index operators. A warning such as the one below is shown:

      +
      +
       example.i:12: Warning 503: Can't wrap 'operator []' unless renamed to a valid identifier.
      -
      -
    • -
    • -

      The index operator, operator[], is particularly difficult to + +

    • +
    • +

      The index operator, operator[], is particularly difficult to overload due to differences in C++ implementations. Specifically, the get and set operators in other languages typically are separated into two methods such that additional logic can be packed into the - operations; C# uses this[type key] { get { ... } set { ... }}, - Python uses __getitem__ and __setitem__, etc. In C++ - if the return type of operator[] is a reference and the method - is const, it is often indicative of the setter, and and the - getter is usually a const function return an object by value. In + operations; C# uses this[type key] { get { ... } set { ... }}, + Python uses __getitem__ and __setitem__, etc. In C++ + if the return type of operator[] is a reference and the method + is const, it is often indicative of the setter, and the + getter is usually a const function return an object by value. In the absence of any hard and fast rules and the fact that there may be multiple index operators, it is up to the user to choose the getter and - setter to use by using %rename as shown earlier.

      -
    • -
    • The semantics of certain C++ operators may not match those in the - target language.
    • -
    -

    6.17 Class extension

    -

    New methods can be added to a class using the %extend + setter to use by using %rename as shown earlier.

    + +
  • The semantics of certain C++ operators may not match those in the + target language.
  • + +

    6.17 Class extension

    +

    New methods can be added to a class using the %extend directive. This directive is primarily used in conjunction with proxy classes to add additional functionality to an existing class. For - example :

    -
    -
    + example :

    +
    +
     %module vector
     %{
     #include "vector.h"
    @@ -8713,14 +8897,14 @@ public:
         }
       }
     };
    -
    -
    -

    This code adds a __str__ method to our class for producing +

    +
    +

    This code adds a __str__ method to our class for producing a string representation of the object. In Python, such a method would - allow us to print the value of an object using the print - command.

    -
    -
    + allow us to print the value of an object using the print
    + command.

    +
    +
     >>>
     >>> v = Vector();
     >>> v.x = 3
    @@ -8730,20 +8914,20 @@ public:
     [ 3.0, 4.0, 0.0 ]
     >>>
     
    -
    -
    -

    The C++ 'this' pointer is often needed to access member variables, - methods etc. The $self special variable should be used +

    +
    +

    The C++ 'this' pointer is often needed to access member variables, + methods etc. The $self special variable should be used wherever you could use 'this'. The example above demonstrates this for - accessing member variables. Note that the members dereferenced by -$self must be public members as the code is ultimately generated + accessing member variables. Note that the members dereferenced by +$self must be public members as the code is ultimately generated into a global function and so will not have any access to non-public members. The implicit 'this' pointer that is present in C++ methods is - not present in %extend methods. In order to access anything in + not present in %extend methods. In order to access anything in the extended class or its base class, an explicit 'this' is required. - The following example shows how one could access base class members:

    -
    -
    + The following example shows how one could access base class members:

    +
    +
     struct Base {
       virtual void method(int v) {
         ...
    @@ -8759,230 +8943,275 @@ struct Derived : Base {
         ...
       }
     }
    -
    -
    -

    The following special variables are expanded if used within a +

    +
    +

    The following special variables are expanded if used within a %extend block: $name, $symname, $overname, $decl, $fulldecl, - $parentclassname and $parentclasssymname. The -Special variables section provides more information each of these - special variables.

    -

    The %extend directive follows all of the same conventions - as its use with C structures. Please refer to the -Adding member functions to C structures section for further details.

    -

    Compatibility note: The %extend directive is a new - name for the %addmethods directive in SWIG1.1. Since -%addmethods could be used to extend a structure with more than just - methods, a more suitable directive name has been chosen.

    -

    6.18 Templates

    -

    Template type names may appear anywhere a type is expected in an - interface file. For example:

    -
    -
    + $parentclassname and $parentclasssymname. The 
    +Special variables section provides more information each of these
    + special variables.

    +

    The %extend directive follows all of the same conventions + as its use with C structures. Please refer to the +Adding member functions to C structures section for further details.

    +

    Compatibility note: The %extend directive is a new + name for the %addmethods directive in SWIG1.1. Since +%addmethods could be used to extend a structure with more than just + methods, a more suitable directive name has been chosen.

    +

    6.18 Templates

    +

    Template type names may appear anywhere a type is expected in an + interface file. For example:

    +
    +
     void foo(vector<int> *a, int n);
     void bar(list<int, 100> *x);
    -
    -
    -

    There are some restrictions on the use of non-type arguments. Simple +

    +
    +

    There are some restrictions on the use of non-type arguments. Simple literals are supported, and so are some constant expressions. However, use of '<' and '>' within a constant expressions currently is not - supported by SWIG ('<=' and '>=' are though). For example:

    -
    -
    + supported by SWIG ('<=' and '>=' are though). For example:

    +
    +
     void bar(list<int, 100> *x);                // OK
     void bar(list<int, 2*50> *x);               // OK
     void bar(list<int, (2>1 ? 100 : 50)> *x)    // Not supported
    -
    -
    -

    The type system is smart enough to figure out clever games you might - try to play with typedef. For instance, consider this code:

    -
    -
    +
    +
    +

    The type system is smart enough to figure out clever games you might + try to play with typedef. For instance, consider this code:

    +
    +
     typedef int Integer;
     void foo(vector<int> *x, vector<Integer> *y);
    -
    -
    -

    In this case, vector<Integer> is exactly the same type as -vector<int>. The wrapper for foo() will accept either - variant.

    -

    Starting with SWIG-1.3.7, simple C++ template declarations can also - be wrapped. SWIG-1.3.12 greatly expands upon the earlier - implementation. Before discussing this any further, there are a few - things you need to know about template wrapping. First, a bare C++ - template does not define any sort of runnable object-code for which - SWIG can normally create a wrapper. Therefore, in order to wrap a - template, you need to give SWIG information about a particular template - instantiation (e.g., vector<int>, array<double>, - etc.). Second, an instantiation name such as vector<int> is - generally not a valid identifier name in most target languages. Thus, - you will need to give the template instantiation a more suitable name - such as intvector when creating a wrapper.

    -

    To illustrate, consider the following template definition:

    -
    -
    +
    +
    +

    In this case, vector<Integer> is exactly the same type as +vector<int>. The wrapper for foo() will accept either + variant.

    +

    6.18.1 The %template directive +

    +

    There are a couple of important points about template wrapping. + First, a bare C++ template does not define any sort of runnable + object-code for which SWIG can normally create a wrapper. Therefore, in + order to wrap a template, you need to give SWIG information about a + particular template instantiation (e.g., vector<int>, +array<double>, etc.). Second, an instantiation name such as +vector<int> is generally not a valid identifier name in most target + languages. Thus, you will need to give the template instantiation a + more suitable name such as intvector.

    +

    To illustrate, consider the following class template definition:

    +
    +
     template<class T> class List {
     private:
    -    T *data;
    -    int nitems;
    -    int maxitems;
    +  T *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max) {
    -      data = new T [max];
    -      nitems = 0;
    -      maxitems = max;
    -    }
    -    ~List() {
    -      delete [] data;
    -    };
    -    void append(T obj) {
    -      if (nitems < maxitems) {
    -        data[nitems++] = obj;
    -      }
    -    }
    -    int length() {
    -      return nitems;
    -    }
    -    T get(int n) {
    -      return data[n];
    +  List(int max) {
    +    data = new T [max];
    +    nitems = 0;
    +    maxitems = max;
    +  }
    +  ~List() {
    +    delete [] data;
    +  };
    +  void append(T obj) {
    +    if (nitems < maxitems) {
    +      data[nitems++] = obj;
         }
    +  }
    +  int length() {
    +    return nitems;
    +  }
    +  T get(int n) {
    +    return data[n];
    +  }
     };
    -
    -
    -

    By itself, this template declaration is useless--SWIG simply ignores - it because it doesn't know how to generate any code until unless a - definition of T is provided.

    -

    One way to create wrappers for a specific template instantiation is - to simply provide an expanded version of the class directly like this:

    -
    -
    +
    +
    +

    By itself, this class template is useless--SWIG simply ignores it + because it doesn't know how to generate any code unless a definition of + T is provided. The %template directive is required to + instantiate the template for use in a target language. The directive + requires an identifier name for use in the target language plus the + template for instantiation. The example below instantiates +List<int> for use as a class named intList:

    +
    +
    +%template(intList) List<int>;
    +
    +
    +

    The instantiation expands the template code as a C++ compiler would + do and then makes it available under the given identifier name. + Essentially it is the same as wrapping the following concept code where + the class template definition has T expanded to int + (note that this is not entirely valid syntax):

    +
    +
     %rename(intList) List<int>;       // Rename to a suitable identifier
     class List<int> {
     private:
    -    int *data;
    -    int nitems;
    -    int maxitems;
    +  int *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max);
    -    ~List();
    -    void append(int obj);
    -    int length();
    -    int get(int n);
    +  List(int max);
    +  ~List();
    +  void append(int obj);
    +  int length();
    +  int get(int n);
     };
    -
    -
    -

    The %rename directive is needed to give the template class - an appropriate identifier name in the target language (most languages - would not recognize C++ template syntax as a valid class name). The - rest of the code is the same as what would appear in a normal class - definition.

    -

    Since manual expansion of templates gets old in a hurry, the -%template directive can be used to create instantiations of a - template class. Semantically, %template is simply a - shortcut---it expands template code in exactly the same way as shown - above. Here are some examples:

    -
    -
    -/* Instantiate a few different versions of the template */
    -%template(intList) List<int>;
    -%template(doubleList) List<double>;
    -
    -
    -

    The argument to %template() is the name of the +

    +
    +

    The argument to %template() is the name of the instantiation in the target language. The name you choose should not conflict with any other declarations in the interface file with one exception---it is okay for the template name to match that of a typedef - declaration. For example:

    -
    -
    + declaration. For example:

    +
    +
     %template(intList) List<int>;
     ...
     typedef List<int> intList;    // OK
    -
    -
    -

    SWIG can also generate wrappers for function templates using a - similar technique. For example:

    -
    -
    +
    +
    +

    The %template directive must always appear after + the definition of the template to be expanded, so the following will + work:

    +
    +
    +template<class T> class List { ... };
    +%template(intList) List<int>;
    +
    +
    +

    but if %template is used before the template definition, such as:

    +
    +
    +%template(intList) List<int>;
    +template<class T> class List { ... };
    +
    +
    +

    SWIG will generate an error:

    +
    +
    +example.i:3: Error: Template 'List' undefined.
    +
    +
    +

    Since the type system knows how to handle typedef, it is + generally not necessary to instantiate different versions of a template + for typenames that are equivalent. For instance, consider this code:

    +
    +
    +%template(intList) List<int>;
    +typedef int Integer;
    +...
    +void foo(List<Integer> *x);
    +
    +
    +

    In this case, List<Integer> is exactly the same type as +List<int>. Any use of List<Integer> is mapped back to the + instantiation of List<int> created earlier. Therefore, it is + not necessary to instantiate a new class for the type Integer + (doing so is redundant and will simply result in code bloat).

    +

    The template provided to %template for instantiation must + be the actual template and not a typedef to a template.

    +
    +
    +typedef List<int> ListOfInt;
    +
    +%template(intList) List<int>; // ok
    +%template(intList) ListOfInt; // illegal - Syntax error
    +
    +
    +

    6.18.2 Function templates

    +

    SWIG can also generate wrappers for function templates using a + similar technique to that shown above for class templates. For example:

    +
    +
     // Function template
     template<class T> T max(T a, T b) { return a > b ? a : b; }
     
     // Make some different versions of this function
     %template(maxint) max<int>;
     %template(maxdouble) max<double>;
    -
    -
    -

    In this case, maxint and maxdouble become unique - names for specific instantiations of the function.

    -

    The number of arguments supplied to %template should match +

    +
    +

    In this case, maxint and maxdouble become unique + names for specific instantiations of the function.

    +

    SWIG even supports overloaded templated functions. As usual the +%template directive is used to wrap templated functions. For + example:

    +
    +
    +template<class T> void foo(T x) { };
    +template<class T> void foo(T x, T y) { };
    +
    +%template(foo) foo<int>;
    +
    +
    +

    This will generate two overloaded wrapper methods, the first will + take a single integer as an argument and the second will take two + integer arguments.

    +

    6.18.3 Default template + arguments

    +

    The number of arguments supplied to %template should match that in the original template definition. Template default arguments - are supported. For example:

    -
    -
    + are supported. For example:

    +
    +
     template vector<typename T, int max=100> class vector {
     ...
     };
     
     %template(intvec) vector<int>;           // OK
     %template(vec1000) vector<int, 1000>;     // OK
    -
    -
    -

    The %template directive should not be used to wrap the same +

    +
    +

    The %template directive should not be used to wrap the same template instantiation more than once in the same scope. This will - generate an error. For example:

    -
    -
    + generate an error. For example:

    +
    +
     %template(intList) List<int>;
     %template(Listint) List<int>;    // Error.   Template already wrapped.
    -
    -
    -

    This error is caused because the template expansion results in two +

    +
    +

    This error is caused because the template expansion results in two identical classes with the same name. This generates a symbol table conflict. Besides, it probably more efficient to only wrap a specific instantiation only once in order to reduce the potential for code - bloat.

    -

    Since the type system knows how to handle typedef, it is - generally not necessary to instantiate different versions of a template - for typenames that are equivalent. For instance, consider this code:

    -
    -
    -%template(intList) vector<int>;
    -typedef int Integer;
    -...
    -void foo(vector<Integer> *x);
    -
    -
    -

    In this case, vector<Integer> is exactly the same type as -vector<int>. Any use of Vector<Integer> is mapped back to - the instantiation of vector<int> created earlier. Therefore, - it is not necessary to instantiate a new class for the type Integer - (doing so is redundant and will simply result in code bloat).

    -

    When a template is instantiated using %template, + bloat.

    +

    6.18.4 Template base + classes

    +

    When a template is instantiated using %template, information about that class is saved by SWIG and used elsewhere in the - program. For example, if you wrote code like this,

    -
    -
    + program. For example, if you wrote code like this,

    +
    +
     ...
     %template(intList) List<int>;
     ...
     class UltraList : public List<int> {
       ...
     };
    -
    -
    -

    then SWIG knows that List<int> was already wrapped as a - class called intList and arranges to handle the inheritance - correctly. If, on the other hand, nothing is known about List<int> -, you will get a warning message similar to this:

    -
    -
    -example.h:42: Warning 401. Nothing known about class 'List<int >'. Ignored. 
    -example.h:42: Warning 401. Maybe you forgot to instantiate 'List<int >' using %template. 
    -
    -
    -

    If a template class inherits from another template class, you need +

    +
    +

    then SWIG knows that List<int> was already wrapped as a + class called intList and arranges to handle the inheritance + correctly. If, on the other hand, nothing is known about List<int> +, you will get a warning message similar to this:

    +
    +
    +example.h:42: Warning 401. Nothing known about class 'List< int >'. Ignored. 
    +example.h:42: Warning 401. Maybe you forgot to instantiate 'List< int >' using %template. 
    +
    +
    +

    If a class template inherits from another class template, you need to make sure that base classes are instantiated before derived classes. - For example:

    -
    -
    + For example:

    +
    +
     template<class T> class Foo {
     ...
     };
    @@ -8998,29 +9227,29 @@ template<class T> class Bar : public Foo<T> {
     // Now instantiate derived classes
     %template(intBar) Bar<int>;
     %template(doubleBar) Bar<double>;
    -
    -
    -

    The order is important since SWIG uses the instantiation names to +

    +
    +

    The order is important since SWIG uses the instantiation names to properly set up the inheritance hierarchy in the resulting wrapper code (and base classes need to be wrapped before derived classes). Don't worry--if you get the order wrong, SWIG should generate a warning - message.

    -

    Occasionally, you may need to tell SWIG about base classes that are + message.

    +

    Occasionally, you may need to tell SWIG about base classes that are defined by templates, but which aren't supposed to be wrapped. Since SWIG is not able to automatically instantiate templates for this purpose, you must do it manually. To do this, simply use the empty - template instantiation, that is, %template with no name. For - example:

    -
    -
    + template instantiation, that is, %template with no name. For
    + example:

    +
    +
     // Instantiate traits<double, double>, but don't wrap it.
     %template() traits<double, double>;
    -
    -
    -

    If you have to instantiate a lot of different classes for many - different types, you might consider writing a SWIG macro. For example:

    -
    -
    +
    +
    +

    If you have to instantiate a lot of different classes for many + different types, you might consider writing a SWIG macro. For example:

    +
    +
     %define TEMPLATE_WRAP(prefix, T...) 
     %template(prefix ## Foo) Foo<T >;
     %template(prefix ## Bar) Bar<T >;
    @@ -9032,97 +9261,100 @@ TEMPLATE_WRAP(double, double)
     TEMPLATE_WRAP(String, char *)
     TEMPLATE_WRAP(PairStringInt, std::pair<string, int>)
     ...
    -
    -
    -

    Note the use of a vararg macro for the type T. If this wasn't used, +

    +
    +

    Note the use of a vararg macro for the type T. If this wasn't used, the comma in the templated type in the last example would not be - possible.

    -

    The SWIG template mechanism does support specialization. - For instance, if you define a class like this,

    -
    -
    + possible.

    +

    6.18.5 Template + specialization

    +

    The SWIG template mechanism does support specialization. + For instance, if you define a class like this,

    +
    +
     template<> class List<int> {
     private:
    -    int *data;
    -    int nitems;
    -    int maxitems;
    +  int *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max);
    -    ~List();
    -    void append(int obj);
    -    int length();
    -    int get(int n);
    +  List(int max);
    +  ~List();
    +  void append(int obj);
    +  int length();
    +  int get(int n);
     };
    -
    -
    -

    then SWIG will use this code whenever the user expands List<int> +

    +
    +

    then SWIG will use this code whenever the user expands List<int> . In practice, this may have very little effect on the underlying wrapper code since specialization is often used to provide slightly modified method bodies (which are ignored by SWIG). However, special - SWIG directives such as %typemap, %extend, and so + SWIG directives such as %typemap, %extend, and so forth can be attached to a specialization to provide customization for - specific types.

    -

    Partial template specialization is partially supported by SWIG. For + specific types.

    +

    Partial template specialization is partially supported by SWIG. For example, this code defines a template that is applied when the template - argument is a pointer.

    -
    -
    + argument is a pointer.

    +
    +
     template<class T> class List<T*> {
     private:
    -    T *data;
    -    int nitems;
    -    int maxitems;
    +  T *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max);
    -    ~List();
    -    void append(int obj);
    -    int length();
    -    T get(int n);
    +  List(int max);
    +  ~List();
    +  void append(T obj);
    +  int length();
    +  T get(int n);
     };
    -
    -
    -

    SWIG supports both template explicit specialization and partial - specialization. Consider:

    -
    -
    +
    +
    +

    SWIG supports both template explicit specialization and partial + specialization. Consider:

    +
    +
     template<class T1, class T2> class Foo { };                     // (1) primary template
     template<>                   class Foo<double *, int *> { };    // (2) explicit specialization
     template<class T1, class T2> class Foo<T1, T2 *> { };           // (3) partial specialization
    -
    -
    -

    SWIG is able to properly match explicit instantiations:

    -
    -
    -Foo<double *, int *>     // explicit specialization matching (2)
    -
    -
    -

    SWIG implements template argument deduction so that the following +

    +
    +

    SWIG is able to properly match explicit instantiations:

    +
    +
    +Foo<double *, int *>     // explicit specialization matching (2)
    +
    +
    +

    SWIG implements template argument deduction so that the following partial specialization examples work just like they would with a C++ - compiler:

    -
    -
    -Foo<int *, int *>        // partial specialization matching (3)
    -Foo<int *, const int *>  // partial specialization matching (3)
    -Foo<int *, int **>       // partial specialization matching (3)
    -
    -
    -

    Member function templates are supported. The underlying principle is - the same as for normal templates--SWIG can't create a wrapper unless - you provide more information about types. For example, a class with a - member template might look like this:

    -
    -
    + compiler:

    +
    +
    +Foo<int *, int *>        // partial specialization matching (3)
    +Foo<int *, const int *>  // partial specialization matching (3)
    +Foo<int *, int **>       // partial specialization matching (3)
    +
    +
    +

    6.18.6 Member templates

    +

    Member templates are supported. The underlying principle is the same + as for normal templates--SWIG can't create a wrapper unless you provide + more information about types. For example, a class with a member + function template might look like this:

    +
    +
     class Foo {
     public:
       template<class T> void bar(T x, T y) { ... };
       ...
     };
    -
    -
    -

    To expand the template, simply use %template inside the - class.

    -
    -
    +
    +
    +

    To expand the template, simply use %template inside the + class.

    +
    +
     class Foo {
     public:
       template<class T> void bar(T x, T y) { ... };
    @@ -9130,12 +9362,12 @@ public:
       %template(barint)    bar<int>;
       %template(bardouble) bar<double>;
     };
    -
    -
    -

    Or, if you want to leave the original class definition alone, just - do this:

    -
    -
    +
    +
    +

    Or, if you want to leave the original class definition alone, just + do this:

    +
    +
     class Foo {
     public:
       template<class T> void bar(T x, T y) { ... };
    @@ -9146,11 +9378,11 @@ public:
       %template(barint)    bar<int>;
       %template(bardouble) bar<double>;
     };
    -
    -
    -

    or simply

    -
    -
    +
    +
    +

    or simply

    +
    +
     class Foo {
     public:
       template<class T> void bar(T x, T y) { ... };
    @@ -9160,28 +9392,25 @@ public:
     
     %template(bari) Foo::bar<int>;
     %template(bard) Foo::bar<double>;
    -
    -
    -

    In this case, the %extend directive is not needed, and -%template does exactly the same job, i.e., it adds two new methods - to the Foo class.

    -

    Note: because of the way that templates are handled, the -%template directive must always appear after the - definition of the template to be expanded.

    -

    Now, if your target language supports overloading, you can even try

    -
    -
    +
    +
    +

    In this case, the %extend directive is not needed, and +%template does exactly the same job, i.e., it adds two new methods + to the Foo class.

    +

    Now, if your target language supports overloading, you can even try

    +
    +
     %template(bar) Foo::bar<int>;
     %template(bar) Foo::bar<double>;
    -
    -
    -

    and since the two new wrapped methods have the same name 'bar', they +

    +
    +

    and since the two new wrapped methods have the same name 'bar', they will be overloaded, and when called, the correct method will be - dispatched depending on the argument type.

    -

    When used with members, the %template directive may be - placed in another template class. Here is a slightly perverse example:

    -
    -
    + dispatched depending on the argument type.

    +

    When used with members, the %template directive may be + placed in another class template. Here is a slightly perverse example:

    +
    +
     // A template
     template<class T> class Foo {
     public:
    @@ -9199,14 +9428,14 @@ public:
     // Create some wrappers for the template
     %template(Fooi) Foo<int>;
     %template(Food) Foo<double>;
    -
    -
    -

    Miraculously, you will find that each expansion of Foo has - member functions bari() and bard() added.

    -

    A common use of member templates is to define constructors for - copies and conversions. For example:

    -
    -
    +
    +
    +

    Miraculously, you will find that each expansion of Foo has + member functions bari() and bard() added.

    +

    A common use of member templates is to define constructors for + copies and conversions. For example:

    +
    +
     template<class T1, class T2> struct pair {
       T1 first;
       T2 second;
    @@ -9215,25 +9444,25 @@ template<class T1, class T2> struct pair {
       template<class U1, class U2> pair(const pair<U1, U2> &x)
                                            : first(x.first), second(x.second) { }
     };
    -
    -
    -

    This declaration is perfectly acceptable to SWIG, but the +

    +
    +

    This declaration is perfectly acceptable to SWIG, but the constructor template will be ignored unless you explicitly expand it. To do that, you could expand a few versions of the constructor in the - template class itself. For example:

    -
    -
    + class template itself. For example:

    +
    +
     %extend pair {
       %template(pair) pair<T1, T2>;        // Generate default copy constructor
     };
    -
    -
    -

    When using %extend in this manner, notice how you can still - use the template parameters in the original template definition.

    -

    Alternatively, you could expand the constructor template in selected - instantiations. For example:

    -
    -
    +
    +
    +

    When using %extend in this manner, notice how you can still + use the template parameters in the original template definition.

    +

    Alternatively, you could expand the constructor template in selected + instantiations. For example:

    +
    +
     // Instantiate a few versions
     %template(pairii) pair<int, int>;
     %template(pairdd) pair<double, double>;
    @@ -9248,29 +9477,116 @@ template<class T1, class T2> struct pair {
       %template(paird) pair<double, dobule>;   // Default constructor
       %template(pairc) pair<int, int>;         // Conversion constructor
     };
    -
    -
    -

    And if your target language supports overloading, then you can try - instead:

    -
    -
    +
    +
    +

    And if your target language supports overloading, then you can try + instead:

    +
    +
     // Create default and conversion constructors 
     %extend pair<double, double> {
       %template(pair) pair<double, dobule>;   // Default constructor
       %template(pair) pair<int, int>;         // Conversion constructor
     };
    -
    -
    -

    In this case, the default and conversion constructors have the same +

    +
    +

    In this case, the default and conversion constructors have the same name. Hence, SWIG will overload them and define an unique visible constructor, that will dispatch the proper call depending on the - argument type.

    -

    If all of this isn't quite enough and you really want to make - someone's head explode, SWIG directives such as %rename, -%extend, and %typemap can be included directly in template - definitions. For example:

    -
    -
    + argument type.

    +

    6.18.7 Scoping and templates

    +

    The %template directive for a class template is the + equivalent to an explicit instantiation of a C++ class template. The + scope for a valid %template instantiation is the same as the + scope required for a valid explicit instantiation of a C++ template. A + definition of the template for the explicit instantiation must be in + scope where the instantiation is declared and must not be enclosed + within a different namespace.

    +

    For example, a few %template instantiations and C++ + explicit instantiations are shown below:

    +
    +
    +namespace N {
    +  template<typename T> class C {};
    +}
    +
    +// valid
    +%template(cin) N::C<int>;
    +template class N::C<int>;
    +
    +// valid
    +namespace N {
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// valid
    +using namespace N;
    +%template(cin) C<int>;
    +template class C<int>;
    +
    +// valid
    +using N::C;
    +%template(cin) C<int>;
    +template class C<int>;
    +
    +// ill-formed
    +namespace unrelated {
    +  using N::C;
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  using namespace N;
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  namespace N {
    +    %template(cin) C<int>;
    +    template class C<int>;
    +  }
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  %template(cin) N::C<int>;
    +  template class N::C<int>;
    +}
    +
    +
    +

    When the scope is incorrect, such as for the ill-formed examples + above, an error occurs:

    +
    +
    +cpp_template_scope.i:34: Error: 'C' resolves to 'N::C' and was incorrectly instantiated
    +in scope 'unrelated' instead of within scope 'N'.
    +
    +
    +

    A note for the C++ standard geeks out there; a valid instantiation + is one which conforms to the C++03 standard as C++11 made a change to + disallow using declarations and using directives to find a template.

    +
    +
    +// valid C++03, ill-formed C++11
    +using N::C;
    +template class C<int>;
    +
    +
    +

    Compatibility Note: Versions prior to SWIG-4.0.0 did not + error out with incorrectly scoped %template declarations, but + this led to numerous subtle template scope problems.

    +

    6.18.8 More on templates

    +

    If all of this isn't quite enough and you really want to make + someone's head explode, SWIG directives such as %rename, +%extend, and %typemap can be included directly in template + definitions. For example:

    +
    +
     // File : list.h
     template<class T> class List {
       ...
    @@ -9287,14 +9603,14 @@ public:
         }
       }
     };
    -
    -
    -

    In this example, the extra SWIG directives are propagated to - every template instantiation.

    -

    It is also possible to separate these declarations from the template - class. For example:

    -
    -
    +
    +
    +

    In this example, the extra SWIG directives are propagated to + every template instantiation.

    +

    It is also possible to separate these declarations from the class + template. For example:

    +
    +
     %rename(__getitem__) List::get;
     %extend List {
       char *__str__() {
    @@ -9309,48 +9625,34 @@ public:
     
     ...
     template<class T> class List {
    -    ...
    -    public:
    -    List() { }
    -    T get(int index);
    -    ...
    +  ...
    +  public:
    +  List() { }
    +  T get(int index);
    +  ...
     };
    -
    -
    -

    When %extend is decoupled from the class definition, it is +

    +
    +

    When %extend is decoupled from the class definition, it is legal to use the same template parameters as provided in the class definition. These are replaced when the template is expanded. In - addition, the %extend directive can be used to add additional - methods to a specific instantiation. For example:

    -
    -
    + addition, the %extend directive can be used to add additional
    + methods to a specific instantiation. For example:

    +
    +
     %template(intList) List<int>;
     
     %extend List<int> {
    -    void blah() {
    -          printf("Hey, I'm an List<int>!\n");
    -    }
    +  void blah() {
    +    printf("Hey, I'm an List<int>!\n");
    +  }
     };
    -
    -
    -

    SWIG even supports overloaded templated functions. As usual the -%template directive is used to wrap templated functions. For - example:

    -
    -
    -template<class T> void foo(T x) { };
    -template<class T> void foo(T x, T y) { };
    -
    -%template(foo) foo<int>;
    -
    -
    -

    This will generate two overloaded wrapper methods, the first will - take a single integer as an argument and the second will take two - integer arguments.

    -

    It is even possible to extend a class via %extend with - template methods, for example:

    -
    -
    +
    +
    +

    It is even possible to extend a class via %extend with + template methods, for example:

    +
    +
     %include <std_string.i>
     
     %inline %{
    @@ -9371,43 +9673,43 @@ public:
     }
     %template(do_overloaded_stuff) ExtendMe::do_overloaded_stuff<std::string>;
     %template(do_overloaded_stuff) ExtendMe::do_overloaded_stuff<double>;
    -
    -
    -

    The wrapped ExtendMe class will then have two (overloaded) - methods called do_overloaded_stuff.

    -

    Compatibility Note: Extending a class with template methods - was added in version 3.0.12

    -

    Needless to say, SWIG's template support provides plenty of +

    +
    +

    The wrapped ExtendMe class will then have two (overloaded) + methods called do_overloaded_stuff.

    +

    Compatibility Note: Extending a class with template methods + was added in version 3.0.12

    +

    Needless to say, SWIG's template support provides plenty of opportunities to break the universe. That said, an important final - point is that SWIG does not perform extensive error checking of - templates! Specifically, SWIG does not perform type checking nor + point is that SWIG does not perform extensive error checking of + templates! Specifically, SWIG does not perform type checking nor does it check to see if the actual contents of the template declaration make any sense. Since the C++ compiler checks this when it compiles the resulting wrapper file, there is no practical reason for SWIG to - duplicate this functionality.

    - -

    As SWIG's template support does not perform type checking -%template can be used as early as after a template declaration. You - can, and rarely have to, use %template before the template - parameters have been declared. For example:

    -
    -
    + duplicate this functionality.

    + +

    As SWIG's template support does not perform type checking +%template can be used as early as after a template declaration. You + can, and rarely have to, use %template before the template + parameters have been declared. For example:

    +
    +
     template <class T> class OuterTemplateClass {};
     
    -// The nested class OuterClass::InnerClass inherits from the template class
    +// The nested class OuterClass::InnerClass inherits from the class template
     // OuterTemplateClass<OuterClass::InnerStruct> and thus the template needs
     // to be expanded with %template before the OuterClass declaration.
     %template(OuterTemplateClass_OuterClass__InnerStruct)
    -    OuterTemplateClass<OuterClass::InnerStruct>
    +  OuterTemplateClass<OuterClass::InnerStruct>
     
     
     // Don't forget to use %feature("flatnested") for OuterClass::InnerStruct and
     // OuterClass::InnerClass if the target language doesn't support nested classes.
     class OuterClass {
    -    public:
    -        // Forward declarations:
    -        struct InnerStruct;
    -        class InnerClass;
    +  public:
    +    // Forward declarations:
    +    struct InnerStruct;
    +    class InnerClass;
     };
     
     struct OuterClass::InnerStruct {};
    @@ -9416,50 +9718,50 @@ struct OuterClass::InnerStruct {};
     // OuterClass::InnerClass declaration is processed inside OuterClass.
     
     class OuterClass::InnerClass : public OuterTemplateClass<InnerStruct> {};
    -
    -
    -

    Compatibility Note: The first implementation of template +

    +
    +

    Compatibility Note: The first implementation of template support relied heavily on macro expansion in the preprocessor. Templates have been more tightly integrated into the parser and type system in SWIG-1.3.12 and the preprocessor is no longer used. Code that relied on preprocessing features in template expansion will no longer work. However, SWIG still allows the # operator to be used to generate - a string from a template argument.

    -

    Compatibility Note: In earlier versions of SWIG, the -%template directive introduced a new class name. This name could - then be used with other directives. For example:

    -
    -
    + a string from a template argument.

    +

    Compatibility Note: In earlier versions of SWIG, the +%template directive introduced a new class name. This name could + then be used with other directives. For example:

    +
    +
     %template(vectori) vector<int>;
     %extend vectori {
    -    void somemethod() { }
    +  void somemethod() { }
     };
    -
    -
    -

    This behavior is no longer supported. Instead, you should use the - original template name as the class name. For example:

    -
    -
    +
    +
    +

    This behavior is no longer supported. Instead, you should use the + original template name as the class name. For example:

    +
    +
     %template(vectori) vector<int>;
     %extend vector<int> {
    -    void somemethod() { }
    +  void somemethod() { }
     };
    -
    -
    -

    Similar changes apply to typemaps and other customization features.

    -

    6.19 Namespaces

    -

    Support for C++ namespaces is comprehensive, but by default simple, +

    +
    +

    Similar changes apply to typemaps and other customization features.

    +

    6.19 Namespaces

    +

    Support for C++ namespaces is comprehensive, but by default simple, however, some target languages can turn on more advanced namespace - support via the nspace feature, + support via the nspace feature, described later. Code within unnamed namespaces is ignored as there is no external access to symbols declared within the unnamed namespace. Before detailing the default implementation for named namespaces, it is worth noting that the semantics of C++ namespaces is extremely non-trivial--especially with regard to the C++ type system and class machinery. At a most basic level, namespaces are sometimes used to - encapsulate common functionality. For example:

    -
    -
    + encapsulate common functionality. For example:

    +
    +
     namespace math {
       double sin(double);
       double cos(double);
    @@ -9471,49 +9773,49 @@ namespace math {
       };
       ...
     };
    -
    -
    -

    Members of the namespace are accessed in C++ by prepending the - namespace prefix to names. For example:

    -
    -
    +
    +
    +

    Members of the namespace are accessed in C++ by prepending the + namespace prefix to names. For example:

    +
    +
     double x = math::sin(1.0);
     double magnitude(math::Complex *c);
     math::Complex c;
     ...
    -
    -
    -

    At this level, namespaces are relatively easy to manage. However, +

    +
    +

    At this level, namespaces are relatively easy to manage. However, things start to get very ugly when you throw in the other ways a namespace can be used. For example, selective symbols can be exported - from a namespace with using.

    -
    -
    + from a namespace with using.

    +
    +
     using math::Complex;
     double magnitude(Complex *c);       // Namespace prefix stripped
    -
    -
    -

    Similarly, the contents of an entire namespace can be made available - like this:

    -
    -
    +
    +
    +

    Similarly, the contents of an entire namespace can be made available + like this:

    +
    +
     using namespace math;
     double x = sin(1.0);
     double magnitude(Complex *c);
    -
    -
    -

    Alternatively, a namespace can be aliased:

    -
    -
    +
    +
    +

    Alternatively, a namespace can be aliased:

    +
    +
     namespace M = math;
     double x = M::sin(1.0);
     double magnitude(M::Complex *c);
    -
    -
    -

    Using combinations of these features, it is possible to write - head-exploding code like this:

    -
    -
    +
    +
    +

    Using combinations of these features, it is possible to write + head-exploding code like this:

    +
    +
     namespace A {
       class Foo {
       };
    @@ -9540,22 +9842,22 @@ class Spam : public D::Bar {
     void evil(A::Foo *a, B::FooClass *b, B::C::Foo *c, BIGB::FooClass *d,
               BIGB::C::Foo *e, D::FooClass *f);
     
    -
    -
    -

    Given the possibility for such perversion, it's hard to imagine how +

    +
    +

    Given the possibility for such perversion, it's hard to imagine how every C++ programmer might want such code wrapped into the target language. Clearly this code defines three different classes. However, - one of those classes is accessible under at least six different names!

    -

    SWIG fully supports C++ namespaces in its internal type system and + one of those classes is accessible under at least six different names!

    +

    SWIG fully supports C++ namespaces in its internal type system and class handling code. If you feed SWIG the above code, it will be parsed correctly, it will generate compilable wrapper code, and it will produce a working scripting language module. However, the default wrapping behavior is to flatten namespaces in the target language. This means that the contents of all namespaces are merged together in the resulting scripting language module. For example, if you have code like - this,

    -
    -
    + this,

    +
    +
     %module foo
     namespace foo {
       void bar(int);
    @@ -9566,13 +9868,15 @@ namespace bar {
       void blah();
     }
     
    -
    -
    -

    then SWIG simply creates three wrapper functions bar(), -spam(), and blah() in the target language. SWIG does not +

    +
    +

    then SWIG simply creates three wrapper functions bar(), +spam(), and blah() in the target language. SWIG does not prepend the names with a namespace prefix nor are the functions - packaged in any kind of nested scope.

    -

    There is some rationale for taking this approach. Since C++ + packaged in any kind of nested scope. Note that the default handling of + flattening all the namespace scopes in the target language can be + changed via the nspace feature.

    +

    There is some rationale for taking this approach. Since C++ namespaces are often used to define modules in C++, there is a natural correlation between the likely contents of a SWIG module and the contents of a namespace. For instance, it would not be unreasonable to @@ -9581,32 +9885,32 @@ spam(), and blah() in the target language. SWIG does not everything with an additional namespace prefix when the module itself already serves as a namespace in the target language. Or put another way, if you want SWIG to keep namespaces separate, simply wrap each - namespace with its own SWIG interface.

    -

    Because namespaces are flattened, it is possible for symbols defined + namespace with its own SWIG interface.

    +

    Because namespaces are flattened, it is possible for symbols defined in different namespaces to generate a name conflict in the target - language. For example:

    -
    -
    + language. For example:

    +
    +
     namespace A {
       void foo(int);
     }
     namespace B {
       void foo(double);
     }
    -
    -
    -

    When this conflict occurs, you will get an error message that - resembles this:

    -
    -
    +
    +
    +

    When this conflict occurs, you will get an error message that + resembles this:

    +
    +
     example.i:26. Error. 'foo' is multiply defined in the generated target language module.
     example.i:23. Previous declaration of 'foo'
    -
    -
    -

    To resolve this error, simply use %rename to disambiguate - the declarations. For example:

    -
    -
    +
    +
    +

    To resolve this error, simply use %rename to disambiguate + the declarations. For example:

    +
    +
     %rename(B_foo) B::foo;
     ...
     namespace A {
    @@ -9615,32 +9919,32 @@ namespace A {
     namespace B {
       void foo(double);     // Gets renamed to B_foo
     }
    -
    -
    -

    Similarly, %ignore can be used to ignore declarations.

    -

    using declarations do not have any effect on the generated +

    +
    +

    Similarly, %ignore can be used to ignore declarations.

    +

    using declarations do not have any effect on the generated wrapper code. They are ignored by SWIG language modules and they do not - result in any code. However, these declarations are used by + result in any code. However, these declarations are used by the internal type system to track type-names. Therefore, if you have - code like this:

    -
    -
    + code like this:

    +
    +
     namespace A {
       typedef int Integer;
     }
     using namespace A;
     void foo(Integer x);
    -
    -
    -

    SWIG knows that Integer is the same as A::Integer - which is the same as int.

    -

    Namespaces may be combined with templates. If necessary, the -%template directive can be used to expand a template defined in a - different namespace. For example:

    -
    -
    +
    +
    +

    SWIG knows that Integer is the same as A::Integer + which is the same as int.

    +

    Namespaces may be combined with templates. If necessary, the +%template directive can be used to expand a template defined in a + different namespace. For example:

    +
    +
     namespace foo {
    -    template<typename T> T max(T a, T b) { return a > b ? a : b; }
    +  template<typename T> T max(T a, T b) { return a > b ? a : b; }
     }
     
     using foo::max;
    @@ -9649,28 +9953,28 @@ using foo::max;
     %template(maxfloat) foo::max<float>;    // Okay (qualified name).
     
     namespace bar {
    -    using namespace foo;
    -    %template(maxdouble)  max<double>;    // Okay.
    +  using namespace foo;
    +  %template(maxdouble)  max<double>;    // Okay.
     }
    -
    -
    -

    The combination of namespaces and other SWIG directives may +

    +
    +

    The combination of namespaces and other SWIG directives may introduce subtle scope-related problems. The key thing to keep in mind - is that all SWIG generated wrappers are produced in the global + is that all SWIG generated wrappers are produced in the global namespace. Symbols from other namespaces are always accessed using fully qualified names---names are never imported into the global space - unless the interface happens to do so with a using + unless the interface happens to do so with a using declaration. In almost all cases, SWIG adjusts typenames and symbols to be fully qualified. However, this is not done in code fragments such as function bodies, typemaps, exception handlers, and so forth. For - example, consider the following:

    -
    -
    + example, consider the following:

    +
    +
     namespace foo {
       typedef int Integer;
       class bar {
         public:
    -      ...
    +    ...
       };
     }
     
    @@ -9680,36 +9984,36 @@ namespace foo {
         return r;
       }
     };
    -
    -
    -

    In this case, SWIG correctly resolves the added method parameters - and return type to foo::Integer. However, since function +

    +
    +

    In this case, SWIG correctly resolves the added method parameters + and return type to foo::Integer. However, since function bodies aren't parsed and such code is emitted in the global namespace, - this code produces a compiler error about Integer. To fix the - problem, make sure you use fully qualified names. For example:

    -
    -
    + this code produces a compiler error about Integer. To fix the
    + problem, make sure you use fully qualified names. For example:

    +
    +
     %extend foo::bar {
       Integer add(Integer x, Integer y) {
         foo::Integer r = x + y;        // Ok.
         return r;
       }
     };
    -
    -
    -

    Note: SWIG does not propagate using +

    +
    +

    Note: SWIG does not propagate using declarations to the resulting wrapper code. If these declarations - appear in an interface, they should also appear in any header - files that might have been included in a %{ ... %} section. In - other words, don't insert extra using declarations into a SWIG - interface unless they also appear in the underlying C++ code.

    -

    Note: Code inclusion directives such as %{ ... %} or - %inline %{ ... %} should not be placed inside a namespace + appear in an interface, they should also appear in any header + files that might have been included in a %{ ... %} section. In + other words, don't insert extra using declarations into a SWIG + interface unless they also appear in the underlying C++ code.

    +

    Note: Code inclusion directives such as %{ ... %} or + %inline %{ ... %} should not be placed inside a namespace declaration. The code emitted by these directives will not be enclosed in a namespace and you may get very strange results. If you need to use - namespaces with these directives, consider the following:

    -
    -
    + namespaces with these directives, consider the following:

    +
    +
     // Good version
     %inline %{
     namespace foo {
    @@ -9725,13 +10029,13 @@ namespace foo {
       ...
       %}
     }
    -
    -
    -

    Note: When the %extend directive is used inside a +

    +
    +

    Note: When the %extend directive is used inside a namespace, the namespace name is included in the generated functions. - For example, if you have code like this,

    -
    -
    + For example, if you have code like this,

    +
    +
     namespace foo {
       class bar {
         public:
    @@ -9740,22 +10044,22 @@ namespace foo {
           };
       };
     }
    -
    -
    -

    the added method blah() is mapped to a function int - foo_bar_blah(foo::bar *self, int x). This function resides in the - global namespace.

    -

    Note: Although namespaces are flattened in the target +

    +
    +

    the added method blah() is mapped to a function int + foo_bar_blah(foo::bar *self, int x). This function resides in the + global namespace.

    +

    Note: Although namespaces are flattened in the target language, the SWIG generated wrapper code observes the same namespace conventions as used in the input file. Thus, if there are no symbol conflicts in the input, there will be no conflicts in the generated - code.

    -

    Note: In the same way that no resolution is performed on + code.

    +

    Note: In the same way that no resolution is performed on parameters, a conversion operator name must match exactly to how it is defined. Do not change the qualification of the operator. For example, - suppose you had an interface like this:

    -
    -
    + suppose you had an interface like this:

    +
    +
     namespace foo {
       class bar;
       class spam {
    @@ -9765,26 +10069,26 @@ namespace foo {
         ...
       };
     }
    -
    -
    -

    The following is how the feature is expected to be written for a - successful match:

    -
    -
    +
    +
    +

    The following is how the feature is expected to be written for a + successful match:

    +
    +
     %rename(tofoo) foo::spam::operator bar();
    -
    -
    -

    The following does not work as no namespace resolution is performed - in the matching of conversion operator names:

    -
    -
    -%rename(tofoo) foo::spam::operator foo::bar();
    -
    -
    -

    Note, however, that if the operator is defined using a qualifier in - its name, then the feature must use it too...

    -
    -
    +
    +
    +

    The following does not work as no namespace resolution is performed + in the matching of conversion operator names:

    +
    +
    +%rename(tofoo) foo::spam::operator foo::bar();
    +
    +
    +

    Note, however, that if the operator is defined using a qualifier in + its name, then the feature must use it too...

    +
    +
     %rename(tofoo) foo::spam::operator bar();      // will not match
     %rename(tofoo) foo::spam::operator foo::bar(); // will match
     namespace foo {
    @@ -9796,29 +10100,27 @@ namespace foo {
         ...
       };
     }
    -
    -
    -

    Compatibility Note: Versions of SWIG prior to 1.3.32 were +

    +
    +

    Compatibility Note: Versions of SWIG prior to 1.3.32 were inconsistent in this approach. A fully qualified name was usually - required, but would not work in some situations.

    -

    Note: The flattening of namespaces is only intended to serve - as a basic namespace implementation. None of the target language - modules are currently programmed with any namespace awareness. In the - future, language modules may or may not provide more advanced namespace - support.

    -

    6.19.1 The nspace feature for namespaces -

    -

    Some target languages provide support for the nspace -feature. The feature can be applied to any class, struct, union or + required, but would not work in some situations.

    +

    Note: The flattening of namespaces is only intended to serve + as a basic namespace implementation. More advanced handling of + namespaces is discussed next.

    +

    6.19.1 The nspace feature for namespaces +

    +

    Some target languages provide support for the nspace +feature. The feature can be applied to any class, struct, union or enum declared within a named namespace. The feature wraps the type within the target language specific concept of a namespace, for example, a Java package or C# namespace. Please see the language specific sections to see if the target language you are interested in - supports the nspace feature.

    -

    The feature is demonstrated below for C# using the following - example:

    -
    -
    + supports the nspace feature.

    +

    The feature is demonstrated below for C# using the following + example:

    +
    +
     %feature("nspace") MyWorld::Material::Color;
     %nspace MyWorld::Wrapping::Color; // %nspace is a macro for %feature("nspace")
     
    @@ -9834,32 +10136,32 @@ namespace MyWorld {
         };
       }
     }
    -
    -
    -

    Without the nspace feature directives above or %rename -, you would get the following warning resulting in just one of the -Color classes being available for use from the target language:

    -
    -
    +
    +
    +

    Without the nspace feature directives above or %rename +, you would get the following warning resulting in just one of the +Color classes being available for use from the target language:

    +
    +
     example.i:9: Error: 'Color' is multiply defined in the generated target language module.
     example.i:5: Error: Previous declaration of 'Color'
    -
    -
    -

    With the nspace feature the two Color classes are +

    +
    +

    With the nspace feature the two Color classes are wrapped into the equivalent C# namespaces. A fully qualified - constructor call of each these two types in C# is then:

    -
    -
    + constructor call of each these two types in C# is then:

    +
    +
     MyWorld.Material.Color materialColor = new MyWorld.Material.Color();
     MyWorld.Wrapping.Color wrappingColor = new MyWorld.Wrapping.Color();
    -
    -
    -

    Note that the nspace feature does not apply to variables +

    +
    +

    Note that the nspace feature does not apply to variables and functions simply declared in a namespace. For example, the following symbols cannot co-exist in the target language without - renaming. This may change in a future version.

    -
    -
    + renaming. This may change in a future version.

    +
    +
     namespace MyWorld {
       namespace Material {
         int quantity;
    @@ -9870,26 +10172,26 @@ namespace MyWorld {
         void dispatch();
       }
     }
    -
    -
    -

    Compatibility Note: The nspace feature was first introduced - in SWIG-2.0.0.

    -

    6.20 Renaming - templated types in namespaces

    -

    As has been mentioned, when %rename includes parameters, the +

    +
    +

    Compatibility Note: The nspace feature was first introduced + in SWIG-2.0.0.

    +

    6.20 Renaming + templated types in namespaces

    +

    As has been mentioned, when %rename includes parameters, the parameter types must match exactly (no typedef or namespace resolution is performed). SWIG treats templated types slightly differently and has an additional matching rule so unlike non-templated types, an exact match is not always required. If the fully qualified templated type is specified, it will have a higher precedence over the generic template type. In the example below, the generic template type is used to rename - to bbb and the fully qualified type is used to rename to -ccc.

    -
    -
    -%rename(bbb) Space::ABC::aaa(T t);                  // will match but with lower precedence than ccc
    + to bbb and the fully qualified type is used to rename to 
    +ccc.

    +
    +
    +%rename(bbb) Space::ABC::aaa(T t);                     // will match but with lower precedence than ccc
     %rename(ccc) Space::ABC<Space::XYZ>::aaa(Space::XYZ t);// will match but with higher precedence
    -                                                             // than bbb
    +                                                       // than bbb
     
     namespace Space {
       class XYZ {};
    @@ -9898,14 +10200,14 @@ namespace Space {
       };
     }
     %template(ABCXYZ) Space::ABC<Space::XYZ>;
    -
    -
    -

    It should now be apparent that there are many ways to achieve a +

    +
    +

    It should now be apparent that there are many ways to achieve a renaming with %rename. This is demonstrated by the following two examples, which are effectively the same as the above example. Below - shows how %rename can be placed inside a namespace.

    -
    -
    + shows how %rename can be placed inside a namespace.

    +
    +
     namespace Space {
       %rename(bbb) ABC::aaa(T t);                     // will match but with lower precedence than ccc
       %rename(ccc) ABC<Space::XYZ>::aaa(Space::XYZ t);// will match but with higher precedence than bbb
    @@ -9919,14 +10221,14 @@ namespace Space {
       };
     }
     %template(ABCXYZ) Space::ABC<Space::XYZ>;
    -
    -
    -

    Note that ddd does not match as there is no namespace +

    +
    +

    Note that ddd does not match as there is no namespace resolution for parameter types and the fully qualified type must be specified for template type expansion. The following example shows how - %rename can be placed within %extend.

    -
    -
    + %rename can be placed within %extend.

    +
    +
     namespace Space {
       %extend ABC {
         %rename(bbb) aaa(T t);         // will match but with lower precedence than ccc
    @@ -9944,63 +10246,63 @@ namespace Space {
       };
     }
     %template(ABCXYZ) Space::ABC<Space::XYZ>;
    -
    -
    -

    6.21 Exception - specifications

    -

    When C++ programs utilize exceptions, exceptional behavior is +

    +
    +

    6.21 Exception + specifications

    +

    When C++ programs utilize exceptions, exceptional behavior is sometimes specified as part of a function or method declaration. For - example:

    -
    -
    + example:

    +
    +
     class Error { };
     
     class Foo {
     public:
    -    ...
    -    void blah() throw(Error);
    -    ...
    +  ...
    +  void blah() throw(Error);
    +  ...
     };
    -
    -
    -

    If an exception specification is used, SWIG automatically generates +

    +
    +

    If an exception specification is used, SWIG automatically generates wrapper code for catching the indicated exception and, when possible, rethrowing it into the target language, or converting it into an error in the target language otherwise. For example, in Python, you can write - code like this:

    -
    -
    + code like this:

    +
    +
     f = Foo()
     try:
         f.blah()
     except Error, e:
         # e is a wrapped instance of "Error"
    -
    -
    -

    Details of how to tailor code for handling the caught C++ exception +

    +
    +

    Details of how to tailor code for handling the caught C++ exception and converting it into the target language's exception/error handling - mechanism is outlined in the "throws" typemap - section.

    -

    Since exception specifications are sometimes only used sparingly, + mechanism is outlined in the +"throws" typemap section.

    +

    Since exception specifications are sometimes only used sparingly, this alone may not be enough to properly handle C++ exceptions. To do that, a different set of special SWIG directives are used. Consult the - "Exception handling with %exception + "Exception handling with %exception " section for details. The next section details a way of simulating an - exception specification or replacing an existing one.

    -

    6.22 Exception handling with %catches

    -

    Exceptions are automatically handled for methods with an exception + exception specification or replacing an existing one.

    +

    6.22 Exception handling with %catches

    +

    Exceptions are automatically handled for methods with an exception specification. Similar handling can be achieved for methods without - exception specifications through the %catches feature. It is + exception specifications through the %catches feature. It is also possible to replace any declared exception specification using the - %catches feature. In fact, %catches uses the same -"throws" typemaps that SWIG uses for exception specifications in - handling exceptions. The %catches feature must contain a list + %catches feature. In fact, %catches uses the same +"throws" typemaps that SWIG uses for exception specifications in + handling exceptions. The %catches feature must contain a list of possible types that can be thrown. For each type that is in the list, SWIG will generate a catch handler, in the same way that it would for types declared in the exception specification. Note that the list - can also include the catch all specification "...". For example,

    -
    -
    + can also include the catch all specification "...". For example,

    +
    +
     struct EBase { virtual ~EBase(); };
     struct Error1 : EBase { };
     struct Error2 : EBase { };
    @@ -10012,84 +10314,84 @@ struct Error4 : EBase { };
     
     class Foo {
     public:
    -    ...
    -    void bar();
    -    void blah() throw(Error1, Error2, Error3, Error4);
    -    ...
    +  ...
    +  void bar();
    +  void blah() throw(Error1, Error2, Error3, Error4);
    +  ...
     };
    -
    -
    -

    For the Foo::bar() method, which can throw anything, SWIG - will generate catch handlers for Error1, Error2 as +

    +
    +

    For the Foo::bar() method, which can throw anything, SWIG + will generate catch handlers for Error1, Error2 as well as a catch all handler (...). Each catch handler will convert the caught exception and convert it into a target language error/exception. The catch all handler will convert the caught exception into an unknown - error/exception.

    -

    Without the %catches feature being attached to -Foo::blah(), SWIG will generate catch handlers for all of the types - in the exception specification, that is, Error1, Error2, Error3, - Error4. However, with the %catches feature above, just a - single catch handler for the base class, EBase will be + error/exception.

    +

    Without the %catches feature being attached to +Foo::blah(), SWIG will generate catch handlers for all of the types + in the exception specification, that is, Error1, Error2, Error3, + Error4. However, with the %catches feature above, just a + single catch handler for the base class, EBase will be generated to convert the C++ exception into a target language - error/exception.

    -

    6.23 Pointers to Members

    -

    Starting with SWIG-1.3.7, there is limited parsing support for - pointers to C++ class members. For example:

    -
    -
    + error/exception.

    +

    6.23 Pointers to Members

    +

    Starting with SWIG-1.3.7, there is limited parsing support for + pointers to C++ class members. For example:

    +
    +
     double do_op(Object *o, double (Object::*callback)(double, double));
     extern double (Object::*fooptr)(double, double);
     %constant double (Object::*FOO)(double, double) = &Object::foo;
    -
    -
    -

    Although these kinds of pointers can be parsed and represented by +

    +
    +

    Although these kinds of pointers can be parsed and represented by the SWIG type system, few language modules know how to handle them due - to implementation differences from standard C pointers. Readers are - strongly advised to consult an advanced text such as the "The - Annotated C++ Manual" for specific details.

    -

    When pointers to members are supported, the pointer value might - appear as a special string like this:

    -
    -
    + to implementation differences from standard C pointers. Readers are
    + strongly advised to consult an advanced text such as the "The
    + Annotated C++ Manual" for specific details.

    +

    When pointers to members are supported, the pointer value might + appear as a special string like this:

    +
    +
     >>> print example.FOO
     _ff0d54a800000000_m_Object__f_double_double__double
     >>>
    -
    -
    -

    In this case, the hexadecimal digits represent the entire value of +

    +
    +

    In this case, the hexadecimal digits represent the entire value of the pointer which is usually the contents of a small C++ structure on - most machines.

    -

    SWIG's type-checking mechanism is also more limited when working + most machines.

    +

    SWIG's type-checking mechanism is also more limited when working with member pointers. Normally SWIG tries to keep track of inheritance when checking types. However, no such support is currently provided for - member pointers.

    -

    6.24 Smart pointers and - operator->()

    -

    In some C++ programs, objects are often encapsulated by + member pointers.

    +

    6.24 Smart pointers and + operator->()

    +

    In some C++ programs, objects are often encapsulated by smart-pointers or proxy classes. This is sometimes done to implement automatic memory management (reference counting) or persistence. - Typically a smart-pointer is defined by a template class where the --> operator has been overloaded. This class is then wrapped around - some other class. For example:

    -
    -
    + Typically a smart-pointer is defined by a class template where the 
    +-> operator has been overloaded. This class is then wrapped around
    + some other class. For example:

    +
    +
     // Smart-pointer class
     template<class T> class SmartPtr {
    -    T *pointee;
    +  T *pointee;
     public:
    -    SmartPtr(T *p) : pointee(p) { ... }
    -    T *operator->() {
    -        return pointee;
    -    }
    -    ...
    +  SmartPtr(T *p) : pointee(p) { ... }
    +  T *operator->() {
    +    return pointee;
    +  }
    +  ...
     };
     
     // Ordinary class
     class Foo_Impl {
     public:
    -    int x;
    -    virtual void bar();
    -    ...
    +  int x;
    +  virtual void bar();
    +  ...
     };
     
     // Smart-pointer wrapper
    @@ -10097,44 +10399,44 @@ typedef SmartPtr<Foo_Impl> Foo;
     
     // Create smart pointer Foo
     Foo make_Foo() {
    -    return SmartPtr<Foo_Impl>(new Foo_Impl());
    +  return SmartPtr<Foo_Impl>(new Foo_Impl());
     }
     
     // Do something with smart pointer Foo
     void do_something(Foo f) {
    -    printf("x = %d\n", f->x);
    -    f->bar();
    +  printf("x = %d\n", f->x);
    +  f->bar();
     }
     
     // Call the wrapped smart pointer proxy class in the target language 'Foo'
     %template(Foo) SmartPtr<Foo_Impl>;
    -
    -
    -

    A key feature of this approach is that by defining operator-> +

    +
    +

    A key feature of this approach is that by defining operator-> the methods and attributes of the object wrapped by a smart pointer are transparently accessible. For example, expressions such as these (from - the previous example),

    -
    -
    + the previous example),

    +
    +
     f->x
     f->bar()
    -
    -
    -

    are transparently mapped to the following

    -
    -
    +
    +
    +

    are transparently mapped to the following

    +
    +
     (f.operator->())->x;
     (f.operator->())->bar();
    -
    -
    -

    When generating wrappers, SWIG tries to emulate this functionality - to the extent that it is possible. To do this, whenever -operator->() is encountered in a class, SWIG looks at its returned +

    +
    +

    When generating wrappers, SWIG tries to emulate this functionality + to the extent that it is possible. To do this, whenever +operator->() is encountered in a class, SWIG looks at its returned type and uses it to generate wrappers for accessing attributes of the underlying object. For example, wrapping the above code produces - wrappers like this:

    -
    -
    + wrappers like this:

    +
    +
     int Foo_x_get(Foo *f) {
       return (*f)->x;
     }
    @@ -10144,61 +10446,61 @@ void Foo_x_set(Foo *f, int value) {
     void Foo_bar(Foo *f) {
       (*f)->bar();
     }
    -
    -
    -

    These wrappers take a smart-pointer instance as an argument, but - dereference it in a way to gain access to the object returned by -operator->(). You should carefully compare these wrappers to those - in the first part of this chapter (they are slightly different).

    -

    The end result is that access looks very similar to C++. For - example, you could do this in Python:

    -
    -
    +
    +
    +

    These wrappers take a smart-pointer instance as an argument, but + dereference it in a way to gain access to the object returned by +operator->(). You should carefully compare these wrappers to those + in the first part of this chapter (they are slightly different).

    +

    The end result is that access looks very similar to C++. For + example, you could do this in Python:

    +
    +
     >>> f = make_Foo()
     >>> print f.x
     0
     >>> f.bar()
     >>>
    -
    -
    -

    When generating wrappers through a smart-pointer, SWIG tries to +

    +
    +

    When generating wrappers through a smart-pointer, SWIG tries to generate wrappers for all methods and attributes that might be - accessible through operator->(). This includes any methods + accessible through operator->(). This includes any methods that might be accessible through inheritance. However, there are a - number of restrictions:

    -
      -
    • Member variables and methods are wrapped through a smart pointer. - Enumerations, constructors, and destructors are not wrapped.
    • -
    • -

      If the smart-pointer class and the underlying object both define a + number of restrictions:

      +
        +
      • Member variables and methods are wrapped through a smart pointer. + Enumerations, constructors, and destructors are not wrapped.
      • +
      • +

        If the smart-pointer class and the underlying object both define a method or variable of the same name, then the smart-pointer version has - precedence. For example, if you have this code

        -
        -
        + precedence. For example, if you have this code

        +
        +
         class Foo {
         public:
        -    int x;
        +  int x;
         };
         
         class Bar {
         public:
        -    int x;       
        -    Foo *operator->();
        +  int x;       
        +  Foo *operator->();
         };
        -
        -
        -

        then the wrapper for Bar::x accesses the x defined - in Bar, and not the x defined in Foo.

        -
      • -
      -

      If your intent is to only expose the smart-pointer class in the + + +

      then the wrapper for Bar::x accesses the x defined + in Bar, and not the x defined in Foo.

      +
    • +
    +

    If your intent is to only expose the smart-pointer class in the interface, it is not necessary to wrap both the smart-pointer class and the class for the underlying object. However, you must still tell SWIG about both classes if you want the technique described in this section to work. To only generate wrappers for the smart-pointer class, you can - use the %ignore directive. For example:

    -
    -
    + use the %ignore directive. For example:

    +
    +
     %ignore Foo;
     class Foo {       // Ignored
     };
    @@ -10208,33 +10510,33 @@ public:
       Foo *operator->();
       ...
     };
    -
    -
    -

    Alternatively, you can import the definition of Foo from a - separate file using %import.

    -

    Note: When a class defines operator->(), the - operator itself is wrapped as a method __deref__(). For - example:

    -
    -
    +
    +
    +

    Alternatively, you can import the definition of Foo from a + separate file using %import.

    +

    Note: When a class defines operator->(), the + operator itself is wrapped as a method __deref__(). For + example:

    +
    +
     f = Foo()               # Smart-pointer
     p = f.__deref__()       # Raw pointer from operator->
    -
    -
    -

    Note: To disable the smart-pointer behavior, use %ignore - to ignore operator->(). For example:

    -
    -
    +
    +
    +

    Note: To disable the smart-pointer behavior, use %ignore + to ignore operator->(). For example:

    +
    +
     %ignore Bar::operator->;
    -
    -
    -

    Note: Smart pointer support was first added in SWIG-1.3.14.

    -

    6.25 C++ reference counted objects - - ref/unref feature

    -

    Another similar idiom in C++ is the use of reference counted - objects. Consider for example:

    -
    -
    +
    +
    +

    Note: Smart pointer support was first added in SWIG-1.3.14.

    +

    6.25 C++ reference counted objects - + ref/unref feature

    +

    Another similar idiom in C++ is the use of reference counted + objects. Consider for example:

    +
    +
     class RCObj  {
       // implement the ref counting mechanism
       int add_ref();
    @@ -10291,18 +10593,18 @@ int main() {
       delete b1;          // 'a' unref, but not deleted (count: 1)
       a->unref();         // 'a' unref and deleted (count: 0)
     }
    -
    -
    -

    In the example above, the 'A' class instance 'a' is a reference +

    +
    +

    In the example above, the 'A' class instance 'a' is a reference counted object, which can't be deleted arbitrarily since it is shared - between the objects 'b1' and 'b2'. 'A' is derived from a Reference - Counted Object 'RCObj', which implements the ref/unref idiom.

    -

    To tell SWIG that 'RCObj' and all its derived classes are reference - counted objects, use the "ref" and "unref" -features. These are also available as %refobject and -%unrefobject, respectively. For example:

    -
    -
    + between the objects 'b1' and 'b2'. 'A' is derived from a Reference
    + Counted Object 'RCObj', which implements the ref/unref idiom.

    +

    To tell SWIG that 'RCObj' and all its derived classes are reference + counted objects, use the "ref" and "unref" +features. These are also available as %refobject and +%unrefobject, respectively. For example:

    +
    +
     %module example
     ...
     
    @@ -10312,17 +10614,17 @@ features. These are also available as %refobject and 
     %include "rcobj.h"
     %include "A.h"
     ...
    -
    -
    -

    where the code passed to the "ref" and "unref" features will be - executed as needed whenever a new object is passed to python, or when - python tries to release the proxy object instance, respectively.

    -

    On the python side, the use of a reference counted object is no - different to any other regular instance:

    -
    -
    +
    +
    +

    where the code passed to the "ref" and "unref" features will be + executed as needed whenever a new object is passed to Python, or when + Python tries to release the proxy object instance, respectively.

    +

    On the Python side, the use of a reference counted object is no + different to any other regular instance:

    +
    +
     def create_A():
    -    a = A()         # SWIG ref 'a' - new object is passed to python (count: 1)
    +    a = A()         # SWIG ref 'a' - new object is passed to Python (count: 1)
         b1 = B(a)       # C++ ref 'a (count: 2)
         if 1 + 1 == 2:
             b2 = B(a)   # C++ ref 'a' (count: 3)
    @@ -10330,145 +10632,145 @@ def create_A():
     
     a = create_A()      # (count: 1)
     exit                # 'a' is released, SWIG unref 'a' called in the destructor wrapper (count: 0)
    -
    -
    -

    Note that the user doesn't explicitly need to call 'a->ref()' nor +

    +
    +

    Note that the user doesn't explicitly need to call 'a->ref()' nor 'a->unref()' (and neither 'delete a'). Instead, SWIG takes cares of executing the "ref" and "unref" calls as needed. If the user doesn't specify the "ref/unref" feature for a type, SWIG will produce code - equivalent to defining these features:

    -
    -
    + equivalent to defining these features:

    +
    +
     %feature("ref")   ""
     %feature("unref") "delete $this;"
    -
    -
    -

    In other words, SWIG will not do anything special when a new object - is passed to python, and it will always 'delete' the underlying object - when python releases the proxy instance.

    -

    The %newobject feature is +

    +
    +

    In other words, SWIG will not do anything special when a new object + is passed to Python, and it will always 'delete' the underlying object + when Python releases the proxy instance.

    +

    The %newobject feature is designed to indicate to the target language that it should take ownership of the returned object. When used in conjunction with a type that has the "ref" feature associated with it, it additionally emits the code in the "ref" feature into the C++ wrapper. Consider wrapping - the following factory function in addition to the above:

    -
    -
    + the following factory function in addition to the above:

    +
    +
     %newobject AFactory;
     A *AFactory() {
       return new A();
     }
    -
    -
    -

    The AFactory function now acts much like a call to the -A constructor with respect to memory handling:

    -
    -
    +
    +
    +

    The AFactory function now acts much like a call to the +A constructor with respect to memory handling:

    +
    +
     a = AFactory()    # SWIG ref 'a' due to %newobject (count: 1)
     exit              # 'a' is released, SWIG unref 'a' called in the destructor wrapper (count: 0)
    -
    -
    -

    6.26 Using declarations and inheritance

    -

    using declarations are sometimes used to adjust access to - members of base classes. For example:

    -
    -
    +
    +
    +

    6.26 Using declarations and inheritance

    +

    using declarations are sometimes used to adjust access to + members of base classes. For example:

    +
    +
     class Foo {
     public:
    -      int  blah(int x);
    +  int  blah(int x);
     };
     
     class Bar {
     public:
    -      double blah(double x);
    +  double blah(double x);
     };
     
     class FooBar : public Foo, public Bar {
     public:
    -      using Foo::blah;  
    -      using Bar::blah;
    -      char *blah(const char *x);
    +  using Foo::blah;
    +  using Bar::blah;
    +  char *blah(const char *x);
     };
    -
    -
    -

    In this example, the using declarations make different - versions of the overloaded blah() method accessible from the - derived class. For example:

    -
    -
    +
    +
    +

    In this example, the using declarations make different + versions of the overloaded blah() method accessible from the + derived class. For example:

    +
    +
     FooBar *f;
     f->blah(3);         // Ok. Invokes Foo::blah(int)
     f->blah(3.5);       // Ok. Invokes Bar::blah(double)
     f->blah("hello");   // Ok. Invokes FooBar::blah(const char *);
    -
    -
    -

    SWIG emulates the same functionality when creating wrappers. For +

    +
    +

    SWIG emulates the same functionality when creating wrappers. For example, if you wrap this code in Python, the module works just like - you would expect:

    -
    -
    + you would expect:

    +
    +
     >>> import example
     >>> f = example.FooBar()
     >>> f.blah(3)
     >>> f.blah(3.5)
     >>> f.blah("hello")
    -
    -
    -

    using declarations can also be used to change access when - applicable. For example:

    -
    -
    +
    +
    +

    using declarations can also be used to change access when + applicable. For example:

    +
    +
     class Foo {
     protected:
    -    int x;
    -    int blah(int x);
    +  int x;
    +  int blah(int x);
     };
     
     class Bar : public Foo {
     public:
    -    using Foo::x;       // Make x public
    -    using Foo::blah;    // Make blah public
    +  using Foo::x;       // Make x public
    +  using Foo::blah;    // Make blah public
     };
    -
    -
    -

    This also works in SWIG---the exposed declarations will be wrapped - normally.

    -

    When using declarations are used as shown in these +

    +
    +

    This also works in SWIG---the exposed declarations will be wrapped + normally.

    +

    When using declarations are used as shown in these examples, declarations from the base classes are copied into the derived class and wrapped normally. When copied, the declarations - retain any properties that might have been attached using %rename -, %ignore, or %feature. Thus, if a method is ignored - in a base class, it will also be ignored by a using - declaration.

    -

    Because a using declaration does not provide fine-grained + retain any properties that might have been attached using %rename +, %ignore, or %feature. Thus, if a method is ignored + in a base class, it will also be ignored by a using + declaration.

    +

    Because a using declaration does not provide fine-grained control over the declarations that get imported, it may be difficult to manage such declarations in applications that make heavy use of SWIG - customization features. If you can't get using to work - correctly, you can always change the interface to the following:

    -
    -
    + customization features. If you can't get using to work
    + correctly, you can always change the interface to the following:

    +
    +
     
     class FooBar : public Foo, public Bar {
     public:
     #ifndef SWIG
    -      using Foo::blah;  
    -      using Bar::blah;
    +  using Foo::blah;
    +  using Bar::blah;
     #else
    -      int blah(int x);         // explicitly tell SWIG about other declarations
    -      double blah(double x);
    +  int blah(int x);         // explicitly tell SWIG about other declarations
    +  double blah(double x);
     #endif
     
    -      char *blah(const char *x);
    +  char *blah(const char *x);
     };
    -
    -
    -

    Notes:

    -
      -
    • -

      If a derived class redefines a method defined in a base class, then a - using declaration won't cause a conflict. For example:

      -
      -
      +
      +
      +

      Notes:

      +
        +
      • +

        If a derived class redefines a method defined in a base class, then a + using declaration won't cause a conflict. For example:

        +
        +
         class Foo {
         public:
           int blah(int );
        @@ -10480,13 +10782,13 @@ public:
           using Foo::blah;    // Only imports blah(double);
           int blah(int);
         };
        -
        -
      • -
      • -

        Resolving ambiguity in overloading may prevent declarations from - being imported by using. For example:

        -
        -
        +
        +
      • +
      • +

        Resolving ambiguity in overloading may prevent declarations from + being imported by using. For example:

        +
        +
         %rename(blah_long) Foo::blah(long);
         class Foo {
         public:
        @@ -10499,39 +10801,39 @@ public:
           using Foo::blah;     // Only imports blah(int)
           double blah(double x);
         };
        -
        -
      • -
      -

      6.27 Nested classes

      -

      If the target language supports the nested classes concept (like +

    +
    + +

    6.27 Nested classes

    +

    If the target language supports the nested classes concept (like Java), the nested C++ classes are wrapped as nested target language proxy classes. (In case of Java - "static" nested classes.) Only public nested classes are wrapped. Otherwise there is little difference - between nested and normal classes.

    -

    If the target language doesn't support nested classes directly, or - the support is not implemented in the language module (like for python + between nested and normal classes.

    +

    If the target language doesn't support nested classes directly, or + the support is not implemented in the language module (like for Python currently), then the visible nested classes are moved to the same name space as the containing class (nesting hierarchy is "flattened"). The same behaviour may be turned on for C# and Java by the %feature ("flatnested"); If there is a class with the same name in the outer namespace the inner class (or the global one) may be renamed or - ignored:

    -
    -
    + ignored:

    +
    +
     %rename (Bar_Foo) Bar::Foo;
     class Foo {};
     class Bar {
       public:
       class Foo {};
     };
    -
    -
    -

    If a nested class, within an outer class, has to be used as a +

    +
    +

    If a nested class, within an outer class, has to be used as a template parameter within the outer class, then the template will have - to be instantiated with %template before the beginning of the - outer class. An example can be found in the -Templates section.

    -

    Compatibility Note: Prior to SWIG-3.0.0, there was limited + to be instantiated with %template before the beginning of the + outer class. An example can be found in the +Templates section.

    +

    Compatibility Note: Prior to SWIG-3.0.0, there was limited nested class support. Nested classes were treated as opaque pointers. However, there was a workaround for nested class support in these older versions requiring the user to replicate the nested class in the global @@ -10540,35 +10842,35 @@ Templates section.

    in approximately the same behaviour as the "flatnested" feature. With proper nested class support now available in SWIG-3.0.0, this feature has been deprecated and no longer works requiring code changes. If you - see the following warning:

    -
    -
    + see the following warning:

    +
    +
     example.i:8: Warning 126: The nestedworkaround feature is deprecated
    -
    -
    -

    consider using the "flatnested" feature discussed above which +

    +
    +

    consider using the "flatnested" feature discussed above which generates a non-nested proxy class, like the "nestedworkaround" feature did. Alternatively, use the default nested class code generation, which may generate an equivalent to a nested proxy class in the target - language, depending on the target language support.

    -

    SWIG-1.3.40 and earlier versions did not have the -nestedworkaround feature and the generated code resulting from + language, depending on the target language support.

    +

    SWIG-1.3.40 and earlier versions did not have the +nestedworkaround feature and the generated code resulting from parsing nested classes did not always compile. Nested class warnings - could also not be suppressed using %warnfilter.

    -

    6.28 A brief rant about const-correctness -

    -

    A common issue when working with C++ programs is dealing with all - possible ways in which the const qualifier (or lack thereof) + could also not be suppressed using %warnfilter.

    +

    6.28 A brief rant about const-correctness +

    +

    A common issue when working with C++ programs is dealing with all + possible ways in which the const qualifier (or lack thereof) will break your program, all programs linked against your program, and - all programs linked against those programs.

    -

    Although SWIG knows how to correctly deal with const in its + all programs linked against those programs.

    +

    Although SWIG knows how to correctly deal with const in its internal type system and it knows how to generate wrappers that are free of const-related warnings, SWIG does not make any attempt to preserve const-correctness in the target language. Thus, it is possible - to pass const qualified objects to non-const methods and - functions. For example, consider the following code in C++:

    -
    -
    + to pass const qualified objects to non-const methods and
    + functions. For example, consider the following code in C++:

    +
    +
     const Object * foo();
     void bar(Object *);
     
    @@ -10577,29 +10879,166 @@ void bar(Object *);
     void blah() {
       bar(foo());         // Error: bar discards const
     };
    -
    -
    -

    Now, consider the behavior when wrapped into a Python module:

    -
    -
    +
    +
    +

    Now, consider the behavior when wrapped into a Python module:

    +
    +
     >>> bar(foo())         # Okay
     >>> 
    -
    -
    -

    Although this is clearly a violation of the C++ type-system, fixing +

    +
    +

    Although this is clearly a violation of the C++ type-system, fixing the problem doesn't seem to be worth the added implementation complexity that would be required to support it in the SWIG run-time type system. There are no plans to change this in future releases - (although we'll never rule anything out entirely).

    -

    The bottom line is that this particular issue does not appear to be + (although we'll never rule anything out entirely).

    +

    The bottom line is that this particular issue does not appear to be a problem for most SWIG projects. Of course, you might want to consider using another tool if maintaining constness is the most important part - of your project.

    -

    6.29 Where to go for more information

    -

    If you're wrapping serious C++ code, you might want to pick up a + of your project.

    +

    6.29 Callbacks to the + target language

    +

    C/C++ function pointers are often used for callbacks and this is + discussed in the Pointers to functions and + callbacks section. The callback techniques described therein + provide a way to control callbacks to a C/C++ function but not + callbacks into the target language. The techniques described below show + how the director feature can be used to support callbacks from C/C++ to + the target language.

    +

    6.29.1 Introduction + to director classes

    +

    The director feature enables the ability for a target language class + to derive from a wrapped C++ class. The target language can override + virtual methods of a wrapped C++ class, thereby supporting + cross-language polymorphism. Code can 'call up' from C++ into the + target language by simply calling a virtual method overridden in a + derived class in the target language. The wrapped C++ classes that have + this ability are termed 'director' classes. The director feature is + documented individually in each target language and the reader should + locate and read this to obtain a full understanding of directors.

    +

    6.29.2 Using + directors and target language callbacks

    +

    SWIG's primary goal is to make it possible to call C/C++ code from a + target language, however, the director feature enables the reverse. + While there isn't simple direct support for calling target language + code from C, the director feature makes this possible. It does require + some work and additional wrapper code to be provided by the user. The + additional code required must be C++ and not C code and hence may + introduce a small dependency on C++ if using a pure C project. In a + nutshell, the user must create a C++ base class and turn it into a + director class. A virtual method in the director base class is + required. SWIG generates the code to call up into the target language + when wrapping the director virtual method.

    +

    Let's look at some details next. Consider the same function pointer + for a callback called binary_op from the +Pointers to functions and callbacks section. For completeness, the + code required for the module and director feature is also shown:

    +
    +
    +%module(directors="1") example
    +
    +%{
    +int binary_op(int a, int b, int (*op)(int, int)) {
    +  return op(a, b);
    +}
    +%}
    +
    +
    +

    The goal is to have a target language function that gets called by +binary_op. The target language function should have the equivalent + signature as the C/C++ function pointer int (*op)(int, int). + As we are using directors, we need a C++ virtual method with this + signature, so let's define the C++ class and pure virtual method first + and make it a director class via the director feature:

    +
    +
    +%feature("director") BinaryOp;
    +
    +%inline %{
    +struct BinaryOp {
    +  virtual int handle(int a, int b) = 0;
    +  virtual ~BinaryOp() {}
    +};
    +%}
    +
    +
    +

    The following handler_helper function and +binary_op_wrapper function completes the code needed in the + C++/SWIG layer. The binary_op_wrapper function is wrapped by + SWIG and is very similar to the binary_op function, however, + it takes a pointer to the director base class BinaryOp instead + of a C/C++ function pointer.

    +
    +
    +%{
    +static BinaryOp *handler_ptr = NULL;
    +static int handler_helper(int a, int b) {
    +  // Make the call up to the target language when handler_ptr
    +  // is an instance of a target language director class
    +  return handler_ptr->handle(a, b);
    +}
    +// If desired, handler_ptr above could be changed to a thread-local variable in order to make thread-safe
    +%}
    +
    +%inline %{
    +int binary_op_wrapper(int a, int b, BinaryOp *handler) {
    +  handler_ptr = handler;
    +  int result = binary_op(a, b, &handler_helper);
    +  handler = NULL;
    +  return result;
    +}
    +%}
    +
    +
    +

    On the target language side, we need to derive a class from +BinaryOp and override the handle method. In Python this + could be as simple as:

    +
    +
    +import example
    +
    +# PythonBinaryOp class is defined and derived from C++ class BinaryOp
    +class PythonBinaryOp(example.BinaryOp):
    +
    +    # Define Python class 'constructor'
    +    def __init__(self):
    +        # Call C++ base class constructor
    +        example.BinaryOp.__init__(self)
    +
    +    # Override C++ method: virtual int handle(int a, int b) = 0;
    +    def handle(self, a, b):
    +        # Return the product
    +        return a * b
    +
    +
    +

    For this to work from Python, an instance of the PythonBinaryOp + class is created and then passed to binary_op_wrapper. The net + result is the binary_op function will in turn be called which + will call handler_helper which will call the virtual +handle method, that is, the Python method handle in the + PythonBinaryOp class. The result will be the product of 10 and 20 and + make its way back to Python and hence 200 will be printed with the + following code:

    +
    +
    +handler = PythonBinaryOp()
    +result = example.binary_op_wrapper(10, 20, handler)
    +print result
    +
    +
    +

    This has thus demonstrated a C/C++ function pointer calling back + into a target language function. The code could be made a little more + user friendly by using %rename to provide the original +binary_op name from the target language instead of +binary_op_wrapper. A C++ functor base class and Python functor + class could also be used instead, but these are left as exercises for + the reader.

    +

    6.30 Where to go for more information

    +

    If you're wrapping serious C++ code, you might want to pick up a copy of "The Annotated C++ Reference Manual" by Ellis and Stroustrup. This is the reference document we use to guide a lot of SWIG's C++ - support.

    + support.

    @@ -10610,103 +11049,106 @@ void blah() {
    -

    7 SWIG and C++11

    +

    7 SWIG and C++11

    - + -

    7.1 Introduction

    -

    This chapter gives you a brief overview about the SWIG implementation - of the C++11 standard. This part of SWIG is still a work in progress.

    -

    SWIG supports the new C++ syntax changes with some minor limitations +

    7.1 Introduction

    +

    This chapter gives you a brief overview about the SWIG implementation + of the C++11 standard. This part of SWIG is still a work in progress.

    +

    SWIG supports the new C++ syntax changes with some minor limitations in some areas such as decltype expressions and variadic templates. Wrappers for the new STL types (unordered_ containers, result_of, tuples) are incomplete. The wrappers for the new containers would work much like the C++03 containers and users are welcome to help by adapting the existing container interface files and submitting them as - a patch for inclusion in future versions of SWIG.

    -

    7.2 Core language - changes

    -

    7.2.1 - Rvalue reference and move semantics

    -

    SWIG correctly parses the rvalue reference syntax '&&', for example + a patch for inclusion in future versions of SWIG.

    +

    7.2 Core language + changes

    +

    7.2.1 + Rvalue reference and move semantics

    +

    SWIG correctly parses the rvalue reference syntax '&&', for example the typical usage of it in the move constructor and move assignment - operator below:

    -
    -
    + operator below:

    +
    +
     class MyClass {
     ...
       std::vector<int> numbers;
    @@ -10717,72 +11159,72 @@ public:
         return *this;
       }
     };
    -
    -
    -

    Rvalue references are designed for C++ temporaries and so are not +

    +
    +

    Rvalue references are designed for C++ temporaries and so are not very useful when used from non-C++ target languages. Generally you - would just ignore them via %ignore before parsing the class. - For example, ignore the move constructor:

    -
    -
    + would just ignore them via %ignore before parsing the class.
    + For example, ignore the move constructor:

    +
    +
     %ignore MyClass::MyClass(MyClass &&);
    -
    -
    -

    The plan is to ignore move constructors by default in a future +

    +
    +

    The plan is to ignore move constructors by default in a future version of SWIG. Note that both normal assignment operators as well as move assignment operators are ignored by default in most target - languages with the following warning:

    -
    -
    + languages with the following warning:

    +
    +
     example.i:18: Warning 503: Can't wrap 'operator =' unless renamed to a valid identifier.
    -
    -
    -

    7.2.2 - Generalized constant expressions

    -

    SWIG parses and identifies the keyword constexpr, but cannot +

    +
    +

    7.2.2 + Generalized constant expressions

    +

    SWIG parses and identifies the keyword constexpr, but cannot fully utilise it. These C++ compile time constants are usable as runtime constants from the target languages. Below shows example usage for assigning a C++ compile time constant from a compile time constant - function:

    -
    -
    + function:

    +
    +
     constexpr int XXX() { return 10; }
     constexpr int YYY = XXX() + 100;
    -
    -
    -

    When either of these is used from a target language, a runtime call - is made to obtain the underlying constant.

    -

    7.2.3 Extern template

    -

    SWIG correctly parses the keywords extern template. However, +

    +
    +

    When either of these is used from a target language, a runtime call + is made to obtain the underlying constant.

    +

    7.2.3 Extern template

    +

    SWIG correctly parses the keywords extern template. However, this template instantiation suppression in a translation unit has no relevance outside of the C++ compiler and so is not used by SWIG. SWIG - only uses %template for instantiating and wrapping templates.

    -
    -
    + only uses %template for instantiating and wrapping templates.

    +
    +
     template class std::vector<int>;        // C++03 explicit instantiation in C++
     extern template class std::vector<int>; // C++11 explicit instantiation suppression in C++
     %template(VectorInt) std::vector<int>;  // SWIG instantiation
    -
    -
    -

    7.2.4 Initializer lists

    -

    Initializer lists are very much a C++ compiler construct and are not +

    +
    +

    7.2.4 Initializer lists

    +

    Initializer lists are very much a C++ compiler construct and are not very accessible from wrappers as they are intended for compile time - initialization of classes using the special std::initializer_list + initialization of classes using the special std::initializer_list type. SWIG detects usage of initializer lists and will emit a special - informative warning each time one is used:

    -
    -
    + informative warning each time one is used:

    +
    +
     example.i:33: Warning 476: Initialization using std::initializer_list.
    -
    -
    -

    Initializer lists usually appear in constructors but can appear in +

    +
    +

    Initializer lists usually appear in constructors but can appear in any function or method. They often appear in constructors which are overloaded with alternative approaches to initializing a class, such as the std container's push_back method for adding elements to a container. The recommended approach then is to simply ignore the - initializer-list constructor, for example:

    -
    -
    + initializer-list constructor, for example:

    +
    +
     %ignore Container::Container(std::initializer_list<int>);
     class Container {
     public:
    @@ -10791,13 +11233,13 @@ public:
       void push_back(const int &);
       ...
     };
    -
    -
    -

    Alternatively you could modify the class and add another constructor - for initialization by some other means, for example by a -std::vector:

    -
    -
    +
    +
    +

    Alternatively you could modify the class and add another constructor + for initialization by some other means, for example by a +std::vector:

    +
    +
     %include <std_vector.i>
     class Container {
     public:
    @@ -10807,21 +11249,21 @@ public:
       void push_back(const int &);
       ...
     };
    -
    -
    -

    And then call this constructor from your target language, for - example, in Python, the following will call the constructor taking the -std::vector:

    -
    -
    +
    +
    +

    And then call this constructor from your target language, for + example, in Python, the following will call the constructor taking the +std::vector:

    +
    +
     >>> c = Container( [1, 2, 3, 4] )
    -
    -
    -

    If you are unable to modify the class being wrapped, consider +

    +
    +

    If you are unable to modify the class being wrapped, consider ignoring the initializer-list constructor and using %extend to add in - an alternative constructor:

    -
    -
    + an alternative constructor:

    +
    +
     %include <std_vector.i>
     %extend Container {
       Container(const std::vector<int> &elements) {
    @@ -10841,12 +11283,12 @@ public:
       void push_back(const int &);
       ...
     };
    -
    -
    -

    The above makes the wrappers look is as if the class had been - declared as follows:

    -
    -
    +
    +
    +

    The above makes the wrappers look is as if the class had been + declared as follows:

    +
    +
     %include <std_vector.i>
     class Container {
     public:
    @@ -10856,19 +11298,19 @@ public:
       void push_back(const int &);
       ...
     };
    -
    -
    -

    std::initializer_list is simply a container that can only +

    +
    +

    std::initializer_list is simply a container that can only be initialized at compile time. As it is just a C++ type, it is - possible to write typemaps for a target language container to map onto -std::initializer_list. However, this can only be done for a fixed + possible to write typemaps for a target language container to map onto +std::initializer_list. However, this can only be done for a fixed number of elements as initializer lists are not designed to be constructed with a variable number of arguments at runtime. The example below is a very simple approach which ignores any parameters passed in and merely initializes with a fixed list of fixed integer values chosen - at compile time:

    -
    -
    + at compile time:

    +
    +
     %typemap(in) std::initializer_list<int> {
       $1 = {10, 20, 30, 40, 50};
     }
    @@ -10879,23 +11321,23 @@ public:
       void push_back(const int &);
       ...
     };
    -
    -
    -

    Any attempt at passing in values from the target language will be - ignored and be replaced by {10, 20, 30, 40, 50}. Needless to +

    +
    +

    Any attempt at passing in values from the target language will be + ignored and be replaced by {10, 20, 30, 40, 50}. Needless to say, this approach is very limited, but could be improved upon, but only slightly. A typemap could be written to map a fixed number of - elements on to the std::initializer_list, but with values - decided at runtime. The typemaps would be target language specific.

    -

    Note that the default typemap for std::initializer_list + elements on to the std::initializer_list, but with values + decided at runtime. The typemaps would be target language specific.

    +

    Note that the default typemap for std::initializer_list does nothing but issue the warning and hence any user supplied typemaps - will override it and suppress the warning.

    -

    7.2.5 Uniform - initialization

    -

    The curly brackets {} for member initialization are fully supported - by SWIG:

    -
    -
    + will override it and suppress the warning.

    +

    7.2.5 Uniform + initialization

    +

    The curly brackets {} for member initialization are fully supported + by SWIG:

    +
    +
     struct BasicStruct {
      int x;
      double y;
    @@ -10910,77 +11352,77 @@ struct AltStruct {
     
     BasicStruct var1{5, 3.2}; // only fills the struct components
     AltStruct var2{2, 4.3};   // calls the constructor
    -
    -
    -

    Uniform initialization does not affect usage from the target - language, for example in Python:

    -
    -
    +
    +
    +

    Uniform initialization does not affect usage from the target + language, for example in Python:

    +
    +
     >>> a = AltStruct(10, 142.15)
     >>> a.x_
     10
     >>> a.y_
     142.15
    -
    -
    -

    7.2.6 Type inference

    -

    SWIG supports decltype() with some limitations. Single +

    +
    +

    7.2.6 Type inference

    +

    SWIG supports decltype() with some limitations. Single variables are allowed, however, expressions are not supported yet. For - example, the following code will work:

    -
    -
    + example, the following code will work:

    +
    +
     int i;
     decltype(i) j;
    -
    -
    -

    However, using an expression inside the decltype results in syntax - error:

    -
    -
    +
    +
    +

    However, using an expression inside the decltype results in syntax + error:

    +
    +
     int i; int j;
     decltype(i+j) k;  // syntax error
    -
    -
    -

    7.2.7 Range-based - for-loop

    -

    This feature is part of the implementation block only. SWIG ignores - it.

    -

    7.2.8 Lambda - functions and expressions

    -

    SWIG correctly parses most of the Lambda functions syntax. For - example:

    -
    -
    +
    +
    +

    7.2.7 Range-based + for-loop

    +

    This feature is part of the implementation block only. SWIG ignores + it.

    +

    7.2.8 Lambda + functions and expressions

    +

    SWIG correctly parses most of the Lambda functions syntax. For + example:

    +
    +
     auto val = [] { return something; };
     auto sum = [](int x, int y) { return x+y; };
     auto sum = [](int x, int y) -> int { return x+y; };
    -
    -
    -

    The lambda functions are removed from the wrappers for now, because +

    +
    +

    The lambda functions are removed from the wrappers for now, because of the lack of support for closures (scope of the lambda functions) in - the target languages.

    -

    Lambda functions used to create variables can also be parsed, but - due to limited support of auto when the type is deduced from - the expression, the variables are simply ignored.

    -
    -
    + the target languages.

    +

    Lambda functions used to create variables can also be parsed, but + due to limited support of auto when the type is deduced from + the expression, the variables are simply ignored.

    +
    +
     auto six = [](int x, int y) { return x+y; }(4, 2);
    -
    -
    -

    Better support should be available in a later release.

    -

    7.2.9 Alternate - function syntax

    -

    SWIG fully supports the new definition of functions. For example:

    -
    -
    +
    +
    +

    Better support should be available in a later release.

    +

    7.2.9 Alternate + function syntax

    +

    SWIG fully supports the new definition of functions. For example:

    +
    +
     struct SomeStruct {
       int FuncName(int x, int y);
     };
    -
    -
    -

    can now be written as in C++11:

    -
    -
    +
    +
    +

    can now be written as in C++11:

    +
    +
     struct SomeStruct {
       auto FuncName(int x, int y) -> int;
     };
    @@ -10988,30 +11430,30 @@ struct SomeStruct {
     auto SomeStruct::FuncName(int x, int y) -> int {
       return x + y;
     }
    -
    -
    -

    The usage in the target languages remains the same, for example in - Python:

    -
    -
    +
    +
    +

    The usage in the target languages remains the same, for example in + Python:

    +
    +
     >>> a = SomeStruct()
     >>> a.FuncName(10, 5)
     15
    -
    -
    -

    SWIG will also deal with type inference for the return type, as per - the limitations described earlier. For example:

    -
    -
    +
    +
    +

    SWIG will also deal with type inference for the return type, as per + the limitations described earlier. For example:

    +
    +
     auto square(float a, float b) -> decltype(a);
    -
    -
    -

    7.2.10 Object - construction improvement

    -

    There are three parts to object construction improvement. The first - improvement is constructor delegation such as the following:

    -
    -
    +
    +
    +

    7.2.10 Object + construction improvement

    +

    There are three parts to object construction improvement. The first + improvement is constructor delegation such as the following:

    +
    +
     class A {
     public:
       int a;
    @@ -11023,11 +11465,11 @@ public:
       A(int aa, int bb) : A(aa, bb, 30) {}
       A(int aa, int bb, int cc) { a=aa; b=bb; c=cc; }
     };
    -
    -
    -

    where peer constructors can be called. SWIG handles this without any - issue.

    -

    The second improvement is constructor inheritance via a using +

    +
    +

    where peer constructors can be called. SWIG handles this without any + issue.

    +

    The second improvement is constructor inheritance via a using declaration. This is parsed correctly, but the additional constructors are not currently added to the derived proxy class in the target language. An example is shown below: @@ -11035,9 +11477,9 @@ public: The extra constructors provided by the <tt>using</tt> syntax will add the appropriate constructors into the target language proxy derived classes. In the example below a wrapper for the <tt>DerivedClass(int)</tt> is added to <tt>DerivedClass</tt>: --> -

    -
    -
    +

    +
    +
     class BaseClass {
     public:
       BaseClass(int iValue);
    @@ -11047,12 +11489,12 @@ class DerivedClass: public BaseClass {
       public:
       using BaseClass::BaseClass; // Adds DerivedClass(int) constructor
     };
    -
    -
    -

    The final part is member initialization at the site of the - declaration. This kind of initialization is handled by SWIG.

    -
    -
    +
    +
    +

    The final part is member initialization at the site of the + declaration. This kind of initialization is handled by SWIG.

    +
    +
     class SomeClass {
     public:
       SomeClass() {}
    @@ -11060,14 +11502,14 @@ public:
     
       int value = 5;
     };
    -
    -
    -

    7.2.11 Explicit - overrides and final

    -

    The special identifiers final and override can be - used on methods and destructors, such as in the following example:

    -
    -
    +
    +
    +

    7.2.11 Explicit + overrides and final

    +

    The special identifiers final and override can be + used on methods and destructors, such as in the following example:

    +
    +
     struct BaseStruct {
       virtual void ab() const = 0;
       virtual void cd();
    @@ -11080,25 +11522,25 @@ struct DerivedStruct : BaseStruct {
       virtual void ef() final override;
       virtual ~DerivedStruct() override;
     };
    -
    -
    -

    7.2.12 Null pointer - constant

    -

    The nullptr constant is mostly unimportant in wrappers. In - the few places it has an effect, it is treated like NULL.

    -

    7.2.13 Strongly - typed enumerations

    -

    SWIG supports strongly typed enumerations and parses the new enum - class syntax and forward declarator for the enums, such as:

    -
    -
    +
    +
    +

    7.2.12 Null pointer + constant

    +

    The nullptr constant is mostly unimportant in wrappers. In + the few places it has an effect, it is treated like NULL.

    +

    7.2.13 Strongly + typed enumerations

    +

    SWIG supports strongly typed enumerations and parses the new enum + class syntax and forward declarator for the enums, such as:

    +
    +
     enum class MyEnum : unsigned int;
    -
    -
    -

    Strongly typed enums are often used to avoid name clashes such as - the following:

    -
    -
    +
    +
    +

    Strongly typed enums are often used to avoid name clashes such as + the following:

    +
    +
     struct Color {
       enum class RainbowColors : unsigned int {
         Red, Orange, Yellow, Green, Blue, Indigo, Violet
    @@ -11113,49 +11555,49 @@ struct Color {
         Red=100, Green, Blue
       };
     };
    -
    -
    -

    There are various ways that the target languages handle enums, so it +

    +
    +

    There are various ways that the target languages handle enums, so it is not possible to precisely state how they are handled in this section. However, generally, most scripting languages mangle in the strongly typed enumeration's class name, but do not use any additional mangling for normal enumerations. For example, in Python, the following - code

    -
    -
    + code

    +
    +
     print Color.RainbowColors_Red, Color.WarmColors_Red, Color.Red
    -
    -
    -

    results in

    -
    -
    +
    +
    +

    results in

    +
    +
     0 2 100
    -
    -
    -

    The strongly typed languages often wrap normal enums into an enum +

    +
    +

    The strongly typed languages often wrap normal enums into an enum class and so treat normal enums and strongly typed enums the same. The - equivalent in Java is:

    -
    -
    + equivalent in Java is:

    +
    +
     System.out.println(Color.RainbowColors.Red.swigValue() + " " + Color.WarmColors.Red.swigValue() + " " + Color.PrimeColors.Red.swigValue());
    -
    -
    -

    7.2.14 Double angle - brackets

    -

    SWIG correctly parses the symbols >> as closing the template block, +

    +
    +

    7.2.14 Double angle + brackets

    +

    SWIG correctly parses the symbols >> as closing the template block, if found inside it at the top level, or as the right shift operator >> - otherwise.

    -
    -
    + otherwise.

    +
    +
     std::vector<std::vector<int>> myIntTable;
    -
    -
    -

    7.2.15 Explicit - conversion operators

    -

    SWIG correctly parses the keyword explicit for operators in - addition to constructors now. For example:

    -
    -
    +
    +
    +

    7.2.15 Explicit + conversion operators

    +

    SWIG correctly parses the keyword explicit for operators in + addition to constructors now. For example:

    +
    +
     class U {
     public:
       int u;
    @@ -11183,29 +11625,29 @@ struct Testable {
         return false;
       }
     };
    -
    -
    -

    The effect of explicit constructors and operators has little +

    +
    +

    The effect of explicit constructors and operators has little relevance for the proxy classes as target languages don't have the same concepts of implicit conversions as C++. Conversion operators either - with or without explicit need renaming to a valid identifier - name in order to make them available as a normal proxy method.

    -

    7.2.16 Type alias and alias - templates

    -

    A type alias is a statement of the form:

    -
    -
    + with or without explicit need renaming to a valid identifier
    + name in order to make them available as a normal proxy method.

    +

    7.2.16 Type alias and alias + templates

    +

    A type alias is a statement of the form:

    +
    +
     using PFD = void (*)(double); // New introduced syntax
    -
    -
    -

    which is equivalent to the old style typedef:

    -
    -
    +
    +
    +

    which is equivalent to the old style typedef:

    +
    +
     typedef void (*PFD)(double);  // The old style
    -
    -
    -

    The following is an example of an alias template:

    -
    +
    +
    +

    The following is an example of an alias template:

    +
     template< typename T1, typename T2, int N >
     class SomeType {
     public:
    @@ -11215,32 +11657,32 @@ public:
     
     template< typename T2 >
     using TypedefName = SomeType<char*, T2, 5>;
    -
    -

    -

    SWIG supports both type aliasing and alias templates. However, in - order to use an alias template, two %template directives must - be used:

    -
    -
    +
    +

    +

    SWIG supports both type aliasing and alias templates. However, in + order to use an alias template, two %template directives must + be used:

    +
    +
     %template(SomeTypeBool) SomeType<char*, bool, 5>;
     %template() TypedefName<bool>;
    -
    -
    -

    Firstly, the actual template is instantiated with a name to be used +

    +
    +

    Firstly, the actual template is instantiated with a name to be used by the target language, as per any template being wrapped. Secondly, - the empty template instantiation, %template(), is required for + the empty template instantiation, %template(), is required for the alias template. This second requirement is necessary to add the appropriate instantiated template type into the type system as SWIG - does not automatically instantiate templates. See the -Templates section for more general information on wrapping - templates.

    -

    7.2.17 Unrestricted unions -

    -

    SWIG fully supports any type inside a union even if it does not + does not automatically instantiate templates. See the +Templates section for more general information on wrapping + templates.

    +

    7.2.17 Unrestricted unions +

    +

    SWIG fully supports any type inside a union even if it does not define a trivial constructor. For example, the wrapper for the - following code correctly provides access to all members in the union:

    -
    -
    + following code correctly provides access to all members in the union:

    +
    +
     struct point {
       point() {}
       point(int x, int y) : x_(x), y_(y) {}
    @@ -11257,45 +11699,57 @@ union P {
         new(&p) point();
       }
     } p1;
    -
    -
    -

    7.2.18 Variadic templates -

    -

    SWIG supports the variadic templates syntax (inside the <> block, +

    +
    +

    7.2.18 Variadic templates +

    +

    SWIG supports the variadic templates syntax (inside the <> block, variadic class inheritance and variadic constructor and initializers) - with some limitations. The following code is correctly parsed:

    -
    -
    + with some limitations. The following code is correctly parsed:

    +
    +
     template <typename... BaseClasses> class ClassName : public BaseClasses... {
     public:
       ClassName (BaseClasses &&... baseClasses) : BaseClasses(baseClasses)... {}
     }
    -
    -
    -

    For now however, the %template directive only accepts one - parameter substitution for the variable template parameters.

    -
    -
    +
    +
    +

    For now however, the %template directive only accepts one + parameter substitution for the variable template parameters.

    +
    +
     %template(MyVariant1) ClassName<>         // zero argument not supported yet
     %template(MyVariant2) ClassName<int>      // ok
     %template(MyVariant3) ClassName<int, int> // too many arguments not supported yet
    -
    -
    -

    Support for the variadic sizeof() function is correctly - parsed:

    -
    -
    +
    +
    +

    Support for the variadic sizeof() function is correctly + parsed:

    +
    +
     const int SIZE = sizeof...(ClassName<int, int>);
    -
    -
    -

    In the above example SIZE is of course wrapped as a - constant.

    -

    7.2.19 New string literals -

    -

    SWIG supports wide string and Unicode string constants and raw string - literals.

    -
    -
    +
    +
    +

    In the above example SIZE is of course wrapped as a + constant.

    +

    7.2.19 New character + literals

    +

    C++11 adds support for UCS-2 and UCS-4 character literals. These + character literals are preceded by either 'u' or 'U'.

    +
    +
    +char16_t a = u'a';
    +char32_t b = U'b';
    +
    +
    +

    Compatibility note: SWIG-4.0.0 was the first version to + support these Universal Coded Character Set (UCS) character literals.

    +

    7.2.20 New string literals +

    +

    SWIG supports wide string and Unicode string constants and raw string + literals.

    +
    +
     // New string literals
     wstring         aa =  L"Wide string";
     const char     *bb = u8"UTF-8 string";
    @@ -11309,258 +11763,346 @@ wstring          ff =  LR"XXX(I'm a "raw wide" \ string.)XXX"
     const char      *gg = u8R"XXX(I'm a "raw UTF-8" \ string.)XXX";
     const char16_t  *hh =  uR"XXX(I'm a "raw UTF-16" \ string.)XXX";
     const char32_t  *ii =  UR"XXX(I'm a "raw UTF-32" \ string.)XXX";
    -
    -
    -

    Non-ASCII string support varies quite a bit among the various target - languages though.

    -

    Note: There is a bug currently where SWIG's preprocessor incorrectly - parses an odd number of double quotes inside raw string literals.

    -

    7.2.20 User-defined - literals

    -

    SWIG parses the declaration of user-defined literals, that is, the -operator "" _mysuffix() function syntax.

    -

    Some examples are the raw literal:

    -
    -
    +
    +
    +

    Non-ASCII string support varies quite a bit among the various target + languages though.

    +

    Note: There is a bug currently where SWIG's preprocessor incorrectly + parses an odd number of double quotes inside raw string literals.

    +

    7.2.21 User-defined + literals

    +

    SWIG parses the declaration of user-defined literals, that is, the +operator "" _mysuffix() function syntax.

    +

    Some examples are the raw literal:

    +
    +
     OutputType operator "" _myRawLiteral(const char * value);
    -
    -
    -

    numeric cooked literals:

    -
    -
    +
    +
    +

    numeric cooked literals:

    +
    +
     OutputType operator "" _mySuffixIntegral(unsigned long long);
     OutputType operator "" _mySuffixFloat(long double);
    -
    -
    -

    and cooked string literals:

    -
    -
    +
    +
    +

    and cooked string literals:

    +
    +
     OutputType operator "" _mySuffix(const char * string_values, size_t num_chars);
     OutputType operator "" _mySuffix(const wchar_t * string_values, size_t num_chars);
     OutputType operator "" _mySuffix(const char16_t * string_values, size_t num_chars);
     OutputType operator "" _mySuffix(const char32_t * string_values, size_t num_chars);
    -
    -
    -

    Like other operators that SWIG parses, a warning is given about - renaming the operator in order for it to be wrapped:

    -
    -
    +
    +
    +

    Like other operators that SWIG parses, a warning is given about + renaming the operator in order for it to be wrapped:

    +
    +
     example.i:27: Warning 503: Can't wrap 'operator "" _myRawLiteral' unless renamed to a valid identifier.
    -
    -
    -

    If %rename is used, then it can be called like any other wrapped +

    +
    +

    If %rename is used, then it can be called like any other wrapped method. Currently you need to specify the full declaration including - parameters for %rename:

    -
    -
    + parameters for %rename:

    +
    +
     %rename(MyRawLiteral)  operator"" _myRawLiteral(const char * value);
    -
    -
    -

    Or if you just wish to ignore it altogether:

    -
    -
    +
    +
    +

    Or if you just wish to ignore it altogether:

    +
    +
     %ignore operator "" _myRawLiteral(const char * value);
    -
    -
    -

    Note that use of user-defined literals such as the following still - give a syntax error:

    -
    -
    +
    +
    +

    Note that use of user-defined literals such as the following still + give a syntax error:

    +
    +
     OutputType var1 = "1234"_suffix;
     OutputType var2 = 1234_suffix;
     OutputType var3 = 3.1416_suffix;
    -
    -
    -

    7.2.21 Thread-local - storage

    -

    SWIG correctly parses the thread_local keyword. For example, - variables reachable by the current thread can be defined as:

    -
    -
    +
    +
    +

    7.2.22 Thread-local + storage

    +

    SWIG correctly parses the thread_local keyword. For example, + variables reachable by the current thread can be defined as:

    +
    +
     struct A {
       static thread_local int val;
     };
     thread_local int global_val;
    -
    -
    -

    The use of the thread_local storage specifier does not +

    +
    +

    The use of the thread_local storage specifier does not affect the wrapping process; it does not modify the wrapper code compared to when it is not specified. A variable will be thread local if accessed from different threads from the target language in the same - way that it will be thread local if accessed from C++ code.

    -

    7.2.22 Explicitly defaulted - functions and deleted functions

    -

    SWIG handles explicitly defaulted functions, that is, = default + way that it will be thread local if accessed from C++ code.

    +

    7.2.23 Explicitly defaulted + functions and deleted functions

    +

    SWIG handles explicitly defaulted functions, that is, = default added to a function declaration. Deleted definitions, which are also - called deleted functions, have = delete added to the function - declaration. For example:

    -
    -
    + called deleted functions, have = delete added to the function
    + declaration. For example:

    +
    +
     struct NonCopyable {
       NonCopyable & operator=(const NonCopyable &) = delete; /* Removes operator= */
       NonCopyable(const NonCopyable &) = delete;             /* Removes copy constructor */
       NonCopyable() = default;                               /* Explicitly allows the empty constructor */
     };
    -
    -
    -

    Wrappers for deleted functions will not be available in the target +

    +
    +

    Wrappers for deleted functions will not be available in the target language. Wrappers for defaulted functions will of course be available in the target language. Explicitly defaulted functions have no direct effect for SWIG wrapping as the declaration is handled much like any - other method declaration parsed by SWIG.

    -

    Deleted functions are also designed to prevent implicit conversions + other method declaration parsed by SWIG.

    +

    Deleted functions are also designed to prevent implicit conversions when calling the function. For example, the C++ compiler will not compile any code which attempts to use an int as the type of the - parameter passed to f below:

    -
    -
    + parameter passed to f below:

    +
    +
     struct NoInt {
       void f(double i);
       void f(int) = delete;
     };
    -
    -
    -

    This is a C++ compile time check and SWIG does not make any attempt +

    +
    +

    This is a C++ compile time check and SWIG does not make any attempt to detect if the target language is using an int instead of a double though, so in this case it is entirely possible to pass an int instead - of a double to f from Java, Python etc.

    -

    7.2.23 Type long long int -

    -

    SWIG correctly parses and uses the new long long type - already introduced in C99 some time ago.

    -

    7.2.24 Static assertions

    -

    SWIG correctly parses the new static_assert declarations. - This is a C++ compile time directive so there isn't anything useful - that SWIG can do with it.

    -
    -
    + of a double to f from Java, Python etc.

    +

    7.2.24 Type long long int +

    +

    SWIG correctly parses and uses the new long long type + already introduced in C99 some time ago.

    +

    7.2.25 Static assertions

    +

    SWIG correctly parses the new static_assert declarations + (though 3.0.12 and earlier had a bug which meant this wasn't accepted + at file scope). This is a C++ compile time directive so there isn't + anything useful that SWIG can do with it.

    +
    +
     template <typename T>
     struct Check {
       static_assert(sizeof(int) <= sizeof(T), "not big enough");
     };
    -
    -
    -

    7.2.25 Allow sizeof to work on members - of classes without an explicit object

    -

    SWIG can parse the new sizeof() on types as well as on objects. For - example:

    -
    -
    +
    +
    +

    7.2.26 Allow sizeof to work on members + of classes without an explicit object

    +

    SWIG can parse the new sizeof() on types as well as on objects. For + example:

    +
    +
     struct A {
       int member;
     };
     
     const int SIZE = sizeof(A::member); // does not work with C++03. Okay with C++11
    -
    -
    -

    In Python:

    -
    -
    +
    +
    +

    In Python:

    +
    +
     >>> SIZE
     8
    -
    -
    -

    7.2.26 Exception specifications and - noexcept

    -

    C++11 added in the noexcept specification to exception +

    +
    +

    7.2.27 Exception specifications and + noexcept

    +

    C++11 added in the noexcept specification to exception specifications to indicate that a function simply may or may not throw an exception, without actually naming any exception. SWIG understands these, although there isn't any useful way that this information can be taken advantage of by target languages, so it is as good as ignored during the wrapping process. Below are some examples of noexcept in - function declarations:

    -
    -
    + function declarations:

    +
    +
     static void noex1() noexcept;
     int noex2(int) noexcept(true);
     int noex3(int, bool) noexcept(false);
    -
    -
    -

    7.2.27 Control and query object - alignment

    -

    An alignof operator is used mostly within C++ to return +

    +
    +

    7.2.28 Control and query object + alignment

    +

    An alignof operator is used mostly within C++ to return alignment in number of bytes, but could be used to initialize a variable as shown below. The variable's value will be available for access by the target language as any other variable's compile time - initialised value.

    -
    + initialised value.
    +
     const int align1 = alignof(A::member);
    -
    -

    -

    The alignas specifier for variable alignment is not yet - supported. Example usage:

    -
    -
    +
    +

    +

    The alignas specifier for variable alignment is not yet + supported. Example usage:

    +
    +
     struct alignas(16) S {
       int num;
     };
     alignas(double) unsigned char c[sizeof(double)];
    -
    -
    -

    Use the preprocessor to work around this for now:

    -
    -
    +
    +
    +

    Use the preprocessor to work around this for now:

    +
    +
     #define alignas(T)
    -
    -
    -

    7.2.28 Attributes

    -

    Attributes such as those shown below, are not yet supported and will - give a syntax error.

    -
    -
    +
    +
    +

    7.2.29 Attributes

    +

    Attributes such as those shown below, are not yet supported and will + give a syntax error.

    +
    +
     int [[attr1]] i [[attr2, attr3]];
     
     [[noreturn, nothrow]] void f [[noreturn]] ();
    -
    -
    -

    7.3 Standard library - changes

    -

    7.3.1 Threading - facilities

    -

    SWIG does not currently wrap or use any of the new threading classes +

    +
    +

    7.2.30 Methods with + ref-qualifiers

    +

    C++11 non-static member functions can be declared with + ref-qualifiers. Member functions declared with a & lvalue + ref-qualifiers are wrapped like any other function without + ref-qualifiers. Member functions declared with a && rvalue + ref-qualifiers are ignored by default as they are unlikely to be + required from non-C++ languages where the concept of rvalue-ness + for the implied *this pointer does not apply. The warning is hidden by + default, but can be displayed as described in the section on +Enabling extra warnings.

    +

    Consider:

    +
    +
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    +
    +

    The only wrapped method will be the lvalue ref-qualified method +m1 and if SWIG is run with the -Wextra command-line + option, the following warning will be issued indicating m2 is + not wrapped:

    +
    +
    +example.i:7: Warning 405: Method with rvalue ref-qualifier m2(int) && ignored.
    +
    +
    +

    If you unignore the method as follows, wrappers for m2 will + be generated:

    +
    +
    +%feature("ignore", "0") RQ::m2(int x) &&;
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    +
    +

    Inspection of the generated C++ code, will show that std::move + is used on the instance of the RQ * class:

    +
    +
    +  RQ *arg1 = (RQ *) 0 ;
    +  int arg2 ;
    +
    +  arg1 = ...marshalled from target language...
    +  arg2 = ...marshalled from target language...
    +
    +  std::move(*arg1).m2(arg2);
    +
    +
    +

    This will compile but when run, the move effects may not be what you + want. As stated earlier, rvalue ref-qualifiers aren't really applicable + outside the world of C++. However, if you really know what you are + doing, full control over the call to the method is possible via the + low-level "action" feature. This feature completely replaces the call + to the underlying function, that is, the last line in the snippet of + code above.

    +
    +
    +%feature("ignore", "0") RQ::m2(int x) &&;
    +%feature("action") RQ::m2(int x) && %{
    +  RQ().m2(arg2);
    +%}
    +struct RQ {
    +  void m1(int x) &;
    +  void m2(int x) &&;
    +};
    +
    +
    +

    resulting in:

    +
    +
    +  RQ *arg1 = (RQ *) 0 ;
    +  int arg2 ;
    +
    +  arg1 = ...marshalled from target language...
    +  arg2 = ...marshalled from target language...
    +
    +  RQ().m2(arg2);
    +
    +
    +

    Compatibility note: SWIG-4.0.0 was the first version to + support ref-qualifiers.

    +

    7.3 Standard library + changes

    +

    7.3.1 Threading + facilities

    +

    SWIG does not currently wrap or use any of the new threading classes introduced (thread, mutex, locks, condition variables, task). The main reason is that SWIG target languages offer their own threading - facilities so there is limited use for them.

    -

    7.3.2 Tuple types

    -

    SWIG does not provide library files for the new tuple types yet. + facilities so there is limited use for them.

    +

    7.3.2 Tuple types

    +

    SWIG does not provide library files for the new tuple types yet. Variadic template support requires further work to provide substantial - tuple wrappers.

    -

    7.3.3 Hash tables

    -

    The new hash tables in the STL are unordered_set, -unordered_multiset, unordered_map, unordered_multimap -. These are not available in SWIG, but in principle should be easily - implemented by adapting the current STL containers.

    -

    7.3.4 Regular expressions -

    -

    While SWIG could provide wrappers for the new C++11 regular + tuple wrappers.

    +

    7.3.3 Hash tables

    +

    The new hash tables in the STL are unordered_set, +unordered_multiset, unordered_map, unordered_multimap +. These are not available in all target languages. Any missing support + can in principle be easily implemented by adapting the current STL + containers.

    +

    7.3.4 Regular expressions +

    +

    While SWIG could provide wrappers for the new C++11 regular expressions classes, there is little need as the target languages have - their own regular expression facilities.

    -

    7.3.5 - General-purpose smart pointers

    -

    SWIG provides special smart pointer handling for std::shared_ptr - in the same way it has support for boost::shared_ptr. Please - see the shared_ptr smart pointer + their own regular expression facilities.

    +

    7.3.5 + General-purpose smart pointers

    +

    SWIG provides special smart pointer handling for std::shared_ptr + in the same way it has support for boost::shared_ptr. Please + see the shared_ptr smart pointer library section. There is no special smart pointer handling available - for std::weak_ptr and std::unique_ptr yet.

    -

    7.3.6 - Extensible random number facility

    -

    This feature extends and standardizes the standard library only and - does not effect the C++ language nor SWIG.

    -

    7.3.7 Wrapper reference

    -

    Wrapper references are similar to normal C++ references but are + for std::weak_ptr and std::unique_ptr yet.

    +

    7.3.6 + Extensible random number facility

    +

    This feature extends and standardizes the standard library only and + does not effect the C++ language nor SWIG.

    +

    7.3.7 Wrapper reference

    +

    Wrapper references are similar to normal C++ references but are copy-constructible and copy-assignable. They could conceivably be used - in public APIs. There is no special support for -std::reference_wrapper in SWIG though. Users would need to write + in public APIs. There is no special support for +std::reference_wrapper in SWIG though. Users would need to write their own typemaps if wrapper references are being used and these would - be similar to the plain C++ reference typemaps.

    -

    -7.3.8 Polymorphic wrappers for function objects

    -

    SWIG supports functor classes in a few languages in a very natural - way. However nothing is provided yet for the new std::function + be similar to the plain C++ reference typemaps.

    +

    +7.3.8 Polymorphic wrappers for function objects

    +

    SWIG supports functor classes in a few languages in a very natural + way. However nothing is provided yet for the new std::function template. SWIG will parse usage of the template like any other - template.

    -
    -
    + template.

    +
    +
     %rename(__call__) Test::operator(); // Default renaming used for Python
     
     struct Test {
    @@ -11570,22 +12112,22 @@ struct Test {
     #include <functional>
     std::function<void (int, int)> pF = Test;   // function template wrapper
     
    -
    -
    -

    Example of supported usage of the plain functor from Python is shown - below. It does not involve std::function.

    -
    -
    +
    +
    +

    Example of supported usage of the plain functor from Python is shown + below. It does not involve std::function.

    +
    +
     t = Test()
     b = t(1, 2) # invoke C++ function object
    -
    -
    -

    7.3.9 Type - traits for metaprogramming

    -

    The type_traits functions to support C++ metaprogramming is useful at - compile time and is aimed specifically at C++ development:

    -
    -
    +
    +
    +

    7.3.9 Type + traits for metaprogramming

    +

    The type_traits functions to support C++ metaprogramming is useful at + compile time and is aimed specifically at C++ development:

    +
    +
     #include <type_traits>
     
     // First way of operating.
    @@ -11604,48 +12146,48 @@ template< class T1, class T2 > int elaborate(T1 A, T2 B) {
       // otherwise use the first way.
       return algorithm< std::is_integral<T1>::value && std::is_floating_point<T2>::value >::do_it(A, B);
     }
    -
    -
    -

    SWIG correctly parses the template specialization, template types +

    +
    +

    SWIG correctly parses the template specialization, template types etc. However, metaprogramming and the additional support in the type_traits header is really for compile time and is not much use at runtime for the target languages. For example, as SWIG requires - explicit instantiation of templates via %template, there isn't - much that std::is_integral<int> is going to provide by itself. + explicit instantiation of templates via %template, there isn't + much that std::is_integral<int> is going to provide by itself. However, template functions using such metaprogramming techniques might be useful to wrap. For example, the following instantiations could be - made:

    -
    -
    + made:

    +
    +
     %template(Elaborate) elaborate<int, int>;
     %template(Elaborate) elaborate<int, double>;
    -
    -
    -

    Then the appropriate algorithm can be called for the subset of types - given by the above %template instantiations from a target - language, such as Python:

    -
    -
    +
    +
    +

    Then the appropriate algorithm can be called for the subset of types + given by the above %template instantiations from a target + language, such as Python:

    +
    +
     >>> Elaborate(0, 0)
     1
     >>> Elaborate(0, 0.0)
     2
    -
    -
    -

    -7.3.10 Uniform method for computing return type of function objects

    -

    The new std::result_of class introduced in the <functional> +

    +
    +

    +7.3.10 Uniform method for computing return type of function objects

    +

    The new std::result_of class introduced in the <functional> header provides a generic way to obtain the return type of a function - type via std::result_of::type. There isn't any library + type via std::result_of::type. There isn't any library interface file to support this type. With a bit of work, SWIG will - deduce the return type of functions when used in std::result_of + deduce the return type of functions when used in std::result_of using the approach shown below. The technique basically forward - declares the std::result_of template class, then partially + declares the std::result_of template class, then partially specializes it for the function types of interest. SWIG will use the - partial specialization and hence correctly use the -std::result_of::type provided in the partial specialization.

    -
    -
    + partial specialization and hence correctly use the 
    +std::result_of::type provided in the partial specialization.

    +
    +
     %inline %{
     #include <functional>
     typedef double(*fn_ptr)(double);
    @@ -11676,114 +12218,217 @@ typename std::result_of<Fun(Arg)>::type test_result_impl(Fun fun, Arg arg)
     
     %template(test_result) test_result_impl< fn_ptr, double >;
     %constant double (*SQUARE)(double) = square;
    -
    -
    -

    Note the first use of %template which SWIG requires to +

    +
    +

    Note the first use of %template which SWIG requires to instantiate the template. The empty template instantiation suffices as - no proxy class is required for std::result_of<Fun(Arg)>::type - as this type is really just a double. The second %template + no proxy class is required for std::result_of<Fun(Arg)>::type + as this type is really just a double. The second %template instantiates the template function which is being wrapped for use as a - callback. The %constant can then be used for any callback - function as described in Pointers to functions and - callbacks.

    -

    Example usage from Python should give the not too surprising result:

    -
    -
    + callback. The %constant can then be used for any callback
    + function as described in Pointers to functions and
    + callbacks.

    +

    Example usage from Python should give the not too surprising result:

    +
    +
     >>> test_result(SQUARE, 5.0)
     25.0
    -
    -
    -

    Phew, that is a lot of hard work to get a callback working. You - could just go with the more attractive option of just using double - as the return type in the function declaration instead of result_of -!

    +
    +
    +

    Phew, that is a lot of hard work to get a callback working. You + could just go with the more attractive option of just using double + as the return type in the function declaration instead of result_of +!


    -

    8 Preprocessing

    +

    8 SWIG and C++14

    - + -

    SWIG includes its own enhanced version of the C preprocessor. The +

    8.1 Introduction

    +

    This chapter gives you a brief overview about the SWIG implementation + of the C++14 standard. There isn't much in C++14 that affects SWIG, + however, work has only just begun on adding C++14 support.

    +

    Compatibility note: SWIG-4.0.0 is the first version to + support any C++14 features.

    +

    8.2 Core language + changes

    +

    8.2.1 Binary integer literals +

    +

    C++14 added binary integer literals and SWIG supports these. + Example:

    +
    +
    +int b = 0b101011;
    +
    +
    +

    8.3 Standard library + changes

    +
    +

    9 SWIG and C++17

    + + + + +

    9.1 Introduction

    +

    This chapter gives you a brief overview about the SWIG implementation + of the C++17 standard. There isn't much in C++17 that affects SWIG, + however, work has only just begun on adding C++17 support.

    +

    Compatibility note: SWIG-4.0.0 is the first version to + support any C++17 features.

    +

    9.2 Core language + changes

    +

    9.2.1 Nested namespace + definitions

    +

    C++17 offers a more concise syntax for defining namespaces. SWIG has + support for nested namespace definitions such as:

    +
    +
    +namespace A::B::C {
    +  ...
    +}
    +
    +
    +

    This is the equivalent to the C++98 namespace definitions:

    +
    +
    +namespace A {
    +  namespace B {
    +    namespace C {
    +      ...
    +    }
    +  }
    +}
    +
    +
    +

    9.2.2 UTF-8 character + literals

    +

    C++17 added UTF-8 (u8) character literals. These are of type char. + Example:

    +
    +
    +char a = u8'a';
    +
    +
    +

    9.2.3 + Hexadecimal floating literals

    +

    C++17 added hexadecimal floating literals. For example:

    +
    +
    +double f = 0xF.68p2;
    +
    +
    +

    9.3 Standard library + changes

    +
    +

    10 Preprocessing

    + + + + +

    SWIG includes its own enhanced version of the C preprocessor. The preprocessor supports the standard preprocessor directives and macro expansion rules. However, a number of modifications and enhancements - have been made. This chapter describes some of these modifications.

    -

    8.1 File inclusion

    -

    To include another file into a SWIG interface, use the %include - directive like this:

    -
    -
    + have been made. This chapter describes some of these modifications.

    +

    10.1 File inclusion

    +

    To include another file into a SWIG interface, use the %include + directive like this:

    +
    +
     %include "pointer.i"
    -
    -
    -

    Unlike, #include, %include includes each file once - (and will not reload the file on subsequent %include +

    +
    +

    Unlike, #include, %include includes each file once + (and will not reload the file on subsequent %include declarations). Therefore, it is not necessary to use include-guards in - SWIG interfaces.

    -

    By default, the #include is ignored unless you run SWIG - with the -includeall option. The reason for ignoring + SWIG interfaces.

    +

    By default, the #include is ignored unless you run SWIG + with the -includeall option. The reason for ignoring traditional includes is that you often don't want SWIG to try and wrap everything included in standard header system headers and auxiliary - files.

    -

    8.2 File imports

    -

    SWIG provides another file inclusion directive with the %import - directive. For example:

    -
    -
    + files.

    +

    10.2 File imports

    +

    SWIG provides another file inclusion directive with the %import + directive. For example:

    +
    +
     %import "foo.i"
    -
    -
    -

    The purpose of %import is to collect certain information +

    +
    +

    The purpose of %import is to collect certain information from another SWIG interface file or a header file without actually generating any wrapper code. Such information generally includes type - declarations (e.g., typedef) as well as C++ classes that might + declarations (e.g., typedef) as well as C++ classes that might be used as base-classes for class declarations in the interface. The - use of %import is also important when SWIG is used to generate + use of %import is also important when SWIG is used to generate extensions as a collection of related modules. This is an advanced - topic and is described in later in the Working with - Modules chapter.

    -

    The -importall directive tells SWIG to follow all -#include statements as imports. This might be useful if you want to + topic and is described in later in the Working with + Modules chapter.

    +

    The -importall directive tells SWIG to follow all +#include statements as imports. This might be useful if you want to extract type definitions from system header files without generating - any wrappers.

    -

    8.3 Conditional - Compilation

    -

    SWIG fully supports the use of #if, #ifdef, -#ifndef, #else, #endif to conditionally include + any wrappers.

    +

    10.3 Conditional + Compilation

    +

    SWIG fully supports the use of #if, #ifdef, +#ifndef, #else, #endif to conditionally include parts of an interface. The following symbols are predefined by SWIG - when it is parsing the interface:

    -
    -
    + when it is parsing the interface:

    +
    +
     SWIG                            Always defined when SWIG is processing a file
    -SWIGIMPORTED                    Defined when SWIG is importing a file with %import
    +SWIGIMPORTED                    Defined when SWIG is importing a file with %import
     SWIG_VERSION                    Hexadecimal (binary-coded decimal) number containing SWIG version,
                                     such as 0x010311 (corresponding to SWIG-1.3.11).
     
    -SWIGALLEGROCL                   Defined when using Allegro CL
    -SWIGCFFI                        Defined when using CFFI
    -SWIGCHICKEN                     Defined when using CHICKEN
    -SWIGCLISP                       Defined when using CLISP
     SWIGCSHARP                      Defined when using C#
     SWIGGUILE                       Defined when using Guile
     SWIGJAVA                        Defined when using Java
    @@ -11791,82 +12436,78 @@ SWIGJAVASCRIPT                  Defined when using Javascript
     SWIG_JAVASCRIPT_JSC             Defined when using Javascript for JavascriptCore
     SWIG_JAVASCRIPT_V8              Defined when using Javascript for v8 or node.js 
     SWIGLUA                         Defined when using Lua
    -SWIGMODULA3                     Defined when using Modula-3
     SWIGMZSCHEME                    Defined when using Mzscheme
    -SWIGOCAML                       Defined when using Ocaml
    +SWIGOCAML                       Defined when using OCaml
     SWIGOCTAVE                      Defined when using Octave
     SWIGPERL                        Defined when using Perl
    -SWIGPHP                         Defined when using PHP5 or PHP7
    -SWIGPHP5                        Defined when using PHP5
    +SWIGPHP                         Defined when using PHP (any version)
     SWIGPHP7                        Defined when using PHP7
    -SWIGPIKE                        Defined when using Pike
     SWIGPYTHON                      Defined when using Python
     SWIGR                           Defined when using R
     SWIGRUBY                        Defined when using Ruby
     SWIGSCILAB                      Defined when using Scilab
    -SWIGSEXP                        Defined when using S-expressions
     SWIGTCL                         Defined when using Tcl
     SWIGXML                         Defined when using XML
    -
    -
    -

    In addition, SWIG defines the following set of standard C/C++ - macros:

    -
    -
    +
    +
    +

    In addition, SWIG defines the following set of standard C/C++ + macros:

    +
    +
     __LINE__                        Current line number
     __FILE__                        Current file name
    -__STDC__                        Defined to indicate ANSI C
    +__STDC__                        Defined to indicate ISO C
     __cplusplus                     Defined when -c++ option used
    -
    -
    -

    Interface files can look at these symbols as necessary to change the +

    +
    +

    Interface files can look at these symbols as necessary to change the way in which an interface is generated or to mix SWIG directives with C code. These symbols are also defined within the C code generated by - SWIG (except for the symbol `SWIG' which is only defined - within the SWIG compiler).

    -

    8.4 Macro Expansion

    -

    Traditional preprocessor macros can be used in SWIG interfaces. Be - aware that the #define statement is also used to try and + SWIG (except for the symbol `SWIG' which is only defined + within the SWIG compiler).

    +

    10.4 Macro Expansion

    +

    Traditional preprocessor macros can be used in SWIG interfaces. Be + aware that the #define statement is also used to try and detect constants. Therefore, if you have something like this in your - file,

    -
    -
    + file,

    +
    +
     #ifndef _FOO_H 1
     #define _FOO_H 1
     ...
     #endif
    -
    -
    -

    you may get some extra constants such as _FOO_H showing up - in the scripting interface.

    -

    More complex macros can be defined in the standard way. For example:

    -
    -
    +
    +
    +

    you may get some extra constants such as _FOO_H showing up + in the scripting interface.

    +

    More complex macros can be defined in the standard way. For example:

    +
    +
     #define EXTERN extern
     #ifdef __STDC__
    -#define _ANSI(args)   (args)
    +#define ISOC_(args)   (args)
     #else
    -#define _ANSI(args) ()
    +#define ISOC_(args) ()
     #endif
    -
    -
    -

    The following operators can appear in macro definitions:

    -
      -
    • #x -
      Converts macro argument x to a string surrounded by double - quotes ("x").
    • -
    • x ## y -
      Concatenates x and y together to form xy.
    • -
    • `x` -
      If x is a string surrounded by double quotes, do nothing. - Otherwise, turn into a string like #x. This is a non-standard - SWIG extension.
    • -
    -

    8.5 SWIG Macros

    -

    SWIG provides an enhanced macro capability with the %define - and %enddef directives. For example:

    -
    -
    +
    +
    +

    The following operators can appear in macro definitions:

    +
      +
    • #x +
      Converts macro argument x to a string surrounded by double + quotes ("x").
    • +
    • x ## y +
      Concatenates x and y together to form xy.
    • +
    • `x` +
      If x is a string surrounded by double quotes, do nothing. + Otherwise, turn into a string like #x. This is a non-standard + SWIG extension.
    • +
    +

    10.5 SWIG Macros

    +

    SWIG provides an enhanced macro capability with the %define + and %enddef directives. For example:

    +
    +
     %define ARRAYHELPER(type, name)
     %inline %{
     type *new_ ## name (int nitems) {
    @@ -11886,63 +12527,63 @@ void name ## _set(type *t, int index, type val) {
     
     ARRAYHELPER(int, IntArray)
     ARRAYHELPER(double, DoubleArray)
    -
    -
    -

    The primary purpose of %define is to define large macros of +

    +
    +

    The primary purpose of %define is to define large macros of code. Unlike normal C preprocessor macros, it is not necessary to terminate each line with a continuation character (\)--the macro - definition extends to the first occurrence of %enddef. + definition extends to the first occurrence of %enddef. Furthermore, when such macros are expanded, they are reparsed through the C preprocessor. Thus, SWIG macros can contain all other - preprocessor directives except for nested %define statements.

    -

    The SWIG macro capability is a very quick and easy way to generate + preprocessor directives except for nested %define statements.

    +

    The SWIG macro capability is a very quick and easy way to generate large amounts of code. In fact, many of SWIG's advanced features and libraries are built using this mechanism (such as C++ template - support).

    -

    8.6 C99 and GNU Extensions

    -

    SWIG-1.3.12 and newer releases support variadic preprocessor macros. - For example:

    -
    -
    + support).

    +

    10.6 C99 and GNU Extensions

    +

    SWIG-1.3.12 and newer releases support variadic preprocessor macros. + For example:

    +
    +
     #define DEBUGF(fmt, ...)   fprintf(stderr, fmt, __VA_ARGS__)
    -
    -
    -

    When used, any extra arguments to ... are placed into the - special variable __VA_ARGS__. This also works with special - SWIG macros defined using %define.

    -

    SWIG allows a variable number of arguments to be empty. However, +

    +
    +

    When used, any extra arguments to ... are placed into the + special variable __VA_ARGS__. This also works with special + SWIG macros defined using %define.

    +

    SWIG allows a variable number of arguments to be empty. However, this often results in an extra comma (, ) and syntax error in the - resulting expansion. For example:

    -
    -
    + resulting expansion. For example:

    +
    +
     DEBUGF("hello");   --> fprintf(stderr, "hello", );
    -
    -
    -

    To get rid of the extra comma, use ## like this:

    -
    -
    +
    +
    +

    To get rid of the extra comma, use ## like this:

    +
    +
     #define DEBUGF(fmt, ...)   fprintf(stderr, fmt, ##__VA_ARGS__)
    -
    -
    -

    SWIG also supports GNU-style variadic macros. For example:

    -
    -
    +
    +
    +

    SWIG also supports GNU-style variadic macros. For example:

    +
    +
     #define DEBUGF(fmt, args...)  fprintf(stdout, fmt, args)
    -
    -
    -

    Comment: It's not entirely clear how variadic macros might be +

    +
    +

    Comment: It's not entirely clear how variadic macros might be useful to interface building. However, they are used internally to implement a number of SWIG directives and are provided to make SWIG - more compatible with C99 code.

    -

    8.7 Preprocessing and delimiters -

    -

    The preprocessor handles { }, " " and %{ %} delimiters differently.

    -

    8.7.1 Preprocessing and %{ ... %} & " ... - " delimiters

    -

    The SWIG preprocessor does not process any text enclosed in a code - block %{ ... %}. Therefore, if you write code like this,

    -
    -
    + more compatible with C99 code.

    +

    10.7 Preprocessing and delimiters +

    +

    The preprocessor handles { }, " " and %{ %} delimiters differently.

    +

    10.7.1 Preprocessing and %{ ... %} & " + ... " delimiters

    +

    The SWIG preprocessor does not process any text enclosed in a code + block %{ ... %}. Therefore, if you write code like this,

    +
    +
     %{
     #ifdef NEED_BLAH
     int blah() {
    @@ -11950,17 +12591,17 @@ int blah() {
     }
     #endif
     %}
    -
    -
    -

    the contents of the %{ ... %} block are copied without - modification to the output (including all preprocessor directives).

    -

    8.7.2 Preprocessing and { ... } - delimiters

    -

    SWIG always runs the preprocessor on text appearing inside { ... - }. However, sometimes it is desirable to make a preprocessor - directive pass through to the output file. For example:

    -
    -
    +
    +
    +

    the contents of the %{ ... %} block are copied without + modification to the output (including all preprocessor directives).

    +

    10.7.2 Preprocessing and { ... } + delimiters

    +

    SWIG always runs the preprocessor on text appearing inside { ... + }. However, sometimes it is desirable to make a preprocessor + directive pass through to the output file. For example:

    +
    +
     %extend Foo {
       void bar() {
         #ifdef DEBUG
    @@ -11968,13 +12609,13 @@ int blah() {
         #endif
       }
     }
    -
    -
    -

    By default, SWIG will interpret the #ifdef DEBUG statement. +

    +
    +

    By default, SWIG will interpret the #ifdef DEBUG statement. However, if you really wanted that code to actually go into the wrapper - file, prefix the preprocessor directives with % like this:

    -
    -
    + file, prefix the preprocessor directives with % like this:

    +
    +
     %extend Foo {
       void bar() {
         %#ifdef DEBUG
    @@ -11982,213 +12623,223 @@ int blah() {
         %#endif
       }
     }
    -
    -
    -

    SWIG will strip the extra % and leave the preprocessor - directive in the code.

    -

    8.8 Preprocessor and - Typemaps

    -

    Typemaps support a special attribute called -noblock where the { ... } delimiters can be used, but the +

    +
    +

    SWIG will strip the extra % and leave the preprocessor + directive in the code.

    +

    10.8 Preprocessor and + Typemaps

    +

    Typemaps support a special attribute called +noblock where the { ... } delimiters can be used, but the delimiters are not actually generated into the code. The effect is then - similar to using "" or %{ %} delimiters but the code is run - through the preprocessor. For example:

    -
    -
    + similar to using "" or %{ %} delimiters but the code is run
    + through the preprocessor. For example:

    +
    +
     #define SWIG_macro(CAST) (CAST)$input
     %typemap(in) Int {$1= SWIG_macro(int);}
    -
    -
    -

    might generate

    -
    -
    +
    +
    +

    might generate

    +
    +
       {
         arg1=(int)jarg1;
       }
    -
    -
    -

    whereas

    -
    -
    +
    +
    +

    whereas

    +
    +
     #define SWIG_macro(CAST) (CAST)$input
     %typemap(in, noblock=1) Int {$1= SWIG_macro(int);}
    -
    -
    -

    might generate

    -
    -
    +
    +
    +

    might generate

    +
    +
       arg1=(int)jarg1;
    -
    -
    -

    and

    -
    -
    +
    +
    +

    and

    +
    +
     #define SWIG_macro(CAST) (CAST)$input
     %typemap(in) Int %{$1=SWIG_macro(int);%}
    -
    -
    -

    would generate

    -
    -
    +
    +
    +

    would generate

    +
    +
       arg1=SWIG_macro(int);
    -
    -
    -

    8.9 Viewing preprocessor output

    -

    Like many compilers, SWIG supports a -E command line option - to display the output from the preprocessor. When the -E - switch is used, SWIG will not generate any wrappers. Instead the +

    +
    +

    10.9 Viewing preprocessor output

    +

    Like many compilers, SWIG supports a -E command line option + to display the output from the preprocessor. When the -E + option is used, SWIG will not generate any wrappers. Instead the results after the preprocessor has run are displayed. This might be useful as an aid to debugging and viewing the results of macro - expansions.

    -

    8.10 The #error and #warning - directives

    -

    SWIG supports the commonly used #warning and #error - preprocessor directives. The #warning directive will cause - SWIG to issue a warning then continue processing. The #error - directive will cause SWIG to exit with a fatal error. Example usage:

    -
    -
    + expansions.

    +

    10.10 The #error and #warning + directives

    +

    SWIG supports the commonly used #warning and #error + preprocessor directives. The #warning directive will cause + SWIG to issue a warning then continue processing. The #error + directive will cause SWIG to exit with a fatal error. Example usage:

    +
    +
     #error "This is a fatal error message"
     #warning "This is a warning message"
    -
    -
    -

    The #error behaviour can be made to work like #warning - if the -cpperraswarn commandline option is used. - Alternatively, the #pragma directive can be used to the same - effect, for example:

    -
    -
    +
    +
    +

    The #error behaviour can be made to work like #warning + if the -cpperraswarn commandline option is used. + Alternatively, the #pragma directive can be used to the same + effect, for example:

    +
    +
       /* Modified behaviour: #error does not cause SWIG to exit with error */
       #pragma SWIG cpperraswarn=1
       /* Normal behaviour: #error does cause SWIG to exit with error */
       #pragma SWIG cpperraswarn=0
    -
    -

    -

    9 SWIG library

    +
    +

    +

    11 SWIG library

    - + -

    To help build extension modules, SWIG is packaged with a library of +

    To help build extension modules, SWIG is packaged with a library of support files that you can include in your own interfaces. These files often define new SWIG directives or provide utility functions that can be used to access parts of the standard C and C++ libraries. This chapter provides a reference to the current set of supported library - files.

    -

    Compatibility note: Older versions of SWIG included a number + files.

    +

    Compatibility note: Older versions of SWIG included a number of library files for manipulating pointers, arrays, and other structures. Most these files are now deprecated and have been removed from the distribution. Alternative libraries provide similar functionality. Please read this chapter carefully if you used the old - libraries.

    -

    9.1 The %include directive and library search - path

    -

    Library files are included using the %include directive. + libraries.

    +

    11.1 The %include directive and library search + path

    +

    Library files are included using the %include directive. When searching for files, directories are searched in the following - order:

    -
      -
    1. The current directory
    2. -
    3. Directories specified with the -I command line option
    4. -
    5. ./swig_lib
    6. -
    7. SWIG library install location as reported by swig -swiglib, - for example /usr/local/share/swig/1.3.30
    8. -
    9. On Windows, a directory Lib relative to the location of -swig.exe is also searched.
    10. -
    -

    Within directories mentioned in points 3-5, SWIG first looks for a - subdirectory corresponding to a target language (e.g., python, - tcl, etc.). If found, SWIG will search the language specific + order:

    +
      +
    1. The current directory
    2. +
    3. Directories specified with the -I command line option
    4. +
    5. ./swig_lib
    6. +
    7. SWIG library install location as reported by swig -swiglib, + for example /usr/local/share/swig/1.3.30
    8. +
    9. On Windows, a directory Lib relative to the location of +swig.exe is also searched.
    10. +
    +

    Within directories mentioned in points 3-5, SWIG first looks for a + subdirectory corresponding to a target language (e.g., python, + tcl, etc.). If found, SWIG will search the language specific directory first. This allows for language-specific implementations of - library files.

    -

    You can ignore the installed SWIG library by setting the -SWIG_LIB environment variable. Set the environment variable to hold - an alternative library directory.

    -

    The directories that are searched are displayed when using --verbose commandline option.

    -

    9.2 C Arrays and Pointers

    -

    This section describes library modules for manipulating low-level C + library files.

    +

    You can ignore the installed SWIG library by setting the +SWIG_LIB environment variable. Set the environment variable to hold + an alternative library directory.

    +

    The directories that are searched are displayed when using +-verbose commandline option.

    +

    11.2 C arrays and pointers

    +

    This section describes library modules for manipulating low-level C arrays and pointers. The primary use of these modules is in supporting - C declarations that manipulate bare pointers such as int *, -double *, or void *. The modules can be used to allocate + C declarations that manipulate bare pointers such as int *, +double *, or void *. The modules can be used to allocate memory, manufacture pointers, dereference memory, and wrap pointers as class-like objects. Since these functions provide direct access to memory, their use is potentially unsafe and you should exercise - caution.

    -

    9.2.1 cpointer.i

    -

    The cpointer.i module defines macros that can be used to + caution.

    +

    11.2.1 cpointer.i

    +

    The cpointer.i module defines macros that can be used to used to generate wrappers around simple C pointers. The primary use of - this module is in generating pointers to primitive datatypes such as -int and double.

    -

    %pointer_functions(type, name)

    -
    -

    Generates a collection of four functions for manipulating a pointer -type *:

    -

    type *new_name()

    -
    -

    Creates a new object of type type and returns a pointer to - it. In C, the object is created using calloc(). In C++, -new is used.

    -
    -

    type *copy_name(type value)

    -
    -

    Creates a new object of type type and returns a pointer to - it. An initial value is set by copying it from value. In C, - the object is created using calloc(). In C++, new is - used.

    -
    -

    type *delete_name(type *obj)

    -
    -

    Deletes an object type type.

    -
    -

    void name_assign(type *obj, type value)

    -
    -

    Assigns *obj = value.

    -
    -

    type name_value(type *obj)

    -
    -

    Returns the value of *obj.

    -
    -

    When using this macro, type may be any type and name - must be a legal identifier in the target language. name should - not correspond to any other name used in the interface file.

    -

    Here is a simple example of using %pointer_functions():

    -
    -
    + this module is in generating pointers to primitive datatypes such as 
    +int and double.

    +

    %pointer_functions(type, name)

    +
    +

    Generates a collection of four functions for manipulating a pointer +type *:

    +

    type *new_name()

    +
    +

    Creates a new object of type type and returns a pointer to + it. In C, the object is created using calloc(). In C++, +new is used.

    +
    +

    type *copy_name(type value)

    +
    +

    Creates a new object of type type and returns a pointer to + it. An initial value is set by copying it from value. In C, + the object is created using calloc(). In C++, new is + used.

    +
    +

    type *delete_name(type *obj)

    +
    +

    Deletes an object type type.

    +
    +

    void name_assign(type *obj, type value)

    +
    +

    Assigns *obj = value.

    +
    +

    type name_value(type *obj)

    +
    +

    Returns the value of *obj.

    +
    +

    When using this macro, type may be any type and name + must be a legal identifier in the target language. name should + not correspond to any other name used in the interface file.

    +

    Here is a simple example of using %pointer_functions():

    +
    +
     %module example
     %include "cpointer.i"
     
    @@ -12197,25 +12848,25 @@ new is used.

    /* A function that uses an "int *" */ void add(int x, int y, int *result); -
    -
    -

    Now, in Python:

    -
    -
    +
    +
    +

    Now, in Python:

    +
    +
     >>> import example
     >>> c = example.new_intp()     # Create an "int" for storing result
     >>> example.add(3, 4, c)       # Call function
     >>> example.intp_value(c)      # Dereference
     7
     >>> example.delete_intp(c)     # Delete
    -
    -
    -

    %pointer_class(type, name)

    -
    -

    Wraps a pointer of type * inside a class-based interface. - This interface is as follows:

    -
    -
    +
    +
    +

    %pointer_class(type, name)

    +
    +

    Wraps a pointer of type * inside a class-based interface. + This interface is as follows:

    +
    +
     struct name {
       name();                            // Create pointer object
       ~name();                           // Delete pointer object
    @@ -12225,23 +12876,23 @@ struct name {
       static name *frompointer(type *);  // Create class wrapper from existing
                                          // pointer
     };
    -
    -
    -

    When using this macro, type is restricted to a simple type - name like int, float, or Foo. Pointers and - other complicated types are not allowed. name must be a valid +

    +
    +

    When using this macro, type is restricted to a simple type + name like int, float, or Foo. Pointers and + other complicated types are not allowed. name must be a valid identifier not already in use. When a pointer is wrapped as a class, the "class" may be transparently passed to any function that expects - the pointer.

    -

    If the target language does not support proxy classes, the use of - this macro will produce the example same functions as -%pointer_functions() macro.

    -

    It should be noted that the class interface does introduce a new + the pointer.

    +

    If the target language does not support proxy classes, the use of + this macro will produce the example same functions as +%pointer_functions() macro.

    +

    It should be noted that the class interface does introduce a new object or wrap a pointer inside a special structure. Instead, the raw - pointer is used directly.

    -

    Here is the same example using a class instead:

    -
    -
    + pointer is used directly.

    +

    Here is the same example using a class instead:

    +
    +
     %module example
     %include "cpointer.i"
     
    @@ -12250,109 +12901,109 @@ struct name {
     
     /* A function that uses an "int *" */
     void add(int x, int y, int *result);
    -
    -
    -

    Now, in Python (using proxy classes)

    -
    -
    +
    +
    +

    Now, in Python (using proxy classes)

    +
    +
     >>> import example
     >>> c = example.intp()         # Create an "int" for storing result
     >>> example.add(3, 4, c)       # Call function
     >>> c.value()                  # Dereference
     7
    -
    -
    -

    Of the two macros, %pointer_class is probably the most +

    +
    +

    Of the two macros, %pointer_class is probably the most convenient when working with simple pointers. This is because the pointers are access like objects and they can be easily garbage collected (destruction of the pointer object destroys the underlying - object).

    -
    -

    %pointer_cast(type1, type2, name)

    -
    -

    Creates a casting function that converts type1 to type2 -. The name of the function is name. For example:

    -
    -
    + object).

    +
    +

    %pointer_cast(type1, type2, name)

    +
    +

    Creates a casting function that converts type1 to type2 +. The name of the function is name. For example:

    +
    +
     %pointer_cast(int *, unsigned int *, int_to_uint);
    -
    -
    -

    In this example, the function int_to_uint() would be used - to cast types in the target language.

    -
    -

    Note: None of these macros can be used to safely work with - strings (char * or char **).

    -

    Note: When working with simple pointers, typemaps can often - be used to provide more seamless operation.

    -

    9.2.2 carrays.i

    -

    This module defines macros that assist in wrapping ordinary C + +

    +

    In this example, the function int_to_uint() would be used + to cast types in the target language.

    + +

    Note: None of these macros can be used to safely work with + strings (char * or char **).

    +

    Note: When working with simple pointers, typemaps can often + be used to provide more seamless operation.

    +

    11.2.2 carrays.i

    +

    This module defines macros that assist in wrapping ordinary C pointers as arrays. The module does not provide any safety or an extra layer of wrapping--it merely provides functionality for creating, - destroying, and modifying the contents of raw C array data.

    -

    %array_functions(type, name)

    -
    -

    Creates four functions.

    -

    type *new_name(int nelements)

    -
    -

    Creates a new array of objects of type type. In C, the - array is allocated using calloc(). In C++, new [] is - used.

    -
    -

    type *delete_name(type *ary)

    -
    -

    Deletes an array. In C, free() is used. In C++, delete - [] is used.

    -
    -

    type name_getitem(type *ary, int index)

    -
    -

    Returns the value ary[index].

    -
    -

    void name_setitem(type *ary, int index, type value)

    -
    -

    Assigns ary[index] = value.

    -
    -

    When using this macro, type may be any type and name - must be a legal identifier in the target language. name should - not correspond to any other name used in the interface file.

    -

    Here is an example of %array_functions(). Suppose you had a - function like this:

    -
    -
    + destroying, and modifying the contents of raw C array data.

    +

    %array_functions(type, name)

    +
    +

    Creates four functions.

    +

    type *new_name(int nelements)

    +
    +

    Creates a new array of objects of type type. In C, the + array is allocated using calloc(). In C++, new [] is + used.

    +
    +

    type *delete_name(type *ary)

    +
    +

    Deletes an array. In C, free() is used. In C++, delete + [] is used.

    +
    +

    type name_getitem(type *ary, int index)

    +
    +

    Returns the value ary[index].

    +
    +

    void name_setitem(type *ary, int index, type value)

    +
    +

    Assigns ary[index] = value.

    +
    +

    When using this macro, type may be any type and name + must be a legal identifier in the target language. name should + not correspond to any other name used in the interface file.

    +

    Here is an example of %array_functions(). Suppose you had a + function like this:

    +
    +
     void print_array(double x[10]) {
       int i;
       for (i = 0; i < 10; i++) {
         printf("[%d] = %g\n", i, x[i]);
       }
     }
    -
    -
    -

    To wrap it, you might write this:

    -
    -
    +
    +
    +

    To wrap it, you might write this:

    +
    +
     %module example
     
     %include "carrays.i"
     %array_functions(double, doubleArray);
     
     void print_array(double x[10]);
    -
    -
    -

    Now, in a scripting language, you might write this:

    -
    -
    -a = new_doubleArray(10)             # Create an array
    +
    +
    +

    Now, in a scripting language, you might write this:

    +
    +
    +a = new_doubleArray(10)               # Create an array
     for i in range(0, 10):
    -    doubleArray_setitem(a, i, 2*i)  # Set a value
    -print_array(a)                      # Pass to C
    -delete_doubleArray(a)               # Destroy array
    -
    -
    -

    %array_class(type, name)

    -
    -

    Wraps a pointer of type * inside a class-based interface. - This interface is as follows:

    -
    -
    +    doubleArray_setitem(a, i, 2 * i)  # Set a value
    +print_array(a)                        # Pass to C
    +delete_doubleArray(a)                 # Destroy array
    +
    +
    +

    %array_class(type, name)

    +
    +

    Wraps a pointer of type * inside a class-based interface. + This interface is as follows:

    +
    +
     struct name {
       name(int nelements);                  // Create an array
       ~name();                              // Delete array
    @@ -12362,108 +13013,110 @@ struct name {
       static name *frompointer(type *);     // Create class wrapper from
                                             // existing pointer
     };
    -
    -
    -

    When using this macro, type is restricted to a simple type - name like int or float. Pointers and other - complicated types are not allowed. name must be a valid +

    +
    +

    When using this macro, type is restricted to a simple type + name like int or float. Pointers and other + complicated types are not allowed. name must be a valid identifier not already in use. When a pointer is wrapped as a class, it - can be transparently passed to any function that expects the pointer.

    -

    When combined with proxy classes, the %array_class() macro - can be especially useful. For example:

    -
    -
    + can be transparently passed to any function that expects the pointer.

    +

    When combined with proxy classes, the %array_class() macro + can be especially useful. For example:

    +
    +
     %module example
     %include "carrays.i"
     %array_class(double, doubleArray);
     
     void print_array(double x[10]);
    -
    -
    -

    Allows you to do this:

    -
    -
    +
    +
    +

    Allows you to do this:

    +
    +
     import example
     c = example.doubleArray(10)  # Create double[10]
     for i in range(0, 10):
    -    c[i] = 2*i               # Assign values
    +    c[i] = 2 * i             # Assign values
     example.print_array(c)       # Pass to C
    -
    -
    -

    Note: These macros do not encapsulate C arrays inside a + +

    +

    Note: These macros do not encapsulate C arrays inside a special data structure or proxy. There is no bounds checking or safety of any kind. If you want this, you should consider using a special - array object rather than a bare pointer.

    -

    Note: %array_functions() and %array_class() - should not be used with types of char or char *.

    -

    9.2.3 cmalloc.i

    -

    This module defines macros for wrapping the low-level C memory - allocation functions malloc(), calloc(), -realloc(), and free().

    -

    %malloc(type [, name=type])

    -
    -

    Creates a wrapper around malloc() with the following - prototype:

    -
    -
    -type *malloc_name(int nbytes = sizeof(type));
    -
    -
    -

    If type is void, then the size parameter -nbytes is required. The name parameter only needs to be - specified when wrapping a type that is not a valid identifier (e.g., " -int *", "double **", etc.).

    -
    -

    %calloc(type [, name=type])

    -
    -

    Creates a wrapper around calloc() with the following - prototype:

    -
    -
    -type *calloc_name(int nobj =1, int sz = sizeof(type));
    -
    -
    -

    If type is void, then the size parameter sz - is required.

    -
    -

    %realloc(type [, name=type])

    -
    -

    Creates a wrapper around realloc() with the following - prototype:

    -
    -
    -type *realloc_name(type *ptr, int nitems);
    -
    -
    -

    Note: unlike the C realloc(), the wrapper generated by this + array object rather than a bare pointer.

    +

    Note: %array_functions() and %array_class() + should not be used with types of char or char *. + SWIG's default handling of these types is to handle them as character + strings and the two macros do not do enough to change this.

    +

    11.2.3 cmalloc.i

    +

    This module defines macros for wrapping the low-level C memory + allocation functions malloc(), calloc(), +realloc(), and free().

    +

    %malloc(type [, name=type])

    +
    +

    Creates a wrapper around malloc() with the following + prototype:

    +
    +
    +type *malloc_name(int nbytes = sizeof(type));
    +
    +
    +

    If type is void, then the size parameter +nbytes is required. The name parameter only needs to be + specified when wrapping a type that is not a valid identifier (e.g., " +int *", "double **", etc.).

    +
    +

    %calloc(type [, name=type])

    +
    +

    Creates a wrapper around calloc() with the following + prototype:

    +
    +
    +type *calloc_name(int nobj =1, int sz = sizeof(type));
    +
    +
    +

    If type is void, then the size parameter sz + is required.

    +
    +

    %realloc(type [, name=type])

    +
    +

    Creates a wrapper around realloc() with the following + prototype:

    +
    +
    +type *realloc_name(type *ptr, int nitems);
    +
    +
    +

    Note: unlike the C realloc(), the wrapper generated by this macro implicitly includes the size of the corresponding type. For - example, realloc_int(p, 100) reallocates p so that it - holds 100 integers.

    -
    -

    %free(type [, name=type])

    -
    -

    Creates a wrapper around free() with the following - prototype:

    -
    -
    -void free_name(type *ptr);
    -
    -
    -

    %sizeof(type [, name=type])

    -
    -

    Creates the constant:

    -
    -
    -%constant int sizeof_name = sizeof(type);
    -
    -
    -

    %allocators(type [, name=type])

    -
    -

    Generates wrappers for all five of the above operations.

    -
    -

    Here is a simple example that illustrates the use of these macros:

    -
    -
    + example, realloc_int(p, 100) reallocates p so that it
    + holds 100 integers.

    +
    +

    %free(type [, name=type])

    +
    +

    Creates a wrapper around free() with the following + prototype:

    +
    +
    +void free_name(type *ptr);
    +
    +
    +

    %sizeof(type [, name=type])

    +
    +

    Creates the constant:

    +
    +
    +%constant int sizeof_name = sizeof(type);
    +
    +
    +

    %allocators(type [, name=type])

    +
    +

    Generates wrappers for all five of the above operations.

    +
    +

    Here is a simple example that illustrates the use of these macros:

    +
    +
     // SWIG interface
     %module example
     %include "cmalloc.i"
    @@ -12475,11 +13128,11 @@ void free_name(type *ptr);
     %free(int *, intp);
     
     %allocators(double);
    -
    -
    -

    Now, in a script:

    -
    -
    +
    +
    +

    Now, in a script:

    +
    +
     >>> from example import *
     >>> a = malloc_int()
     >>> a
    @@ -12497,45 +13150,45 @@ void free_name(type *ptr);
     >>> print sizeof_double
     8
     >>>
    -
    -
    -

    9.2.4 cdata.i

    -

    The cdata.i module defines functions for converting raw C + +

    +

    11.2.4 cdata.i

    +

    The cdata.i module defines functions for converting raw C data to and from strings in the target language. The primary applications of this module would be packing/unpacking of binary data structures---for instance, if you needed to extract data from a buffer. The target language must support strings with embedded binary data in - order for this to work.

    -

    const char *cdata(void *ptr, size_t nbytes)

    -
    -

    Converts nbytes of data at ptr into a string. -ptr can be any pointer.

    -
    -

    void memmove(void *ptr, const char *s)

    -
    -

    Copies all of the string data in s into the memory pointed - to by ptr. The string may contain embedded NULL bytes. This is - actually a wrapper to the standard C library memmove function, - which is declared as void memmove(void *ptr, const void *src, - size_t n). The src and length n parameters - are extracted from the language specific string s in the - underlying wrapper code.

    -
    -

    One use of these functions is packing and unpacking data from - memory. Here is a short example:

    -
    -
    + order for this to work.

    +

    const char *cdata(void *ptr, size_t nbytes)

    +
    +

    Converts nbytes of data at ptr into a string. +ptr can be any pointer.

    +
    +

    void memmove(void *ptr, const char *s)

    +
    +

    Copies all of the string data in s into the memory pointed + to by ptr. The string may contain embedded NULL bytes. This is + actually a wrapper to the standard C library memmove function, + which is declared as void memmove(void *ptr, const void *src, + size_t n). The src and length n parameters + are extracted from the language specific string s in the + underlying wrapper code.

    +
    +

    One use of these functions is packing and unpacking data from + memory. Here is a short example:

    +
    +
     // SWIG interface
     %module example
     %include "carrays.i"
     %include "cdata.i"
     
     %array_class(int, intArray);
    -
    -
    -

    Python example:

    -
    -
    +
    +
    +

    Python example:

    +
    +
     >>> a = intArray(10)
     >>> for i in range(0, 10):
     ...    a[i] = i
    @@ -12548,123 +13201,123 @@ ptr can be any pointer.

    >>> print c[4] 4 >>> -
    -
    -

    Since the size of data is not always known, the following macro is - also defined:

    -

    %cdata(type [, name=type])

    -
    -

    Generates the following function for extracting C data for a given - type.

    -
    -
    -char *cdata_name(type* ptr, int nitems)
    -
    -
    -

    nitems is the number of items of the given type to extract.

    -
    -

    Note: These functions provide direct access to memory and can - be used to overwrite data. Clearly they are unsafe.

    -

    9.3 C String Handling

    -

    A common problem when working with C programs is dealing with - functions that manipulate raw character data using char *. In - part, problems arise because there are different interpretations of -char *---it could be a NULL-terminated string or it could point to +

    +
    +

    Since the size of data is not always known, the following macro is + also defined:

    +

    %cdata(type [, name=type])

    +
    +

    Generates the following function for extracting C data for a given + type.

    +
    +
    +char *cdata_name(type* ptr, int nitems)
    +
    +
    +

    nitems is the number of items of the given type to extract.

    +
    +

    Note: These functions provide direct access to memory and can + be used to overwrite data. Clearly they are unsafe.

    +

    11.3 C string handling

    +

    A common problem when working with C programs is dealing with + functions that manipulate raw character data using char *. In + part, problems arise because there are different interpretations of +char *---it could be a NULL-terminated string or it could point to binary data. Moreover, functions that manipulate raw strings may mutate data, perform implicit memory allocations, or utilize fixed-sized - buffers.

    -

    The problems (and perils) of using char * are well-known. + buffers.

    +

    The problems (and perils) of using char * are well-known. However, SWIG is not in the business of enforcing morality. The modules in this section provide basic functionality for manipulating raw C - strings.

    -

    9.3.1 Default string handling

    -

    Suppose you have a C function with this prototype:

    -
    -
    + strings.

    +

    11.3.1 Default string handling

    +

    Suppose you have a C function with this prototype:

    +
    +
     char *foo(char *s);
    -
    -
    -

    The default wrapping behavior for this function is to set s - to a raw char * that refers to the internal string data in the +

    +
    +

    The default wrapping behavior for this function is to set s + to a raw char * that refers to the internal string data in the target language. In other words, if you were using a language like Tcl, - and you wrote this,

    -
    -
    + and you wrote this,

    +
    +
     % foo Hello
    -
    -
    -

    then s would point to the representation of "Hello" inside - the Tcl interpreter. When returning a char *, SWIG assumes +

    +
    +

    then s would point to the representation of "Hello" inside + the Tcl interpreter. When returning a char *, SWIG assumes that it is a NULL-terminated string and makes a copy of it. This gives - the target language its own copy of the result.

    -

    There are obvious problems with the default behavior. First, since a - char * argument points to data inside the target language, it - is NOT safe for a function to modify this data (doing so may + the target language its own copy of the result.

    +

    There are obvious problems with the default behavior. First, since a + char * argument points to data inside the target language, it + is NOT safe for a function to modify this data (doing so may corrupt the interpreter and lead to a crash). Furthermore, the default behavior does not work well with binary data. Instead, strings are - assumed to be NULL-terminated.

    -

    9.3.2 Passing binary data

    -

    If you have a function that expects binary data,

    -
    -
    + assumed to be NULL-terminated.

    +

    11.3.2 Passing binary data

    +

    If you have a function that expects binary data,

    +
    +
     size_t parity(char *str, size_t len, size_t initial);
    -
    -
    -

    you can wrap the parameters (char *str, size_t len) as a - single argument using a typemap. Just do this:

    -
    -
    +
    +
    +

    you can wrap the parameters (char *str, size_t len) as a + single argument using a typemap. Just do this:

    +
    +
     %apply (char *STRING, size_t LENGTH) { (char *str, size_t len) };
     ...
     size_t parity(char *str, size_t len, size_t initial);
    -
    -
    -

    Now, in the target language, you can use binary string data like - this:

    -
    -
    +
    +
    +

    Now, in the target language, you can use binary string data like + this:

    +
    +
     >>> s = "H\x00\x15eg\x09\x20"
     >>> parity(s, 0)
    -
    -
    -

    In the wrapper function, the passed string will be expanded to a - pointer and length parameter. The (char *STRING, int LENGTH) - multi-argument typemap is also available in addition to (char - *STRING, size_t LENGTH).

    -

    9.3.3 Using %newobject to release memory

    -

    If you have a function that allocates memory like this,

    -
    -
    +
    +
    +

    In the wrapper function, the passed string will be expanded to a + pointer and length parameter. The (char *STRING, int LENGTH) + multi-argument typemap is also available in addition to (char + *STRING, size_t LENGTH).

    +

    11.3.3 Using %newobject to release memory

    +

    If you have a function that allocates memory like this,

    +
    +
     char *foo() {
       char *result = (char *) malloc(...);
       ...
       return result;
     }
    -
    -
    -

    then the SWIG generated wrappers will have a memory leak--the +

    +
    +

    then the SWIG generated wrappers will have a memory leak--the returned data will be copied into a string object and the old contents - ignored.

    -

    To fix the memory leak, use the %newobject directive.

    -
    -
    + ignored.

    +

    To fix the memory leak, use the %newobject directive.

    +
    +
     %newobject foo;
     ...
     char *foo();
    -
    -
    -

    This will release the result if the appropriate target language +

    +
    +

    This will release the result if the appropriate target language support is available. SWIG provides the appropriate "newfree" typemap - for char * so that the memory is released, however, you may - need to provide your own "newfree" typemap for other types. See -Object ownership and %newobject for more details.

    -

    9.3.4 cstring.i

    -

    The cstring.i library file provides a collection of macros + for char * so that the memory is released, however, you may + need to provide your own "newfree" typemap for other types. See +Object ownership and %newobject for more details.

    +

    11.3.4 cstring.i

    +

    The cstring.i library file provides a collection of macros for dealing with functions that either mutate string arguments or which try to output string data through their arguments. An example of such a - function might be this rather questionable implementation:

    -
    -
    + function might be this rather questionable implementation:

    +
    +
     void get_path(char *s) {
       // Potential buffer overflow---uh, oh.
       sprintf(s, "%s/%s", base_directory, sub_directory);
    @@ -12677,109 +13330,109 @@ void get_path(char *s) {
       get_path(path);
       ...
     }
    -
    -
    -

    (Off topic rant: If your program really has functions like this, you +

    +
    +

    (Off topic rant: If your program really has functions like this, you would be well-advised to replace them with safer alternatives involving - bounds checking).

    -

    The macros defined in this module all expand to various combinations + bounds checking).

    +

    The macros defined in this module all expand to various combinations of typemaps. Therefore, the same pattern matching rules and ideas - apply.

    -

    %cstring_bounded_output(parm, maxsize)

    -
    -

    Turns parameter parm into an output value. The - output string is assumed to be NULL-terminated and smaller than -maxsize characters. Here is an example:

    -
    -
    + apply.

    +

    %cstring_bounded_output(parm, maxsize)

    +
    +

    Turns parameter parm into an output value. The + output string is assumed to be NULL-terminated and smaller than +maxsize characters. Here is an example:

    +
    +
     %cstring_bounded_output(char *path, 1024);
     ...
     void get_path(char *path);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> get_path()
     /home/beazley/packages/Foo/Bar
     >>>
    -
    -
    -

    Internally, the wrapper function allocates a small buffer (on the +

    +
    +

    Internally, the wrapper function allocates a small buffer (on the stack) of the requested size and passes it as the pointer value. Data stored in the buffer is then returned as a function return value. If the function already returns a value, then the return value and the - output string are returned together (multiple return values). If - more than maxsize bytes are written, your program - will crash with a buffer overflow!

    -
    -

    %cstring_chunk_output(parm, chunksize)

    -
    -

    Turns parameter parm into an output value. The - output string is always chunksize and may contain - binary data. Here is an example:

    -
    -
    + output string are returned together (multiple return values). If
    + more than maxsize bytes are written, your program
    + will crash with a buffer overflow!

    +
    +

    %cstring_chunk_output(parm, chunksize)

    +
    +

    Turns parameter parm into an output value. The + output string is always chunksize and may contain + binary data. Here is an example:

    +
    +
     %cstring_chunk_output(char *packet, PACKETSIZE);
     ...
     void get_packet(char *packet);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> get_packet()
     '\xa9Y:\xf6\xd7\xe1\x87\xdbH;y\x97\x7f\xd3\x99\x14V\xec\x06\xea\xa2\x88'
     >>>
    -
    -
    -

    This macro is essentially identical to %cstring_bounded_output -. The only difference is that the result is always chunksize - characters. Furthermore, the result can contain binary data. If - more than maxsize bytes are written, your program - will crash with a buffer overflow!

    -
    -

    %cstring_bounded_mutable(parm, maxsize)

    -
    -

    Turns parameter parm into a mutable string + +

    +

    This macro is essentially identical to %cstring_bounded_output +. The only difference is that the result is always chunksize + characters. Furthermore, the result can contain binary data. If + more than maxsize bytes are written, your program + will crash with a buffer overflow!

    +
    +

    %cstring_bounded_mutable(parm, maxsize)

    +
    +

    Turns parameter parm into a mutable string argument. The input string is assumed to be NULL-terminated and smaller - than maxsize characters. The output string is also - assumed to be NULL-terminated and less than maxsize - characters.

    -
    -
    + than maxsize characters. The output string is also
    + assumed to be NULL-terminated and less than maxsize
    + characters.

    +
    +
     %cstring_bounded_mutable(char *ustr, 1024);
     ...
     void make_upper(char *ustr);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> make_upper("hello world")
     'HELLO WORLD'
     >>>
    -
    -
    -

    Internally, this macro is almost exactly the same as -%cstring_bounded_output. The only difference is that the parameter +

    +
    +

    Internally, this macro is almost exactly the same as +%cstring_bounded_output. The only difference is that the parameter accepts an input value that is used to initialize the internal buffer. It is important to emphasize that this function does not mutate the string value passed---instead it makes a copy of the input value, - mutates it, and returns it as a result. If more than maxsize - bytes are written, your program will crash with a buffer overflow! -

    -
    -

    %cstring_mutable(parm [, expansion])

    -
    -

    Turns parameter parm into a mutable string + mutates it, and returns it as a result. If more than maxsize + bytes are written, your program will crash with a buffer overflow! +

    +
    +

    %cstring_mutable(parm [, expansion])

    +
    +

    Turns parameter parm into a mutable string argument. The input string is assumed to be NULL-terminated. An - optional parameter expansion specifies the number of + optional parameter expansion specifies the number of extra characters by which the string might grow when it is modified. The output string is assumed to be NULL-terminated and less than the - size of the input string plus any expansion characters.

    -
    -
    + size of the input string plus any expansion characters.

    +
    +
     %cstring_mutable(char *ustr);
     ...
     void make_upper(char *ustr);
    @@ -12787,231 +13440,245 @@ void make_upper(char *ustr);
     %cstring_mutable(char *hstr, HEADER_SIZE);
     ...
     void attach_header(char *hstr);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> make_upper("hello world")
     'HELLO WORLD'
     >>> attach_header("Hello world")
     'header: Hello world'
     >>>
    -
    -
    -

    This macro differs from %cstring_bounded_mutable() in that - a buffer is dynamically allocated (on the heap using malloc/new +

    +
    +

    This macro differs from %cstring_bounded_mutable() in that + a buffer is dynamically allocated (on the heap using malloc/new ). This buffer is always large enough to store a copy of the input value plus any expansion bytes that might have been requested. It is important to emphasize that this function does not directly mutate the string value passed---instead it makes a copy of the input value, - mutates it, and returns it as a result. If the function expands the - result by more than expansion extra bytes, then the - program will crash with a buffer overflow!

    -
    -

    %cstring_output_maxsize(parm, maxparm)

    -
    -

    This macro is used to handle bounded character output functions - where both a char * and a maximum length parameter are + mutates it, and returns it as a result. If the function expands the + result by more than expansion extra bytes, then the + program will crash with a buffer overflow!

    +
    +

    %cstring_output_maxsize(parm, maxparm)

    +
    +

    This macro is used to handle bounded character output functions + where both a char * and a maximum length parameter are provided. As input, a user simply supplies the maximum length. The - return value is assumed to be a NULL-terminated string.

    -
    -
    + return value is assumed to be a NULL-terminated string.

    +
    +
     %cstring_output_maxsize(char *path, int maxpath);
     ...
     void get_path(char *path, int maxpath);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> get_path(1024)
     '/home/beazley/Packages/Foo/Bar'
     >>>
    -
    -
    -

    This macro provides a safer alternative for functions that need to +

    +
    +

    This macro provides a safer alternative for functions that need to write string data into a buffer. User supplied buffer size is used to dynamically allocate memory on heap. Results are placed into that - buffer and returned as a string object.

    -
    -

    %cstring_output_withsize(parm, maxparm)

    -
    -

    This macro is used to handle bounded character output functions - where both a char * and a pointer int * are passed. - Initially, the int * parameter points to a value containing + buffer and returned as a string object.

    +
    +

    %cstring_output_withsize(parm, maxparm)

    +
    +

    This macro is used to handle bounded character output functions + where both a char * and a pointer int * are passed. + Initially, the int * parameter points to a value containing the maximum size. On return, this value is assumed to contain the actual number of bytes. As input, a user simply supplies the maximum - length. The output value is a string that may contain binary data.

    -
    -
    + length. The output value is a string that may contain binary data.

    +
    +
     %cstring_output_withsize(char *data, int *maxdata);
     ...
     void get_data(char *data, int *maxdata);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> get_data(1024)
     'x627388912'
     >>> get_data(1024)
     'xyzzy'
     >>>
    -
    -
    -

    This macro is a somewhat more powerful version of -%cstring_output_chunk(). Memory is dynamically allocated and can be +

    +
    +

    This macro is a somewhat more powerful version of +%cstring_output_chunk(). Memory is dynamically allocated and can be arbitrary large. Furthermore, a function can control how much data is - actually returned by changing the value of the maxparm - argument.

    -
    -

    %cstring_output_allocate(parm, release)

    -
    -

    This macro is used to return strings that are allocated within the - program and returned in a parameter of type char **. For - example:

    -
    -
    + actually returned by changing the value of the maxparm
    + argument.

    +
    +

    %cstring_output_allocate(parm, release)

    +
    +

    This macro is used to return strings that are allocated within the + program and returned in a parameter of type char **. For + example:

    +
    +
     void foo(char **s) {
       *s = (char *) malloc(64);
       sprintf(*s, "Hello world\n");
     }
    -
    -
    -

    The returned string is assumed to be NULL-terminated. -release specifies how the allocated memory is to be released - (if applicable). Here is an example:

    -
    -
    +
    +
    +

    The returned string is assumed to be NULL-terminated. +release specifies how the allocated memory is to be released + (if applicable). Here is an example:

    +
    +
     %cstring_output_allocate(char **s, free(*$1));
     ...
     void foo(char **s);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> foo()
     'Hello world\n'
     >>>
    -
    -
    -

    %cstring_output_allocate_size(parm, szparm, release)

    -
    -

    This macro is used to return strings that are allocated within the - program and returned in two parameters of type char ** and -int *. For example:

    -
    -
    +
    +
    +

    %cstring_output_allocate_size(parm, szparm, release)

    +
    +

    This macro is used to return strings that are allocated within the + program and returned in two parameters of type char ** and +int *. For example:

    +
    +
     void foo(char **s, int *sz) {
       *s = (char *) malloc(64);
       *sz = 64;
       // Write some binary data
       ...
     }
    -
    -
    -

    The returned string may contain binary data. release + +

    +

    The returned string may contain binary data. release specifies how the allocated memory is to be released (if applicable). - Here is an example:

    -
    -
    + Here is an example:

    +
    +
     %cstring_output_allocate_size(char **s, int *slen, free(*$1));
     ...
     void foo(char **s, int *slen);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     >>> foo()
     '\xa9Y:\xf6\xd7\xe1\x87\xdbH;y\x97\x7f\xd3\x99\x14V\xec\x06\xea\xa2\x88'
     >>>
    -
    -
    -

    This is the safest and most reliable way to return binary string +

    +
    +

    This is the safest and most reliable way to return binary string data in SWIG. If you have functions that conform to another prototype, you might consider wrapping them with a helper function. For example, - if you had this:

    -
    -
    + if you had this:

    +
    +
     char  *get_data(int *len);
    -
    -
    -

    You could wrap it with a function like this:

    -
    -
    +
    +
    +

    You could wrap it with a function like this:

    +
    +
     void my_get_data(char **result, int *len) {
       *result = get_data(len);
     }
    -
    -
    -

    Comments:

    -
      -
    • Support for the cstring.i module depends on the target - language. Not all SWIG modules currently support this library.
    • -
    • Reliable handling of raw C strings is a delicate topic. There are + +
    +

    Comments:

    +
      +
    • Support for the cstring.i module depends on the target + language. Not all SWIG modules currently support this library.
    • +
    • Reliable handling of raw C strings is a delicate topic. There are many ways to accomplish this in SWIG. This library provides support for - a few common techniques.
    • -
    • If used in C++, this library uses new and delete [] - for memory allocation. If using ANSI C, the library uses malloc() - and free().
    • -
    • Rather than manipulating char * directly, you might - consider using a special string structure or class instead.
    • -
    -

    9.4 STL/C++ Library

    -

    The library modules in this section provide access to parts of the + a few common techniques. +

  • If used in C++, this library uses new and delete [] + for memory allocation. If using C, the library uses malloc() + and free().
  • +
  • Rather than manipulating char * directly, you might + consider using a special string structure or class instead.
  • + +

    11.4 STL/C++ library

    +

    The library modules in this section provide access to parts of the standard C++ library including the STL. SWIG support for the STL is an ongoing effort. Support is quite comprehensive for some language modules but some of the lesser used modules do not have quite as much - library code written.

    -

    The following table shows which C++ classes are supported and the - equivalent SWIG interface library file for the C++ library.

    - - - - - - - - - - - - -
    C++ classC++ Library file -SWIG Interface library file
    std::auto_ptrmemorystd_auto_ptr.i
    std::dequedequestd_deque.i
    std::listliststd_list.i
    std::mapmapstd_map.i
    std::pairutilitystd_pair.i
    std::setsetstd_set.i
    std::stringstringstd_string.i
    std::vectorvectorstd_vector.i
    std::arrayarray (C++11)std_array.i
    std::shared_ptrshared_ptr (C++11) -std_shared_ptr.i
    -

    The list is by no means complete; some language modules support a + library code written.

    +

    The following table shows which C++ classes are supported and the + equivalent SWIG interface library file for the C++ library.

    + + + + + + + + + + + + + + + + + + + + + + +
    C++ classC++ Library file +SWIG Interface library file
    std::array (C++11)arraystd_array.i
    std::auto_ptrmemorystd_auto_ptr.i
    std::complexcomplexstd_complex.i
    std::dequedequestd_deque.i
    std::listliststd_list.i
    std::mapmapstd_map.i
    std::multimap (C++11)multimapstd_multimap.i
    std::multiset (C++11)multisetstd_multiset.i
    std::pairutilitystd_pair.i
    std::setsetstd_set.i
    std::stringstringstd_string.i
    std::unordered_map (C++11)unordered_map +std_unordered_map.i
    std::unordered_multimap (C++11)unordered_multimap +std_unordered_multimap.i
    std::unordered_multiset (C++11)unordered_multiset +std_unordered_multiset.i
    std::unordered_set (C++11)unordered_set +std_unordered_set.i
    std::vectorvectorstd_vector.i
    std::wstringwstringstd_wstring.i
    std::shared_ptr (C++11)shared_ptr +std_shared_ptr.i
    +

    The list is by no means complete; some language modules support a subset of the above and some support additional STL classes. Please look for the library files in the appropriate language library - directory.

    -

    9.4.1 std::string

    -

    The std_string.i library provides typemaps for converting - C++ std::string objects to and from strings in the target - scripting language. For example:

    -
    -
    + directory.

    +

    11.4.1 std::string

    +

    The std_string.i library provides typemaps for converting + C++ std::string objects to and from strings in the target + scripting language. For example:

    +
    +
     %module example
     %include "std_string.i"
     
     std::string foo();
     void        bar(const std::string &x);
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     x = foo();                # Returns a string object
     bar("Hello World");       # Pass string as std::string
    -
    -
    -

    A common problem that people encounter is that of classes/structures - containing a std::string. This can be overcome by defining a - typemap. For example:

    -
    -
    +
    +
    +

    A common problem that people encounter is that of classes/structures + containing a std::string. This can be overcome by defining a + typemap. For example:

    +
    +
     %module example
     %include "std_string.i"
     
    @@ -13021,24 +13688,24 @@ struct my_struct
     {
       std::string foo;
     };
    -
    -
    -

    In the target language:

    -
    -
    +
    +
    +

    In the target language:

    +
    +
     x = my_struct();
    -x.foo="Hello World";      # assign with string
    +x.foo = "Hello World";    # assign with string
     print x.foo;              # print as string
    -
    -
    -

    This module only supports types std::string and const - std::string &. Pointers and non-const references are left - unmodified and returned as SWIG pointers.

    -

    This library file is fully aware of C++ namespaces. If you export -std::string or rename it with a typedef, make sure you include - those declarations in your interface. For example:

    -
    -
    +
    +
    +

    This module only supports types std::string and const + std::string &. Pointers and non-const references are left + unmodified and returned as SWIG pointers.

    +

    This library file is fully aware of C++ namespaces. If you export +std::string or rename it with a typedef, make sure you include + those declarations in your interface. For example:

    +
    +
     %module example
     %include "std_string.i"
     
    @@ -13046,16 +13713,16 @@ using namespace std;
     typedef std::string String;
     ...
     void foo(string s, const String &t);     // std_string typemaps still applied
    -
    -
    -

    9.4.2 std::vector

    -

    The std_vector.i library provides support for the C++ -std::vector class in the STL. Using this library involves the use - of the %template directive. All you need to do is to - instantiate different versions of vector for the types that - you want to use. For example:

    -
    -
    +
    +
    +

    11.4.2 std::vector

    +

    The std_vector.i library provides support for the C++ +std::vector class in the STL. Using this library involves the use + of the %template directive. All you need to do is to + instantiate different versions of vector for the types that + you want to use. For example:

    +
    +
     %module example
     %include "std_vector.i"
     
    @@ -13063,32 +13730,32 @@ namespace std {
       %template(vectori) vector<int>;
       %template(vectord) vector<double>;
     };
    -
    -
    -

    When a template vector<X> is instantiated a number of - things happen:

    -
      -
    • A class that exposes the C++ API is created in the target language . +
    +
    +

    When a template vector<X> is instantiated a number of + things happen:

    +
      +
    • A class that exposes the C++ API is created in the target language . This can be used to create objects, invoke methods, etc. This class is - currently a subset of the real STL vector class.
    • -
    • Input typemaps are defined for vector<X>, const - vector<X> &, and const vector<X> *. For each of these, a - pointer vector<X> * may be passed or a native list object in - the target language.
    • -
    • An output typemap is defined for vector<X>. In this case, + currently a subset of the real STL vector class.
    • +
    • Input typemaps are defined for vector<X>, const + vector<X> &, and const vector<X> *. For each of these, a + pointer vector<X> * may be passed or a native list object in + the target language.
    • +
    • An output typemap is defined for vector<X>. In this case, the values in the vector are expanded into a list object in the target - language.
    • -
    • For all other variations of the type, the wrappers expect to receive - a vector<X> * object in the usual manner.
    • -
    • An exception handler for std::out_of_range is defined.
    • -
    • Optionally, special methods for indexing, item retrieval, slicing, + language.
    • +
    • For all other variations of the type, the wrappers expect to receive + a vector<X> * object in the usual manner.
    • +
    • An exception handler for std::out_of_range is defined.
    • +
    • Optionally, special methods for indexing, item retrieval, slicing, and element assignment may be defined. This depends on the target - language.
    • -
    -

    To illustrate the use of this library, consider the following - functions:

    -
    -
    + language.
    +
    +

    To illustrate the use of this library, consider the following + functions:

    +
    +
     /* File : example.h */
     
     #include <vector>
    @@ -13111,11 +13778,11 @@ void halve_in_place(std::vector<double>& v) {
       std::transform(v.begin(), v.end(), v.begin(),
                      std::bind2nd(std::divides<double>(), 2.0));
     }
    -
    -
    -

    To wrap with SWIG, you might write the following:

    -
    -
    +
    +
    +

    To wrap with SWIG, you might write the following:

    +
    +
     %module example
     %{
     #include "example.h"
    @@ -13130,12 +13797,12 @@ namespace std {
     
     // Include the header file with above prototypes
     %include "example.h"
    -
    -
    -

    Now, to illustrate the behavior in the scripting interpreter, - consider this Python example:

    -
    -
    +
    +
    +

    Now, to illustrate the behavior in the scripting interpreter, + consider this Python example:

    +
    +
     >>> from example import *
     >>> iv = IntVector(4)         # Create an vector<int>
     >>> for i in range(0, 4):
    @@ -13168,13 +13835,13 @@ Traceback (most recent call last):
         def __setitem__(*args): return apply(examplec.DoubleVector___setitem__, args)
     IndexError: vector index out of range
     >>>
    -
    -
    -

    This library module is fully aware of C++ namespaces. If you use - vectors with other names, make sure you include the appropriate -using or typedef directives. For example:

    -
    -
    +
    +
    +

    This library module is fully aware of C++ namespaces. If you use + vectors with other names, make sure you include the appropriate +using or typedef directives. For example:

    +
    +
     %include "std_vector.i"
     
     namespace std {
    @@ -13185,44 +13852,44 @@ using namespace std;
     typedef std::vector Vector;
     
     void foo(vector<int> *x, const Vector &x);
    -
    -
    -

    Note: This module makes use of several advanced SWIG features +

    +
    +

    Note: This module makes use of several advanced SWIG features including templatized typemaps and template partial specialization. If you are trying to wrap other C++ code with templates, you might look at - the code contained in std_vector.i. Alternatively, you can - show them the code if you want to make their head explode.

    -

    Note: This module is defined for all SWIG target languages. + the code contained in std_vector.i. Alternatively, you can + show them the code if you want to make their head explode.

    +

    Note: This module is defined for all SWIG target languages. However argument conversion details and the public API exposed to the - interpreter vary.

    -

    9.4.3 STL exceptions

    -

    Many of the STL wrapper functions add parameter checking and will + interpreter vary.

    +

    11.4.3 STL exceptions

    +

    Many of the STL wrapper functions add parameter checking and will throw a language dependent error/exception should the values not be valid. The classic example is array bounds checking. The library wrappers are written to throw a C++ exception in the case of error. The C++ exception in turn gets converted into an appropriate error/exception for the target language. By and large this handling should not need customising, however, customisation can easily be - achieved by supplying appropriate "throws" typemaps. For example:

    -
    -
    + achieved by supplying appropriate "throws" typemaps. For example:

    +
    +
     %module example
     %include "std_vector.i"
     %typemap(throws) std::out_of_range {
       // custom exception handler
     }
     %template(VectInt) std::vector<int>;
    -
    -
    -

    The custom exception handler might, for example, log the exception +

    +
    +

    The custom exception handler might, for example, log the exception then convert it into a specific error/exception for the target - language.

    -

    When using the STL it is advisable to add in an exception handler to - catch all STL exceptions. The %exception directive can be used + language.

    +

    When using the STL it is advisable to add in an exception handler to + catch all STL exceptions. The %exception directive can be used by placing the following code before any other methods or libraries to - be wrapped:

    -
    -
    + be wrapped:

    +
    +
     %include "exception.i"
     
     %exception {
    @@ -13232,48 +13899,49 @@ void foo(vector<int> *x, const Vector &x);
         SWIG_exception(SWIG_RuntimeError, e.what());
       }
     }
    -
    -
    -

    Any thrown STL exceptions will then be gracefully handled instead of - causing a crash.

    -

    9.4.4 shared_ptr smart pointer

    -

    Some target languages have support for handling the shared_ptr +

    +
    +

    Any thrown STL exceptions will then be gracefully handled instead of + causing a crash.

    +

    11.4.4 shared_ptr smart pointer

    +

    11.4.4.1 shared_ptr basics

    +

    Some target languages have support for handling the shared_ptr reference counted smart pointer. This smart pointer is available in the - standard C++11 library as std::shared_ptr. It was also in TR1 - as std::tr1::shared_ptr before it was fully standardized. - Support for the widely used boost::shared_ptr is also - available.

    -

    In order to use std::shared_ptr, the std_shared_ptr.i - library file should be included:

    -
    -
    + standard C++11 library as std::shared_ptr. It was also in TR1
    + as std::tr1::shared_ptr before it was fully standardized.
    + Support for the widely used boost::shared_ptr is also
    + available.

    +

    In order to use std::shared_ptr, the std_shared_ptr.i + library file should be included:

    +
    +
     %include <std_shared_ptr.i>
    -
    -
    -

    The pre-standard std::tr1::shared_ptr can be used by - including the following macro before including the std_shared_ptr.i - library file:

    -
    -
    +
    +
    +

    The pre-standard std::tr1::shared_ptr can be used by + including the following macro before including the std_shared_ptr.i + library file:

    +
    +
     #define SWIG_SHARED_PTR_SUBNAMESPACE tr1
     %include <std_shared_ptr.i>
    -
    -
    -

    In order to use boost::shared_ptr, the -boost_shared_ptr.i library file should be included:

    -
    -
    +
    +
    +

    In order to use boost::shared_ptr, the +boost_shared_ptr.i library file should be included:

    +
    +
     %include <boost_shared_ptr.i>
    -
    -
    -

    You can only use one of these variants of shared_ptr in your +

    +
    +

    You can only use one of these variants of shared_ptr in your interface file at a time. and all three variants must be used in - conjunction with the %shared_ptr(T) macro, where T is - the underlying pointer type equating to usage shared_ptr<T>. - The type T must be non-primitive. A simple example - demonstrates usage:

    -
    -
    + conjunction with the %shared_ptr(T) macro, where T is
    + the underlying pointer type equating to usage shared_ptr<T>.
    + The type T must be non-primitive. A simple example
    + demonstrates usage:

    +
    +
     %module example
     %include <boost_shared_ptr.i>
     %shared_ptr(IntValue)
    @@ -13294,45 +13962,47 @@ static int extractValueSmart(boost::shared_ptr<IntValue> t) {
       return t->value;
     }
     %}
    -
    -
    -

    Note that the %shared_ptr(IntValue) declaration occurs - after the inclusion of the boost_shared_ptr.i library which +

    +
    +

    Note that the %shared_ptr(IntValue) declaration occurs + after the inclusion of the boost_shared_ptr.i library which provides the macro and, very importantly, before any usage or - declaration of the type, IntValue. The %shared_ptr + declaration of the type, IntValue. The %shared_ptr macro provides, a few things for handling this smart pointer, but mostly a number of typemaps. These typemaps override the default typemaps so that the underlying proxy class is stored and passed around - as a pointer to a shared_ptr instead of a plain pointer to the + as a pointer to a shared_ptr instead of a plain pointer to the underlying type. This approach means that any instantiation of the type can be passed to methods taking the type by value, reference, pointer or as a smart pointer. The interested reader might want to look at the generated code, however, usage is simple and no different handling is required from the target language. For example, a simple use case of - the above code from Java would be:

    -
    -
    + the above code from Java would be:

    +
    +
     IntValue iv = new IntValue(1234);
     int val1 = example.extractValue(iv);
     int val2 = example.extractValueSmart(iv);
     System.out.println(val1 + " " + val2);
    -
    -
    -

    This shared_ptr library works quite differently to SWIG's normal, - but somewhat limited, smart pointer - handling. The shared_ptr library does not generate extra wrappers, +

    +
    +

    11.4.4.2 shared_ptr and + inheritance

    +

    The shared_ptr library works quite differently to SWIG's normal, but + somewhat limited, smart pointer + handling. The shared_ptr library does not generate extra wrappers, just for smart pointer handling, in addition to the proxy class. The normal proxy class including inheritance relationships is generated as - usual. The only real change introduced by the %shared_ptr + usual. The only real change introduced by the %shared_ptr macro is that the proxy class stores a pointer to the shared_ptr instance instead of a raw pointer to the instance. A proxy class - derived from a base which is being wrapped with shared_ptr can and - must be wrapped as a shared_ptr too. In other words all classes in - an inheritance hierarchy must all be used with the %shared_ptr + derived from a base which is being wrapped with shared_ptr can and + must be wrapped as a shared_ptr too. In other words all classes in + an inheritance hierarchy must all be used with the %shared_ptr macro. For example the following code can be used with the base class - shown earlier:

    -
    -
    + shown earlier:

    +
    +
     %shared_ptr(DerivedIntValue)
     %inline %{
     struct DerivedIntValue : IntValue {
    @@ -13340,24 +14010,24 @@ struct DerivedIntValue : IntValue {
       ...
     };
     %}
    -
    -
    -

    A shared_ptr of the derived class can now be passed to a method +

    +
    +

    A shared_ptr of the derived class can now be passed to a method where the base is expected in the target language, just as it can in - C++:

    -
    -
    + C++:

    +
    +
     DerivedIntValue div = new DerivedIntValue(5678);
     int val3 = example.extractValue(div);
     int val4 = example.extractValueSmart(div);
    -
    -
    -

    If the %shared_ptr macro is omitted for any class in the +

    +
    +

    If the %shared_ptr macro is omitted for any class in the inheritance hierarchy, SWIG will warn about this and the generated code may or may not result in a C++ compilation error. For example, the - following input:

    -
    -
    + following input:

    +
    +
     %include "boost_shared_ptr.i"
     %shared_ptr(Parent);
     
    @@ -13375,39 +14045,92 @@ int val4 = example.extractValueSmart(div);
         virtual ~Child() {}
       };
     %}
    -
    -
    -

    warns about the missing smart pointer information:

    -
    -
    +
    +
    +

    warns about the missing smart pointer information:

    +
    +
     example.i:12: Warning 520: Base class 'GrandParent' of 'Parent' is not similarly marked as a smart pointer.
     example.i:16: Warning 520: Derived class 'Child' of 'Parent' is not similarly marked as a smart pointer.
    -
    -
    -

    Adding the missing %shared_ptr macros will fix this:

    -
    -
    -%include "boost_shared_ptr.i"
    +
    +
    +

    Adding the missing %shared_ptr macros will fix this:

    +
    +
    +%include <boost_shared_ptr.i>
     %shared_ptr(GrandParent);
     %shared_ptr(Parent);
     %shared_ptr(Child);
     
     ... as before ...
    -
    -
    -

    Note: There is somewhat limited support for %shared_ptr - and the director feature and the degrees of success varies among the - different target languages. Please help to improve this support by - providing patches with improvements.

    -

    9.4.5 auto_ptr smart pointer

    -

    While std::auto_ptr is deprecated in C++11, some existing +

    +
    +

    11.4.4.3 shared_ptr and + method overloading

    +

    A C++ compiler can disambiguate a method overloaded by a shared_ptr + and one using the raw underlying type. For example, either one of these + methods can be called in C++:

    +
    +
    +int age(std::shared_ptr<GrandParent> num);
    +int age(GrandParent& num);
    +
    +
    +

    When wrapped by SWIG, disambiguation is not possible using the + overloaded names as there is just one equivalent type (GrandParent +) in the target language. SWIG will choose to wrap just the first method + by default. Ambiguity in overloading + discusses ways to control which method(s) gets wrapped using +%ignore or %rename. For the interested reader, SWIG + detects that they are equivalent types via the +typecheck typemaps in the shared_ptr library.

    +

    11.4.4.4 shared_ptr and + templates

    +

    The %shared_ptr macro should be used for all the required + instantiations of the template before each of the %template + instantiations. For example, consider number.h containing the + following illustrative template:

    +
    +
    +#include <memory>
    +
    +template<int N> struct Number {
    +  int num;
    +  Number() : num(N) {}
    +  static std::shared_ptr<Number<N>> make() { return std::make_shared<Number<N>>(); }
    +};
    +
    +
    +

    The SWIG code below shows the required ordering:

    +
    +
    +%include <std_shared_ptr.i>
    +
    +%shared_ptr(Number<10>);
    +%shared_ptr(Number<42>);
    +
    +%{
    +  #include "number.h"
    +%}
    +%include "number.h"
    +
    +%template(Number10) Number<10>;
    +%template(Number42) Number<42>;
    +
    +
    +

    11.4.4.5 shared_ptr and + directors

    +

    The languages that support shared_ptr also have support for using + shared_ptr with directors.

    +

    11.4.5 auto_ptr smart pointer

    +

    While std::auto_ptr is deprecated in C++11, some existing code may still be using it, so SWIG provides limited support for this - class: std_auto_ptr.i defines the typemaps which apply to the - functions returning objects of this type. Any other use of -std_auto_ptr.i is not directly supported.

    -

    A typical example of use would be

    -
    -
    + class: std_auto_ptr.i defines the typemaps which apply to the
    + functions returning objects of this type. Any other use of 
    +std_auto_ptr.i is not directly supported.

    +

    A typical example of use would be

    +
    +
     %include <std_auto_ptr.i>
     
     %auto_ptr(Klass)
    @@ -13426,29 +14149,29 @@ private:
       int m_value;
     };
     %}
    -
    -
    -

    The returned objects can be used naturally from the target language, - e.g. from C#:

    -
    -
    +
    +
    +

    The returned objects can be used naturally from the target language, + e.g. from C#:

    +
    +
     Klass k = Klass.Create(17);
     int value = k.getValue();
    -
    -
    -

    9.5 Utility Libraries

    -

    9.5.1 exception.i

    -

    The exception.i library provides a language-independent +

    +
    +

    11.5 Utility Libraries

    +

    11.5.1 exception.i

    +

    The exception.i library provides a language-independent function for raising a run-time exception in the target language. This library is largely used by the SWIG library writers. If possible, use the error handling scheme available to your target language as there is - greater flexibility in what errors/exceptions can be thrown.

    -

    SWIG_exception(int code, const char *message)

    -
    -

    Raises an exception in the target language. code is one of - the following symbolic constants:

    -
    -
    + greater flexibility in what errors/exceptions can be thrown.

    +

    SWIG_exception(int code, const char *message)

    +
    +

    Raises an exception in the target language. code is one of + the following symbolic constants:

    +
    +
     SWIG_MemoryError
     SWIG_IOError
     SWIG_RuntimeError
    @@ -13459,15 +14182,15 @@ SWIG_OverflowError
     SWIG_SyntaxError
     SWIG_ValueError
     SWIG_SystemError
    -
    -
    -

    message is a string indicating more information about the - problem.

    -
    -

    The primary use of this module is in writing language-independent - exception handlers. For example:

    -
    -
    +
    +
    +

    message is a string indicating more information about the + problem.

    +
    +

    The primary use of this module is in writing language-independent + exception handlers. For example:

    +
    +
     %include "exception.i"
     %exception std::vector::getitem {
       try {
    @@ -13476,62 +14199,62 @@ SWIG_SystemError
         SWIG_exception(SWIG_IndexError, const_cast<char*>(e.what()));
       }
     }
    -
    -

    -

    10 Argument Handling

    + +

    +

    12 Argument Handling

    - + -

    In Chapter 3, SWIG's treatment of basic datatypes and pointers was - described. In particular, primitive types such as int and -double are mapped to corresponding types in the target language. +

    In Chapter 5, SWIG's treatment of basic datatypes and pointers was + described. In particular, primitive types such as int and +double are mapped to corresponding types in the target language. For everything else, pointers are used to refer to structures, classes, arrays, and other user-defined datatypes. However, in certain applications it is desirable to change SWIG's handling of a specific datatype. For example, you might want to return multiple values through the arguments of a function. This chapter describes some of the - techniques for doing this.

    -

    10.1 The typemaps.i library

    -

    This section describes the typemaps.i library + techniques for doing this.

    +

    12.1 The typemaps.i library

    +

    This section describes the typemaps.i library file--commonly used to change certain properties of argument - conversion.

    -

    10.1.1 Introduction

    -

    Suppose you had a C function like this:

    -
    -
    + conversion.

    +

    12.1.1 Introduction

    +

    Suppose you had a C function like this:

    +
    +
     void add(double a, double b, double *result) {
       *result = a + b;
     }
    -
    -
    -

    From reading the source code, it is clear that the function is - storing a value in the double *result parameter. However, +

    +
    +

    From reading the source code, it is clear that the function is + storing a value in the double *result parameter. However, since SWIG does not examine function bodies, it has no way to know that - this is the underlying behavior.

    -

    One way to deal with this is to use the typemaps.i library - file and write interface code like this:

    -
    -
    + this is the underlying behavior.

    +

    One way to deal with this is to use the typemaps.i library + file and write interface code like this:

    +
    +
     // Simple example using typemaps
     %module example
     %include "typemaps.i"
    @@ -13540,34 +14263,34 @@ void add(double a, double b, double *result) {
     %inline %{
     extern void add(double a, double b, double *result);
     %}
    -
    -
    -

    The %apply directive tells SWIG that you are going to apply - a special type handling rule to a type. The "double *OUTPUT" +

    +
    +

    The %apply directive tells SWIG that you are going to apply + a special type handling rule to a type. The "double *OUTPUT" specification is the name of a rule that defines how to return an - output value from an argument of type double *. This rule gets - applied to all of the datatypes listed in curly braces-- in this case " -double *result".

    -

    When the resulting module is created, you can now use the function - like this (shown for Python):

    -
    -
    + output value from an argument of type double *. This rule gets
    + applied to all of the datatypes listed in curly braces-- in this case "
    +double *result".

    +

    When the resulting module is created, you can now use the function + like this (shown for Python):

    +
    +
     >>> a = add(3, 4)
     >>> print a
     7
     >>>
    -
    -
    -

    In this case, you can see how the output value normally returned in +

    +
    +

    In this case, you can see how the output value normally returned in the third argument has magically been transformed into a function return value. Clearly this makes the function much easier to use since - it is no longer necessary to manufacture a special double * - object and pass it to the function somehow.

    -

    Once a typemap has been applied to a type, it stays in effect for + it is no longer necessary to manufacture a special double * + object and pass it to the function somehow.

    +

    Once a typemap has been applied to a type, it stays in effect for all future occurrences of the type and name. For example, you could - write the following:

    -
    -
    + write the following:

    +
    +
     %module example
     %include "typemaps.i"
     
    @@ -13580,38 +14303,38 @@ extern void mul(double a, double b, double *result);
     extern void div(double a, double b, double *result);
     %}
     ...
    -
    -
    -

    In this case, the double *OUTPUT rule is applied to all of - the functions that follow.

    -

    Typemap transformations can even be extended to multiple return - values. For example, consider this code:

    -
    -
    +
    +
    +

    In this case, the double *OUTPUT rule is applied to all of + the functions that follow.

    +

    Typemap transformations can even be extended to multiple return + values. For example, consider this code:

    +
    +
     %include "typemaps.i"
     %apply int *OUTPUT { int *width, int *height };
     
     // Returns a pair (width, height)
     void getwinsize(int winid, int *width, int *height);
    -
    -
    -

    In this case, the function returns multiple values, allowing it to - be used like this:

    -
    -
    +
    +
    +

    In this case, the function returns multiple values, allowing it to + be used like this:

    +
    +
     >>> w, h = genwinsize(wid)
     >>> print w
     400
     >>> print h
     300
     >>>
    -
    -
    -

    It should also be noted that although the %apply directive +

    +
    +

    It should also be noted that although the %apply directive is used to associate typemap rules to datatypes, you can also use the - rule names directly in arguments. For example, you could write this:

    -
    -
    + rule names directly in arguments. For example, you could write this:

    +
    +
     // Simple example using typemaps
     %module example
     %include "typemaps.i"
    @@ -13620,21 +14343,21 @@ void getwinsize(int winid, int *width, int *height);
     extern void add(double a, double b, double *OUTPUT);
     %}
     extern void add(double a, double b, double *OUTPUT);
    -
    -
    -

    Typemaps stay in effect until they are explicitly deleted or - redefined to something else. To clear a typemap, the %clear - directive should be used. For example:

    -
    -
    +
    +
    +

    Typemaps stay in effect until they are explicitly deleted or + redefined to something else. To clear a typemap, the %clear + directive should be used. For example:

    +
    +
     %clear double *result;      // Remove all typemaps for double *result
    -
    -
    -

    10.1.2 Input parameters

    -

    The following typemaps instruct SWIG that a pointer really only - holds a single input value:

    -
    -
    +
    +
    +

    12.1.2 Input parameters

    +

    The following typemaps instruct SWIG that a pointer really only + holds a single input value:

    +
    +
     int *INPUT
     short *INPUT
     long *INPUT
    @@ -13643,20 +14366,20 @@ unsigned short *INPUT
     unsigned long *INPUT
     double *INPUT
     float *INPUT
    -
    -
    -

    When used, it allows values to be passed instead of pointers. For - example, consider this function:

    -
    -
    +
    +
    +

    When used, it allows values to be passed instead of pointers. For + example, consider this function:

    +
    +
     double add(double *a, double *b) {
       return *a+*b;
     }
    -
    -
    -

    Now, consider this SWIG interface:

    -
    -
    +
    +
    +

    Now, consider this SWIG interface:

    +
    +
     %module example
     %include "typemaps.i"
     ...
    @@ -13665,22 +14388,22 @@ extern double add(double *, double *);
     %}
     extern double add(double *INPUT, double *INPUT);
     
    -
    -
    -

    When the function is used in the scripting language interpreter, it - will work like this:

    -
    -
    +
    +
    +

    When the function is used in the scripting language interpreter, it + will work like this:

    +
    +
     result = add(3, 4)
    -
    -
    -

    10.1.3 Output parameters

    -

    The following typemap rules tell SWIG that pointer is the output +

    +
    +

    12.1.3 Output parameters

    +

    The following typemap rules tell SWIG that pointer is the output value of a function. When used, you do not need to supply the argument when calling the function. Instead, one or more output values are - returned.

    -
    -
    + returned.

    +
    +
     int *OUTPUT
     short *OUTPUT
     long *OUTPUT
    @@ -13690,20 +14413,20 @@ unsigned long *OUTPUT
     double *OUTPUT
     float *OUTPUT
     
    -
    -
    -

    These methods can be used as shown in an earlier example. For - example, if you have this C function :

    -
    -
    +
    +
    +

    These methods can be used as shown in an earlier example. For + example, if you have this C function :

    +
    +
     void add(double a, double b, double *c) {
       *c = a+b;
     }
    -
    -
    -

    A SWIG interface file might look like this :

    -
    -
    +
    +
    +

    A SWIG interface file might look like this :

    +
    +
     %module example
     %include "typemaps.i"
     ...
    @@ -13711,30 +14434,30 @@ void add(double a, double b, double *c) {
     extern void add(double a, double b, double *OUTPUT);
     %}
     
    -
    -
    -

    In this case, only a single output value is returned, but this is +

    +
    +

    In this case, only a single output value is returned, but this is not a restriction. An arbitrary number of output values can be returned by applying the output rules to more than one argument (as shown - previously).

    -

    If the function also returns a value, it is returned along with the - argument. For example, if you had this:

    -
    -
    + previously).

    +

    If the function also returns a value, it is returned along with the + argument. For example, if you had this:

    +
    +
     extern int foo(double a, double b, double *OUTPUT);
    -
    -
    -

    The function will return two values like this:

    -
    -
    +
    +
    +

    The function will return two values like this:

    +
    +
     iresult, dresult = foo(3.5, 2)
    -
    -
    -

    10.1.4 Input/Output parameters

    -

    When a pointer serves as both an input and output value you can use - the following typemaps :

    -
    -
    +
    +
    +

    12.1.4 Input/Output parameters

    +

    When a pointer serves as both an input and output value you can use + the following typemaps :

    +
    +
     int *INOUT
     short *INOUT
     long *INOUT
    @@ -13744,21 +14467,21 @@ unsigned long *INOUT
     double *INOUT
     float *INOUT
     
    -
    -
    -

    A C function that uses this might be something like this:

    -
    -
    +
    +
    +

    A C function that uses this might be something like this:

    +
    +
     void negate(double *x) {
       *x = -(*x);
     }
     
    -
    -
    -

    To make x function as both and input and output value, declare the - function like this in an interface file :

    -
    -
    +
    +
    +

    To make x function as both and input and output value, declare the + function like this in an interface file :

    +
    +
     %module example
     %include "typemaps.i"
     ...
    @@ -13767,30 +14490,30 @@ extern void negate(double *);
     %}
     extern void negate(double *INOUT);
     
    -
    -
    -

    Now within a script, you can simply call the function normally :

    -
    -
    +
    +
    +

    Now within a script, you can simply call the function normally :

    +
    +
     a = negate(3);         # a = -3 after calling this
    -
    -
    -

    One subtle point of the INOUT rule is that many scripting +

    +
    +

    One subtle point of the INOUT rule is that many scripting languages enforce mutability constraints on primitive objects (meaning that simple objects like integers and strings aren't supposed to change). Because of this, you can't just modify the object's value in place as the underlying C function does in this example. Therefore, the - INOUT rule returns the modified value as a new object rather - than directly overwriting the value of the original input object.

    -

    Compatibility note : The INOUT rule used to be known - as BOTH in earlier versions of SWIG. Backwards compatibility - is preserved, but deprecated.

    -

    10.1.5 Using different names

    -

    As previously shown, the %apply directive can be used to - apply the INPUT, OUTPUT, and INOUT typemaps - to different argument names. For example:

    -
    -
    + INOUT rule returns the modified value as a new object rather
    + than directly overwriting the value of the original input object.

    +

    Compatibility note : The INOUT rule used to be known + as BOTH in earlier versions of SWIG. Backwards compatibility + is preserved, but deprecated.

    +

    12.1.5 Using different names

    +

    As previously shown, the %apply directive can be used to + apply the INPUT, OUTPUT, and INOUT typemaps + to different argument names. For example:

    +
    +
     // Make double *result an output value
     %apply double *OUTPUT { double *result };
     
    @@ -13800,30 +14523,30 @@ a = negate(3);         # a = -3 after calling this
     // Make long *x inout
     %apply long *INOUT {long *x};
     
    -
    -
    -

    To clear a rule, the %clear directive is used:

    -
    -
    +
    +
    +

    To clear a rule, the %clear directive is used:

    +
    +
     %clear double *result;
     %clear Int32 *in, long *x;
    -
    -
    -

    Typemap declarations are lexically scoped so a typemap takes effect - from the point of definition to the end of the file or a matching -%clear declaration.

    -

    10.2 Applying constraints to input values -

    -

    In addition to changing the handling of various input values, it is +

    +
    +

    Typemap declarations are lexically scoped so a typemap takes effect + from the point of definition to the end of the file or a matching +%clear declaration.

    +

    12.2 Applying constraints to input values +

    +

    In addition to changing the handling of various input values, it is also possible to use typemaps to apply constraints. For example, maybe you want to insure that a value is positive, or that a pointer is - non-NULL. This can be accomplished including the constraints.i - library file.

    -

    10.2.1 Simple constraint example

    -

    The constraints library is best illustrated by the following - interface file :

    -
    -
    + non-NULL. This can be accomplished including the constraints.i
    + library file.

    +

    12.2.1 Simple constraint example

    +

    The constraints library is best illustrated by the following + interface file :

    +
    +
     // Interface file with constraints
     %module example
     %include "constraints.i"
    @@ -13834,16 +14557,16 @@ double sqrt(double NONNEGATIVE);     // Non-negative values only
     double inv(double NONZERO);          // Non-zero values
     void   free(void *NONNULL);          // Non-NULL pointers only
     
    -
    -
    -

    The behavior of this file is exactly as you would expect. If any of +

    +
    +

    The behavior of this file is exactly as you would expect. If any of the arguments violate the constraint condition, a scripting language exception will be raised. As a result, it is possible to catch bad - values, prevent mysterious program crashes and so on.

    -

    10.2.2 Constraint methods

    -

    The following constraints are currently available

    -
    -
    + values, prevent mysterious program crashes and so on.

    +

    12.2.2 Constraint methods

    +

    The following constraints are currently available

    +
    +
     POSITIVE                     Any number > 0 (not zero)
     NEGATIVE                     Any number < 0 (not zero)
     NONNEGATIVE                  Any number >= 0
    @@ -13851,185 +14574,190 @@ NONPOSITIVE                  Any number <= 0
     NONZERO                      Nonzero number
     NONNULL                      Non-NULL pointer (pointers only).
     
    -
    -
    -

    10.2.3 Applying constraints to new - datatypes

    -

    The constraints library only supports the primitive C datatypes, but - it is easy to apply it to new datatypes using %apply. For - example :

    -
    -
    +
    +
    +

    12.2.3 Applying constraints to new + datatypes

    +

    The constraints library only supports the primitive C datatypes, but + it is easy to apply it to new datatypes using %apply. For + example :

    +
    +
     // Apply a constraint to a Real variable
     %apply Number POSITIVE { Real in };
     
     // Apply a constraint to a pointer type
     %apply Pointer NONNULL { Vector * };
     
    -
    -
    -

    The special types of "Number" and "Pointer" can be applied to any +

    +
    +

    The special types of "Number" and "Pointer" can be applied to any numeric and pointer variable type respectively. To later remove a - constraint, the %clear directive can be used :

    -
    -
    + constraint, the %clear directive can be used :

    +
    +
     %clear Real in;
     %clear Vector *;
    -
    -

    -

    11 Typemaps

    +
    +

    +

    13 Typemaps

    -
    - -
    +
    + +
    -

    11.1 Introduction

    -

    Chances are, you are reading this chapter for one of two reasons; +

    13.1 Introduction

    +

    Chances are, you are reading this chapter for one of two reasons; you either want to customize SWIG's behavior or you overheard someone mumbling some incomprehensible drivel about "typemaps" and you asked yourself "typemaps, what are those?" That said, let's start with a short disclaimer that "typemaps" are an advanced customization feature that provide direct access to SWIG's low-level code generator. Not only that, they are an integral part of the SWIG C++ type system (a - non-trivial topic of its own). Typemaps are generally not a + non-trivial topic of its own). Typemaps are generally not a required part of using SWIG. Therefore, you might want to re-read the earlier chapters if you have found your way to this chapter with only a - vague idea of what SWIG already does by default.

    -

    11.1.1 Type conversion

    -

    One of the most important problems in wrapper code generation is the + vague idea of what SWIG already does by default.

    +

    13.1.1 Type conversion

    +

    One of the most important problems in wrapper code generation is the conversion or marshalling of datatypes between programming languages. Specifically, for every C/C++ declaration, SWIG must somehow generate wrapper code that allows values to be passed back and forth between languages. Since every programming language represents data differently, this is not a simple of matter of simply linking code together with the C linker. Instead, SWIG has to know something about - how data is represented in each language and how it can be manipulated.

    -

    To illustrate, suppose you had a simple C function like this:

    -
    -
    + how data is represented in each language and how it can be manipulated.

    +

    To illustrate, suppose you had a simple C function like this:

    +
    +
     int factorial(int n);
    -
    -
    -

    To access this function from Python, a pair of Python API functions - are used to convert integer values. For example:

    -
    -
    +
    +
    +

    To access this function from Python, a pair of Python API functions + are used to convert integer values. For example:

    +
    +
     long PyInt_AsLong(PyObject *obj);      /* Python --> C */
     PyObject *PyInt_FromLong(long x);      /* C --> Python */
    -
    -
    -

    The first function is used to convert the input argument from a - Python integer object to C long. The second function is used - to convert a value from C back into a Python integer object.

    -

    Inside the wrapper function, you might see these functions used like - this:

    -
    -
    +
    +
    +

    The first function is used to convert the input argument from a + Python integer object to C long. The second function is used + to convert a value from C back into a Python integer object.

    +

    Inside the wrapper function, you might see these functions used like + this:

    +
    +
     PyObject *wrap_factorial(PyObject *self, PyObject *args) {
       int       arg1;
       int       result;
    @@ -14037,39 +14765,39 @@ PyObject *wrap_factorial(PyObject *self, PyObject *args) {
       PyObject *resultobj;
     
       if (!PyArg_ParseTuple("O:factorial", &obj1)) return NULL;
    -  arg1 = PyInt_AsLong(obj1);
    +  arg1 = PyInt_AsLong(obj1);
       result = factorial(arg1);
    -  resultobj = PyInt_FromLong(result);
    +  resultobj = PyInt_FromLong(result);
       return resultobj;
     }
    -
    -
    -

    Every target language supported by SWIG has functions that work in a - similar manner. For example, in Perl, the following functions are used:

    -
    -
    +
    +
    +

    Every target language supported by SWIG has functions that work in a + similar manner. For example, in Perl, the following functions are used:

    +
    +
     IV SvIV(SV *sv);                     /* Perl --> C */
     void sv_setiv(SV *sv, IV val);       /* C --> Perl */
    -
    -
    -

    In Tcl:

    -
    -
    +
    +
    +

    In Tcl:

    +
    +
     int Tcl_GetLongFromObj(Tcl_Interp *interp, Tcl_Obj *obj, long *value);
     Tcl_Obj *Tcl_NewIntObj(long value);
    -
    -
    -

    The precise details are not so important. What is important is that +

    +
    +

    The precise details are not so important. What is important is that all of the underlying type conversion is handled by collections of utility functions and short bits of C code like this---you simply have to read the extension documentation for your favorite language to know - how it works (an exercise left to the reader).

    -

    11.1.2 Typemaps

    -

    Since type handling is so central to wrapper code generation, SWIG + how it works (an exercise left to the reader).

    +

    13.1.2 Typemaps

    +

    Since type handling is so central to wrapper code generation, SWIG allows it to be completely defined (or redefined) by the user. To do - this, a special %typemap directive is used. For example:

    -
    -
    + this, a special %typemap directive is used. For example:

    +
    +
     /* Convert from Python --> C */
     %typemap(in) int {
       $1 = PyInt_AsLong($input);
    @@ -14079,9 +14807,9 @@ Tcl_Obj *Tcl_NewIntObj(long value);
     %typemap(out) int {
       $result = PyInt_FromLong($1);
     }
    -
    -
    -

    At first glance, this code will look a little confusing. However, +

    +
    +

    At first glance, this code will look a little confusing. However, there is really not much to it. The first typemap (the "in" typemap) is used to convert a value from the target language to C. The second typemap (the "out" typemap) is used to convert in the other direction. @@ -14093,22 +14821,22 @@ Tcl_Obj *Tcl_NewIntObj(long value); generated into target language specific files. Within this code, a number of special variables prefixed with a $ are expanded. These are really just placeholders for C/C++ variables that are generated in the - course of creating the wrapper function. In this case, $input - refers to an input object that needs to be converted to C/C++ and -$result refers to an object that is going to be returned by a - wrapper function. $1 refers to a C/C++ variable that has the - same type as specified in the typemap declaration (an int in - this example).

    -

    A short example might make this a little more clear. If you were - wrapping a function like this:

    -
    -
    + course of creating the wrapper function. In this case, $input
    + refers to an input object that needs to be converted to C/C++ and 
    +$result refers to an object that is going to be returned by a
    + wrapper function. $1 refers to a C/C++ variable that has the
    + same type as specified in the typemap declaration (an int in
    + this example).

    +

    A short example might make this a little more clear. If you were + wrapping a function like this:

    +
    +
     int gcd(int x, int y);
    -
    -
    -

    A wrapper function would look approximately like this:

    -
    -
    +
    +
    +

    A wrapper function would look approximately like this:

    +
    +
     PyObject *wrap_gcd(PyObject *self, PyObject *args) {
       int arg1;
       int arg2;
    @@ -14119,61 +14847,61 @@ PyObject *wrap_gcd(PyObject *self, PyObject *args) {
     
       if (!PyArg_ParseTuple("OO:gcd", &obj1, &obj2)) return NULL;
     
    -  /* "in" typemap, argument 1 */
    +  /* "in" typemap, argument 1 */
       {
         arg1 = PyInt_AsLong(obj1);
       }
    -
    -  /* "in" typemap, argument 2 */
    +
    +  /* "in" typemap, argument 2 */
       {
         arg2 = PyInt_AsLong(obj2);
       }
    -
    +
       result = gcd(arg1, arg2);
     
    -  /* "out" typemap, return value */
    +  /* "out" typemap, return value */
       {
         resultobj = PyInt_FromLong(result);
       }
    -
    +
       return resultobj;
     }
    -
    -
    -

    In this code, you can see how the typemap code has been inserted +

    +
    +

    In this code, you can see how the typemap code has been inserted into the function. You can also see how the special $ variables have been expanded to match certain variable names inside the wrapper function. This is really the whole idea behind typemaps--they simply let you insert arbitrary code into different parts of the generated wrapper functions. Because arbitrary code can be inserted, it possible - to completely change the way in which values are converted.

    -

    11.1.3 Pattern matching

    -

    As the name implies, the purpose of a typemap is to "map" C + to completely change the way in which values are converted.

    +

    13.1.3 Pattern matching

    +

    As the name implies, the purpose of a typemap is to "map" C datatypes to types in the target language. Once a typemap is defined for a C datatype, it is applied to all future occurrences of that type - in the input file. For example:

    -
    -
    + in the input file. For example:

    +
    +
     /* Convert from Perl --> C */
    -%typemap(in) int {
    +%typemap(in) int {
       $1 = SvIV($input);
     }
     
     ...
    -int factorial(int n);
    -int gcd(int x, int y);
    -int count(char *s, char *t, int max);
    -
    -
    -

    The matching of typemaps to C datatypes is more than a simple +int factorial(int n); +int gcd(int x, int y); +int count(char *s, char *t, int max); +

    +
    +

    The matching of typemaps to C datatypes is more than a simple textual match. In fact, typemaps are fully built into the underlying - type system. Therefore, typemaps are unaffected by typedef, + type system. Therefore, typemaps are unaffected by typedef, namespaces, and other declarations that might hide the underlying type. - For example, you could have code like this:

    -
    -
    + For example, you could have code like this:

    +
    +
     /* Convert from Ruby--> C */
    -%typemap(in) int {
    +%typemap(in) int {
       $1 = NUM2INT($input);
     }
     ...
    @@ -14182,23 +14910,23 @@ namespace foo {
       typedef Integer Number;
     };
     
    -int foo(int x);
    -int bar(Integer y);
    -int spam(foo::Number a, foo::Number b);
    -
    -
    -

    In this case, the typemap is still applied to the proper arguments +int foo(int x); +int bar(Integer y); +int spam(foo::Number a, foo::Number b); +

    +
    +

    In this case, the typemap is still applied to the proper arguments even though typenames don't always match the text "int". This ability to track types is a critical part of SWIG--in fact, all of the target - language modules work merely define a set of typemaps for the basic + language modules work merely define a family of typemaps for the basic types. Yet, it is never necessary to write new typemaps for typenames - introduced by typedef.

    -

    In addition to tracking typenames, typemaps may also be specialized + introduced by typedef.

    +

    In addition to tracking typenames, typemaps may also be specialized to match against a specific argument name. For example, you could write - a typemap like this:

    -
    -
    -%typemap(in) double nonnegative {
    + a typemap like this:

    +
    +
    +%typemap(in) double nonnegative {
       $1 = PyFloat_AsDouble($input);
       if ($1 < 0) {
         PyErr_SetString(PyExc_ValueError, "argument must be nonnegative.");
    @@ -14209,42 +14937,43 @@ int spam(foo::Number a, foo::Number b);
     ...
     double sin(double x);
     double cos(double x);
    -double sqrt(double nonnegative);
    +double sqrt(double nonnegative);
     
     typedef double Real;
    -double log(Real nonnegative);
    +double log(Real nonnegative);
     ...
    -
    -
    -

    For certain tasks such as input argument conversion, typemaps can be - defined for sequences of consecutive arguments. For example:

    -
    -
    -%typemap(in) (char *str, int len) {
    +
    +
    +

    For certain tasks such as input argument conversion, typemaps can be + defined for sequences of consecutive arguments. For example:

    +
    +
    +%typemap(in) (char *str, int len) {
       $1 = PyString_AsString($input);   /* char *str */
       $2 = PyString_Size($input);       /* int len   */
     }
     ...
    -int count(char *str, int len, char c);
    -
    -
    -

    In this case, a single input object is expanded into a pair of C +int count(char *str, int len, char c); +

    +
    +

    In this case, a single input object is expanded into a pair of C arguments. This example also provides a hint to the unusual variable - naming scheme involving $1, $2, and so forth.

    -

    11.1.4 Reusing typemaps

    -

    Typemaps are normally defined for specific type and argument name + naming scheme involving $1, $2, and so forth.

    +

    13.1.4 Reusing typemaps

    +

    Typemaps are normally defined for specific type and argument name patterns. However, typemaps can also be copied and reused. One way to - do this is to use assignment like this:

    -
    -
    + do this is to use assignment like this:

    +
    +
     %typemap(in) Integer = int;   
     %typemap(in) (char *buffer, int size) = (char *str, int len);
    -
    -
    -

    A more general form of copying is found in the %apply - directive like this:

    -
    -
    +
    +
    +

    There is a more powerful way to copy a family of typemaps though. + Consider the following family of two typemap methods, "in" and "out" + for type int:

    +
    +
     %typemap(in) int {
       /* Convert an integer argument */
       ...
    @@ -14253,234 +14982,248 @@ int count(char *str, int len, char c);
       /* Return an integer value */
       ...
     }
    -
    -/* Apply all of the integer typemaps to size_t */
    +
    +
    +

    Each of the two typemap methods could be copied individually for + type size_t as follows:

    +
    +
    +/* Apply all of the int typemaps to size_t */
    +%typemap(in) size_t = int;   
    +%typemap(out) size_t = int;   
    +
    +
    +

    A more powerful form of copying is available from the %apply + directive. The code below is identical to the above:

    +
    +
    +/* Apply all of the int typemaps to size_t */
     %apply int { size_t };    
    -
    -
    -

    %apply merely takes all of the typemaps that are +

    +
    +

    %apply merely takes all of the typemaps that are defined for one type and applies them to other types. Note: you can - include a comma separated set of types in the { ... } part of -%apply.

    -

    It should be noted that it is not necessary to copy typemaps for - types that are related by typedef. For example, if you have - this,

    -
    -
    + include a comma separated set of types in the { ... } part of 
    +%apply.

    +

    It should be noted that it is not necessary to copy typemaps for + types that are related by typedef. For example, if you have + this,

    +
    +
     typedef int size_t;
    -
    -
    -

    then SWIG already knows that the int typemaps apply. You - don't have to do anything.

    -

    11.1.5 What can be done with typemaps?

    -

    The primary use of typemaps is for defining wrapper generation +

    +
    +

    then SWIG already knows that the int typemaps apply. You + don't have to do anything.

    +

    13.1.5 What can be done with typemaps?

    +

    The primary use of typemaps is for defining wrapper generation behavior at the level of individual C/C++ datatypes. There are - currently six general categories of problems that typemaps address:

    -

    Argument handling

    -
    -
    -int foo(int x, double y, char *s);
    -
    -
    -
      -
    • Input argument conversion ("in" typemap).
    • -
    • Input argument type checking for types used in overloaded methods - ("typecheck" typemap).
    • -
    • Output argument handling ("argout" typemap).
    • -
    • Input argument value checking ("check" typemap).
    • -
    • Input argument initialization ("arginit" typemap).
    • -
    • Default arguments ("default" typemap).
    • -
    • Input argument resource management ("freearg" typemap).
    • -
    -

    Return value handling

    -
    -
    -int foo(int x, double y, char *s);
    -
    -
    -
      -
    • Function return value conversion ("out" typemap).
    • -
    • Return value resource management ("ret" typemap).
    • -
    • Resource management for newly allocated objects ("newfree" typemap).
    • -
    -

    Exception handling

    -
    -
    -int foo(int x, double y, char *s) throw(MemoryError, IndexError);
    -
    -
    -
      -
    • Handling of C++ exception specifications. ("throw" typemap).
    • -
    -

    Global variables

    -
    -
    -int foo;
    -
    -
    -
      -
    • Assignment of a global variable. ("varin" typemap).
    • -
    • Reading a global variable. ("varout" typemap).
    • -
    -

    Member variables

    -
    -
    + currently six general categories of problems that typemaps address:

    +

    Argument handling

    +
    +
    +int foo(int x, double y, char *s);
    +
    +
    +
      +
    • Input argument conversion ("in" typemap).
    • +
    • Input argument type checking for types used in overloaded methods + ("typecheck" typemap).
    • +
    • Output argument handling ("argout" typemap).
    • +
    • Input argument value checking ("check" typemap).
    • +
    • Input argument initialization ("arginit" typemap).
    • +
    • Default arguments ("default" typemap).
    • +
    • Input argument resource management ("freearg" typemap).
    • +
    +

    Return value handling

    +
    +
    +int foo(int x, double y, char *s);
    +
    +
    +
      +
    • Function return value conversion ("out" typemap).
    • +
    • Return value resource management ("ret" typemap).
    • +
    • Resource management for newly allocated objects ("newfree" typemap).
    • +
    +

    Exception handling

    +
    +
    +int foo(int x, double y, char *s) throw(MemoryError, IndexError);
    +
    +
    +
      +
    • Handling of C++ exception specifications. ("throw" typemap).
    • +
    +

    Global variables

    +
    +
    +int foo;
    +
    +
    +
      +
    • Assignment of a global variable. ("varin" typemap).
    • +
    • Reading a global variable. ("varout" typemap).
    • +
    +

    Member variables

    +
    +
     struct Foo {
    -  int x[20];
    +  int x[20];
     };
    -
    -
    -
      -
    • Assignment of data to a class/structure member. ("memberin" - typemap).
    • -
    -

    Constant creation

    -
    -
    +
    +
    +
      +
    • Assignment of data to a class/structure member. ("memberin" + typemap).
    • +
    +

    Constant creation

    +
    +
     #define FOO 3
     %constant int BAR = 42;
     enum { ALE, LAGER, STOUT };
    -
    -
    -
      -
    • Creation of constant values. ("consttab" or "constcode" typemap).
    • -
    -

    Details of each of these typemaps will be covered shortly. Also, +

    +
    +
      +
    • Creation of constant values. ("consttab" or "constcode" typemap).
    • +
    +

    Details of each of these typemaps will be covered shortly. Also, certain language modules may define additional typemaps that expand upon this list. For example, the Java module defines a variety of typemaps for controlling additional aspects of the Java bindings. - Consult language specific documentation for further details.

    -

    11.1.6 What can't be done with typemaps?

    -

    Typemaps can't be used to define properties that apply to C/C++ + Consult language specific documentation for further details.

    +

    13.1.6 What can't be done with typemaps?

    +

    Typemaps can't be used to define properties that apply to C/C++ declarations as a whole. For example, suppose you had a declaration - like this,

    -
    -
    + like this,

    +
    +
     Foo *make_Foo(int n);
    -
    -
    -

    and you wanted to tell SWIG that make_Foo(int n) returned a +

    +
    +

    and you wanted to tell SWIG that make_Foo(int n) returned a newly allocated object (for the purposes of providing better memory - management). Clearly, this property of make_Foo(int n) is - not a property that would be associated with the datatype Foo - * by itself. Therefore, a completely different SWIG customization - mechanism (%feature) is used for this purpose. Consult the -Customization Features chapter for more information about that.

    -

    Typemaps also can't be used to rearrange or transform the order of - arguments. For example, if you had a function like this:

    -
    -
    + management). Clearly, this property of make_Foo(int n) is
    + not a property that would be associated with the datatype Foo
    + * by itself. Therefore, a completely different SWIG customization
    + mechanism (%feature) is used for this purpose. Consult the 
    +Customization Features chapter for more information about that.

    +

    Typemaps also can't be used to rearrange or transform the order of + arguments. For example, if you had a function like this:

    +
    +
     void foo(int, char *);
    -
    -
    -

    you can't use typemaps to interchange the arguments, allowing you to - call the function like this:

    -
    -
    +
    +
    +

    you can't use typemaps to interchange the arguments, allowing you to + call the function like this:

    +
    +
     foo("hello", 3)          # Reversed arguments
    -
    -
    -

    If you want to change the calling conventions of a function, write a - helper function instead. For example:

    -
    -
    +
    +
    +

    If you want to change the calling conventions of a function, write a + helper function instead. For example:

    +
    +
     %rename(foo) wrap_foo;
     %inline %{
     void wrap_foo(char *s, int x) {
       foo(x, s);
     }
     %}
    -
    -
    -

    11.1.7 Similarities to Aspect Oriented - Programming

    -

    SWIG has parallels to -Aspect Oriented Software Development (AOP). The -AOP terminology with respect to SWIG typemaps can be viewed as - follows:

    -
      -
    • Cross-cutting concerns: The cross-cutting concerns are the +
    +
    +

    13.1.7 Similarities to Aspect Oriented + Programming

    +

    SWIG has parallels to +Aspect Oriented Software Development (AOP). The +AOP terminology with respect to SWIG typemaps can be viewed as + follows:

    +
      +
    • Cross-cutting concerns: The cross-cutting concerns are the modularization of the functionality that the typemaps implement, which is primarily marshalling of types from/to the target language and - C/C++.
    • -
    • Advice: The typemap body contains code which is executed - whenever the marshalling is required.
    • -
    • Pointcut: The pointcuts are the positions in the wrapper - code that the typemap code is generated into.
    • -
    • Aspect: Aspects are the combination of the pointcut and the - advice, hence each typemap is an aspect.
    • -
    -

    SWIG can also be viewed as has having a second set of aspects based - around %feature. Features such as -%exception are also cross-cutting concerns as they encapsulate code - that can be used to add logging or exception handling to any function.

    -

    11.1.8 The rest of this chapter

    -

    The rest of this chapter provides detailed information for people + C/C++. +

  • Advice: The typemap body contains code which is executed + whenever the marshalling is required.
  • +
  • Pointcut: The pointcuts are the positions in the wrapper + code that the typemap code is generated into.
  • +
  • Aspect: Aspects are the combination of the pointcut and the + advice, hence each typemap is an aspect.
  • + +

    SWIG can also be viewed as has having a second set of aspects based + around %feature. Features such as +%exception are also cross-cutting concerns as they encapsulate code + that can be used to add logging or exception handling to any function.

    +

    13.1.8 The rest of this chapter

    +

    The rest of this chapter provides detailed information for people who want to write new typemaps. This information is of particular importance to anyone who intends to write a new SWIG target language module. Power users can also use this information to write application - specific type conversion rules.

    -

    Since typemaps are strongly tied to the underlying C++ type system, + specific type conversion rules.

    +

    Since typemaps are strongly tied to the underlying C++ type system, subsequent sections assume that you are reasonably familiar with the basic details of values, pointers, references, arrays, type qualifiers - (e.g., const), structures, namespaces, templates, and memory + (e.g., const), structures, namespaces, templates, and memory management in C/C++. If not, you would be well-advised to consult a copy of "The C Programming Language" by Kernighan and Ritchie or "The - C++ Programming Language" by Stroustrup before going any further.

    -

    11.2 Typemap specifications

    -

    This section describes the behavior of the %typemap - directive itself.

    -

    11.2.1 Defining a typemap

    -

    New typemaps are defined using the %typemap declaration. + C++ Programming Language" by Stroustrup before going any further.

    +

    13.2 Typemap specifications

    +

    This section describes the behavior of the %typemap + directive itself.

    +

    13.2.1 Defining a typemap

    +

    New typemaps are defined using the %typemap declaration. The general form of this declaration is as follows (parts enclosed in [ - ... ] are optional):

    -
    -
    -%typemap(method [, modifiers]) typelist code ;
    -
    -
    -

    method is a simply a name that specifies what kind of - typemap is being defined. It is usually a name like "in", -"out", or "argout". The purpose of these methods is - described later.

    -

    modifiers is an optional comma separated list of -name="value" values. These are sometimes to attach extra + ... ] are optional):

    +
    +
    +%typemap(method [, modifiers]) typelist code ;
    +
    +
    +

    method is a simply a name that specifies what kind of + typemap is being defined. It is usually a name like "in", +"out", or "argout". The purpose of these methods is + described later.

    +

    modifiers is an optional comma separated list of +name="value" values. These are sometimes to attach extra information to a typemap and is often target-language dependent. They - are also known as typemap attributes.

    -

    typelist is a list of the C++ type patterns that the - typemap will match. The general form of this list is as follows:

    -
    -
    + are also known as typemap attributes.

    +

    typelist is a list of the C++ type patterns that the + typemap will match. The general form of this list is as follows:

    +
    +
     typelist    :  typepattern [, typepattern, typepattern, ... ] ;
     
     typepattern :  type [ (parms) ]
                 |  type name [ (parms) ]
                 |  ( typelist ) [ (parms) ]
     
    -
    -
    -

    Each type pattern is either a simple type, a simple type and +

    +
    +

    Each type pattern is either a simple type, a simple type and argument name, or a list of types in the case of multi-argument typemaps. In addition, each type pattern can be parameterized with a list of temporary variables (parms). The purpose of these variables - will be explained shortly.

    -

    code specifies the code used in the typemap. Usually this is + will be explained shortly.

    +

    code specifies the code used in the typemap. Usually this is C/C++ code, but in the statically typed target languages, such as Java and C#, this can contain target language code for certain typemaps. It - can take any one of the following forms:

    -
    -
    + can take any one of the following forms:

    +
    +
     code       : { ... }
                | " ... "
                | %{ ... %}
    -
    -
    -

    Note that the preprocessor will expand code within the {} - delimiters, but not in the last two styles of delimiters, see -Preprocessor and Typemaps. Here are some examples of valid typemap - specifications:

    -
    -
    +
    +
    +

    Note that the preprocessor will expand code within the {} + delimiters, but not in the last two styles of delimiters, see +Preprocessor and Typemaps. Here are some examples of valid typemap + specifications:

    +
    +
     /* Simple typemap declarations */
     %typemap(in) int {
       $1 = PyInt_AsLong($input);
    @@ -14517,16 +15260,16 @@ Preprocessor and Typemaps. Here are some examples of valid typemap
     {
       $1 = &temp;
     }
    -
    -
    -

    Admittedly, it's not the most readable syntax at first glance. - However, the purpose of the individual pieces will become clear.

    -

    11.2.2 Typemap scope

    -

    Once defined, a typemap remains in effect for all of the +

    +
    +

    Admittedly, it's not the most readable syntax at first glance. + However, the purpose of the individual pieces will become clear.

    +

    13.2.2 Typemap scope

    +

    Once defined, a typemap remains in effect for all of the declarations that follow. A typemap may be redefined for different - sections of an input file. For example:

    -
    -
    + sections of an input file. For example:

    +
    +
     // typemap1
     %typemap(in) int {
     ...
    @@ -14541,16 +15284,16 @@ int gcd(int x, int y);            // typemap1
     }
     
     int isprime(int);                 // typemap2
    -
    -
    -

    One exception to the typemap scoping rules pertains to the -%extend declaration. %extend is used to attach new +

    +
    +

    One exception to the typemap scoping rules pertains to the +%extend declaration. %extend is used to attach new declarations to a class or structure definition. Because of this, all - of the declarations in an %extend block are subject to the + of the declarations in an %extend block are subject to the typemap rules that are in effect at the point where the class itself is - defined. For example:

    -
    -
    + defined. For example:

    +
    +
     class Foo {
       ...
     };
    @@ -14563,73 +15306,77 @@ class Foo {
       int blah(int x);    // typemap has no effect.  Declaration is attached to Foo which
                           // appears before the %typemap declaration.
     };
    -
    -
    -

    11.2.3 Copying a typemap

    -

    A typemap is copied by using assignment. For example:

    -
    -
    +
    +
    +

    13.2.3 Copying a typemap

    +

    A typemap is copied by using assignment. For example:

    +
    +
     %typemap(in) Integer = int;
    -
    -
    -

    or this:

    -
    -
    +
    +
    +

    or this:

    +
    +
     %typemap(in) Integer, Number, int32_t = int;
    -
    -
    -

    Types are often managed by a collection of different typemaps. For - example:

    -
    -
    +
    +
    +

    Types are often managed by a collection of different typemaps. For + example:

    +
    +
     %typemap(in)     int { ... }
     %typemap(out)    int { ... }
     %typemap(varin)  int { ... }
     %typemap(varout) int { ... }
    -
    -
    -

    To copy all of these typemaps to a new type, use %apply. - For example:

    -
    -
    +
    +
    +

    To copy all of these typemaps to a new type, use %apply. + For example:

    +
    +
     %apply int { Integer };            // Copy all int typemaps to Integer
     %apply int { Integer, Number };    // Copy all int typemaps to both Integer and Number
    -
    -
    -

    The patterns for %apply follow the same rules as for -%typemap. For example:

    -
    -
    +
    +
    +

    The patterns for %apply follow the same rules as for +%typemap. For example:

    +
    +
     %apply int *output { Integer *output };                    // Typemap with name
     %apply (char *buf, int len) { (char *buffer, int size) };  // Multiple arguments
    -
    -
    -

    11.2.4 Deleting a typemap

    -

    A typemap can be deleted by simply defining no code. For example:

    -
    -
    -%typemap(in) int;               // Clears typemap for int
    -%typemap(in) int, long, short;  // Clears typemap for int, long, short
    +
    +
    +

    13.2.4 Deleting a typemap

    +

    A particular typemap can be deleted / cleared by simply defining no + code. For example:

    +
    +
    +%typemap(in) int;                 // Clears the "in" typemap for int
    +%typemap(in) int, long, short;    // Clears the "in" typemap for int, long, short
     %typemap(in) int *output;       
    -
    -
    -

    The %clear directive clears all typemaps for a given type. - For example:

    -
    -
    -%clear int;                     // Removes all types for int
    +
    +
    +

    The above syntax deletes a typemap for just one typemap method - the + "in" method in each of the examples above. The %clear + directive is more powerful and will delete / clear a family of + typemaps, that is, all the typemap methods for a given type. For + example:

    +
    +
    +%clear int;                       // Delete all typemaps ("in", "out", "varin", ...) for int
     %clear int *output, long *output;
    -
    -
    -

    Note: Since SWIG's default behavior is defined by typemaps, - clearing a fundamental type like int will make that type - unusable unless you also define a new set of typemaps immediately after - the clear operation.

    -

    11.2.5 Placement of typemaps

    -

    Typemap declarations can be declared in the global scope, within a - C++ namespace, and within a C++ class. For example:

    -
    -
    +
    +
    +

    Note: Since SWIG's default behavior is defined by typemaps, + clearing a fundamental type like int will make that type + unusable unless you also define a new family of typemaps immediately + after the clear operation.

    +

    13.2.5 Placement of typemaps

    +

    Typemap declarations can be declared in the global scope, within a + C++ namespace, and within a C++ class. For example:

    +
    +
     %typemap(in) int {
       ...
     }
    @@ -14648,25 +15395,25 @@ public:
         ...
       }
     };
    -
    -
    -

    When a typemap appears inside a namespace or class, it stays in +

    +
    +

    When a typemap appears inside a namespace or class, it stays in effect until the end of the SWIG input (just like before). However, the - typemap takes the local scope into account. Therefore, this code

    -
    -
    + typemap takes the local scope into account. Therefore, this code

    +
    +
     namespace std {
       class string;
       %typemap(in) string {
         ...
       }
     }
    -
    -
    -

    is really defining a typemap for the type std::string. You - could have code like this:

    -
    -
    +
    +
    +

    is really defining a typemap for the type std::string. You + could have code like this:

    +
    +
     namespace std {
       class string;
       %typemap(in) string {          /* std::string */
    @@ -14680,68 +15427,68 @@ namespace Foo {
         ...
       }
     }
    -
    -
    -

    In this case, there are two completely distinct typemaps that apply - to two completely different types (std::string and -Foo::string).

    -

    It should be noted that for scoping to work, SWIG has to know that -string is a typename defined within a particular namespace. In this - example, this is done using the forward class declaration class - string.

    -

    11.3 Pattern matching rules

    -

    The section describes the pattern matching rules by which C/C++ +

    +
    +

    In this case, there are two completely distinct typemaps that apply + to two completely different types (std::string and +Foo::string).

    +

    It should be noted that for scoping to work, SWIG has to know that +string is a typename defined within a particular namespace. In this + example, this is done using the forward class declaration class + string.

    +

    13.3 Pattern matching rules

    +

    The section describes the pattern matching rules by which C/C++ datatypes are associated with typemaps. The matching rules can be - observed in practice by using the debugging options also described.

    -

    11.3.1 Basic matching rules

    -

    Typemaps are matched using both a type and a name (typically the - name of a argument). For a given TYPE NAME pair, the following + observed in practice by using the debugging options also described.

    +

    13.3.1 Basic matching rules

    +

    Typemaps are matched using both a type and a name (typically the + name of a argument). For a given TYPE NAME pair, the following rules are applied, in order, to find a match. The first typemap found - is used.

    -
      -
    • Typemaps that exactly match TYPE and NAME.
    • -
    • Typemaps that exactly match TYPE only.
    • -
    • If TYPE is a C++ template of type T< TPARMS >, - where TPARMS are the template parameters, the type is stripped + is used.

      +
        +
      • Typemaps that exactly match TYPE and NAME.
      • +
      • Typemaps that exactly match TYPE only.
      • +
      • If TYPE is a C++ template of type T< TPARMS >, + where TPARMS are the template parameters, the type is stripped of the template parameters and the following checks are then made: -
          -
        • Typemaps that exactly match T and NAME.
        • -
        • Typemaps that exactly match T only.
        • -
        -
      • -
      -

      If TYPE includes qualifiers (const, volatile, etc.), each +

        +
      • Typemaps that exactly match T and NAME.
      • +
      • Typemaps that exactly match T only.
      • +
      +
    • +
    +

    If TYPE includes qualifiers (const, volatile, etc.), each qualifier is stripped one at a time to form a new stripped type and the matching rules above are repeated on the stripped type. The left-most qualifier is stripped first, resulting in the right-most (or top-level) - qualifier being stripped last. For example int const*const is - first stripped to int *const then int *.

    -

    If TYPE is an array. The following transformation is made:

    -
      -
    • Replace all dimensions to [ANY] and look for a generic - array typemap.
    • -
    -

    To illustrate, suppose that you had a function like this:

    -
    -
    + qualifier being stripped last. For example int const*const is
    + first stripped to int *const then int *.

    +

    If TYPE is an array. The following transformation is made:

    +
      +
    • Replace all dimensions to [ANY] and look for a generic + array typemap.
    • +
    +

    To illustrate, suppose that you had a function like this:

    +
    +
     int foo(const char *s);
    -
    -
    -

    To find a typemap for the argument const char *s, SWIG will - search for the following typemaps:

    -
    -
    +
    +
    +

    To find a typemap for the argument const char *s, SWIG will + search for the following typemaps:

    +
    +
     const char *s           Exact type and name match
     const char *            Exact type match
     char *s                 Type and name match (qualifier stripped)
     char *                  Type match (qualifier stripped)
    -
    -
    -

    When more than one typemap rule might be defined, only the first +

    +
    +

    When more than one typemap rule might be defined, only the first match found is actually used. Here is an example that shows how some of - the basic rules are applied:

    -
    -
    + the basic rules are applied:

    +
    +
     %typemap(in) int *x {
       ... typemap 1
     }
    @@ -14768,48 +15515,48 @@ void C(const int *x);  // int *x rule       (typemap 1)
     void D(const int *z);  // const int *z rule (typemap 3)
     void E(int x[4]);      // int [4] rule      (typemap 4)
     void F(int x[1000]);   // int [ANY] rule    (typemap 5)
    -
    -
    -

    Compatibility note: SWIG-2.0.0 introduced stripping the +

    +
    +

    Compatibility note: SWIG-2.0.0 introduced stripping the qualifiers one step at a time. Prior versions stripped all qualifiers - in one step.

    -

    11.3.2 Typedef reductions - matching

    -

    If no match is found using the rules in the previous section, SWIG + in one step.

    +

    13.3.2 Typedef reductions + matching

    +

    If no match is found using the rules in the previous section, SWIG applies a typedef reduction to the type and repeats the typemap search - for the reduced type. To illustrate, suppose you had code like this:

    -
    -
    + for the reduced type. To illustrate, suppose you had code like this:

    +
    +
     %typemap(in) int {
       ... typemap 1
     }
     
     typedef int Integer;
     void blah(Integer x);
    -
    -
    -

    To find the typemap for Integer x, SWIG will first search - for the following typemaps:

    -
    -
    +
    +
    +

    To find the typemap for Integer x, SWIG will first search + for the following typemaps:

    +
    +
     Integer x
     Integer
    -
    -
    -

    Finding no match, it then applies a reduction Integer -> int - to the type and repeats the search.

    -
    -
    +
    +
    +

    Finding no match, it then applies a reduction Integer -> int + to the type and repeats the search.

    +
    +
     int x
     int      --> match: typemap 1
    -
    -
    -

    Even though two types might be the same via typedef, SWIG allows +

    +
    +

    Even though two types might be the same via typedef, SWIG allows typemaps to be defined for each typename independently. This allows for interesting customization possibilities based solely on the typename - itself. For example, you could write code like this:

    -
    -
    + itself. For example, you could write code like this:

    +
    +
     typedef double  pdouble;     // Positive double
     
     // typemap 1
    @@ -14822,24 +15569,24 @@ typedef double  pdouble;     // Positive double
     }
     double sin(double x);           // typemap 1
     pdouble sqrt(pdouble x);        // typemap 2
    -
    -
    -

    When reducing the type, only one typedef reduction is applied at a +

    +
    +

    When reducing the type, only one typedef reduction is applied at a time. The search process continues to apply reductions until a match is - found or until no more reductions can be made.

    -

    For complicated types, the reduction process can generate a long - list of patterns. Consider the following:

    -
    -
    + found or until no more reductions can be made.

    +

    For complicated types, the reduction process can generate a long + list of patterns. Consider the following:

    +
    +
     typedef int Integer;
     typedef Integer Row4[4];
     void foo(Row4 rows[10]);
    -
    -
    -

    To find a match for the Row4 rows[10] argument, SWIG would - check the following patterns, stopping only when it found a match:

    -
    -
    +
    +
    +

    To find a match for the Row4 rows[10] argument, SWIG would + check the following patterns, stopping only when it found a match:

    +
    +
     Row4 rows[10]
     Row4 [10]
     Row4 rows[ANY]
    @@ -14856,21 +15603,21 @@ int rows[10][4]
     int [10][4]
     int rows[ANY][ANY]
     int [ANY][ANY]
    -
    -
    -

    For parameterized types like templates, the situation is even more - complicated. Suppose you had some declarations like this:

    -
    -
    +
    +
    +

    For parameterized types like templates, the situation is even more + complicated. Suppose you had some declarations like this:

    +
    +
     typedef int Integer;
     typedef foo<Integer, Integer> fooii;
     void blah(fooii *x);
    -
    -
    -

    In this case, the following typemap patterns are searched for the - argument fooii *x:

    -
    -
    +
    +
    +

    In this case, the following typemap patterns are searched for the + argument fooii *x:

    +
    +
     fooii *x
     fooii *
     
    @@ -14885,25 +15632,25 @@ foo<int, Integer> *
     # Reduce Integer -> int
     foo<int, int> *x
     foo<int, int> *
    -
    -
    -

    Typemap reductions are always applied to the left-most type that +

    +
    +

    Typemap reductions are always applied to the left-most type that appears. Only when no reductions can be made to the left-most type are reductions made to other parts of the type. This behavior means that - you could define a typemap for foo<int, Integer>, but a - typemap for foo<Integer, int> would never be matched. + you could define a typemap for foo<int, Integer>, but a + typemap for foo<Integer, int> would never be matched. Admittedly, this is rather esoteric--there's little practical reason to write a typemap quite like that. Of course, you could rely on this to - confuse your coworkers even more.

    -

    As a point of clarification, it is worth emphasizing that typedef - matching is a typedef reduction process only, that is, SWIG does + confuse your coworkers even more.

    +

    As a point of clarification, it is worth emphasizing that typedef + matching is a typedef reduction process only, that is, SWIG does not search for every single possible typedef. Given a type in a declaration, it will only reduce the type, it won't build it up looking - for typedefs. For example, given the type Struct, the typemap - below will not be used for the aStruct parameter, because -Struct is fully reduced:

    -
    -
    + for typedefs. For example, given the type Struct, the typemap
    + below will not be used for the aStruct parameter, because 
    +Struct is fully reduced:

    +
    +
     struct Struct {...};
     typedef Struct StructTypedef;
     
    @@ -14912,28 +15659,28 @@ typedef Struct StructTypedef;
     }
     
     void go(Struct aStruct);
    -
    -
    -

    11.3.3 Default typemap matching rules

    -

    If the basic pattern matching rules result in no match being made, +

    +
    +

    13.3.3 Default typemap matching rules

    +

    If the basic pattern matching rules result in no match being made, even after typedef reductions, the default typemap matching rules are used to look for a suitable typemap match. These rules match a generic - typemap based on the reserved SWIGTYPE base type. For example - pointers will use SWIGTYPE * and references will use -SWIGTYPE &. More precisely, the rules are based on the C++ class + typemap based on the reserved SWIGTYPE base type. For example + pointers will use SWIGTYPE * and references will use +SWIGTYPE &. More precisely, the rules are based on the C++ class template partial specialization matching rules used by C++ compilers when looking for an appropriate partial template specialization. This means that a match is chosen from the most specialized set of generic - typemap types available. For example, when looking for a match to -int const *, the rules will prefer to match SWIGTYPE const * - if available before matching SWIGTYPE *, before matching -SWIGTYPE.

    -

    Most SWIG language modules use typemaps to define the default + typemap types available. For example, when looking for a match to +int const *, the rules will prefer to match SWIGTYPE const * + if available before matching SWIGTYPE *, before matching +SWIGTYPE.

    +

    Most SWIG language modules use typemaps to define the default behavior of the C primitive types. This is entirely straightforward. For example, a set of typemaps for primitives marshalled by value or - const reference are written like this:

    -
    -
    + const reference are written like this:

    +
    +
     %typemap(in) int           "... convert to int ...";
     %typemap(in) short         "... convert to short ...";
     %typemap(in) float         "... convert to float ...";
    @@ -14942,61 +15689,61 @@ SWIGTYPE.

    %typemap(in) const short & "... convert ..."; %typemap(in) const float & "... convert ..."; ... -
    -
    -

    Since typemap matching follows all typedef declarations, +

    +
    +

    Since typemap matching follows all typedef declarations, any sort of type that is mapped to a primitive type by value or const - reference through typedef will be picked up by one of these + reference through typedef will be picked up by one of these primitive typemaps. Most language modules also define typemaps for char pointers and char arrays to handle strings, so these non-default types will also be used in preference as the basic typemap matching rules - provide a better match than the default typemap matching rules.

    -

    Below is a list of the typical default types supplied by language - modules, showing what the "in" typemap would look like:

    -
    -
    + provide a better match than the default typemap matching rules.

    +

    Below is a list of the typical default types supplied by language + modules, showing what the "in" typemap would look like:

    +
    +
     %typemap(in) SWIGTYPE &            { ... default reference handling ...                       };
     %typemap(in) SWIGTYPE *            { ... default pointer handling ...                         };
     %typemap(in) SWIGTYPE *const       { ... default pointer const handling ...                   };
     %typemap(in) SWIGTYPE *const&      { ... default pointer const reference handling ...         };
    -%typemap(in) SWIGTYPE[ANY]         { ... 1D fixed size arrays handlling ...                   };
    +%typemap(in) SWIGTYPE[ANY]         { ... 1D fixed size arrays handling ...                    };
     %typemap(in) SWIGTYPE []           { ... unknown sized array handling ...                     };
     %typemap(in) enum SWIGTYPE         { ... default handling for enum values ...                 };
     %typemap(in) const enum SWIGTYPE & { ... default handling for const enum reference values ... };
     %typemap(in) SWIGTYPE (CLASS::*)   { ... default pointer member handling ...                  };
     %typemap(in) SWIGTYPE              { ... simple default handling ...                          };
    -
    -
    -

    If you wanted to change SWIG's default handling for simple pointers, - you would simply redefine the rule for SWIGTYPE *. Note, the +

    +
    +

    If you wanted to change SWIG's default handling for simple pointers, + you would simply redefine the rule for SWIGTYPE *. Note, the simple default typemap rule is used to match against simple types that - don't match any other rules:

    -
    -
    + don't match any other rules:

    +
    +
     %typemap(in) SWIGTYPE              { ... simple default handling ...                          } 
    -
    -
    -

    This typemap is important because it is the rule that gets triggered +

    +
    +

    This typemap is important because it is the rule that gets triggered when call or return by value is used. For instance, if you have a - declaration like this:

    -
    -
    + declaration like this:

    +
    +
     double dot_product(Vector a, Vector b);
    -
    -
    -

    The Vector type will usually just get matched against -SWIGTYPE. The default implementation of SWIGTYPE is to - convert the value into pointers (as described in - this earlier section).

    -

    By redefining SWIGTYPE it may be possible to implement - other behavior. For example, if you cleared all typemaps for -SWIGTYPE, SWIG simply won't wrap any unknown datatype (which might +

    +
    +

    The Vector type will usually just get matched against +SWIGTYPE. The default implementation of SWIGTYPE is to + convert the value into pointers (as described in + this earlier section).

    +

    By redefining SWIGTYPE it may be possible to implement + other behavior. For example, if you cleared all typemaps for +SWIGTYPE, SWIG simply won't wrap any unknown datatype (which might be useful for debugging). Alternatively, you might modify SWIGTYPE to - marshal objects into strings instead of converting them to pointers.

    -

    Let's consider an example where the following typemaps are defined - and SWIG is looking for the best match for the enum shown below:

    -
    -
    + marshal objects into strings instead of converting them to pointers.

    +

    Let's consider an example where the following typemaps are defined + and SWIG is looking for the best match for the enum shown below:

    +
    +
     %typemap(in) const Hello &          { ... }
     %typemap(in) const enum SWIGTYPE &  { ... }
     %typemap(in) enum SWIGTYPE &        { ... }
    @@ -15005,31 +15752,31 @@ SWIGTYPE, SWIG simply won't wrap any unknown datatype (which might
     
     enum Hello {};
     const Hello &hi;
    -
    -
    -

    The typemap at the top of the list will be chosen, not because it is +

    +
    +

    The typemap at the top of the list will be chosen, not because it is defined first, but because it is the closest match for the type being wrapped. If any of the typemaps in the above list were not defined, - then the next one on the list would have precedence.

    -

    The best way to explore the default typemaps is to look at the ones + then the next one on the list would have precedence.

    +

    The best way to explore the default typemaps is to look at the ones already defined for a particular language module. Typemap definitions - are usually found in the SWIG library in a file such as java.swg -, csharp.swg etc. However, for many of the target languages the + are usually found in the SWIG library in a file such as java.swg +, csharp.swg etc. However, for many of the target languages the typemaps are hidden behind complicated macros, so the best way to view the default typemaps, or any typemaps for that matter, is to look at - the preprocessed output by running swig -E on any interface + the preprocessed output by running swig -E on any interface file. Finally the best way to view the typemap matching rules in action - is via the debugging typemap - pattern matching options covered later on.

    -

    Compatibility note: The default typemap matching rules were + is via the debugging typemap + pattern matching options covered later on.

    +

    Compatibility note: The default typemap matching rules were modified in SWIG-2.0.0 from a slightly simpler scheme to match the - current C++ class template partial specialization matching rules.

    -

    11.3.4 - Multi-arguments typemaps

    -

    When multi-argument typemaps are specified, they take precedence - over any typemaps specified for a single type. For example:

    -
    -
    + current C++ class template partial specialization matching rules.

    +

    13.3.4 + Multi-arguments typemaps

    +

    When multi-argument typemaps are specified, they take precedence + over any typemaps specified for a single type. For example:

    +
    +
     %typemap(in) (char *buffer, int len) {
       // typemap 1
     }
    @@ -15040,135 +15787,135 @@ const Hello &hi;
     
     void foo(char *buffer, int len, int count); // (char *buffer, int len)
     void bar(char *buffer, int blah);           // char *buffer
    -
    -
    -

    Multi-argument typemaps are also more restrictive in the way that +

    +
    +

    Multi-argument typemaps are also more restrictive in the way that they are matched. Currently, the first argument follows the matching rules described in the previous section, but all subsequent arguments - must match exactly.

    -

    11.3.5 Matching - rules compared to C++ templates

    -

    For those intimately familiar with C++ templates, a comparison of + must match exactly.

    +

    13.3.5 Matching + rules compared to C++ templates

    +

    For those intimately familiar with C++ templates, a comparison of the typemap matching rules and template type deduction is interesting. The two areas considered are firstly the default typemaps and their similarities to partial template specialization and secondly, non-default typemaps and their similarities to full template - specialization.

    -

    For default (SWIGTYPE) typemaps the rules are inspired by C++ class + specialization.

    +

    For default (SWIGTYPE) typemaps the rules are inspired by C++ class template partial specialization. For example, given partial - specialization for T const& :

    -
    -
    + specialization for T const& :

    +
    +
     template <typename T> struct X             { void a(); };
     template <typename T> struct X< T const& > { void b(); };
    -
    -
    -

    The full (unspecialized) template is matched with most types, such - as:

    -
    -
    +
    +
    +

    The full (unspecialized) template is matched with most types, such + as:

    +
    +
     X< int & >            x1;  x1.a();
    -
    -
    -

    and the following all match the T const& partial - specialization:

    -
    -
    +
    +
    +

    and the following all match the T const& partial + specialization:

    +
    +
     X< int *const& >      x2;  x2.b();
     X< int const*const& > x3;  x3.b();
     X< int const& >       x4;  x4.b();
    -
    -
    -

    Now, given just these two default typemaps, where T is analogous to - SWIGTYPE:

    -
    -
    +
    +
    +

    Now, given just these two default typemaps, where T is analogous to + SWIGTYPE:

    +
    +
     %typemap(...) SWIGTYPE        { ... }
     %typemap(...) SWIGTYPE const& { ... }
    -
    -
    -

    The generic default typemap SWIGTYPE is used with most - types, such as

    -
    -
    +
    +
    +

    The generic default typemap SWIGTYPE is used with most + types, such as

    +
    +
     int &
    -
    -
    -

    and the following all match the SWIGTYPE const& typemap, - just like the partial template matching:

    -
    -
    +
    +
    +

    and the following all match the SWIGTYPE const& typemap, + just like the partial template matching:

    +
    +
     int *const&
     int const*const&
     int const&
    -
    -
    -

    Note that the template and typemap matching rules are not identical - for all default typemaps though, for example, with arrays.

    -

    For non-default typemaps, one might expect SWIG to follow the fully +

    +
    +

    Note that the template and typemap matching rules are not identical + for all default typemaps though, for example, with arrays.

    +

    For non-default typemaps, one might expect SWIG to follow the fully specialized template rules. This is nearly the case, but not quite. Consider a very similar example to the earlier partially specialized - template but this time there is a fully specialized template:

    -
    -
    + template but this time there is a fully specialized template:

    +
    +
     template <typename T> struct Y       { void a(); };
     template <> struct Y< int const & >  { void b(); };
    -
    -
    -

    Only the one type matches the specialized template exactly:

    -
    -
    +
    +
    +

    Only the one type matches the specialized template exactly:

    +
    +
     Y< int & >             y1;  y1.a();
     Y< int *const& >       y2;  y2.a();
     Y< int const *const& > y3;  y3.a();
     Y< int const& >        y4;  y4.b(); // fully specialized match
    -
    -
    -

    Given typemaps with the same types used for the template declared - above, where T is again analogous to SWIGTYPE:

    -
    -
    +
    +
    +

    Given typemaps with the same types used for the template declared + above, where T is again analogous to SWIGTYPE:

    +
    +
     %typemap(...) SWIGTYPE        { ... }
     %typemap(...) int const&      { ... }
    -
    -
    -

    The comparison between non-default typemaps and fully specialized +

    +
    +

    The comparison between non-default typemaps and fully specialized single parameter templates turns out to be the same, as just the one - type will match the non-default typemap:

    -
    -
    + type will match the non-default typemap:

    +
    +
     int &
     int *const&
     int const*const&
     int const&        // matches non-default typemap int const&
    -
    -
    -

    However, if a non-const type is used instead:

    -
    -
    +
    +
    +

    However, if a non-const type is used instead:

    +
    +
     %typemap(...) SWIGTYPE        { ... }
     %typemap(...) int &           { ... }
    -
    -
    -

    then there is a clear difference to template matching as both the - const and non-const types match the typemap:

    -
    -
    +
    +
    +

    then there is a clear difference to template matching as both the + const and non-const types match the typemap:

    +
    +
     int &             // matches non-default typemap int &
     int *const&
     int const*const&
     int const&        // matches non-default typemap int &
    -
    -
    -

    There are other subtle differences such as typedef handling, but at +

    +
    +

    There are other subtle differences such as typedef handling, but at least it should be clear that the typemap matching rules are similar to - those for specialized template handling.

    -

    11.3.6 Debugging typemap pattern - matching

    -

    There are two useful debug command line options available for - debugging typemaps, -debug-tmsearch and -debug-tmused -.

    -

    The -debug-tmsearch option is a verbose option for + those for specialized template handling.

    +

    13.3.6 Debugging typemap pattern + matching

    +

    There are two useful debug command line options available for + debugging typemaps, -debug-tmsearch and -debug-tmused +.

    +

    The -debug-tmsearch option is a verbose option for debugging typemap searches. This can be very useful for watching the pattern matching process in action and for debugging which typemaps are used. The option displays all the typemaps and types that are looked @@ -15176,20 +15923,20 @@ int const& // matches non-default typemap int & searches for each and every type needed for wrapping, the amount of information displayed can be large. Normally you would manually search through the displayed information for the particular type that you are - interested in.

    -

    For example, consider some of the code used in the -Typedef reductions section already covered:

    -
    -
    + interested in.

    +

    For example, consider some of the code used in the +Typedef reductions section already covered:

    +
    +
     typedef int Integer;
     typedef Integer Row4[4];
     void foo(Row4 rows[10]);
    -
    -
    -

    A sample of the debugging output is shown below for the "in" - typemap:

    -
    -
    +
    +
    +

    A sample of the debugging output is shown below for the "in" + typemap:

    +
    +
     swig -perl -debug-tmsearch example.i
     ...
     example.h:3: Searching for a suitable 'in' typemap for: Row4 rows[10]
    @@ -15217,24 +15964,24 @@ example.h:3: Searching for a suitable 'in' typemap for: Row4 rows[10]
       Looking for: SWIGTYPE []
       Using: %typemap(in) SWIGTYPE []
     ...
    -
    -
    -

    showing that the best default match supplied by SWIG is the -SWIGTYPE [] typemap. As the example shows, the successful match +

    +
    +

    showing that the best default match supplied by SWIG is the +SWIGTYPE [] typemap. As the example shows, the successful match displays the used typemap source including typemap method, type and - optional name in one of these simplified formats:

    -
      -
    • Using: %typemap(method) type name
    • -
    • Using: %typemap(method) type name = type2 name2
    • -
    • Using: %apply type2 name2 { type name }
    • -
    -

    This information might meet your debugging needs, however, you might - want to analyze further. If you next invoke SWIG with the -E + optional name in one of these simplified formats:

    +
      +
    • Using: %typemap(method) type name
    • +
    • Using: %typemap(method) type name = type2 name2
    • +
    • Using: %apply type2 name2 { type name }
    • +
    +

    This information might meet your debugging needs, however, you might + want to analyze further. If you next invoke SWIG with the -E option to display the preprocessed output, and search for the particular typemap used, you'll find the full typemap contents (example - shown below for Python):

    -
    -
    + shown below for Python):

    +
    +
     %typemap(in, noblock=1) SWIGTYPE [] (void *argp = 0, int res = 0) {
       res = SWIG_ConvertPtr($input, &argp, $descriptor, $disown |  0 );
       if (!SWIG_IsOK(res)) { 
    @@ -15243,15 +15990,15 @@ SWIGTYPE [] typemap. As the example shows, the successful match
       } 
       $1 = ($ltype)(argp);
     }
    -
    -
    -

    The generated code for the foo wrapper will then contain +

    +
    +

    The generated code for the foo wrapper will then contain the snippets of the typemap with the special variables expanded. The rest of this chapter will need reading though to fully understand all of this, however, the relevant parts of the generated code for the - above typemap can be seen below:

    -
    -
    + above typemap can be seen below:

    +
    +
     SWIGINTERN PyObject *_wrap_foo(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
     ...
       void *argp1 = 0 ;
    @@ -15265,42 +16012,42 @@ SWIGINTERN PyObject *_wrap_foo(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
       arg1 = (int (*)[4])(argp1);
     ...
     }
    -
    -
    -

    Searches for multi-argument typemaps are not mentioned unless a +

    +
    +

    Searches for multi-argument typemaps are not mentioned unless a matching multi-argument typemap does actually exist. For example, the - output for the code in the -earlier multi-arguments section is as follows:

    -
    -
    + output for the code in the 
    +earlier multi-arguments section is as follows:

    +
    +
     ...
     example.h:39: Searching for a suitable 'in' typemap for: char *buffer
       Looking for: char *buffer
       Multi-argument typemap found...
       Using: %typemap(in) (char *buffer, int len)
     ...
    -
    -
    -

    The second option for debugging is -debug-tmused and this +

    +
    +

    The second option for debugging is -debug-tmused and this displays the typemaps used. This option is a less verbose version of - the -debug-tmsearch option as it only displays each + the -debug-tmsearch option as it only displays each successfully found typemap on a separate single line. The output displays the type, and name if present, the typemap method in brackets and then the actual typemap used in the same simplified format output - by the -debug-tmsearch option. Below is the output for the - example code at the start of this section on debugging.

    -
    -
    + by the -debug-tmsearch option. Below is the output for the
    + example code at the start of this section on debugging.

    +
    +
     $ swig -perl -debug-tmused example.i
     example.h:3: Typemap for Row4 rows[10] (in) : %typemap(in) SWIGTYPE []
     example.h:3: Typemap for Row4 rows[10] (typecheck) : %typemap(typecheck) SWIGTYPE *
     example.h:3: Typemap for Row4 rows[10] (freearg) : %typemap(freearg) SWIGTYPE []
     example.h:3: Typemap for void foo (out) : %typemap(out) void
    -
    -
    -

    Now, consider the following interface file:

    -
    -
    +
    +
    +

    Now, consider the following interface file:

    +
    +
     %module example
     
     %{
    @@ -15324,11 +16071,11 @@ void set_value(const char* val) {}
     
     void set_value(const char* val);
     
    -
    -
    -

    and the output debug:

    -
    -
    +
    +
    +

    and the output debug:

    +
    +
     swig -perl5 -debug-tmused example.i
     example.i:21: Typemap for char const *val (arginit) : %typemap(arginit) char const *val
     example.i:21: Typemap for char const *val (in) : %apply SWIGTYPE * { char const *val }
    @@ -15336,38 +16083,38 @@ example.i:21: Typemap for char const *val (typecheck) : %apply SWIGTYPE * { char
     example.i:21: Typemap for char const *val (check) : %typemap(check) char const *val = char *NON_NULL
     example.i:21: Typemap for char const *val (freearg) : %apply SWIGTYPE * { char const *val }
     example.i:21: Typemap for void set_value (out) : %typemap(out) void
    -
    -
    -

    The following observations about what is displayed can be noted (the - same applies for -debug-tmsearch):

    -
      -
    • The relevant typemap is shown, but for typemap copying, the - appropriate %typemap or %apply is displayed, for - example, the "check" and "in" typemaps.
    • -
    • The typemap modifiers are not shown, eg the noblock=1 - modifier in the "arginit" typemap.
    • -
    • The exact %apply statement might look different to what is - in the actual code. For example, the const char* another_value +
    +
    +

    The following observations about what is displayed can be noted (the + same applies for -debug-tmsearch):

    +
      +
    • The relevant typemap is shown, but for typemap copying, the + appropriate %typemap or %apply is displayed, for + example, the "check" and "in" typemaps.
    • +
    • The typemap modifiers are not shown, eg the noblock=1 + modifier in the "arginit" typemap.
    • +
    • The exact %apply statement might look different to what is + in the actual code. For example, the const char* another_value is not shown as it is not relevant here. Also the types may be - displayed slightly differently - char const * and not -const char*.
    • -
    -

    11.4 Code generation rules

    -

    This section describes rules by which typemap code is inserted into - the generated wrapper code.

    -

    11.4.1 Scope

    -

    When a typemap is defined like this:

    -
    -
    + displayed slightly differently - char const * and not 
    +const char*.
    +
    +

    13.4 Code generation rules

    +

    This section describes rules by which typemap code is inserted into + the generated wrapper code.

    +

    13.4.1 Scope

    +

    When a typemap is defined like this:

    +
    +
     %typemap(in) int {
       $1 = PyInt_AsLong($input);
     }
    -
    -
    -

    the typemap code is inserted into the wrapper function using a new - block scope. In other words, the wrapper code will look like this:

    -
    -
    +
    +
    +

    the typemap code is inserted into the wrapper function using a new + block scope. In other words, the wrapper code will look like this:

    +
    +
     wrap_whatever() {
       ...
       // Typemap code
    @@ -15376,13 +16123,13 @@ wrap_whatever() {
       }
       ...
     }
    -
    -
    -

    Because the typemap code is enclosed in its own block, it is legal +

    +
    +

    Because the typemap code is enclosed in its own block, it is legal to declare temporary variables for use during typemap execution. For - example:

    -
    -
    + example:

    +
    +
     %typemap(in) short {
       long temp;          /* Temporary value */
       if (Tcl_GetLongFromObj(interp, $input, &temp) != TCL_OK) {
    @@ -15390,16 +16137,16 @@ wrap_whatever() {
       }
       $1 = (short) temp;
     }
    -
    -
    -

    Of course, any variables that you declare inside a typemap are +

    +
    +

    Of course, any variables that you declare inside a typemap are destroyed as soon as the typemap code has executed (they are not visible to other parts of the wrapper function or other typemaps that - might use the same variable names).

    -

    Occasionally, typemap code will be specified using a few alternative - forms. For example:

    -
    -
    + might use the same variable names).

    +

    Occasionally, typemap code will be specified using a few alternative + forms. For example:

    +
    +
     %typemap(in) int "$1 = PyInt_AsLong($input);";
     %typemap(in) int %{
     $1 = PyInt_AsLong($input);
    @@ -15407,51 +16154,51 @@ $1 = PyInt_AsLong($input);
     %typemap(in, noblock=1) int {
     $1 = PyInt_AsLong($input);
     }
    -
    -
    -

    These three forms are mainly used for cosmetics--the specified code +

    +
    +

    These three forms are mainly used for cosmetics--the specified code is not enclosed inside a block scope when it is emitted. This sometimes results in a less complicated looking wrapper function. Note that only the third of the three typemaps have the typemap code passed through - the SWIG preprocessor.

    -

    11.4.2 Declaring new local variables

    -

    Sometimes it is useful to declare a new local variable that exists + the SWIG preprocessor.

    +

    13.4.2 Declaring new local variables

    +

    Sometimes it is useful to declare a new local variable that exists within the scope of the entire wrapper function. A good example of this might be an application in which you wanted to marshal strings. Suppose - you had a C++ function like this

    -
    -
    + you had a C++ function like this

    +
    +
     int foo(std::string *s);
    -
    -
    -

    and you wanted to pass a native string in the target language as an +

    +
    +

    and you wanted to pass a native string in the target language as an argument. For instance, in Perl, you wanted the function to work like - this:

    -
    -
    + this:

    +
    +
     $x = foo("Hello World");
    -
    -
    -

    To do this, you can't just pass a raw Perl string as the -std::string * argument. Instead, you have to create a temporary -std::string object, copy the Perl string data into it, and then +

    +
    +

    To do this, you can't just pass a raw Perl string as the +std::string * argument. Instead, you have to create a temporary +std::string object, copy the Perl string data into it, and then pass a pointer to the object. To do this, simply specify the typemap - with an extra parameter like this:

    -
    -
    -%typemap(in) std::string * (std::string temp) {
    + with an extra parameter like this:

    +
    +
    +%typemap(in) std::string * (std::string temp) {
       unsigned int len;
       char        *s;
       s = SvPV($input, len);         /* Extract string data */
       temp.assign(s, len);           /* Assign to temp */
       $1 = &temp;                   /* Set argument to point to temp */
     }
    -
    -
    -

    In this case, temp becomes a local variable in the scope of - the entire wrapper function. For example:

    -
    -
    +
    +
    +

    In this case, temp becomes a local variable in the scope of + the entire wrapper function. For example:

    +
    +
     wrap_foo() {
       std::string temp;    <--- Declaration of temp goes here
       ...
    @@ -15464,23 +16211,23 @@ wrap_foo() {
       }
       ...
     }
    -
    -
    -

    When you set temp to a value, it persists for the duration - of the wrapper function and gets cleaned up automatically on exit.

    -

    It is perfectly safe to use more than one typemap involving local +

    +
    +

    When you set temp to a value, it persists for the duration + of the wrapper function and gets cleaned up automatically on exit.

    +

    It is perfectly safe to use more than one typemap involving local variables in the same declaration. For example, you could declare a - function as :

    -
    -
    + function as :

    +
    +
     void foo(std::string *x, std::string *y, std::string *z);
    -
    -
    -

    This is safely handled because SWIG actually renames all local +

    +
    +

    This is safely handled because SWIG actually renames all local variable references by appending an argument number suffix. Therefore, - the generated code would actually look like this:

    -
    -
    + the generated code would actually look like this:

    +
    +
     wrap_foo() {
       int *arg1;    /* Actual arguments */
       int *arg2;
    @@ -15512,30 +16259,30 @@ wrap_foo() {
       }
       ...
     }
    -
    -
    -

    There is an exception: if the variable name starts with the -_global_ prefix, the argument number is not appended. Such +

    +
    +

    There is an exception: if the variable name starts with the +_global_ prefix, the argument number is not appended. Such variables can be used throughout the generated wrapper function. For - example, the above typemap could be rewritten to use _global_temp - instead of temp and the generated code would then contain a - single _global_temp variable instead of temp1, -temp2 and temp3:

    -
    -
    -%typemap(in) std::string * (std::string _global_temp) {
    + example, the above typemap could be rewritten to use _global_temp
    + instead of temp and the generated code would then contain a
    + single _global_temp variable instead of temp1, 
    +temp2 and temp3:

    +
    +
    +%typemap(in) std::string * (std::string _global_temp) {
      ... as above ...
     }
    -
    -
    -

    Some typemaps do not recognize local variables (or they may simply +

    +
    +

    Some typemaps do not recognize local variables (or they may simply not apply). At this time, only typemaps that apply to argument - conversion support this (input typemaps such as the "in" typemap).

    -

    Note:

    -

    When declaring a typemap for multiple types, each type must have its - own local variable declaration.

    -
    -
    + conversion support this (input typemaps such as the "in" typemap).

    +

    Note:

    +

    When declaring a typemap for multiple types, each type must have its + own local variable declaration.

    +
    +
     %typemap(in) const std::string *, std::string * (std::string temp) // NO!
     // only std::string * has a local variable
     // const std::string * does not (oops)
    @@ -15543,88 +16290,88 @@ temp2 and temp3:

    %typemap(in) const std::string * (std::string temp), std::string * (std::string temp) // Correct .... -
    -
    -

    11.4.3 Special variables

    -

    Within all typemaps, the following special variables are expanded. +

    +
    +

    13.4.3 Special variables

    +

    Within all typemaps, the following special variables are expanded. This is by no means a complete list as some target languages have additional special variables which are documented in the language - specific chapters.

    -
    - - - - - - - - - - - - - - - - - - - - -
    VariableMeaning
    $n A C local variable corresponding to type - n in the typemap pattern.
    $argnumArgument number. Only available in typemaps - related to argument conversion
    $n_nameArgument name
    $n_typeReal C datatype of type n.
    $n_ltypeltype of type n
    $n_mangleMangled form of type n. For - example _p_Foo
    $n_descriptorType descriptor structure for - type n. For example SWIGTYPE_p_Foo. This is primarily - used when interacting with the run-time type checker (described later).
    $*n_typeReal C datatype of type n - with one pointer removed.
    $*n_ltypeltype of type n with one - pointer removed.
    $*n_mangleMangled form of type n with - one pointer removed.
    $*n_descriptorType descriptor structure for - type n with one pointer removed.
    $&n_typeReal C datatype of type n - with one pointer added.
    $&n_ltypeltype of type n with one - pointer added.
    $&n_mangleMangled form of type n with - one pointer added.
    $&n_descriptorType descriptor structure for - type n with one pointer added.
    $n_basetypeBase typename with all pointers and - qualifiers stripped.
    -
    -

    Within the table, $n refers to a specific type within the - typemap specification. For example, if you write this

    -
    -
    + specific chapters.

    +
    + + + + + + + + + + + + + + + + + + + + +
    VariableMeaning
    $n A C local variable corresponding to type + n in the typemap pattern.
    $argnumArgument number. Only available in typemaps + related to argument conversion
    $n_nameArgument name
    $n_typeReal C datatype of type n.
    $n_ltypeltype of type n
    $n_mangleMangled form of type n. For + example _p_Foo
    $n_descriptorType descriptor structure for + type n. For example SWIGTYPE_p_Foo. This is primarily + used when interacting with the run-time type checker (described later).
    $*n_typeReal C datatype of type n + with one pointer removed.
    $*n_ltypeltype of type n with one + pointer removed.
    $*n_mangleMangled form of type n with + one pointer removed.
    $*n_descriptorType descriptor structure for + type n with one pointer removed.
    $&n_typeReal C datatype of type n + with one pointer added.
    $&n_ltypeltype of type n with one + pointer added.
    $&n_mangleMangled form of type n with + one pointer added.
    $&n_descriptorType descriptor structure for + type n with one pointer added.
    $n_basetypeBase typename with all pointers and + qualifiers stripped.
    +
    +

    Within the table, $n refers to a specific type within the + typemap specification. For example, if you write this

    +
    +
     %typemap(in) int *INPUT {
     
     }
    -
    -
    -

    then $1 refers to int *INPUT. If you have a typemap like - this,

    -
    -
    +
    +
    +

    then $1 refers to int *INPUT. If you have a typemap like + this,

    +
    +
     %typemap(in) (int argc, char *argv[]) {
       ...
     }
    -
    -
    -

    then $1 refers to int argc and $2 refers to char - *argv[].

    -

    Substitutions related to types and names always fill in values from +

    +
    +

    then $1 refers to int argc and $2 refers to char + *argv[].

    +

    Substitutions related to types and names always fill in values from the actual code that was matched. This is useful when a typemap might - match multiple C datatype. For example:

    -
    -
    + match multiple C datatype. For example:

    +
    +
     %typemap(in)  int, short, long {
       $1 = ($1_ltype) PyInt_AsLong($input);
     }
    -
    -
    -

    In this case, $1_ltype is replaced with the datatype that - is actually matched.

    -

    When typemap code is emitted, the C/C++ datatype of the special - variables $1 and $2 is always an "ltype." An "ltype" +

    +
    +

    In this case, $1_ltype is replaced with the datatype that + is actually matched.

    +

    When typemap code is emitted, the C/C++ datatype of the special + variables $1 and $2 is always an "ltype." An "ltype" is simply a type that can legally appear on the left-hand side of a C - assignment operation. Here are a few examples of types and ltypes:

    -
    -
    + assignment operation. Here are a few examples of types and ltypes:

    +
    +
     type              ltype
     ------            ----------------
     int               int
    @@ -15632,109 +16379,109 @@ const int         int
     const int *       int *
     int [4]           int *
     int [4][5]        int (*)[5]
    -
    -
    -

    In most cases a ltype is simply the C datatype with qualifiers - stripped off. In addition, arrays are converted into pointers.

    -

    Variables such as $&1_type and $*1_type are used +

    +
    +

    In most cases a ltype is simply the C datatype with qualifiers + stripped off. In addition, arrays are converted into pointers.

    +

    Variables such as $&1_type and $*1_type are used to safely modify the type by removing or adding pointers. Although not needed in most typemaps, these substitutions are sometimes needed to properly work with typemaps that convert values between pointers and - values.

    -

    If necessary, type related substitutions can also be used when - declaring locals. For example:

    -
    -
    + values.

    +

    If necessary, type related substitutions can also be used when + declaring locals. For example:

    +
    +
     %typemap(in) int * ($*1_type temp) {
       temp = PyInt_AsLong($input);
       $1 = &temp;
     }
    -
    -
    -

    There is one word of caution about declaring local variables in this +

    +
    +

    There is one word of caution about declaring local variables in this manner. If you declare a local variable using a type substitution such - as $1_ltype temp, it won't work like you expect for arrays and - certain kinds of pointers. For example, if you wrote this,

    -
    -
    + as $1_ltype temp, it won't work like you expect for arrays and
    + certain kinds of pointers. For example, if you wrote this,

    +
    +
     %typemap(in) int [10][20] {
       $1_ltype temp;
     }
    -
    -
    -

    then the declaration of temp will be expanded as

    -
    -
    +
    +
    +

    then the declaration of temp will be expanded as

    +
    +
     int (*)[20] temp;
    -
    -
    -

    This is illegal C syntax and won't compile. There is currently no +

    +
    +

    This is illegal C syntax and won't compile. There is currently no straightforward way to work around this problem in SWIG due to the way that typemap code is expanded and processed. However, one possible - workaround is to simply pick an alternative type such as void * - and use casts to get the correct type when needed. For example:

    -
    -
    + workaround is to simply pick an alternative type such as void *
    + and use casts to get the correct type when needed. For example:

    +
    +
     %typemap(in) int [10][20] {
       void *temp;
       ...
       (($1_ltype) temp)[i][j] = x;    /* set a value */
       ...
     }
    -
    -
    -

    Another approach, which only works for arrays is to use the -$1_basetype substitution. For example:

    -
    -
    +
    +
    +

    Another approach, which only works for arrays is to use the +$1_basetype substitution. For example:

    +
    +
     %typemap(in) int [10][20] {
       $1_basetype temp[10][20];
       ...
       temp[i][j] = x;    /* set a value */
       ...
     }
    -
    -
    -

    11.4.4 Special variable - macros

    -

    Special variable macros are like macro functions in that they take +

    +
    +

    13.4.4 Special variable + macros

    +

    Special variable macros are like macro functions in that they take one or more input arguments which are used for the macro expansion. - They look like macro/function calls but use the special variable $ + They look like macro/function calls but use the special variable $ prefix to the macro name. Note that unlike normal macros, the expansion is not done by the preprocessor, it is done during the SWIG parsing/compilation stages. The following special variable macros are - available across all language modules.

    -

    11.4.4.1 - $descriptor(type)

    -

    This macro expands into the type descriptor structure for any C/C++ - type specified in type. It behaves like the $1_descriptor + available across all language modules.

    +

    13.4.4.1 + $descriptor(type)

    +

    This macro expands into the type descriptor structure for any C/C++ + type specified in type. It behaves like the $1_descriptor special variable described above except that the type to expand is taken from the macro argument rather than inferred from the typemap - type. For example, $descriptor(std::vector<int> *) will expand - into SWIGTYPE_p_std__vectorT_int_t. This macro is mostly used - in the scripting target languages and is demonstrated later in the -Run-time type checker usage section.

    -

    11.4.4.2 $typemap(method, - typepattern)

    -

    This macro uses the pattern - matching rules described earlier to lookup and then substitute the + type. For example, $descriptor(std::vector<int> *) will expand + into SWIGTYPE_p_std__vectorT_int_t. This macro is mostly used + in the scripting target languages and is demonstrated later in the +Run-time type checker usage section.

    +

    13.4.4.2 $typemap(method, + typepattern)

    +

    This macro uses the pattern + matching rules described earlier to lookup and then substitute the special variable macro with the code in the matched typemap. The - typemap to search for is specified by the arguments, where method - is the typemap method name and typepattern is a type pattern - as per the %typemap specification in the -Defining a typemap section.

    -

    The special variables within the matched typemap are expanded into + typemap to search for is specified by the arguments, where method + is the typemap method name and typepattern is a type pattern + as per the %typemap specification in the +Defining a typemap section.

    +

    The special variables within the matched typemap are expanded into those for the matched typemap type, not the typemap within which the macro is called. In practice, there is little use for this macro in the scripting target languages. It is mostly used in the target languages that are statically typed as a way to obtain the target language type given the C/C++ type and more commonly only when the C++ type is a - template parameter.

    -

    The example below is for C# only and uses some typemap method names + template parameter.

    +

    The example below is for C# only and uses some typemap method names documented in the C# chapter, but it shows some of the possible syntax - variations.

    -
    -
    + variations.

    +
    +
     %typemap(cstype) unsigned long    "uint"
     %typemap(cstype) unsigned long bb "bool"
     %typemap(cscode) BarClass %{
    @@ -15746,11 +16493,11 @@ Defining a typemap section.

    // do something } %} -
    -
    -

    The result is the following expansion

    -
    -
    +
    +
    +

    The result is the following expansion

    +
    +
     %typemap(cstype) unsigned long    "uint"
     %typemap(cstype) unsigned long bb "bool"
     %typemap(cscode) BarClass %{
    @@ -15762,194 +16509,194 @@ Defining a typemap section.

    // do something } %} -
    -
    -

    11.4.5 Special - variables and typemap attributes

    -

    As of SWIG-3.0.7 typemap attributes will also expand special - variables and special variable macros.

    -

    Example usage showing the expansion in the 'out' attribute (C# - specific) as well as the main typemap body:

    -
    -
    +
    +
    +

    13.4.5 Special + variables and typemap attributes

    +

    As of SWIG-3.0.7 typemap attributes will also expand special + variables and special variable macros.

    +

    Example usage showing the expansion in the 'out' attribute (C# + specific) as well as the main typemap body:

    +
    +
     %typemap(ctype, out="$*1_ltype") unsigned int& "$*1_ltype"
    -
    -
    -

    is equivalent to the following as $*1_ltype expands to -unsigned int:

    -
    -
    +
    +
    +

    is equivalent to the following as $*1_ltype expands to +unsigned int:

    +
    +
     %typemap(ctype, out="unsigned int") unsigned int& "unsigned int"
    -
    -
    -

    11.4.6 Special - variables combined with special variable macros

    -

    Special variables can also be used within special variable macros. +

    +
    +

    13.4.6 Special + variables combined with special variable macros

    +

    Special variables can also be used within special variable macros. The special variables are expanded before they are used in the special - variable macros.

    -

    Consider the following C# typemaps:

    -
    -
    + variable macros.

    +

    Consider the following C# typemaps:

    +
    +
     %typemap(cstype) unsigned int "uint"
     %typemap(cstype, out="$typemap(cstype, $*1_ltype)") unsigned int& "$typemap(cstype, $*1_ltype)"
    -
    -
    -

    Special variables are expanded first and hence the above is - equivalent to:

    -
    -
    +
    +
    +

    Special variables are expanded first and hence the above is + equivalent to:

    +
    +
     %typemap(cstype) unsigned int "uint"
     %typemap(cstype, out="$typemap(cstype, unsigned int)") unsigned int& "$typemap(cstype, unsigned int)"
    -
    -
    -

    which then expands to:

    -
    -
    +
    +
    +

    which then expands to:

    +
    +
     %typemap(cstype) unsigned int "uint"
     %typemap(cstype, out="uint") unsigned int& "uint"
    -
    -
    -

    11.5 Common typemap methods

    -

    The set of typemaps recognized by a language module may vary. - However, the following typemap methods are nearly universal:

    -

    11.5.1 "in" typemap

    -

    The "in" typemap is used to convert function arguments from the - target language to C. For example:

    -
    -
    +
    +
    +

    13.5 Common typemap methods

    +

    The family of typemaps recognized by a language module may vary. + However, the following typemap methods are nearly universal:

    +

    13.5.1 "in" typemap

    +

    The "in" typemap is used to convert function arguments from the + target language to C. For example:

    +
    +
     %typemap(in) int {
       $1 = PyInt_AsLong($input);
     }
    -
    -
    -

    The following special variables are available:

    -
    -
    +
    +
    +

    The following special variables are available:

    +
    +
     $input            - Input object holding value to be converted.
     $symname          - Name of function/method being wrapped
    -
    -
    -

    This is probably the most commonly redefined typemap because it can - be used to implement customized conversions.

    -

    In addition, the "in" typemap allows the number of converted - arguments to be specified. The numinputs attributes - facilitates this. For example:

    -
    -
    +
    +
    +

    This is probably the most commonly redefined typemap because it can + be used to implement customized conversions.

    +

    In addition, the "in" typemap allows the number of converted + arguments to be specified. The numinputs attributes + facilitates this. For example:

    +
    +
     // Ignored argument.
     %typemap(in, numinputs=0) int *out (int temp) {
       $1 = &temp;
     }
    -
    -
    -

    At this time, only zero or one arguments may be converted. When -numinputs is set to 0, the argument is effectively ignored and +

    +
    +

    At this time, only zero or one arguments may be converted. When +numinputs is set to 0, the argument is effectively ignored and cannot be supplied from the target language. The argument is still required when making the C/C++ call and the above typemap shows the - value used is instead obtained from a locally declared variable called -temp. Usually numinputs is not specified, whereupon the + value used is instead obtained from a locally declared variable called +temp. Usually numinputs is not specified, whereupon the default value is 1, that is, there is a one to one mapping of the number of arguments when used from the target language to the C/C++ - call. Multi-argument - typemaps provide a similar concept where the number of arguments + call. Multi-argument + typemaps provide a similar concept where the number of arguments mapped from the target language to C/C++ can be changed for multiple - adjacent C/C++ arguments.

    -

    Compatibility note: Specifying numinputs=0 is the - same as the old "ignore" typemap.

    -

    11.5.2 "typecheck" typemap

    -

    The "typecheck" typemap is used to support overloaded functions and + adjacent C/C++ arguments.

    +

    Compatibility note: Specifying numinputs=0 is the + same as the old "ignore" typemap.

    +

    13.5.2 "typecheck" typemap

    +

    The "typecheck" typemap is used to support overloaded functions and methods. It merely checks an argument to see whether or not it matches - a specific type. For example:

    -
    -
    + a specific type. For example:

    +
    +
     %typemap(typecheck, precedence=SWIG_TYPECHECK_INTEGER) int {
       $1 = PyInt_Check($input) ? 1 : 0;
     }
    -
    -
    -

    For typechecking, the $1 variable is always a simple integer that is +

    +
    +

    For typechecking, the $1 variable is always a simple integer that is set to 1 or 0 depending on whether or not the input argument is the correct type. Set to 1 if the input argument is the correct type - otherwise set to 0.

    -

    If you define new "in" typemaps and your program uses + otherwise set to 0.

    +

    If you define new "in" typemaps and your program uses overloaded methods, you should also define a collection of "typecheck" - typemaps. More details about this follow in the -Typemaps and overloading section.

    -

    11.5.3 "out" typemap

    -

    The "out" typemap is used to convert function/method return values - from C into the target language. For example:

    -
    -
    + typemaps. More details about this follow in the 
    +Typemaps and overloading section.

    +

    13.5.3 "out" typemap

    +

    The "out" typemap is used to convert function/method return values + from C into the target language. For example:

    +
    +
     %typemap(out) int {
       $result = PyInt_FromLong($1);
     }
    -
    -
    -

    The following special variables are available.

    -
    -
    +
    +
    +

    The following special variables are available.

    +
    +
     $result           - Result object returned to target language.
     $symname          - Name of function/method being wrapped
    -
    -
    -

    The "out" typemap supports an optional attribute flag called - "optimal". This is for code optimisation and is detailed in the -Optimal code generation when returning by value section.

    -

    11.5.4 "arginit" typemap

    -

    The "arginit" typemap is used to set the initial value of a function +

    +
    +

    The "out" typemap supports an optional attribute flag called + "optimal". This is for code optimisation and is detailed in the +Optimal code generation when returning by value section.

    +

    13.5.4 "arginit" typemap

    +

    The "arginit" typemap is used to set the initial value of a function argument--before any conversion has occurred. This is not normally necessary, but might be useful in highly specialized applications. For - example:

    -
    -
    + example:

    +
    +
     // Set argument to NULL before any conversion occurs
     %typemap(arginit) int *data {
       $1 = NULL;
     }
    -
    -
    -

    11.5.5 "default" typemap

    -

    The "default" typemap is used to turn an argument into a default - argument. For example:

    -
    -
    +
    +
    +

    13.5.5 "default" typemap

    +

    The "default" typemap is used to turn an argument into a default + argument. For example:

    +
    +
     %typemap(default) int flags {
       $1 = DEFAULT_FLAGS;
     }
     ...
     int foo(int x, int y, int flags);
    -
    -
    -

    The primary use of this typemap is to either change the wrapping of +

    +
    +

    The primary use of this typemap is to either change the wrapping of default arguments or specify a default argument in a language where they aren't supported (like C). Target languages that do not support optional arguments, such as Java and C#, effectively ignore the value - specified by this typemap as all arguments must be given.

    -

    Once a default typemap has been applied to an argument, all - arguments that follow must have default values. See the -Default/optional arguments section for further information on - default argument wrapping.

    -

    11.5.6 "check" typemap

    -

    The "check" typemap is used to supply value checking code during - argument conversion. The typemap is applied after arguments - have been converted. For example:

    -
    -
    + specified by this typemap as all arguments must be given.

    +

    Once a default typemap has been applied to an argument, all + arguments that follow must have default values. See the +Default/optional arguments section for further information on + default argument wrapping.

    +

    13.5.6 "check" typemap

    +

    The "check" typemap is used to supply value checking code during + argument conversion. The typemap is applied after arguments + have been converted. For example:

    +
    +
     %typemap(check) int positive {
       if ($1 <= 0) {
         SWIG_exception(SWIG_ValueError, "Expected positive value.");
       }
     }
    -
    -
    -

    11.5.7 "argout" typemap

    -

    The "argout" typemap is used to return values from arguments. This +

    +
    +

    13.5.7 "argout" typemap

    +

    The "argout" typemap is used to return values from arguments. This is most commonly used to write wrappers for C/C++ functions that need to return multiple values. The "argout" typemap is almost always combined with an "in" typemap---possibly to ignore the input value. For - example:

    -
    -
    + example:

    +
    +
     /* Set the input argument to point to a temporary variable */
     %typemap(in, numinputs=0) int *out (int temp) {
       $1 = &temp;
    @@ -15959,28 +16706,28 @@ Default/optional arguments section for further information on
       // Append output value $1 to $result
       ...
     }
    -
    -
    -

    The following special variables are available.

    -
    -
    +
    +
    +

    The following special variables are available.

    +
    +
     $result           - Result object returned to target language.
     $input            - The original input object passed.
     $symname          - Name of function/method being wrapped
    -
    -
    -

    The code supplied to the "argout" typemap is always placed after the +

    +
    +

    The code supplied to the "argout" typemap is always placed after the "out" typemap. If multiple return values are used, the extra return - values are often appended to return value of the function.

    -

    See the typemaps.i library file for examples.

    -

    11.5.8 "freearg" typemap

    -

    The "freearg" typemap is used to cleanup argument data. It is only + values are often appended to return value of the function.

    +

    See the typemaps.i library file for examples.

    +

    13.5.8 "freearg" typemap

    +

    The "freearg" typemap is used to cleanup argument data. It is only used when an argument might have allocated resources that need to be cleaned up when the wrapper function exits. The "freearg" typemap usually cleans up argument resources allocated by the "in" typemap. For - example:

    -
    -
    + example:

    +
    +
     // Get a list of integers
     %typemap(in) int *items {
       int nitems = Length($input);
    @@ -15990,19 +16737,19 @@ $symname          - Name of function/method being wrapped
     %typemap(freearg) int *items {
       free($1);
     }
    -
    -
    -

    The "freearg" typemap inserted at the end of the wrapper function, +

    +
    +

    The "freearg" typemap inserted at the end of the wrapper function, just before control is returned back to the target language. This code - is also placed into a special variable $cleanup that may be + is also placed into a special variable $cleanup that may be used in other typemaps whenever a wrapper function needs to abort - prematurely.

    -

    11.5.9 "newfree" typemap

    -

    The "newfree" typemap is used in conjunction with the %newobject + prematurely.

    +

    13.5.9 "newfree" typemap

    +

    The "newfree" typemap is used in conjunction with the %newobject directive and is used to deallocate memory used by the return result of - a function. For example:

    -
    -
    + a function. For example:

    +
    +
     %typemap(newfree) string * {
       delete $1;
     }
    @@ -16014,22 +16761,22 @@ $symname          - Name of function/method being wrapped
     %newobject foo;
     ...
     string *foo();
    -
    -
    -

    See Object ownership and - %newobject for further details.

    -

    11.5.10 "ret" typemap

    -

    The "ret" typemap is not used very often, but can be useful for +

    +
    +

    See Object ownership and + %newobject for further details.

    +

    13.5.10 "ret" typemap

    +

    The "ret" typemap is not used very often, but can be useful for anything associated with the return type, such as resource management, return value error checking, etc. Usually this can all be done in the "out" typemap, but sometimes it is handy to use the "out" typemap code untouched and add to the generated code using the code in the "ret" - typemap. One such case is memory clean up. For example, a -stringheap_t type is defined indicating that the returned memory - must be deleted and a string_t type is defined indicating that - the returned memory must not be deleted.

    -
    -
    + typemap. One such case is memory clean up. For example, a 
    +stringheap_t type is defined indicating that the returned memory
    + must be deleted and a string_t type is defined indicating that
    + the returned memory must not be deleted.

    +
    +
     %typemap(ret) stringheap_t %{
       free($1);
     %}
    @@ -16039,93 +16786,100 @@ typedef char * stringheap_t;
     
     string_t MakeString1();
     stringheap_t MakeString2();
    -
    -
    -

    The "ret" typemap above will only be used for MakeString2, - but both functions will use the default "out" typemap for char * +

    +
    +

    The "ret" typemap above will only be used for MakeString2, + but both functions will use the default "out" typemap for char * provided by SWIG. The code above would ensure the appropriate memory is freed in all target languages as the need to provide custom "out" typemaps (which involve target language specific code) is not - necessary.

    -

    This approach is an alternative to using the "newfree" typemap and -%newobject as there is no need to list all the functions that - require the memory cleanup, it is purely done on types.

    -

    11.5.11 "memberin" typemap

    -

    The "memberin" typemap is used to copy data from an already - converted input value into a structure member. It is typically - used to handle array members and other special cases. For example:

    -
    -
    + necessary.

    +

    This approach is an alternative to using the "newfree" typemap and +%newobject as there is no need to list all the functions that + require the memory cleanup, it is purely done on types.

    +

    13.5.11 "memberin" typemap

    +

    The "memberin" typemap is used to copy data from an already + converted input value into a structure member. It is typically + used to handle array members and other special cases. For example:

    +
    +
     %typemap(memberin) int [4] {
       memmove($1, $input, 4*sizeof(int));
     }
    -
    -
    -

    It is rarely necessary to write "memberin" typemaps---SWIG already +

    +
    +

    It is rarely necessary to write "memberin" typemaps---SWIG already provides a default implementation for arrays, strings, and other - objects.

    -

    11.5.12 "varin" typemap

    -

    The "varin" typemap is used to convert objects in the target + objects.

    +

    13.5.12 "varin" typemap

    +

    The "varin" typemap is used to convert objects in the target language to C for the purposes of assigning to a C/C++ global variable. - This is implementation specific.

    -

    11.5.13 "varout" typemap

    -

    The "varout" typemap is used to convert a C/C++ object to an object + This is implementation specific.

    +

    13.5.13 "varout" typemap

    +

    The "varout" typemap is used to convert a C/C++ object to an object in the target language when reading a C/C++ global variable. This is - implementation specific.

    -

    11.5.14 "throws" typemap

    -

    The "throws" typemap is only used when SWIG parses a C++ method with - an exception specification or has the %catches feature - attached to the method. It provides a default mechanism for handling - C++ methods that have declared the exceptions they will throw. The - purpose of this typemap is to convert a C++ exception into an error or - exception in the target language. It is slightly different to the other - typemaps as it is based around the exception type rather than the type - of a parameter or variable. For example:

    -
    -
    + implementation specific.

    +

    13.5.14 "throws" typemap

    +

    The "throws" typemap is only used when SWIG parses a C++ method with + an exception specification or has the %catches feature + attached to the method (see Exception + handling with %catches). It provides a default mechanism for + handling C++ methods that have declared the exceptions they will throw. + The purpose of this typemap is to convert a C++ exception into an error + or exception in the target language. It is slightly different to the + other typemaps as it is based around the exception type rather than the + type of a parameter or variable. For example:

    +
    +
     %typemap(throws) const char * %{
       PyErr_SetString(PyExc_RuntimeError, $1);
       SWIG_fail;
     %}
    -void bar() throw (const char *);
    -
    -
    -

    As can be seen from the generated code below, SWIG generates an - exception handler with the catch block comprising the "throws" typemap - content.

    -
    -
    +
    +// Either an exception specification on the method
    +  void bar() throw (const char *);
    +
    +// Or a %catches feature attached to the method
    +  %catches(const char *) bar();
    +  void bar();
    +
    +
    +

    As can be seen from the resulting generated code below, SWIG + generates an exception handler when wrapping the bar function + with the catch block comprising the "throws" typemap content.

    +
    +
     ...
     try {
       bar();
    -}
    -catch(char const *_e) {
    +} catch(char const *_e) {
       PyErr_SetString(PyExc_RuntimeError, _e);
       SWIG_fail;
     }
     ...
    -
    -
    -

    Note that if your methods do not have an exception specification yet - they do throw exceptions, SWIG cannot know how to deal with them. For a - neat way to handle these, see the -Exception handling with %exception section.

    -

    11.6 Some typemap examples

    -

    This section contains a few examples. Consult language module - documentation for more examples.

    -

    11.6.1 Typemaps for arrays

    -

    A common use of typemaps is to provide support for C arrays - appearing both as arguments to functions and as structure members.

    -

    For example, suppose you had a function like this:

    -
    -
    +
    +
    +

    Note that if your methods do not have an exception specification but + they do throw exceptions and you are not using %catches, SWIG + cannot know how to deal with them. Please also see the +Exception handling with %exception section for another way to handle + exceptions.

    +

    13.6 Some typemap examples

    +

    This section contains a few examples. Consult language module + documentation for more examples.

    +

    13.6.1 Typemaps for arrays

    +

    A common use of typemaps is to provide support for C arrays + appearing both as arguments to functions and as structure members.

    +

    For example, suppose you had a function like this:

    +
    +
     void set_vector(int type, float value[4]);
    -
    -
    -

    If you wanted to handle float value[4] as a list of floats, - you might write a typemap similar to this:

    -
    -
    +
    +
    +

    If you wanted to handle float value[4] as a list of floats, + you might write a typemap similar to this:

    +
    +
     
     %typemap(in) float value[4] (float temp[4]) {
       int i;
    @@ -16148,22 +16902,22 @@ void set_vector(int type, float value[4]);
       }
       $1 = temp;
     }
    -
    -
    -

    In this example, the variable temp allocates a small array +

    +
    +

    In this example, the variable temp allocates a small array on the C stack. The typemap then populates this array and passes it to - the underlying C function.

    -

    When used from Python, the typemap allows the following type of - function call:

    -
    -
    + the underlying C function.

    +

    When used from Python, the typemap allows the following type of + function call:

    +
    +
     >>> set_vector(type, [ 1, 2.5, 5, 20 ])
    -
    -
    -

    If you wanted to generalize the typemap to apply to arrays of all - dimensions you might write this:

    -
    -
    +
    +
    +

    If you wanted to generalize the typemap to apply to arrays of all + dimensions you might write this:

    +
    +
     %typemap(in) float value[ANY] (float temp[$1_dim0]) {
       int i;
       if (!PySequence_Check($input)) {
    @@ -16185,23 +16939,23 @@ void set_vector(int type, float value[4]);
       }
       $1 = temp;
     }
    -
    -
    -

    In this example, the special variable $1_dim0 is expanded +

    +
    +

    In this example, the special variable $1_dim0 is expanded with the actual array dimensions. Multidimensional arrays can be - matched in a similar manner. For example:

    -
    -
    + matched in a similar manner. For example:

    +
    +
     %typemap(in) float matrix[ANY][ANY] (float temp[$1_dim0][$1_dim1]) {
       ... convert a 2d array ...
     }
    -
    -
    -

    For large arrays, it may be impractical to allocate storage on the +

    +
    +

    For large arrays, it may be impractical to allocate storage on the stack using a temporary variable as shown. To work with heap allocated - data, the following technique can be used.

    -
    -
    + data, the following technique can be used.

    +
    +
     %typemap(in) float value[ANY] {
       int i;
       if (!PySequence_Check($input)) {
    @@ -16227,74 +16981,74 @@ void set_vector(int type, float value[4]);
     %typemap(freearg) float value[ANY] {
       if ($1) free($1);
     }
    -
    -
    -

    In this case, an array is allocated using malloc. The -freearg typemap is then used to release the argument after the - function has been called.

    -

    Another common use of array typemaps is to provide support for array +

    +
    +

    In this case, an array is allocated using malloc. The +freearg typemap is then used to release the argument after the + function has been called.

    +

    Another common use of array typemaps is to provide support for array structure members. Due to subtle differences between pointers and arrays in C, you can't just "assign" to a array structure member. Instead, you have to explicitly copy elements into the array. For - example, suppose you had a structure like this:

    -
    -
    + example, suppose you had a structure like this:

    +
    +
     struct SomeObject {
       float  value[4];
       ...
     };
    -
    -
    -

    When SWIG runs, it won't produce any code to set the vec - member. You may even get a warning message like this:

    -
    -
    +
    +
    +

    When SWIG runs, it won't produce any code to set the vec + member. You may even get a warning message like this:

    +
    +
     $ swig -python  example.i
     example.i:10: Warning 462: Unable to set variable of type float [4].
    -
    -
    -

    These warning messages indicate that SWIG does not know how you want - to set the vec field.

    -

    To fix this, you can supply a special "memberin" typemap like this:

    -
    -
    +
    +
    +

    These warning messages indicate that SWIG does not know how you want + to set the vec field.

    +

    To fix this, you can supply a special "memberin" typemap like this:

    +
    +
     %typemap(memberin) float [ANY] {
       int i;
       for (i = 0; i < $1_dim0; i++) {
           $1[i] = $input[i];
       }
     }
    -
    -
    -

    The memberin typemap is used to set a structure member from data +

    +
    +

    The memberin typemap is used to set a structure member from data that has already been converted from the target language to C. In this - case, $input is the local variable in which converted input - data is stored. This typemap then copies this data into the structure.

    -

    When combined with the earlier typemaps for arrays, the combination - of the "in" and "memberin" typemap allows the following usage:

    -
    -
    + case, $input is the local variable in which converted input
    + data is stored. This typemap then copies this data into the structure.

    +

    When combined with the earlier typemaps for arrays, the combination + of the "in" and "memberin" typemap allows the following usage:

    +
    +
     >>> s = SomeObject()
     >>> s.x = [1, 2.5, 5, 10]
    -
    -
    -

    Related to structure member input, it may be desirable to return +

    +
    +

    Related to structure member input, it may be desirable to return structure members as a new kind of object. For example, in this example, you will get very odd program behavior where the structure member can be set nicely, but reading the member simply returns a - pointer:

    -
    -
    + pointer:

    +
    +
     >>> s = SomeObject()
     >>> s.x = [1, 2.5, 5, 10]
     >>> print s.x
     _1008fea8_p_float
     >>> 
    -
    -
    -

    To fix this, you can write an "out" typemap. For example:

    -
    -
    +
    +
    +

    To fix this, you can write an "out" typemap. For example:

    +
    +
     %typemap(out) float [ANY] {
       int i;
       $result = PyList_New($1_dim0);
    @@ -16303,28 +17057,28 @@ _1008fea8_p_float
         PyList_SetItem($result, i, o);
       }
     }
    -
    -
    -

    Now, you will find that member access is quite nice:

    -
    -
    +
    +
    +

    Now, you will find that member access is quite nice:

    +
    +
     >>> s = SomeObject()
     >>> s.x = [1, 2.5, 5, 10]
     >>> print s.x
     [ 1, 2.5, 5, 10]
    -
    -
    -

    Compatibility Note: SWIG1.1 used to provide a special +

    +
    +

    Compatibility Note: SWIG1.1 used to provide a special "memberout" typemap. However, it was mostly useless and has since been - eliminated. To return structure members, simply use the "out" typemap.

    -

    11.6.2 Implementing constraints with - typemaps

    -

    One particularly interesting application of typemaps is the + eliminated. To return structure members, simply use the "out" typemap.

    +

    13.6.2 Implementing constraints with + typemaps

    +

    One particularly interesting application of typemaps is the implementation of argument constraints. This can be done with the "check" typemap. When used, this allows you to provide code for - checking the values of function arguments. For example:

    -
    -
    + checking the values of function arguments. For example:

    +
    +
     %module math
     
     %typemap(check) double posdouble {
    @@ -16336,15 +17090,15 @@ _1008fea8_p_float
     ...
     double sqrt(double posdouble);
     
    -
    -
    -

    This provides a sanity check to your wrapper function. If a negative +

    +
    +

    This provides a sanity check to your wrapper function. If a negative number is passed to this function, a Perl exception will be raised and - your program terminated with an error message.

    -

    This kind of checking can be particularly useful when working with - pointers. For example:

    -
    -
    + your program terminated with an error message.

    +

    This kind of checking can be particularly useful when working with + pointers. For example:

    +
    +
     %typemap(check) Vector * {
       if ($1 == 0) {
         PyErr_SetString(PyExc_TypeError, "NULL Pointer not allowed");
    @@ -16352,22 +17106,22 @@ double sqrt(double posdouble);
       }
     }
     
    -
    -
    -

    will prevent any function involving a Vector * from +

    +
    +

    will prevent any function involving a Vector * from accepting a NULL pointer. As a result, SWIG can often prevent a potential segmentation faults or other run-time problems by raising an exception rather than blindly passing values to the underlying C/C++ - program.

    -

    11.7 Typemaps for multiple target languages -

    -

    The code within typemaps is usually language dependent, however, + program.

    +

    13.7 Typemaps for multiple target languages +

    +

    The code within typemaps is usually language dependent, however, many target languages support the same typemaps. In order to distinguish typemaps across different languages, the preprocessor should be used. For example, the "in" typemap for Perl and Ruby could - be written as:

    -
    -
    + be written as:

    +
    +
     #if defined(SWIGPERL)
       %typemap(in) int "$1 = ($1_ltype) SvIV($input);"
     #elif defined(SWIGRUBY)
    @@ -16375,33 +17129,33 @@ double sqrt(double posdouble);
     #else
       #warning no "in" typemap defined
     #endif
    -
    -
    -

    The full set of language specific macros is defined in the -Conditional Compilation section. The example above also shows a +

    +
    +

    The full set of language specific macros is defined in the +Conditional Compilation section. The example above also shows a common approach of issuing a warning for an as yet unsupported - language.

    -

    Compatibility note: In SWIG-1.1 different languages could be - distinguished with the language name being put within the %typemap + language.

    +

    Compatibility note: In SWIG-1.1 different languages could be + distinguished with the language name being put within the %typemap directive, for example, -
    %typemap(ruby, in) int "$1 = NUM2INT($input);".

    -

    11.8 Optimal code generation when - returning by value

    -

    The "out" typemap is the main typemap for return types. This typemap +
    %typemap(ruby, in) int "$1 = NUM2INT($input);".

    +

    13.8 Optimal code generation when + returning by value

    +

    The "out" typemap is the main typemap for return types. This typemap supports an optional attribute flag called "optimal", which is for - reducing temporary variables and the amount of generated code, thereby - giving the compiler the opportunity to use return value optimization - for generating faster executing code. It only really makes a difference - when returning objects by value and has some limitations on usage, as - explained later on.

    -

    When a function returns an object by value, SWIG generates code that + reducing the number of temporary variables and the amount of generated + code, thereby giving the compiler the opportunity to use return + value optimization for generating faster executing code. It only + really makes a difference when returning objects by value and has some + limitations on usage, as explained later on.

    +

    When a function returns an object by value, SWIG generates code that instantiates the default type on the stack then assigns the value returned by the function call to it. A copy of this object is then made on the heap and this is what is ultimately stored and used from the target language. This will be clearer considering an example. Consider - running the following code through SWIG:

    -
    -
    + running the following code through SWIG:

    +
    +
     %typemap(out) SWIGTYPE %{
       $result = new $1_ltype((const $1_ltype &)$1);
     %}
    @@ -16421,13 +17175,13 @@ struct XX {
       }
     };
     %}
    -
    -
    -

    The "out" typemap shown is the default typemap for C# when returning - objects by value. When making a call to XX::create() from C#, - the output is as follows:

    -
    -
    +
    +
    +

    The "out" typemap shown is the default typemap for C# when returning + objects by value. When making a call to XX::create() from C#, + the output is as follows:

    +
    +
     XX()
     XX(0)
     operator=(const XX &)
    @@ -16435,34 +17189,34 @@ operator=(const XX &)
     XX(const XX &)
     ~XX()
     ~XX()
    -
    -
    -

    Note that three objects are being created as well as an assignment. - Wouldn't it be great if the XX::create() method was the only +

    +
    +

    Note that three objects are being created as well as an assignment. + Wouldn't it be great if the XX::create() method was the only time a constructor was called? As the method returns by value, this is asking a lot and the code that SWIG generates by default makes it - impossible for the compiler to use return value optimisation (RVO) + impossible for the compiler to use return value optimisation (RVO) . However, this is where the "optimal" attribute in the "out" typemap can help out. If the typemap code is kept the same and just the - "optimal" attribute specified like this:

    -
    -
    + "optimal" attribute specified like this:

    +
    +
     %typemap(out, optimal="1") SWIGTYPE %{
       $result = new $1_ltype((const $1_ltype &)$1);
     %}
    -
    -
    -

    then when the code is run again, the output is simply:

    -
    -
    +
    +
    +

    then when the code is run again, the output is simply:

    +
    +
     XX(0)
     ~XX()
    -
    -
    -

    How the "optimal" attribute works is best explained using the - generated code. Without "optimal", the generated code is:

    -
    -
    +
    +
    +

    How the "optimal" attribute works is best explained using the + generated code. Without "optimal", the generated code is:

    +
    +
     SWIGEXPORT void * SWIGSTDCALL CSharp_XX_create() {
       void * jresult ;
       XX result;
    @@ -16471,36 +17225,36 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_XX_create() {
       return jresult;
     }
     
    -
    -
    -

    With the "optimal" attribute, the code is:

    -
    -
    +
    +
    +

    With the "optimal" attribute, the code is:

    +
    +
     SWIGEXPORT void * SWIGSTDCALL CSharp_XX_create() {
       void * jresult ;
       jresult = new XX((const XX &)XX::create());
       return jresult;
     }
    -
    -
    -

    The major difference is the result temporary variable - holding the value returned from XX::create() is no longer +

    +
    +

    The major difference is the result temporary variable + holding the value returned from XX::create() is no longer generated and instead the copy constructor call is made directly from - the value returned by XX::create(). With modern compilers + the value returned by XX::create(). With modern compilers implementing RVO, the copy is not actually done, in fact the object is - never created on the stack in XX::create() at all, it is - simply created directly on the heap. In the first instance, the $1 - special variable in the typemap is expanded into result. In - the second instance, $1 is expanded into XX::create() + never created on the stack in XX::create() at all, it is + simply created directly on the heap. In the first instance, the $1 + special variable in the typemap is expanded into result. In + the second instance, $1 is expanded into XX::create() and this is essentially what the "optimal" attribute is telling SWIG to - do.

    -

    The "optimal" attribute optimisation is not turned on by default as + do.

    +

    The "optimal" attribute optimisation is not turned on by default as it has a number of restrictions. Firstly, some code cannot be condensed into a simple call for passing into the copy constructor. One common - occurrence is when %exception is - used. Consider adding the following %exception to the example:

    -
    -
    + occurrence is when %exception is
    + used. Consider adding the following %exception to the example:

    +
    +
     %exception XX::create() %{
     try {
       $action
    @@ -16508,12 +17262,12 @@ try {
       cout << e.what() << endl;
     }
     %}
    -
    -
    -

    SWIG can detect when the "optimal" attribute cannot be used and will - ignore it and in this case will issue the following warning:

    -
    -
    +
    +
    +

    SWIG can detect when the "optimal" attribute cannot be used and will + ignore it and in this case will issue the following warning:

    +
    +
     example.i:28: Warning 474: Method XX::create() usage of the optimal attribute ignored
     example.i:14: Warning 474: in the out typemap as the following cannot be used to generate
     optimal code: 
    @@ -16522,54 +17276,54 @@ try {
     } catch(const std::exception &e) {
       cout << e.what() << endl;
     }
    -
    -
    -

    It should be clear that the above code cannot be used as the - argument to the copy constructor call, that is, for the $1 - substitution.

    -

    Secondly, if the typemaps uses $1 more than once, then +

    +
    +

    It should be clear that the above code cannot be used as the + argument to the copy constructor call, that is, for the $1 + substitution.

    +

    Secondly, if the typemaps uses $1 more than once, then multiple calls to the wrapped function will be made. Obviously that is not very optimal. In fact SWIG attempts to detect this and will issue a - warning something like:

    -
    -
    + warning something like:

    +
    +
     example.i:21: Warning 475: Multiple calls to XX::create() might be generated due to
     example.i:7: Warning 475: optimal attribute usage in the out typemap.
    -
    -
    -

    However, it doesn't always get it right, for example when $1 - is within some commented out code.

    -

    11.9 Multi-argument - typemaps

    -

    So far, the typemaps presented have focused on the problem of +

    +
    +

    However, it doesn't always get it right, for example when $1 + is within some commented out code.

    +

    13.9 Multi-argument + typemaps

    +

    So far, the typemaps presented have focused on the problem of dealing with single values. For example, converting a single input object to a single argument in a function call. However, certain conversion problems are difficult to handle in this manner. As an - example, consider the example at the very beginning of this chapter:

    -
    -
    + example, consider the example at the very beginning of this chapter:

    +
    +
     int foo(int argc, char *argv[]);
    -
    -
    -

    Suppose that you wanted to wrap this function so that it accepted a - single list of strings like this:

    -
    -
    +
    +
    +

    Suppose that you wanted to wrap this function so that it accepted a + single list of strings like this:

    +
    +
     >>> foo(["ale", "lager", "stout"])
    -
    -
    -

    To do this, you not only need to map a list of strings to char - *argv[], but the value of int argc is implicitly +

    +
    +

    To do this, you not only need to map a list of strings to char + *argv[], but the value of int argc is implicitly determined by the length of the list. Using only simple typemaps, this type of conversion is possible, but extremely painful. Multi-argument - typemaps help in this situation.

    -

    A multi-argument typemap is a conversion rule that specifies how to - convert a single object in the target language to a set of + typemaps help in this situation.

    +

    A multi-argument typemap is a conversion rule that specifies how to + convert a single object in the target language to a set of consecutive function arguments in C/C++. For example, the following multi-argument maps perform the conversion described for the above - example:

    -
    -
    + example:

    +
    +
     %typemap(in) (int argc, char *argv[]) {
       int i;
       if (!PyList_Check($input)) {
    @@ -16598,24 +17352,24 @@ int foo(int argc, char *argv[]);
     %typecheck(SWIG_TYPECHECK_STRING_ARRAY) (int argc, char *argv[]) {
       $1 = PyList_Check($input) ? 1 : 0;
     }
    -
    -
    -

    A multi-argument map is always specified by surrounding the - arguments with parentheses as shown. For example:

    -
    -
    +
    +
    +

    A multi-argument map is always specified by surrounding the + arguments with parentheses as shown. For example:

    +
    +
     %typemap(in) (int argc, char *argv[]) { ... }
    -
    -
    -

    Within the typemap code, the variables $1, $2, and +

    +
    +

    Within the typemap code, the variables $1, $2, and so forth refer to each type in the map. All of the usual substitutions - apply--just use the appropriate $1 or $2 prefix on - the variable name (e.g., $2_type, $1_ltype, etc.)

    -

    Multi-argument typemaps always have precedence over simple typemaps + apply--just use the appropriate $1 or $2 prefix on + the variable name (e.g., $2_type, $1_ltype, etc.)

    +

    Multi-argument typemaps always have precedence over simple typemaps and SWIG always performs longest-match searching. Therefore, you will - get the following behavior:

    -
    -
    + get the following behavior:

    +
    +
     %typemap(in) int argc                              { ... typemap 1 ... }
     %typemap(in) (int argc, char *argv[])              { ... typemap 2 ... }
     %typemap(in) (int argc, char *argv[], char *env[]) { ... typemap 3 ... }
    @@ -16623,23 +17377,23 @@ int foo(int argc, char *argv[]);
     int foo(int argc, char *argv[]);                   // Uses typemap 2
     int bar(int argc, int x);                          // Uses typemap 1
     int spam(int argc, char *argv[], char *env[]);     // Uses typemap 3
    -
    -
    -

    It should be stressed that multi-argument typemaps can appear +

    +
    +

    It should be stressed that multi-argument typemaps can appear anywhere in a function declaration and can appear more than once. For - example, you could write this:

    -
    -
    + example, you could write this:

    +
    +
     %typemap(in) (int scount, char *swords[]) { ... }
     %typemap(in) (int wcount, char *words[]) { ... }
     
     void search_words(int scount, char *swords[], int wcount, char *words[], int maxcount);
    -
    -
    -

    Other directives such as %apply and %clear also - work with multi-argument maps. For example:

    -
    -
    +
    +
    +

    Other directives such as %apply and %clear also + work with multi-argument maps. For example:

    +
    +
     %apply (int argc, char *argv[]) {
         (int scount, char *swords[]),
         (int wcount, char *words[])
    @@ -16647,31 +17401,31 @@ void search_words(int scount, char *swords[], int wcount, char *words[], int max
     ...
     %clear (int scount, char *swords[]), (int wcount, char *words[]);
     ...
    -
    -
    -

    Don't forget to also provide a suitable -typemap for overloaded functions, such as %typecheck shown +

    +
    +

    Don't forget to also provide a suitable +typemap for overloaded functions, such as %typecheck shown for foo above. This is only required if the function is overloaded in - C++.

    -

    Although multi-argument typemaps may seem like an exotic, little + C++.

    +

    Although multi-argument typemaps may seem like an exotic, little used feature, there are several situations where they make sense. - First, suppose you wanted to wrap functions similar to the low-level -read() and write() system calls. For example:

    -
    -
    + First, suppose you wanted to wrap functions similar to the low-level 
    +read() and write() system calls. For example:

    +
    +
     typedef unsigned int size_t;
     
     int read(int fd, void *rbuffer, size_t len);
     int write(int fd, void *wbuffer, size_t len);
    -
    -
    -

    As is, the only way to use the functions would be to allocate memory +

    +
    +

    As is, the only way to use the functions would be to allocate memory and pass some kind of pointer as the second argument---a process that might require the use of a helper function. However, using multi-argument maps, the functions can be transformed into something - more natural. For example, you might write typemaps like this:

    -
    -
    + more natural. For example, you might write typemaps like this:

    +
    +
     // typemap for an outgoing buffer
     %typemap(in) (void *wbuffer, size_t len) {
       if (!PyString_Check($input)) {
    @@ -16707,16 +17461,16 @@ int write(int fd, void *wbuffer, size_t len);
       $result = PyString_FromStringAndSize($1, result);
       free($1);
     }
    -
    -
    -

    (note: In the above example, $result and result - are two different variables. result is the real C datatype - that was returned by the function. $result is the scripting - language object being returned to the interpreter.).

    -

    Now, in a script, you can write code that simply passes buffers as - strings like this:

    -
    -
    +
    +
    +

    (note: In the above example, $result and result + are two different variables. result is the real C datatype + that was returned by the function. $result is the scripting + language object being returned to the interpreter.).

    +

    Now, in a script, you can write code that simply passes buffers as + strings like this:

    +
    +
     >>> f = example.open("Makefile")
     >>> example.read(f, 40)
     'TOP        = ../..\nSWIG       = $(TOP)/.'
    @@ -16732,22 +17486,22 @@ int write(int fd, void *wbuffer, size_t len);
     >>> example.close(g)
     0
     >>>
    -
    -
    -

    A number of multi-argument typemap problems also arise in libraries +

    +
    +

    A number of multi-argument typemap problems also arise in libraries that perform matrix-calculations--especially if they are mapped onto low-level Fortran or C code. For example, you might have a function - like this:

    -
    -
    + like this:

    +
    +
     int is_symmetric(double *mat, int rows, int columns);
    -
    -
    -

    In this case, you might want to pass some kind of higher-level +

    +
    +

    In this case, you might want to pass some kind of higher-level object as an matrix. To do this, you could write a multi-argument - typemap like this:

    -
    -
    + typemap like this:

    +
    +
     %typemap(in) (double *mat, int rows, int columns) {
       MatrixObject *a;
       a = GetMatrixFromObject($input);     /* Get matrix somehow */
    @@ -16757,31 +17511,31 @@ int is_symmetric(double *mat, int rows, int columns);
       $2 = GetRows(a);
       $3 = GetColumns(a);
     }
    -
    -
    -

    This kind of technique can be used to hook into scripting-language +

    +
    +

    This kind of technique can be used to hook into scripting-language matrix packages such as Numeric Python. However, it should also be stressed that some care is in order. For example, when crossing languages you may need to worry about issues such as row-major vs. column-major ordering (and perform conversions if needed). Note that multi-argument typemaps cannot deal with non-consecutive C/C++ arguments; a workaround such as a helper function re-ordering the - arguments to make them consecutive will need to be written.

    -

    11.10 Typemap warnings

    -

    Warnings can be added to typemaps so that SWIG generates a warning - message whenever the typemap is used. See the information in the -issuing warnings section.

    -

    11.11 Typemap fragments

    -

    The primary purpose of fragments is to reduce code bloat that + arguments to make them consecutive will need to be written.

    +

    13.10 Typemap warnings

    +

    Warnings can be added to typemaps so that SWIG generates a warning + message whenever the typemap is used. See the information in the +issuing warnings section.

    +

    13.11 Typemap fragments

    +

    The primary purpose of fragments is to reduce code bloat that repeated use of typemap code can lead to. Fragments are snippets of code that can be thought of as code dependencies of a typemap. If a fragment is used by more than one typemap, then the snippet of code within the fragment is only generated once. Code bloat is typically reduced by moving typemap code into a support function and then placing - the support function into a fragment.

    -

    For example, if you have a very long typemap

    -
    -
    + the support function into a fragment.

    +

    For example, if you have a very long typemap

    +
    +
     %typemap(in) MyClass * {
       MyClass *value = 0;
     
    @@ -16789,15 +17543,15 @@ issuing warnings section.

    $result = value; } -
    -
    -

    the same marshalling code is often repeated in several typemaps, +

    +
    +

    the same marshalling code is often repeated in several typemaps, such as "in", "varin", "directorout", etc. SWIG copies the code for each argument that requires the typemap code, easily leading to code bloat in the generated code. To eliminate this, define a fragment that - includes the common marshalling code:

    -
    -
    + includes the common marshalling code:

    +
    +
     %fragment("AsMyClass", "header") {
       MyClass *AsMyClass(PyObject *obj) {
         MyClass *value = 0;
    @@ -16815,39 +17569,39 @@ issuing warnings section.

    %typemap(varin, fragment="AsMyClass") MyClass * { $result = AsMyClass($input); } -
    -
    -

    When the "in" or "varin" typemaps for MyClass are required, the +

    +
    +

    When the "in" or "varin" typemaps for MyClass are required, the contents of the fragment called "AsMyClass" is added to the "header" section within the generated code, and then the typemap code is - emitted. Hence, the method AsMyClass will be generated into - the wrapper code before any typemap code that calls it.

    -

    To define a fragment you need a fragment name, a section name for - generating the fragment code into, and the code itself. See -Code insertion blocks for a full list of section names. Usually the - section name used is "header". Different delimiters can be used:

    -
    -
    + emitted. Hence, the method AsMyClass will be generated into
    + the wrapper code before any typemap code that calls it.

    +

    To define a fragment you need a fragment name, a section name for + generating the fragment code into, and the code itself. See +Code insertion blocks for a full list of section names. Usually the + section name used is "header". Different delimiters can be used:

    +
    +
     %fragment("my_name", "header") %{ ... %}
     %fragment("my_name", "header") { ... }
     %fragment("my_name", "header") " ... "
    -
    -
    -

    and these follow the usual preprocessing rules mentioned in the -Preprocessing delimiters section. The following are some rules and - guidelines for using fragments:

    -
      -
    1. -

      A fragment is added to the wrapping code only once. When using the -MyClass * typemaps above and wrapping the method:

      -
      -
      +
      +
      +

      and these follow the usual preprocessing rules mentioned in the +Preprocessing delimiters section. The following are some rules and + guidelines for using fragments:

      +
        +
      1. +

        A fragment is added to the wrapping code only once. When using the +MyClass * typemaps above and wrapping the method:

        +
        +
         void foo(MyClass *a, MyClass *b);
        -
        -
        -

        the generated code will look something like:

        -
        -
        +
        +
        +

        the generated code will look something like:

        +
        +
         MyClass *AsMyClass(PyObject *obj) {
           ...
         }
        @@ -16859,40 +17613,40 @@ void _wrap_foo(...) {
           ...
           foo(arg1, arg2);
         }
        -
        -
        -

        even as there is duplicated typemap code to process both a - and b, the AsMyClass method will be defined only - once.

        -
      2. -
      3. -

        A fragment should only be defined once. If there is more than one +

    +
    +

    even as there is duplicated typemap code to process both a + and b, the AsMyClass method will be defined only + once.

    + +
  • +

    A fragment should only be defined once. If there is more than one definition, the first definition is the one used. All other definitions - are silently ignored. For example, if you have

    -
    -
    + are silently ignored. For example, if you have

    +
    +
     %fragment("AsMyClass", "header") { ...definition 1... }
     ....
     %fragment("AsMyClass", "header") { ...definition 2... }
    -
    -
    -

    only the first definition is used. In this way you can override the +

    +
    +

    only the first definition is used. In this way you can override the default fragments in a SWIG library by defining your fragment before - the library %include. Note that this behavior is the opposite + the library %include. Note that this behavior is the opposite to typemaps, where the last typemap defined/applied prevails. Fragments follow the first-in-first-out convention since they are intended to be - global, while typemaps are intended to be locally specialized.

    -
  • -
  • -

    Fragment names cannot contain commas.

    -
  • -
  • -

    A fragment can use one or more additional fragments, for example:

    -
    -
    -%fragment("<limits.h>", "header") {
    -  %#include <limits.h>
    -}
    + global, while typemaps are intended to be locally specialized.

    +
  • +
  • +

    Fragment names cannot contain commas.

    +
  • +
  • +

    A fragment can use one or more additional fragments, for example:

    +
    +
    +%fragment("<limits.h>", "header") %{
    +  #include <limits.h>
    +%}
     
     
     %fragment("AsMyClass", "header", fragment="<limits.h>") {
    @@ -16910,69 +17664,134 @@ void _wrap_foo(...) {
         return value;
       }
     }
    -
    -
    -

    in this case, when the "AsMyClass" fragment is emitted, it also - triggers the inclusion of the "<limits.h>" fragment.

    -
  • -
  • -

    A fragment can have dependencies on a number of other fragments, for - example:

    -
    -
    +
    +
    +

    in this case, when the "AsMyClass" fragment is emitted, it also + triggers the inclusion of the "<limits.h>" fragment.

    +
  • +
  • +

    A fragment can have dependencies on a number of other fragments, for + example:

    +
    +
     %fragment("bigfragment", "header", fragment="frag1", fragment="frag2", fragment="frag3") "";
    -
    -
    -

    When the "bigfragment" is used, the three dependent fragments + + +

    When the "bigfragment" is used, the three dependent fragments "frag1", "frag2" and "frag3" are also pulled in. Note that as "bigframent" is empty (the empty string - ""), it does not add any code - itself, but merely triggers the inclusion of the other fragments.

    -
  • -
  • -

    A typemap can also use more than one fragment, but since the syntax + itself, but merely triggers the inclusion of the other fragments.

    +
  • +
  • +

    A typemap can also use more than one fragment, but since the syntax is different, you need to specify the dependent fragments in a comma - separated list. Consider:

    -
    -
    + separated list. Consider:

    +
    +
     %typemap(in, fragment="frag1, frag2, frag3") {...}
    -
    -
    -

    which is equivalent to:

    -
    -
    +
    +
    +

    which is equivalent to:

    +
    +
     %typemap(in, fragment="bigfragment") {...}
    -
    -
    -

    when used with the "bigfragment" defined above.

    -
  • -
  • -

    Finally, you can force the inclusion of a fragment at any point in - the generated code as follows:

    -
    -
    +
    +
    +

    when used with the "bigfragment" defined above.

    +
  • +
  • +

    Finally, you can force the inclusion of a fragment at any point in + the generated code as follows:

    +
    +
     %fragment("bigfragment");
    -
    -
    -

    which is very useful inside a template class, for example.

    -
  • - -

    Most readers will probably want to skip the next two sub-sections on + + +

    which, for example, is very useful inside a template class. Another + useful case is when using %extend inside a class where the + additional code in the %extend block depends on the contents + of the fragment.

    +
    +
    +%fragment("<limits.h>", "header") %{
    +  #include <limits.h>
    +%}
    +
    +struct X {
    +  ...
    +  %extend {
    +    %fragment("<limits.h>");
    +    bool check(short val) {
    +      if (val < SHRT_MIN /*defined in <limits.h>*/) {
    +        return true;
    +      } else {
    +        return false;
    +      }
    +    }
    +  }
    +};
    +
    +
    +

    Forced inclusion of fragments can be used as a replacement for +code insertion block, ensuring the code block is only generated + once. Consider the contents of FileA.i below which first uses a code + insertion block and then a forced fragment inclusion to generate code:

    +
    +
    +// FileA.i
    +%{
    +  #include <stdio.h>
    +%}
    +%fragment("<limits.h>");
    +
    +
    +

    and another file including the above:

    +
    +
    +// FileB.i
    +%include "FileA.i"
    +
    +
    +

    The resulting code in the wrappers for FileB.i is:

    +
    +
    +  #include <stdio.h>
    +
    +  #include <limits.h>
    +
    +
    +

    A note of caution must be mentioned when using %fragment + forced inclusion or code insertion blocks with %import. If +%import is used instead:

    +
    +
    +// FileC.i
    +%import "FileA.i"
    +
    +
    +

    then nothing is generated in the resulting code in the wrappers for + FileC.i. This is because %import is for collecting type + information and does not result in any code being generated, see +File Imports.

    + + +

    Most readers will probably want to skip the next two sub-sections on advanced fragment usage unless a desire to really get to grips with some powerful but tricky macro and fragment usage that is used in parts - of the SWIG typemap library.

    -

    11.11.1 Fragment - type specialization

    -

    Fragments can be type specialized. The syntax is as follows:

    -
    -
    + of the SWIG typemap library.

    +

    13.11.1 Fragment + type specialization

    +

    Fragments can be type specialized. The syntax is as follows:

    +
    +
     %fragment("name", "header") { ...a type independent fragment... }
     %fragment("name"{type}, "header") { ...a type dependent fragment...  }
    -
    -
    -

    where type is a C/C++ type. Like typemaps, fragments can - also be used inside templates, for example:

    -
    -
    +
    +
    +

    where type is a C/C++ type. Like typemaps, fragments can + also be used inside templates, for example:

    +
    +
     template <class T>
     struct A {
       %fragment("incode"{A<T>}, "header") {
    @@ -16983,14 +17802,14 @@ struct A {
         ... here we use the 'type specialized' fragment "incode"{A<T>} ...
       }
     };
    -
    -
    -

    11.11.2 Fragments and - automatic typemap specialization

    -

    Since fragments can be type specialized, they can be elegantly used - to specialize typemaps. For example, if you have something like:

    -
    -
    +
    +
    +

    13.11.2 Fragments and + automatic typemap specialization

    +

    Since fragments can be type specialized, they can be elegantly used + to specialize typemaps. For example, if you have something like:

    +
    +
     %fragment("incode"{float}, "header") {
       float in_method_float(PyObject *obj) {
         ...
    @@ -17012,58 +17831,58 @@ struct A {
     
     %my_typemaps(float);
     %my_typemaps(long);
    -
    -
    -

    then the proper "incode"{float} or "incode"{long} - fragment will be used, and the in_method_float and -in_method_long methods will be called whenever the float - or long types are used as input parameters.

    -

    This feature is used a lot in the typemaps shipped in the SWIG +

    +
    +

    then the proper "incode"{float} or "incode"{long} + fragment will be used, and the in_method_float and +in_method_long methods will be called whenever the float + or long types are used as input parameters.

    +

    This feature is used a lot in the typemaps shipped in the SWIG library for some scripting languages. The interested (or very brave) reader can take a look at the fragments.swg file shipped with SWIG to - see this in action.

    -

    11.12 The run-time type - checker

    -

    Most scripting languages need type information at run-time. This + see this in action.

    +

    13.12 The run-time type + checker

    +

    Most scripting languages need type information at run-time. This type information can include how to construct types, how to garbage collect types, and the inheritance relationships between types. If the language interface does not provide its own type information storage, - the generated SWIG code needs to provide it.

    -

    Requirements for the type system:

    -
      -
    • Store inheritance and type equivalence information and be able to - correctly re-create the type pointer.
    • -
    • Share type information between modules.
    • -
    • Modules can be loaded in any order, regardless of actual type - dependency.
    • -
    • Avoid the use of dynamically allocated memory, and library/system - calls in general.
    • -
    • Provide a reasonably fast implementation, minimizing the lookup time - for all language modules.
    • -
    • Custom, language specific information can be attached to types.
    • -
    • Modules can be unloaded from the type system.
    • -
    -

    11.12.1 Implementation

    -

    The run-time type checker is used by many, but not all, of SWIG's + the generated SWIG code needs to provide it.

    +

    Requirements for the type system:

    +
      +
    • Store inheritance and type equivalence information and be able to + correctly re-create the type pointer.
    • +
    • Share type information between modules.
    • +
    • Modules can be loaded in any order, regardless of actual type + dependency.
    • +
    • Avoid the use of dynamically allocated memory, and library/system + calls in general.
    • +
    • Provide a reasonably fast implementation, minimizing the lookup time + for all language modules.
    • +
    • Custom, language specific information can be attached to types.
    • +
    • Modules can be unloaded from the type system.
    • +
    +

    13.12.1 Implementation

    +

    The run-time type checker is used by many, but not all, of SWIG's supported target languages. The run-time type checker features are not required and are thus not used for statically typed languages such as Java and C#. The scripting and scheme based languages rely on it and it - forms a critical part of SWIG's operation for these languages.

    -

    When pointers, arrays, and objects are wrapped by SWIG, they are + forms a critical part of SWIG's operation for these languages.

    +

    When pointers, arrays, and objects are wrapped by SWIG, they are normally converted into typed pointer objects. For example, an instance - of Foo * might be a string encoded like this:

    -
    -
    + of Foo * might be a string encoded like this:

    +
    +
     _108e688_p_Foo
    -
    -
    -

    At a basic level, the type checker simply restores some type-safety +

    +
    +

    At a basic level, the type checker simply restores some type-safety to extension modules. However, the type checker is also responsible for making sure that wrapped C++ classes are handled correctly---especially when inheritance is used. This is especially important when an - extension module makes use of multiple inheritance. For example:

    -
    -
    + extension module makes use of multiple inheritance. For example:

    +
    +
     class Foo {
     public:
       int x;
    @@ -17078,13 +17897,13 @@ class FooBar : public Foo, public Bar {
     public:
       int z;
     };
    -
    -
    -

    When the class FooBar is organized in memory, it contains - the contents of the classes Foo and Bar as well as - its own data members. For example:

    -
    -
    +
    +
    +

    When the class FooBar is organized in memory, it contains + the contents of the classes Foo and Bar as well as + its own data members. For example:

    +
    +
     FooBar --> | -----------|  <-- Foo
                |   int x    |
                |------------|  <-- Bar
    @@ -17092,45 +17911,45 @@ FooBar --> | -----------|  <-- Foo
                |------------|
                |   int z    |
                |------------|
    -
    -
    -

    Because of the way that base class data is stacked together, the - casting of a Foobar * to either of the base classes may change +

    +
    +

    Because of the way that base class data is stacked together, the + casting of a Foobar * to either of the base classes may change the actual value of the pointer. This means that it is generally not - safe to represent pointers using a simple integer or a bare void * + safe to represent pointers using a simple integer or a bare void * ---type tags are needed to implement correct handling of pointer values - (and to make adjustments when needed).

    -

    In the wrapper code generated for each language, pointers are + (and to make adjustments when needed).

    +

    In the wrapper code generated for each language, pointers are handled through the use of special type descriptors and conversion functions. For example, if you look at the wrapper code for Python, you - will see code similar to the following (simplified for brevity):

    -
    -
    + will see code similar to the following (simplified for brevity):

    +
    +
     if (!SWIG_IsOK(SWIG_ConvertPtr(obj0, (void **) &arg1, SWIGTYPE_p_Foo, 0))) {
       SWIG_exception_fail(SWIG_TypeError, "in method 'GrabVal', expecting type Foo");
     }
    -
    -
    -

    In this code, SWIGTYPE_p_Foo is the type descriptor that - describes Foo *. The type descriptor is actually a pointer to +

    +
    +

    In this code, SWIGTYPE_p_Foo is the type descriptor that + describes Foo *. The type descriptor is actually a pointer to a structure that contains information about the type name to use in the target language, a list of equivalent typenames (via typedef or inheritance), and pointer value handling information (if applicable). - The SWIG_ConvertPtr() function is simply a utility function + The SWIG_ConvertPtr() function is simply a utility function that takes a pointer object in the target language and a type-descriptor object and uses this information to generate a C++ - pointer. The SWIG_IsOK macro checks the return value for - errors and SWIG_exception_fail can be called to raise an + pointer. The SWIG_IsOK macro checks the return value for + errors and SWIG_exception_fail can be called to raise an exception in the target language. However, the exact name and calling conventions of the conversion function depends on the target language - (see language specific chapters for details).

    -

    The actual type code is in swigrun.swg, and gets inserted near the + (see language specific chapters for details).

    +

    The actual type code is in swigrun.swg, and gets inserted near the top of the generated swig wrapper file. The phrase "a type X that can cast into a type Y" means that given a type X, it can be converted into a type Y. In other words, X is a derived class of Y or X is a typedef - of Y. The structure to store type information looks like this:

    -
    -
    + of Y. The structure to store type information looks like this:

    +
    +
     /* Structure to store information on one type */
     typedef struct swig_type_info {
       const char *name;             /* mangled name of this type */
    @@ -17147,39 +17966,39 @@ typedef struct swig_cast_info {
       struct swig_cast_info *next;   /* pointer to next cast in linked list */
       struct swig_cast_info *prev;   /* pointer to the previous cast */
     } swig_cast_info;
    -
    -
    -

    Each swig_type_info stores a linked list of types that it +

    +
    +

    Each swig_type_info stores a linked list of types that it is equivalent to. Each entry in this doubly linked list stores a pointer back to another swig_type_info structure, along with a pointer to a conversion function. This conversion function is used to solve the above problem of the FooBar class, correctly returning a pointer to the - type we want.

    -

    The basic problem we need to solve is verifying and building - arguments passed to functions. So going back to the -SWIG_ConvertPtr() function example from above, we are expecting a -Foo * and need to check if obj0 is in fact a Foo * -. From before, SWIGTYPE_p_Foo is just a pointer to the -swig_type_info structure describing Foo *. So we loop - through the linked list of swig_cast_info structures attached - to SWIGTYPE_p_Foo. If we see that the type of obj0 is + type we want.

    +

    The basic problem we need to solve is verifying and building + arguments passed to functions. So going back to the +SWIG_ConvertPtr() function example from above, we are expecting a +Foo * and need to check if obj0 is in fact a Foo * +. From before, SWIGTYPE_p_Foo is just a pointer to the +swig_type_info structure describing Foo *. So we loop + through the linked list of swig_cast_info structures attached + to SWIGTYPE_p_Foo. If we see that the type of obj0 is in the linked list, we pass the object through the associated conversion function and then return a positive. If we reach the end of - the linked list without a match, then obj0 can not be - converted to a Foo * and an error is generated.

    -

    Another issue needing to be addressed is sharing type information - between multiple modules. More explicitly, we need to have ONE -swig_type_info for each type. If two modules both use the type, the + the linked list without a match, then obj0 can not be + converted to a Foo * and an error is generated.

    +

    Another issue needing to be addressed is sharing type information + between multiple modules. More explicitly, we need to have ONE +swig_type_info for each type. If two modules both use the type, the second module loaded must lookup and use the swig_type_info structure from the module already loaded. Because no dynamic memory is used and the circular dependencies of the casting information, loading the type information is somewhat tricky, and not explained here. A complete - description is in the Lib/swiginit.swg file (and near the top - of any generated file).

    -

    Each module has one swig_module_info structure which looks like - this:

    -
    -
    + description is in the Lib/swiginit.swg file (and near the top
    + of any generated file).

    +

    Each module has one swig_module_info structure which looks like + this:

    +
    +
     /* Structure used to store module information
      * Each module generates one structure like this, and the runtime collects
      * all of these structures and stores them in a circularly linked list.*/
    @@ -17191,50 +18010,50 @@ typedef struct swig_module_info {
       swig_cast_info **cast_initial;  /* Array of initially generated casting structures */
       void *clientdata;               /* Language specific module data */
     } swig_module_info;
    -
    -
    -

    Each module stores an array of pointers to swig_type_info +

    +
    +

    Each module stores an array of pointers to swig_type_info structures and the number of types in this module. So when a second - module is loaded, it finds the swig_module_info structure for + module is loaded, it finds the swig_module_info structure for the first module and searches the array of types. If any of its own types are in the first module and have already been loaded, it uses - those swig_type_info structures rather than creating new ones. - These swig_module_info structures are chained together in a - circularly linked list.

    -

    11.12.2 Usage

    -

    This section covers how to use these functions from typemaps. To + those swig_type_info structures rather than creating new ones. + These swig_module_info structures are chained together in a + circularly linked list.

    +

    13.12.2 Usage

    +

    This section covers how to use these functions from typemaps. To learn how to call these functions from external files (not the - generated _wrap.c file), see the -External access to the run-time system section.

    -

    When pointers are converted in a typemap, the typemap code often - looks similar to this:

    -
    -
    + generated _wrap.c file), see the 
    +External access to the run-time system section.

    +

    When pointers are converted in a typemap, the typemap code often + looks similar to this:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    The most critical part is the typemap is the use of the -$1_descriptor special variable. When placed in a typemap, this is - expanded into the SWIGTYPE_* type descriptor object above. As - a general rule, you should always use $1_descriptor instead of - trying to hard-code the type descriptor name directly.

    -

    There is another reason why you should always use the -$1_descriptor variable. When this special variable is expanded, +

    +
    +

    The most critical part is the typemap is the use of the +$1_descriptor special variable. When placed in a typemap, this is + expanded into the SWIGTYPE_* type descriptor object above. As + a general rule, you should always use $1_descriptor instead of + trying to hard-code the type descriptor name directly.

    +

    There is another reason why you should always use the +$1_descriptor variable. When this special variable is expanded, SWIG marks the corresponding type as "in use." When type-tables and type information is emitted in the wrapper file, descriptor information is only generated for those datatypes that were actually used in the interface. This greatly reduces the size of the type tables and - improves efficiency.

    -

    Occasionally, you might need to write a typemap that needs to + improves efficiency.

    +

    Occasionally, you might need to write a typemap that needs to convert pointers of other types. To handle this, the special variable - macro $descriptor(type) covered earlier can be used to - generate the SWIG type descriptor name for any C datatype. For example:

    -
    -
    + macro $descriptor(type) covered earlier can be used to
    + generate the SWIG type descriptor name for any C datatype. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) {
         Bar *temp;
    @@ -17244,51 +18063,51 @@ $1_descriptor variable. When this special variable is expanded,
         $1 = (Foo *)temp;
       }
     }
    -
    -
    -

    The primary use of $descriptor(type) is when writing +

    +
    +

    The primary use of $descriptor(type) is when writing typemaps for container objects and other complex data structures. There are some restrictions on the argument---namely it must be a fully - defined C datatype. It can not be any of the special typemap variables.

    -

    In certain cases, SWIG may not generate type-descriptors like you + defined C datatype. It can not be any of the special typemap variables.

    +

    In certain cases, SWIG may not generate type-descriptors like you expect. For example, if you are converting pointers in some non-standard way or working with an unusual combination of interface files and modules, you may find that SWIG omits information for a - specific type descriptor. To fix this, you may need to use the -%types directive. For example:

    -
    -
    + specific type descriptor. To fix this, you may need to use the 
    +%types directive. For example:

    +
    +
     %types(int *, short *, long *, float *, double *);
    -
    -
    -

    When %types is used, SWIG generates type-descriptor +

    +
    +

    When %types is used, SWIG generates type-descriptor information even if those datatypes never appear elsewhere in the - interface file.

    -

    Further details about the run-time type checking can be found in the + interface file.

    +

    Further details about the run-time type checking can be found in the documentation for individual language modules. Reading the source code - may also help. The file Lib/swigrun.swg in the SWIG library + may also help. The file Lib/swigrun.swg in the SWIG library contains all of the source of the generated code for type-checking. This code is also included in every generated wrapped file so you probably just look at the output of SWIG to get a better sense for how - types are managed.

    -

    11.13 Typemaps and overloading

    -

    This section does not apply to the statically typed languages like + types are managed.

    +

    13.13 Typemaps and overloading

    +

    This section does not apply to the statically typed languages like Java and C#, where overloading of the types is handled much like C++ by generating overloaded methods in the target language. In many of the other target languages, SWIG still fully supports C++ overloaded methods and functions. For example, if you have a collection of - functions like this:

    -
    -
    + functions like this:

    +
    +
     int foo(int x);
     int foo(double x);
     int foo(char *s, int y);
    -
    -
    -

    You can access the functions in a normal way from the scripting - interpreter:

    -
    -
    +
    +
    +

    You can access the functions in a normal way from the scripting + interpreter:

    +
    +
     # Python
     foo(3)           # foo(int)
     foo(3.5)         # foo(double)
    @@ -17298,13 +18117,13 @@ foo("hello", 5)  # foo(char *, int)
     foo 3            # foo(int)
     foo 3.5          # foo(double)
     foo hello 5      # foo(char *, int)
    -
    -
    -

    To implement overloading, SWIG generates a separate wrapper function +

    +
    +

    To implement overloading, SWIG generates a separate wrapper function for each overloaded method. For example, the above functions would - produce something roughly like this:

    -
    -
    + produce something roughly like this:

    +
    +
     // wrapper pseudocode
     _wrap_foo_0(argc, args[]) {       // foo(int)
       int arg1;
    @@ -17335,11 +18154,11 @@ _wrap_foo_2(argc, args[]) {       // foo(char *, int)
       return ToInteger(result);
     }
     
    -
    -
    -

    Next, a dynamic dispatch function is generated:

    -
    -
    +
    +
    +

    Next, a dynamic dispatch function is generated:

    +
    +
     _wrap_foo(argc, args[]) {
       if (argc == 1) {
         if (IsInteger(args[0])) {
    @@ -17356,23 +18175,23 @@ _wrap_foo(argc, args[]) {
       }
       error("No matching function!\n");
     }
    -
    -
    -

    The purpose of the dynamic dispatch function is to select the +

    +
    +

    The purpose of the dynamic dispatch function is to select the appropriate C++ function based on argument types---a task that must be - performed at runtime in most of SWIG's target languages.

    -

    The generation of the dynamic dispatch function is a relatively + performed at runtime in most of SWIG's target languages.

    +

    The generation of the dynamic dispatch function is a relatively tricky affair. Not only must input typemaps be taken into account (these typemaps can radically change the types of arguments accepted), but overloaded methods must also be sorted and checked in a very specific order to resolve potential ambiguity. A high-level overview of - this ranking process is found in the "SWIG and C++ + this ranking process is found in the "SWIG and C++ " chapter. What isn't mentioned in that chapter is the mechanism by - which it is implemented---as a collection of typemaps.

    -

    To support dynamic dispatch, SWIG first defines a general purpose - type hierarchy as follows:

    -
    -
    + which it is implemented---as a collection of typemaps.

    +

    To support dynamic dispatch, SWIG first defines a general purpose + type hierarchy as follows:

    +
    +
     Symbolic Name                   Precedence Value
     ------------------------------  ------------------
     SWIG_TYPECHECK_POINTER           0  
    @@ -17406,19 +18225,19 @@ SWIG_TYPECHECK_FLOAT_ARRAY       1080
     SWIG_TYPECHECK_DOUBLE_ARRAY      1090 
     SWIG_TYPECHECK_CHAR_ARRAY        1130 
     SWIG_TYPECHECK_STRING_ARRAY      1140 
    -
    -
    -

    (These precedence levels are defined in swig.swg, a library - file that's included by all target language modules.)

    -

    In this table, the precedence-level determines the order in which +

    +
    +

    (These precedence levels are defined in swig.swg, a library + file that's included by all target language modules.)

    +

    In this table, the precedence-level determines the order in which types are going to be checked. Low values are always checked before higher values. For example, integers are checked before floats, single - values are checked before arrays, and so forth.

    -

    Using the above table as a guide, each target language defines a + values are checked before arrays, and so forth.

    +

    Using the above table as a guide, each target language defines a collection of "typecheck" typemaps. The following excerpt from the - Python module illustrates this:

    -
    -
    + Python module illustrates this:

    +
    +
     /* Python type checking rules */
     /* Note:  %typecheck(X) is a macro for %typemap(typecheck, precedence=X) */
     
    @@ -17460,28 +18279,28 @@ SWIG_TYPECHECK_STRING_ARRAY      1140
     %typecheck(SWIG_TYPECHECK_POINTER) PyObject * {
       $1 = ($input != 0);
     }
    -
    -
    -

    It might take a bit of contemplation, but this code has merely +

    +
    +

    It might take a bit of contemplation, but this code has merely organized all of the basic C++ types, provided some simple - type-checking code, and assigned each type a precedence value.

    -

    Finally, to generate the dynamic dispatch function, SWIG uses the - following algorithm:

    -
      -
    • Overloaded methods are first sorted by the number of required - arguments.
    • -
    • Methods with the same number of arguments are then sorted by - precedence values of argument types.
    • -
    • Typecheck typemaps are then emitted to produce a dispatch function - that checks arguments in the correct order.
    • -
    -

    If you haven't written any typemaps of your own, it is unnecessary + type-checking code, and assigned each type a precedence value.

    +

    Finally, to generate the dynamic dispatch function, SWIG uses the + following algorithm:

    +
      +
    • Overloaded methods are first sorted by the number of required + arguments.
    • +
    • Methods with the same number of arguments are then sorted by + precedence values of argument types.
    • +
    • Typecheck typemaps are then emitted to produce a dispatch function + that checks arguments in the correct order.
    • +
    +

    If you haven't written any typemaps of your own, it is unnecessary to worry about the typechecking rules. However, if you have written new input typemaps, you might have to supply a typechecking rule as well. An easy way to do this is to simply copy one of the existing - typechecking rules. Here is an example,

    -
    -
    + typechecking rules. Here is an example,

    +
    +
     // Typemap for a C++ string
     %typemap(in) std::string {
       if (PyString_Check($input)) {
    @@ -17492,82 +18311,174 @@ SWIG_TYPECHECK_STRING_ARRAY      1140
     }
     // Copy the typecheck code for "char *".  
     %typemap(typecheck) std::string = char *;
    -
    -
    -

    The bottom line: If you are writing new typemaps and you are using +

    +
    +

    The bottom line: If you are writing new typemaps and you are using overloaded methods, you will probably have to write new typecheck code - or copy and modify existing typecheck code.

    -

    If you write a typecheck typemap and omit the precedence level, for - example commenting it out as shown below:

    -
    -
    + or copy and modify existing typecheck code.

    +

    If you write a typecheck typemap and omit the precedence level, for + example commenting it out as shown below:

    +
    +
     %typemap(typecheck /*, precedence=SWIG_TYPECHECK_INTEGER*/) int {
       $1 = PyInt_Check($input) ? 1 : 0;
     }
    -
    -
    -

    then the type is given a precedence higher than any other known - precedence level and a warning is issued:

    -
    -
    -example.i:18: Warning 467: Overloaded method foo(int) not supported (incomplete type checking rule - no precedence level in typecheck typemap for 'int').
    -
    -
    -

    Notes:

    -
      -
    • Typecheck typemaps are not used for non-overloaded methods. Because +
    +
    +

    then the type is given a precedence higher than any other known + precedence level and a warning is issued:

    +
    +
    +example.i:18: Warning 467: Overloaded method foo(int) not supported (incomplete type
    +checking rule - no precedence level in typecheck typemap for 'int').
    +
    +
    +

    Notes:

    +
      +
    • Typecheck typemaps are not used for non-overloaded methods. Because of this, it is still always necessary to check types in any "in" - typemaps.
    • -
    • The dynamic dispatch process is only meant to be a heuristic. There + typemaps.
    • +
    • The dynamic dispatch process is only meant to be a heuristic. There are many corner cases where SWIG simply can't disambiguate types to the same degree as C++. The only way to resolve this ambiguity is to use the %rename directive to rename one of the overloaded methods - (effectively eliminating overloading).
    • -
    • Typechecking may be partial. For example, if working with arrays, + (effectively eliminating overloading).
    • +
    • Typechecking may be partial. For example, if working with arrays, the typecheck code might simply check the type of the first array element and use that to dispatch to the correct function. Subsequent - "in" typemaps would then perform more extensive type-checking.
    • -
    • Make sure you read the section on overloading in the " -SWIG and C++" chapter.
    • -
    -

    11.14 More about %apply and %clear

    -

    In order to implement certain kinds of program behavior, it is - sometimes necessary to write sets of typemaps. For example, to support - output arguments, one often writes a set of typemaps like this:

    -
    -
    + "in" typemaps would then perform more extensive type-checking.
    +
  • Make sure you read the section on +overloading in the SWIG and C++ chapter.
  • + +

    13.13.1 SWIG_TYPECHECK_POINTER + precedence level and the typecheck typemap

    +

    When it comes to overloading of a particular type passed by value, + pointer or reference (const and non-const), a C++ compiler can + disambiguate which overloaded function to call. However, SWIG + effectively treats these as pointers in the target language and thus as + equivalent types. For example, consider:

    +
    +
    +class X { ... };
    +void m(X const &c); // equivalent: void m(X *c);
    +void m(X &r);       // equivalent: void m(X *r);
    +void m(X *p);       // equivalent: void m(X *p);
    +
    +
    +

    These cannot be disambiguated in the target languages and so SWIG + will choose the first method and ignore the subsequent two methods. The + scripting languages do this by using the overload dispatch mechanism + described earlier and warnings indicate this:

    +
    +
    +example.i:6: Warning 509: Overloaded method m(X &) effectively ignored,
    +example.i:5: Warning 509: as it is shadowed by m(X const &).
    +example.i:7: Warning 509: Overloaded method m(X *) effectively ignored,
    +example.i:5: Warning 509: as it is shadowed by m(X const &).
    +
    +
    +

    The statically typed languages like Java and C# automatically ignore + all but the first equivalent overloaded methods with warnings:

    +
    +
    +example.i:6: Warning 516: Overloaded method m(X &) ignored,
    +example.i:5: Warning 516: using m(X const &) instead.
    +example.i:7: Warning 516: Overloaded method m(X *) ignored,
    +example.i:5: Warning 516: using m(X const &) instead.
    +
    +
    +

    You can select the overloaded method you would like to wrap by + ignoring the other two with %ignore or rename two of them with + %rename and this will of course remove the warnings too. The + problem of ambiguity is also discussed in the C++ chapter on +overloading.

    +

    So how does this work with respect to typemaps? The typemaps SWIG + provides to handle overloading for these three methods are from the + SWIGTYPE family. As discussed earlier, in +Default typemap matching rules, the SWIGTYPE & typemaps are + used for references and SWIGTYPE * typemaps are used for + pointers. SWIG uses the special SWIG_TYPECHECK_POINTER (0) + precedence level to handle these types in the "typecheck" typemap:

    +
    +
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) SWIGTYPE & "..."
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) SWIGTYPE * "..."
    +
    +
    +

    When the SWIGTYPE "typecheck" typemaps use the +SWIG_TYPECHECK_POINTER precedence level, SWIG converts the type to + a pointer equivalent type and then uses the equivalent type to detect + if it can be disambiguated in an overloaded method in the target + language. In our example above, the equivalent types for X const & +, X & and X * are all X *. As they are the + same, they cannot be disambiguated and so just the first overloaded + method is chosen.

    +

    The automatic conversion to equivalent types and subsequent type + comparison is triggered via the use of the special +SWIG_TYPECHECK_POINTER precedence level and works for types passed + by value, pointer and reference. Alas, there are more ways to overload + a method that also need handling. C++ smart pointers are such a type + which can be disambiguated by a C++ compiler but not automatically by + SWIG. SWIG does not automatically know that a smart pointer has an + equivalent type, but it can be told manually. Just specify the + 'equivalent' attribute in the "typecheck" typemap with a pointer to the + underlying type.

    +
    +
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="X *") MySmartPtr<X> " ... "
    +
    +void m(X &r);            // equivalent: void m(X *r);
    +void m(MySmartPtr<X> s); // equivalent: void m(X *s);
    +
    +
    +

    Now SWIG will detect the two types are equivalent and generate valid + code by wrapping just the first overloaded method. You can of course + choose which method to wrap by ignoring one of them with %ignore +. Otherwise both can be wrapped by removing the overloading name + ambiguity by renaming one of them with %rename.

    +

    The 'equivalent' attribute is used in the implementation for the +shared_ptr smart pointer library.

    +

    13.14 More about %apply and %clear

    +

    In order to implement certain kinds of program behavior, it is + sometimes necessary to write a family of typemap methods. For example, + to support output arguments, one often writes a family of typemaps like + this:

    +
    +
     %typemap(in, numinputs=0) int *OUTPUT (int temp) {
       $1 = &temp;
     }
     %typemap(argout) int *OUTPUT {
       // return value somehow
     }
    -
    -
    -

    To make it easier to apply the typemap to different argument types - and names, the %apply directive performs a copy of all - typemaps from one type to another. For example, if you specify this,

    -
    -
    +
    +
    +

    To make it easier to apply the typemap to different argument types + and names, the %apply directive performs a copy of all + typemaps from a source type to one or more set of target types. For + example, if you specify this,

    +
    +
     %apply int *OUTPUT { int *retvalue, int32 *output };
    -
    -
    -

    then all of the int *OUTPUT typemaps are copied to int - *retvalue and int32 *output.

    -

    However, there is a subtle aspect of %apply that needs more - description. Namely, %apply does not overwrite a typemap rule - if it is already defined for the target datatype. This behavior allows - you to do two things:

    -
      -
    • You can specialize parts of a complex typemap rule by first defining - a few typemaps and then using %apply to incorporate the - remaining pieces.
    • -
    • Sets of different typemaps can be applied to the same datatype using - repeated %apply directives.
    • -
    -

    For example:

    -
    -
    +
    +
    +

    then all of the int *OUTPUT (source) typemap methods are + copied to int *retvalue and int32 *output (the + targets).

    +

    However, there is a subtle aspect of %apply that needs + clarification. Namely, if a target contains a typemap method that the + source does not, the target typemap method remains in place and + unchanged. This behavior allows you to do two things:

    +
      +
    • You can specialize parts of a complex typemap rule by first defining + a few typemaps and then using %apply to incorporate the + remaining pieces.
    • +
    • Different typemaps can be applied to the same datatype using + repeated %apply directives.
    • +
    +

    For example:

    +
    +
     %typemap(in) int *INPUT (int temp) {
       temp = ... get value from $input ...;
       $1 = &temp;
    @@ -17580,30 +18491,45 @@ SWIG and C++" chapter.
       }
     }
     
    +%typemap(arginit) int *invalue %{
    +  $1 = NULL;
    +%}
    +
     ...
     %apply int *INPUT     { int *invalue };
     %apply int *POSITIVE  { int *invalue };
    -
    -
    -

    Since %apply does not overwrite or replace any existing - rules, the only way to reset behavior is to use the %clear - directive. %clear removes all typemap rules defined for a - specific datatype. For example:

    -
    -
    +
    +
    +

    In this example, neither of the two %apply directives will + overwrite / delete the "arginit" typemap as neither has an "arginit" + typemap. The result is a family of three relevant typemaps for int + *invalue. Since %apply does not overwrite / delete any + existing rules, the only way to reset behavior is to delete them, such + as with the %clear directive. For example:

    +
    +
     %clear int *invalue;
    -
    -
    -

    11.15 Passing data between typemaps

    -

    It is also important to note that the primary use of local variables +

    +
    +

    will delete the typemaps for all the typemap methods; namely "in", + "check" and "arginit". Alternatively delete each one individually:

    +
    +
    +%typemap(in) int *invalue;
    +%typemap(check) int *invalue;
    +%typemap(arginit) int *invalue;
    +
    +
    +

    13.15 Passing data between typemaps

    +

    It is also important to note that the primary use of local variables is to create stack-allocated objects for temporary use inside a wrapper function (this is faster and less-prone to error than allocating data on the heap). In general, the variables are not intended to pass information between different types of typemaps. However, this can be done if you realize that local names have the argument number appended - to them. For example, you could do this:

    -
    -
    + to them. For example, you could do this:

    +
    +
     %typemap(in) int *(int temp) {
       temp = (int) PyInt_AsLong($input);
       $1 = &temp;
    @@ -17613,29 +18539,29 @@ SWIG and C++" chapter.
       PyObject *o = PyInt_FromLong(temp$argnum);
       ...
     }
    -
    -
    -

    In this case, the $argnum variable is expanded into the +

    +
    +

    In this case, the $argnum variable is expanded into the argument number. Therefore, the code will reference the appropriate - local such as temp1 and temp2. It should be noted + local such as temp1 and temp2. It should be noted that there are plenty of opportunities to break the universe here and that accessing locals in this manner should probably be avoided. At the very least, you should make sure that the typemaps sharing information - have exactly the same types and names.

    -

    11.16 C++ "this" pointer

    -

    All the rules discussed for typemaps apply to C++ as well as C. + have exactly the same types and names.

    +

    13.16 C++ "this" pointer

    +

    All the rules discussed for typemaps apply to C++ as well as C. However in addition C++ passes an extra parameter into every non-static - class method -- the this pointer. Occasionally it can be + class method -- the this pointer. Occasionally it can be useful to apply a typemap to this pointer (for example to check and - make sure this is non-null before deferencing). Actually, C - also has an the equivalent of the this pointer which is used - when accessing variables in a C struct.

    -

    In order to customise the this pointer handling, target a - variable named self in your typemaps. self is the - name SWIG uses to refer to the extra parameter in wrapped functions.

    -

    For example, if wrapping for Java generation:

    -
    -
    + make sure this is non-null before deferencing). Actually, C
    + also has an the equivalent of the this pointer which is used
    + when accessing variables in a C struct.

    +

    In order to customise the this pointer handling, target a + variable named self in your typemaps. self is the + name SWIG uses to refer to the extra parameter in wrapped functions.

    +

    For example, if wrapping for Java generation:

    +
    +
     %typemap(check) SWIGTYPE *self %{
     if (!$1) {
       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException,
    @@ -17643,88 +18569,88 @@ if (!$1) {
       return $null;
     }
     %}
    -
    -
    -

    In the above case, the $1 variable is expanded into the - argument name that SWIG is using as the this pointer. SWIG +

    +
    +

    In the above case, the $1 variable is expanded into the + argument name that SWIG is using as the this pointer. SWIG will then insert the check code before the actual C++ class method is called, and will raise an exception rather than crash the Java virtual - machine. The generated code will look something like:

    -
    -
    + machine. The generated code will look something like:

    +
    +
       if (!arg1) {
         SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException,
           "invalid native object; delete() likely already called");
         return ;
       }
       (arg1)->wrappedFunction(...);
    -
    -
    -

    Note that if you have a parameter named self then it will +

    +
    +

    Note that if you have a parameter named self then it will also match the typemap. One work around is to create an interface file - that wraps the method, but gives the argument a name other than -self.

    -

    11.17 Where to go for more information?

    -

    The best place to find out more information about writing typemaps + that wraps the method, but gives the argument a name other than +self.

    +

    13.17 Where to go for more information?

    +

    The best place to find out more information about writing typemaps is to look in the SWIG library. Most language modules define all of their default behavior using typemaps. These are found in files such as - python.swg, perl5.swg, tcl8.swg and so - forth. The typemaps.i file in the library also contains + python.swg, perl5.swg, tcl8.swg and so + forth. The typemaps.i file in the library also contains numerous examples. You should look at these files to get a feel for how to define typemaps of your own. Some of the language modules support additional typemaps and further information is available in the individual chapters for each target language. There you may also find - more hands-on practical examples.

    + more hands-on practical examples.


    -

    12 Customization Features

    +

    14 Customization Features

    - + -

    In many cases, it is desirable to change the default wrapping of +

    In many cases, it is desirable to change the default wrapping of particular declarations in an interface. For example, you might want to provide hooks for catching C++ exceptions, add assertions, or provide hints to the underlying code generator. This chapter describes some of these customization techniques. First, a discussion of exception handling is presented. Then, a more general-purpose customization - mechanism known as "features" is described.

    -

    12.1 Exception handling with - %exception

    -

    The %exception directive allows you to define a general - purpose exception handler. For example, you can specify the following:

    -
    -
    + mechanism known as "features" is described.

    +

    14.1 Exception handling with + %exception

    +

    The %exception directive allows you to define a general + purpose exception handler. For example, you can specify the following:

    +
    +
     %exception {
       try {
         $action
    @@ -17733,12 +18659,12 @@ self.

    ... handle error ... } } -
    -
    -

    How the exception is handled depends on the target language, for - example, Python:

    -
    -
    +
    +
    +

    How the exception is handled depends on the target language, for + example, Python:

    +
    +
     %exception {
       try {
         $action
    @@ -17748,31 +18674,31 @@ self.

    SWIG_fail; } } -
    -
    -

    When defined, the code enclosed in braces is inserted directly into - the low-level wrapper functions. The special variable $action - is one of a few -%exception special variables supported and gets replaced with the +

    +
    +

    When defined, the code enclosed in braces is inserted directly into + the low-level wrapper functions. The special variable $action + is one of a few +%exception special variables supported and gets replaced with the actual operation to be performed (a function call, method invocation, attribute access, etc.). An exception handler remains in effect until - it is explicitly deleted. This is done by using either %exception - or %noexception with no code. For example:

    -
    -
    + it is explicitly deleted. This is done by using either %exception
    + or %noexception with no code. For example:

    +
    +
     %exception;   // Deletes any previously defined handler
    -
    -
    -

    Compatibility note: Previous versions of SWIG used a special - directive %except for exception handling. That directive is - deprecated--%exception provides the same functionality, but is - substantially more flexible.

    -

    12.1.1 Handling exceptions in C code

    -

    C has no formal exception handling mechanism so there are several +

    +
    +

    Compatibility note: Previous versions of SWIG used a special + directive %except for exception handling. That directive is + deprecated--%exception provides the same functionality, but is + substantially more flexible.

    +

    14.1.1 Handling exceptions in C code

    +

    C has no formal exception handling mechanism so there are several approaches that might be used. A somewhat common technique is to simply - set a special error code. For example:

    -
    -
    + set a special error code. For example:

    +
    +
     /* File : except.c */
     
     static char error_message[256];
    @@ -17793,12 +18719,12 @@ char *check_exception() {
         return NULL;
     }
     
    -
    -
    -

    To use these functions, functions simply call throw_exception() - to indicate an error occurred. For example :

    -
    -
    +
    +
    +

    To use these functions, functions simply call throw_exception() + to indicate an error occurred. For example :

    +
    +
     double inv(double x) {
       if (x != 0)
         return 1.0/x;
    @@ -17807,12 +18733,12 @@ double inv(double x) {
         return 0;
       }
     }
    -
    -
    -

    To catch the exception, you can write a simple exception handler - such as the following (shown for Perl5) :

    -
    -
    +
    +
    +

    To catch the exception, you can write a simple exception handler + such as the following (shown for Perl5) :

    +
    +
     %exception {
       char *err;
       clear_exception();
    @@ -17821,19 +18747,19 @@ double inv(double x) {
         croak(err);
       }
     }
    -
    -
    -

    In this case, when an error occurs, it is translated into a Perl +

    +
    +

    In this case, when an error occurs, it is translated into a Perl error. Each target language has its own approach to creating a runtime - error/exception in and for Perl it is the croak method shown - above.

    -

    12.1.2 Exception handling with longjmp() -

    -

    Exception handling can also be added to C code using the -<setjmp.h> library. Here is a minimalistic implementation that - relies on the C preprocessor :

    -
    -
    + error/exception in and for Perl it is the croak method shown
    + above.

    +

    14.1.2 Exception handling with longjmp() +

    +

    Exception handling can also be added to C code using the +<setjmp.h> library. Here is a minimalistic implementation that + relies on the C preprocessor :

    +
    +
     /* File : except.c
        Just the declaration of a few global variables we're going to use */
     
    @@ -17857,11 +18783,11 @@ extern int exception_status;
     #define DivisionByZero 2
     #define OutOfMemory    3
     
    -
    -
    -

    Now, within a C program, you can do the following :

    -
    -
    +
    +
    +

    Now, within a C program, you can do the following :

    +
    +
     double inv(double x) {
       if (x)
         return 1.0/x;
    @@ -17869,11 +18795,11 @@ double inv(double x) {
         throw(DivisionByZero);
     }
     
    -
    -
    -

    Finally, to create a SWIG exception handler, write the following :

    -
    -
    +
    +
    +

    Finally, to create a SWIG exception handler, write the following :

    +
    +
     %{
     #include "except.h"
     %}
    @@ -17891,15 +18817,15 @@ double inv(double x) {
         croak("Unknown exception");
       }
     }
    -
    -
    -

    Note: This implementation is only intended to illustrate the general +

    +
    +

    Note: This implementation is only intended to illustrate the general idea. To make it work better, you'll need to modify it to handle nested - try declarations.

    -

    12.1.3 Handling C++ exceptions

    -

    Handling C++ exceptions is also straightforward. For example:

    -
    -
    + try declarations.

    +

    14.1.3 Handling C++ exceptions

    +

    Handling C++ exceptions is also straightforward. For example:

    +
    +
     %exception {
       try {
         $action
    @@ -17914,55 +18840,55 @@ double inv(double x) {
       }
     }
     
    -
    -
    -

    The exception types need to be declared as classes elsewhere, - possibly in a header file :

    -
    -
    +
    +
    +

    The exception types need to be declared as classes elsewhere, + possibly in a header file :

    +
    +
     class RangeError {};
     class DivisionByZero {};
     class OutOfMemory {};
    -
    -
    -

    12.1.4 Exception handlers for - variables

    -

    By default all variables will ignore %exception, so it is +

    +
    +

    14.1.4 Exception handlers for + variables

    +

    By default all variables will ignore %exception, so it is effectively turned off for all variables wrappers. This applies to global variables, member variables and static member variables. The approach is certainly a logical one when wrapping variables in C. However, in C++, it is quite possible for an exception to be thrown - while the variable is being assigned. To ensure %exception is - used when wrapping variables, it needs to be 'turned on' using the -%allowexception feature. Note that %allowexception is just - a macro for %feature("allowexcept"), that is, it is a feature + while the variable is being assigned. To ensure %exception is + used when wrapping variables, it needs to be 'turned on' using the +%allowexception feature. Note that %allowexception is just + a macro for %feature("allowexcept"), that is, it is a feature called "allowexcept". Any variable which has this feature attached to - it, will then use the %exception feature, but of course, only - if there is a %exception attached to the variable in the first - place. The %allowexception feature works like any other - feature and so can be used globally or for selective variables.

    -
    -
    + it, will then use the %exception feature, but of course, only
    + if there is a %exception attached to the variable in the first
    + place. The %allowexception feature works like any other
    + feature and so can be used globally or for selective variables.

    +
    +
     %allowexception;                // turn on globally
     %allowexception Klass::MyVar;   // turn on for a specific variable
     
     %noallowexception Klass::MyVar; // turn off for a specific variable
     %noallowexception;              // turn off globally
    -
    -
    -

    12.1.5 Defining different exception - handlers

    -

    By default, the %exception directive creates an exception +

    +
    +

    14.1.5 Defining different exception + handlers

    +

    By default, the %exception directive creates an exception handler that is used for all wrapper functions that follow it. Unless there is a well-defined (and simple) error handling mechanism in place, defining one universal exception handler may be unwieldy and result in excessive code bloat since the handler is inlined into each wrapper - function.

    -

    To fix this, you can be more selective about how you use the -%exception directive. One approach is to only place it around - critical pieces of code. For example:

    -
    -
    + function.

    +

    To fix this, you can be more selective about how you use the +%exception directive. One approach is to only place it around + critical pieces of code. For example:

    +
    +
     %exception {
       ... your exception handler ...
     }
    @@ -17971,13 +18897,13 @@ class OutOfMemory {};
     %exception;
     
     /* Define non-critical operations that don't throw exceptions */
    -
    -
    -

    More precise control over exception handling can be obtained by +

    +
    +

    More precise control over exception handling can be obtained by attaching an exception handler to specific declaration name. For - example:

    -
    -
    + example:

    +
    +
     %exception allocate {
       try {
         $action
    @@ -17986,16 +18912,16 @@ class OutOfMemory {};
         croak("Out of memory");
       }
     }
    -
    -
    -

    In this case, the exception handler is only attached to declarations +

    +
    +

    In this case, the exception handler is only attached to declarations named "allocate". This would include both global and member functions. - The names supplied to %exception follow the same rules as for -%rename described in the section on -Ambiguity resolution and renaming. For example, if you wanted to - define an exception handler for a specific class, you might write this:

    -
    -
    + The names supplied to %exception follow the same rules as for 
    +%rename described in the section on 
    +Renaming and ambiguity resolution. For example, if you wanted to
    + define an exception handler for a specific class, you might write this:

    +
    +
     %exception Object::allocate {
       try {
         $action
    @@ -18004,15 +18930,15 @@ Ambiguity resolution and renaming. For example, if you wanted to
         croak("Out of memory");
       }
     }
    -
    -
    -

    When a class prefix is supplied, the exception handler is applied to +

    +
    +

    When a class prefix is supplied, the exception handler is applied to the corresponding declaration in the specified class as well as for - identically named functions appearing in derived classes.

    -

    %exception can even be used to pinpoint a precise - declaration when overloading is used. For example:

    -
    -
    + identically named functions appearing in derived classes.

    +

    %exception can even be used to pinpoint a precise + declaration when overloading is used. For example:

    +
    +
     %exception Object::allocate(int) {
       try {
         $action
    @@ -18021,13 +18947,13 @@ Ambiguity resolution and renaming. For example, if you wanted to
         croak("Out of memory");
       }
     }
    -
    -
    -

    Attaching exceptions to specific declarations is a good way to +

    +
    +

    Attaching exceptions to specific declarations is a good way to reduce code bloat. It can also be a useful way to attach exceptions to - specific parts of a header file. For example:

    -
    -
    + specific parts of a header file. For example:

    +
    +
     %module example
     %{
     #include "someheader.h"
    @@ -18054,47 +18980,47 @@ Ambiguity resolution and renaming. For example, if you wanted to
     ...
     // Read a raw header file
     %include "someheader.h"
    -
    -
    -

    Compatibility note: The %exception directive +

    +
    +

    Compatibility note: The %exception directive replaces the functionality provided by the deprecated "except" typemap. The typemap would allow exceptions to be thrown in the target language based on the return type of a function and was intended to be a mechanism for pinpointing specific declarations. However, it never really worked that well and the new %exception directive is much - better.

    -

    12.1.6 Special - variables for %exception

    -

    The %exception directive supports a few special variables which are + better.

    +

    14.1.6 Special + variables for %exception

    +

    The %exception directive supports a few special variables which are placeholders for code substitution. The following table shows the available special variables and details what the special variables are - replaced with.

    - - - - - + + + + + +
    $actionThe actual operation to be performed (a function - call, method invocation, variable access, etc.)
    $nameThe C/C++ symbol name for the function.
    $symnameThe symbol name used internally by SWIG
    $overnameThe extra mangling used in the symbol name for + replaced with.

    + + + + + - - - - - -
    $actionThe actual operation to be performed (a function + call, method invocation, variable access, etc.)
    $nameThe C/C++ symbol name for the function.
    $symnameThe symbol name used internally by SWIG
    $overnameThe extra mangling used in the symbol name for overloaded method. Expands to nothing if the wrapped method is not - overloaded.
    $wrapnameThe language specific wrapper name (usually a - C function name exported from the shared object/dll)
    $declThe fully qualified C/C++ declaration of the - method being wrapped without the return type
    $fulldeclThe fully qualified C/C++ declaration of the - method being wrapped including the return type
    $parentclassnameThe parent class name (if any) for a - method.
    $parentclasssymnameThe target language parent class - name (if any) for a method.
    -

    The special variables are often used in situations where method + overloaded.

    $wrapnameThe language specific wrapper name (usually a + C function name exported from the shared object/dll)
    $declThe fully qualified C/C++ declaration of the + method being wrapped without the return type
    $fulldeclThe fully qualified C/C++ declaration of the + method being wrapped including the return type
    $parentclassnameThe parent class name (if any) for a + method.
    $parentclasssymnameThe target language parent class + name (if any) for a method.
    +

    The special variables are often used in situations where method calls are logged. Exactly which form of the method call needs logging is up to individual requirements, but the example code below shows all the possible expansions, plus how an exception message could be - tailored to show the C++ method declaration:

    -
    -
    + tailored to show the C++ method declaration:

    +
    +
     %exception Special::something {
       log("symname: $symname");
       log("overname: $overname");
    @@ -18105,7 +19031,7 @@ Ambiguity resolution and renaming. For example, if you wanted to
         $action
       } 
       catch (MemoryError) {
    -      croak("Out of memory in $decl");
    +    croak("Out of memory in $decl");
       }
     }
     void log(const char *message);
    @@ -18113,12 +19039,12 @@ struct Special {
       void something(const char *c);
       void something(int i);
     };
    -
    -
    -

    Below shows the expansions for the 1st of the overloaded -something wrapper methods for Perl:

    -
    -
    +
    +
    +

    Below shows the expansions for the 1st of the overloaded +something wrapper methods for Perl:

    +
    +
       log("symname: Special_something");
       log("overname: __SWIG_0");
       log("wrapname: _wrap_Special_something__SWIG_0");
    @@ -18130,18 +19056,18 @@ something wrapper methods for Perl:

    catch (MemoryError) { croak("Out of memory in Special::something(char const *)"); } -
    -
    -

    12.1.7 Using The SWIG exception library -

    -

    The exception.i library file provides support for creating +

    +
    +

    14.1.7 Using The SWIG exception library +

    +

    The exception.i library file provides support for creating language independent exceptions in your interfaces. To use it, simply - put an "%include exception.i" in your interface file. This - provides a function SWIG_exception() that can be used to raise + put an "%include exception.i" in your interface file. This + provides a function SWIG_exception() that can be used to raise common scripting language exceptions in a portable manner. For example - :

    -
    -
    + :

    +
    +
     // Language independent exception handler
     %include exception.i       
     
    @@ -18159,13 +19085,13 @@ something wrapper methods for Perl:

    } } -
    -
    -

    As arguments, SWIG_exception() takes an error type code (an +

    +
    +

    As arguments, SWIG_exception() takes an error type code (an integer) and an error message string. The currently supported error - types are :

    -
    -
    + types are :

    +
    +
     SWIG_UnknownError
     SWIG_IOError
     SWIG_RuntimeError
    @@ -18179,83 +19105,83 @@ SWIG_SystemError
     SWIG_AttributeError
     SWIG_MemoryError
     SWIG_NullReferenceError
    -
    -
    -

    The SWIG_exception() function can also be used in typemaps.

    -

    12.2 Object ownership and - %newobject

    -

    A common problem in some applications is managing proper ownership - of objects. For example, consider a function like this:

    -
    -
    +
    +
    +

    The SWIG_exception() function can also be used in typemaps.

    +

    14.2 Object ownership and + %newobject

    +

    A common problem in some applications is managing proper ownership + of objects. For example, consider a function like this:

    +
    +
     Foo *blah() {
       Foo *f = new Foo();
       return f;
     }
    -
    -
    -

    If you wrap the function blah(), SWIG has no idea that the +

    +
    +

    If you wrap the function blah(), SWIG has no idea that the return value is a newly allocated object. As a result, the resulting extension module may produce a memory leak (SWIG is conservative and will never delete objects unless it knows for certain that the returned - object was newly created).

    -

    To fix this, you can provide an extra hint to the code generator - using the %newobject directive. For example:

    -
    -
    + object was newly created).

    +

    To fix this, you can provide an extra hint to the code generator + using the %newobject directive. For example:

    +
    +
     %newobject blah;
     Foo *blah();
    -
    -
    -

    %newobject works exactly like %rename and -%exception. In other words, you can attach it to class members and - parameterized declarations as before. For example:

    -
    -
    +
    +
    +

    %newobject works exactly like %rename and +%exception. In other words, you can attach it to class members and + parameterized declarations as before. For example:

    +
    +
     %newobject ::blah();                   // Only applies to global blah
     %newobject Object::blah(int, double);  // Only blah(int, double) in Object
     %newobject *::copy;                    // Copy method in all classes
     ...
    -
    -
    -

    When %newobject is supplied, many language modules will +

    +
    +

    When %newobject is supplied, many language modules will arrange to take ownership of the return value. This allows the value to be automatically garbage-collected when it is no longer in use. However, this depends entirely on the target language (a language - module may also choose to ignore the %newobject directive).

    -

    Closely related to %newobject is a special typemap. The + module may also choose to ignore the %newobject directive).

    +

    Closely related to %newobject is a special typemap. The "newfree" typemap can be used to deallocate a newly allocated return - value. It is only available on methods for which %newobject + value. It is only available on methods for which %newobject has been applied and is commonly used to clean-up string results. For - example:

    -
    -
    + example:

    +
    +
     %typemap(newfree) char * "free($1);";
     ...
     %newobject strdup;
     ...
     char *strdup(const char *s);
    -
    -
    -

    In this case, the result of the function is a string in the target +

    +
    +

    In this case, the result of the function is a string in the target language. Since this string is a copy of the original result, the data - returned by strdup() is no longer needed. The "newfree" - typemap in the example simply releases this memory.

    -

    As a complement to the %newobject, from SWIG 1.3.28, you - can use the %delobject directive. For example, if you have two - methods, one to create objects and one to destroy them, you can use:

    -
    -
    + returned by strdup() is no longer needed. The "newfree"
    + typemap in the example simply releases this memory.

    +

    As a complement to the %newobject, from SWIG 1.3.28, you + can use the %delobject directive. For example, if you have two + methods, one to create objects and one to destroy them, you can use:

    +
    +
     %newobject create_foo;
     %delobject destroy_foo;
     ...
     Foo *create_foo();
     void destroy_foo(Foo *foo);
    -
    -
    -

    or in a member method as:

    -
    -
    +
    +
    +

    or in a member method as:

    +
    +
     %delobject Foo::destroy;
     
     class Foo {
    @@ -18265,44 +19191,44 @@ public:
     private:
       ~Foo();
     };
    -
    -
    -

    %delobject instructs SWIG that the first argument passed to +

    +
    +

    %delobject instructs SWIG that the first argument passed to the method will be destroyed, and therefore, the target language should not attempt to deallocate it twice. This is similar to use the DISOWN typemap in the first method argument, and in fact, it also depends on - the target language on implementing the 'disown' mechanism properly.

    -

    The use of %newobject is also integrated with reference - counting and is covered in the C++ - reference counted objects section.

    -

    Compatibility note: Previous versions of SWIG had a special -%new directive. However, unlike %newobject, it only - applied to the next declaration. For example:

    -
    -
    + the target language on implementing the 'disown' mechanism properly.

    +

    The use of %newobject is also integrated with reference + counting and is covered in the C++ + reference counted objects section.

    +

    Compatibility note: Previous versions of SWIG had a special +%new directive. However, unlike %newobject, it only + applied to the next declaration. For example:

    +
    +
     %new char *strdup(const char *s);
    -
    -
    -

    For now this is still supported but is deprecated.

    -

    How to shoot yourself in the foot: The %newobject - directive is not a declaration modifier like the old %new - directive. Don't write code like this:

    -
    -
    +
    +
    +

    For now this is still supported but is deprecated.

    +

    How to shoot yourself in the foot: The %newobject + directive is not a declaration modifier like the old %new + directive. Don't write code like this:

    +
    +
     %newobject
     char *strdup(const char *s);
    -
    -
    -

    The results might not be what you expect.

    -

    12.3 Features and the %feature - directive

    -

    Both %exception and %newobject are examples of a +

    +
    +

    The results might not be what you expect.

    +

    14.3 Features and the %feature + directive

    +

    Both %exception and %newobject are examples of a more general purpose customization mechanism known as "features." A feature is simply a user-definable property that is attached to - specific declarations. Features are attached using the %feature - directive. For example:

    -
    -
    + specific declarations. Features are attached using the %feature
    + directive. For example:

    +
    +
     %feature("except") Object::allocate {
       try {
         $action
    @@ -18313,27 +19239,27 @@ char *strdup(const char *s);
     }
     
     %feature("new", "1") *::copy;
    -
    -
    -

    In fact, the %exception and %newobject directives - are really nothing more than macros involving %feature:

    -
    -
    +
    +
    +

    In fact, the %exception and %newobject directives + are really nothing more than macros involving %feature:

    +
    +
     #define %exception %feature("except")
     #define %newobject %feature("new", "1")
    -
    -
    -

    The name matching rules outlined in the -Ambiguity resolution and renaming section applies to all -%feature directives. In fact the %rename directive is just - a special form of %feature. The matching rules mean that +

    +
    +

    The name matching rules outlined in the +Renaming and ambiguity resolution section applies to all +%feature directives. In fact the %rename directive is just + a special form of %feature. The matching rules mean that features are very flexible and can be applied with pinpoint accuracy to specific declarations if needed. Additionally, if no declaration name is given, a global feature is said to be defined. This feature is then - attached to every declaration that follows. This is how global - exception handlers are defined. For example:

    -
    -
    + attached to every declaration that follows. This is how global
    + exception handlers are defined. For example:

    +
    +
     /* Define a global exception handler */
     %feature("except") {
       try {
    @@ -18343,41 +19269,41 @@ Ambiguity resolution and renaming section applies to all 
     }
     
     ... bunch of declarations ...
    -
    -
    -

    The %feature directive can be used with different syntax. - The following are all equivalent:

    -
    -
    +
    +
    +

    The %feature directive can be used with different syntax. + The following are all equivalent:

    +
    +
     %feature("except") Object::method { $action };
     %feature("except") Object::method %{ $action %};
     %feature("except") Object::method " $action ";
     %feature("except", "$action") Object::method;
    -
    -
    -

    The syntax in the first variation will generate the { } - delimiters used whereas the other variations will not.

    -

    12.3.1 Feature attributes -

    -

    The %feature directive also accepts XML style attributes in +

    +
    +

    The syntax in the first variation will generate the { } + delimiters used whereas the other variations will not.

    +

    14.3.1 Feature attributes +

    +

    The %feature directive also accepts XML style attributes in the same way that typemaps do. Any number of attributes can be - specified. The following is the generic syntax for features:

    -
    -
    + specified. The following is the generic syntax for features:

    +
    +
     %feature("name", "value", attribute1="AttributeValue1") symbol;
     %feature("name", attribute1="AttributeValue1") symbol {value};
     %feature("name", attribute1="AttributeValue1") symbol %{value%};
     %feature("name", attribute1="AttributeValue1") symbol "value";
    -
    -
    -

    More than one attribute can be specified using a comma separated - list. The Java module is an example that uses attributes in -%feature("except"). The throws attribute specifies the +

    +
    +

    More than one attribute can be specified using a comma separated + list. The Java module is an example that uses attributes in +%feature("except"). The throws attribute specifies the name of a Java class to add to a proxy method's throws clause. In the - following example, MyExceptionClass is the name of the Java - class for adding to the throws clause.

    -
    -
    + following example, MyExceptionClass is the name of the Java
    + class for adding to the throws clause.

    +
    +
     %feature("except", throws="MyExceptionClass") Object::method { 
       try {
         $action
    @@ -18385,34 +19311,34 @@ Ambiguity resolution and renaming section applies to all 
         ... code to throw a MyExceptionClass Java exception ...
       }
     };
    -
    -
    -

    Further details can be obtained from the -Java exception handling section.

    -

    12.3.2 Feature flags

    -

    Feature flags are used to enable or disable a particular feature. - Feature flags are a common but simple usage of %feature and - the feature value should be either 1 to enable or 0 - to disable the feature.

    -
    -
    +
    +
    +

    Further details can be obtained from the +Java exception handling section.

    +

    14.3.2 Feature flags

    +

    Feature flags are used to enable or disable a particular feature. + Feature flags are a common but simple usage of %feature and + the feature value should be either 1 to enable or 0 + to disable the feature.

    +
    +
     %feature("featurename")          // enables feature
     %feature("featurename", "1")     // enables feature
     %feature("featurename", "x")     // enables feature
     %feature("featurename", "0")     // disables feature
     %feature("featurename", "")      // clears feature
    -
    -
    -

    Actually any value other than zero will enable the feature. Note - that if the value is omitted completely, the default value becomes -1, thereby enabling the feature. A feature is cleared by specifying - no value, see Clearing - features. The %immutable directive described in the -Creating read-only variables section, is just a macro for -%feature("immutable"), and can be used to demonstrates feature - flags:

    -
    -
    +
    +
    +

    Actually any value other than zero will enable the feature. Note + that if the value is omitted completely, the default value becomes +1, thereby enabling the feature. A feature is cleared by specifying + no value, see Clearing + features. The %immutable directive described in the +Creating read-only variables section, is just a macro for +%feature("immutable"), and can be used to demonstrates feature + flags:

    +
    +
                                     // features are disabled by default
     int red;                        // mutable
     
    @@ -18427,14 +19353,14 @@ int green;                      // immutable
     
     %feature("immutable", "");      // clears the global feature
     int blue;                       // mutable
    -
    -
    -

    Note that features are disabled by default and must be explicitly +

    +
    +

    Note that features are disabled by default and must be explicitly enabled either globally or by specifying a targeted declaration. The above intersperses SWIG directives with C code. Of course you can - target features explicitly, so the above could also be rewritten as:

    -
    -
    + target features explicitly, so the above could also be rewritten as:

    +
    +
     %feature("immutable", "1") orange;
     %feature("immutable", "1") green;
     int red;                        // mutable
    @@ -18442,14 +19368,14 @@ int orange;                     // immutable
     int yellow;                     // mutable
     int green;                      // immutable
     int blue;                       // mutable
    -
    -
    -

    The above approach allows for the C declarations to be separated +

    +
    +

    The above approach allows for the C declarations to be separated from the SWIG directives for when the C declarations are parsed from a C header file. The logic above can of course be inverted and rewritten - as:

    -
    -
    + as:

    +
    +
     %feature("immutable", "1");
     %feature("immutable", "0") red;
     %feature("immutable", "0") yellow;
    @@ -18459,31 +19385,31 @@ int orange;                     // immutable
     int yellow;                     // mutable
     int green;                      // immutable
     int blue;                       // mutable
    -
    -
    -

    As hinted above for %immutable, most feature flags can also +

    +
    +

    As hinted above for %immutable, most feature flags can also be specified via alternative syntax. The alternative syntax is just a - macro in the swig.swg Library file. The following shows the - alternative syntax for the imaginary featurename feature:

    -
    -
    + macro in the swig.swg Library file. The following shows the
    + alternative syntax for the imaginary featurename feature:

    +
    +
     %featurename       // equivalent to %feature("featurename", "1") ie enables feature
     %nofeaturename     // equivalent to %feature("featurename", "0") ie disables feature
     %clearfeaturename  // equivalent to %feature("featurename", "")  ie clears feature
    -
    -
    -

    The concept of clearing features is discussed next.

    -

    12.3.3 Clearing features -

    -

    A feature stays in effect until it is explicitly cleared. A feature - is cleared by supplying a %feature directive with no value. - For example %feature("name", ""). A cleared feature means that +

    +
    +

    The concept of clearing features is discussed next.

    +

    14.3.3 Clearing features +

    +

    A feature stays in effect until it is explicitly cleared. A feature + is cleared by supplying a %feature directive with no value. + For example %feature("name", ""). A cleared feature means that any feature exactly matching any previously defined feature is no longer used in the name matching rules. So if a feature is cleared, it might mean that another name matching rule will apply. To clarify, - let's consider the except feature again (%exception):

    -
    -
    + let's consider the except feature again (%exception):

    +
    +
     // Define global exception handler
     %feature("except") {
       try {
    @@ -18509,110 +19435,110 @@ int blue;                       // mutable
     %feature("except", "") *::clone();
     
     ... final set of class declarations with clone methods ...
    -
    -
    -

    In the above scenario, the initial set of clone methods will log all +

    +
    +

    In the above scenario, the initial set of clone methods will log all method invocations from the target language. This specific feature is cleared for the final set of clone methods. However, these clone methods will still have an exception handler (without logging) as the - next best feature match for them is the global exception handler.

    -

    Note that clearing a feature is not always the same as disabling it. - Clearing the feature above with %feature("except", "") *::clone() - is not the same as specifying %feature("except", "0") *::clone() + next best feature match for them is the global exception handler.

    +

    Note that clearing a feature is not always the same as disabling it. + Clearing the feature above with %feature("except", "") *::clone() + is not the same as specifying %feature("except", "0") *::clone() . The former will disable the feature for clone methods - the feature is still a better match than the global feature. If on the other hand, no global exception handler had been defined at all, then clearing the feature would be the same as disabling it as no other feature would - have matched.

    -

    Note that the feature must match exactly for it to be cleared by any + have matched.

    +

    Note that the feature must match exactly for it to be cleared by any previously defined feature. For example the following attempt to clear - the initial feature will not work:

    -
    -
    + the initial feature will not work:

    +
    +
     %feature("except") clone() { logger.info("$action"); $action }
     %feature("except", "") *::clone();
    -
    -
    -

    but this will:

    -
    -
    +
    +
    +

    but this will:

    +
    +
     %feature("except") clone() { logger.info("$action"); $action }
     %feature("except", "") clone();
    -
    -
    -

    SWIG provides macros for disabling and clearing features. Many of - these can be found in the swig.swg library file. The typical +

    +
    +

    SWIG provides macros for disabling and clearing features. Many of + these can be found in the swig.swg library file. The typical pattern is to define three macros; one to define the feature itself, one to disable the feature and one to clear the feature. The three - macros below show this for the "except" feature:

    -
    -
    + macros below show this for the "except" feature:

    +
    +
     #define %exception      %feature("except")
     #define %noexception    %feature("except", "0")
     #define %clearexception %feature("except", "")
    -
    -
    -

    12.3.4 Features and - default arguments

    -

    SWIG treats methods with default arguments as separate overloaded - methods as detailed in the default - arguments section. Any %feature targeting a method with +

    +
    +

    14.3.4 Features and + default arguments

    +

    SWIG treats methods with default arguments as separate overloaded + methods as detailed in the default + arguments section. Any %feature targeting a method with default arguments will apply to all the extra overloaded methods that SWIG generates if the default arguments are specified in the feature. If the default arguments are not specified in the feature, then the feature will match that exact wrapper method only and not the extra - overloaded methods that SWIG generates. For example:

    -
    -
    + overloaded methods that SWIG generates. For example:

    +
    +
     %feature("except") hello(int i=0, double d=0.0) { ... }
     void hello(int i=0, double d=0.0);
    -
    -
    -

    will apply the feature to all three wrapper methods, that is:

    -
    -
    +
    +
    +

    will apply the feature to all three wrapper methods, that is:

    +
    +
     void hello(int i, double d);
     void hello(int i);
     void hello();
    -
    -
    -

    If the default arguments are not specified in the feature:

    -
    -
    +
    +
    +

    If the default arguments are not specified in the feature:

    +
    +
     %feature("except") hello(int i, double d) { ... }
     void hello(int i=0, double d=0.0);
    -
    -
    -

    then the feature will only apply to this wrapper method:

    -
    -
    +
    +
    +

    then the feature will only apply to this wrapper method:

    +
    +
     void hello(int i, double d);
    -
    -
    -

    and not these wrapper methods:

    -
    -
    +
    +
    +

    and not these wrapper methods:

    +
    +
     void hello(int i);
     void hello();
    -
    -
    -

    If compactdefaultargs are being +

    +
    +

    If compactdefaultargs are being used, then the difference between specifying or not specifying default arguments in a feature is not applicable as just one wrapper is - generated.

    -

    Compatibility note: The different behaviour of features + generated.

    +

    Compatibility note: The different behaviour of features specified with or without default arguments was introduced in SWIG-1.3.23 when the approach to wrapping methods with default - arguments was changed.

    -

    12.3.5 Feature example

    -

    As has been shown earlier, the intended use for the %feature + arguments was changed.

    +

    14.3.5 Feature example

    +

    As has been shown earlier, the intended use for the %feature directive is as a highly flexible customization mechanism that can be used to annotate declarations with additional information for use by specific target language modules. Another example is in the Python - module. You might use %feature to rewrite proxy/shadow class - code as follows:

    -
    -
    + module. You might use %feature to rewrite proxy/shadow class
    + code as follows:

    +
    +
     %module example
     %rename(bar_id) bar(int, double);
     
    @@ -18630,42 +19556,42 @@ public:
       int bar(int x);
       int bar(int x, double y);
     }
    -
    -
    -

    Further details of %feature usage is described in the - documentation for specific language modules.

    +
    +
    +

    Further details of %feature usage is described in the + documentation for specific language modules.


    -

    13 Contracts

    +

    15 Contracts

    - + -

    A common problem that arises when wrapping C libraries is that of +

    A common problem that arises when wrapping C libraries is that of maintaining reliability and checking for errors. The fact of the matter is that many C programs are notorious for not providing error checks. Not only that, when you expose the internals of an application as a library, it often becomes possible to crash it simply by providing bad - inputs or using it in a way that wasn't intended.

    -

    This chapter describes SWIG's support for software contracts. In the + inputs or using it in a way that wasn't intended.

    +

    This chapter describes SWIG's support for software contracts. In the context of SWIG, a contract can be viewed as a runtime constraint that is attached to a declaration. For example, you can easily attach argument checking rules, check the output values of a function and more. When one of the rules is violated by a script, a runtime exception is generated rather than having the program continue to - execute.

    -

    13.1 The %contract directive

    -

    Contracts are added to a declaration using the %contract directive. - Here is a simple example:

    -
    -
    + execute.

    +

    15.1 The %contract directive

    +

    Contracts are added to a declaration using the %contract directive. + Here is a simple example:

    +
    +
     %contract sqrt(double x) {
     require:
       x >= 0;
    @@ -18675,25 +19601,25 @@ ensure:
     
     ...
     double sqrt(double);
    -
    -
    -

    In this case, a contract is being added to the sqrt() - function. The %contract directive must always appear before +

    +
    +

    In this case, a contract is being added to the sqrt() + function. The %contract directive must always appear before the declaration in question. Within the contract there are two - sections, both of which are optional. The require: section + sections, both of which are optional. The require: section specifies conditions that must hold before the function is called. - Typically, this is used to check argument values. The ensure: + Typically, this is used to check argument values. The ensure: section specifies conditions that must hold after the function is called. This is often used to check return values or the state of the program. In both cases, the conditions that must hold must be specified - as boolean expressions.

    -

    In the above example, we're simply making sure that sqrt() returns a + as boolean expressions.

    +

    In the above example, we're simply making sure that sqrt() returns a non-negative number (if it didn't, then it would be broken in some - way).

    -

    Once a contract has been specified, it modifies the behavior of the - resulting module. For example:

    -
    -
    + way).

    +

    Once a contract has been specified, it modifies the behavior of the + resulting module. For example:

    +
    +
     >>> example.sqrt(2)
     1.4142135623730951
     >>> example.sqrt(-2)
    @@ -18701,13 +19627,13 @@ Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     RuntimeError: Contract violation: require: (arg1>=0)
     >>>
    -
    -
    -

    13.2 %contract and classes

    -

    The %contract directive can also be applied to class - methods and constructors. For example:

    -
    -
    +
    +
    +

    15.2 %contract and classes

    +

    The %contract directive can also be applied to class + methods and constructors. For example:

    +
    +
     %contract Foo::bar(int x, int y) {
     require:
       x > 0;
    @@ -18725,24 +19651,24 @@ public:
       Foo(int);
       int bar(int, int);
     };
    -
    -
    -

    The way in which %contract is applied is exactly the same - as the %feature directive. Thus, any contract that you +

    +
    +

    The way in which %contract is applied is exactly the same + as the %feature directive. Thus, any contract that you specified for a base class will also be attached to inherited methods. - For example:

    -
    -
    + For example:

    +
    +
     class Spam : public Foo {
     public:
       int bar(int, int);    // Gets contract defined for Foo::bar(int, int)
     };
    -
    -
    -

    In addition to this, separate contracts can be applied to both the - base class and a derived class. For example:

    -
    -
    +
    +
    +

    In addition to this, separate contracts can be applied to both the + base class and a derived class. For example:

    +
    +
     %contract Foo::bar(int x, int) {
     require:
       x > 0;
    @@ -18762,46 +19688,46 @@ class Spam : public Foo {
     public:
       int bar(int, int);   // Gets Foo::bar and Spam::bar contract
     };
    -
    -
    -

    When more than one contract is applied, the conditions specified in +

    +
    +

    When more than one contract is applied, the conditions specified in a "require:" section are combined together using a logical-AND operation. In other words conditions specified for the base class and conditions specified for the derived class all must hold. In the above - example, this means that both the arguments to Spam::bar must - be positive.

    -

    13.3 Constant aggregation and - %aggregate_check

    -

    Consider an interface file that contains the following code:

    -
    -
    + example, this means that both the arguments to Spam::bar must
    + be positive.

    +

    15.3 Constant aggregation and + %aggregate_check

    +

    Consider an interface file that contains the following code:

    +
    +
     #define  UP     1
     #define  DOWN   2
     #define  RIGHT  3
     #define  LEFT   4
     
     void move(SomeObject *, int direction, int distance);
    -
    -
    -

    One thing you might want to do is impose a constraint on the +

    +
    +

    One thing you might want to do is impose a constraint on the direction parameter to make sure it's one of a few accepted values. To do that, SWIG provides an easy to use macro %aggregate_check() that - works like this:

    -
    -
    + works like this:

    +
    +
     %aggregate_check(int, check_direction, UP, DOWN, LEFT, RIGHT);
    -
    -
    -

    This merely defines a utility function of the form

    -
    -
    +
    +
    +

    This merely defines a utility function of the form

    +
    +
     int check_direction(int x);
    -
    -
    -

    That checks the argument x to see if it is one of the values listed. - This utility function can be used in contracts. For example:

    -
    -
    +
    +
    +

    That checks the argument x to see if it is one of the values listed. + This utility function can be used in contracts. For example:

    +
    +
     %aggregate_check(int, check_direction, UP, DOWN, RIGHT, LEFT);
     
     %contract move(SomeObject *, int direction, in) {
    @@ -18815,12 +19741,12 @@ require:
     #define  LEFT   4
     
     void move(SomeObject *, int direction, int distance);
    -
    -
    -

    Alternatively, it can be used in typemaps and other directives. For - example:

    -
    -
    +
    +
    +

    Alternatively, it can be used in typemaps and other directives. For + example:

    +
    +
     %aggregate_check(int, check_direction, UP, DOWN, RIGHT, LEFT);
     
     %typemap(check) int direction {
    @@ -18833,98 +19759,98 @@ void move(SomeObject *, int direction, int distance);
     #define  LEFT   4
     
     void move(SomeObject *, int direction, int distance);
    -
    -
    -

    Regrettably, there is no automatic way to perform similar checks - with enums values. Maybe in a future release.

    -

    13.4 Notes

    -

    Contract support was implemented by Songyan (Tiger) Feng and first - appeared in SWIG-1.3.20.

    +
    +
    +

    Regrettably, there is no automatic way to perform similar checks + with enums values. Maybe in a future release.

    +

    15.4 Notes

    +

    Contract support was implemented by Songyan (Tiger) Feng and first + appeared in SWIG-1.3.20.


    -

    14 Variable Length Arguments

    +

    16 Variable Length Arguments

    - + -

    (a.k.a, "The horror. The horror.")

    -

    This chapter describes the problem of wrapping functions that take a +

    (a.k.a, "The horror. The horror.")

    +

    This chapter describes the problem of wrapping functions that take a variable number of arguments. For instance, generating wrappers for the - C printf() family of functions.

    -

    This topic is sufficiently advanced to merit its own chapter. In + C printf() family of functions.

    +

    This topic is sufficiently advanced to merit its own chapter. In fact, support for varargs is an often requested feature that was first added in SWIG-1.3.12. Most other wrapper generation tools have wisely - chosen to avoid this issue.

    -

    14.1 Introduction

    -

    Some C and C++ programs may include functions that accept a variable + chosen to avoid this issue.

    +

    16.1 Introduction

    +

    Some C and C++ programs may include functions that accept a variable number of arguments. For example, most programmers are familiar with - functions from the C library such as the following:

    -
    -
    + functions from the C library such as the following:

    +
    +
     int printf(const char *fmt, ...)
     int fprintf(FILE *, const char *fmt, ...);
     int sprintf(char *s, const char *fmt, ...);
    -
    -
    -

    Although there is probably little practical purpose in wrapping +

    +
    +

    Although there is probably little practical purpose in wrapping these specific C library functions in a scripting language (what would be the point?), a library may include its own set of special functions - based on a similar API. For example:

    -
    -
    + based on a similar API. For example:

    +
    +
     int  traceprintf(const char *fmt, ...);
    -
    -
    -

    In this case, you may want to have some kind of access from the - target language.

    -

    Before describing the SWIG implementation, it is important to +

    +
    +

    In this case, you may want to have some kind of access from the + target language.

    +

    Before describing the SWIG implementation, it is important to discuss the common uses of varargs that you are likely to encounter in - real programs. Obviously, there are the printf() style output - functions as shown. Closely related to this would be scanf() + real programs. Obviously, there are the printf() style output + functions as shown. Closely related to this would be scanf() style input functions that accept a format string and a list of pointers into which return values are placed. However, variable length arguments are also sometimes used to write functions that accept a NULL-terminated list of pointers. A good example of this would be a - function like this:

    -
    -
    + function like this:

    +
    +
     int execlp(const char *path, const char *arg1, ...);
     ...
     
     /* Example */
     execlp("ls", "ls", "-l", NULL);
    -
    -
    -

    In addition, varargs is sometimes used to fake default arguments in - older C libraries. For instance, the low level open() system +

    +
    +

    In addition, varargs is sometimes used to fake default arguments in + older C libraries. For instance, the low level open() system call is often declared as a varargs function so that it will accept two - or three arguments:

    -
    -
    + or three arguments:

    +
    +
     int open(const char *path, int oflag, ...);
     ...
     
     /* Examples */
     f = open("foo", O_RDONLY);
     g = open("bar", O_WRONLY | O_CREAT, 0644);
    -
    -
    -

    Finally, to implement a varargs function, recall that you have to - use the C library functions defined in <stdarg.h>. For - example:

    -
    -
    +
    +
    +

    Finally, to implement a varargs function, recall that you have to + use the C library functions defined in <stdarg.h>. For + example:

    +
    +
     List make_list(const char *s, ...) {
       va_list ap;
       List    x;
    @@ -18937,37 +19863,37 @@ List make_list(const char *s, ...) {
       va_end(ap);
       return x;
     }
    -
    -
    -

    14.2 The Problem

    -

    Generating wrappers for a variable length argument function presents +

    +
    +

    16.2 The Problem

    +

    Generating wrappers for a variable length argument function presents a number of special challenges. Although C provides support for implementing functions that receive variable length arguments, there are no functions that can go in the other direction. Specifically, you can't write a function that dynamically creates a list of arguments and - which invokes a varargs function on your behalf.

    -

    Although it is possible to write functions that accept the special - type va_list, this is something entirely different. You can't - take a va_list structure and pass it in place of the variable - length arguments to another varargs function. It just doesn't work.

    -

    The reason this doesn't work has to do with the way that function + which invokes a varargs function on your behalf.

    +

    Although it is possible to write functions that accept the special + type va_list, this is something entirely different. You can't + take a va_list structure and pass it in place of the variable + length arguments to another varargs function. It just doesn't work.

    +

    The reason this doesn't work has to do with the way that function calls get compiled. For example, suppose that your program has a - function call like this:

    -
    -
    + function call like this:

    +
    +
     printf("Hello %s. Your number is %d\n", name, num);
    -
    -
    -

    When the compiler looks at this, it knows that you are calling -printf() with exactly three arguments. Furthermore, it knows that - the number of arguments as well are their types and sizes is never +

    +
    +

    When the compiler looks at this, it knows that you are calling +printf() with exactly three arguments. Furthermore, it knows that + the number of arguments as well are their types and sizes is never going to change during program execution. Therefore, this gets turned to machine code that sets up a three-argument stack frame followed by a - call to printf().

    -

    In contrast, suppose you attempted to make some kind of wrapper - around printf() using code like this:

    -
    -
    + call to printf().

    +

    In contrast, suppose you attempted to make some kind of wrapper + around printf() using code like this:

    +
    +
     int wrap_printf(const char *fmt, ...) {
       va_list ap;
       va_start(ap, fmt);
    @@ -18976,207 +19902,207 @@ int wrap_printf(const char *fmt, ...) {
       ...
       va_end(ap);
     };
    -
    -
    -

    Although this code might compile, it won't do what you expect. This - is because the call to printf() is compiled as a procedure +

    +
    +

    Although this code might compile, it won't do what you expect. This + is because the call to printf() is compiled as a procedure call involving only two arguments. However, clearly a two-argument configuration of the call stack is completely wrong if your intent is - to pass an arbitrary number of arguments to the real printf(). - Needless to say, it won't work.

    -

    Unfortunately, the situation just described is exactly the problem + to pass an arbitrary number of arguments to the real printf(). + Needless to say, it won't work.

    +

    Unfortunately, the situation just described is exactly the problem faced by wrapper generation tools. In general, the number of passed arguments will not be known until run-time. To make matters even worse, you won't know the types and sizes of arguments until run-time as well. Needless to say, there is no obvious way to make the C compiler generate code for a function call involving an unknown number of - arguments of unknown types.

    -

    In theory, it is possible to write a wrapper that does the + arguments of unknown types.

    +

    In theory, it is possible to write a wrapper that does the right thing. However, this involves knowing the underlying ABI for the target platform and language as well as writing special purpose code that manually constructed the call stack before making a procedure call. Unfortunately, both of these tasks require the use of inline assembly code. Clearly, that's the kind of solution you would much - rather avoid.

    -

    With this nastiness in mind, SWIG provides a number of solutions to + rather avoid.

    +

    With this nastiness in mind, SWIG provides a number of solutions to the varargs wrapping problem. Most of these solutions are compromises that provide limited varargs support without having to resort to assembly language. However, SWIG can also support real varargs wrapping (with stack-frame manipulation) if you are willing to get hands dirty. - Keep reading.

    -

    14.3 Default varargs support

    -

    When variable length arguments appear in an interface, the default + Keep reading.

    +

    16.3 Default varargs support

    +

    When variable length arguments appear in an interface, the default behavior is to drop the variable argument list entirely, replacing them - with a single NULL pointer. For example, if you had this function,

    -
    -
    + with a single NULL pointer. For example, if you had this function,

    +
    +
     void traceprintf(const char *fmt, ...);
    -
    -
    -

    it would be wrapped as if it had been declared as follows:

    -
    -
    +
    +
    +

    it would be wrapped as if it had been declared as follows:

    +
    +
     void traceprintf(const char *fmt);
    -
    -
    -

    When the function is called inside the wrappers, it is called as - follows:

    -
    -
    +
    +
    +

    When the function is called inside the wrappers, it is called as + follows:

    +
    +
     traceprintf(arg1, NULL);
    -
    -
    -

    Arguably, this approach seems to defeat the whole point of variable +

    +
    +

    Arguably, this approach seems to defeat the whole point of variable length arguments. However, this actually provides enough support for many simple kinds of varargs functions to still be useful, however it does come with a caveat. For instance, you could make function calls - like this (in Python):

    -
    -
    + like this (in Python):

    +
    +
     >>> traceprintf("Hello World")
     >>> traceprintf("Hello %s. Your number is %d\n" % (name, num))
     >>> traceprintf("Your result is 90%%.")
    -
    -
    -

    Notice how string formatting is being done in Python instead of C. +

    +
    +

    Notice how string formatting is being done in Python instead of C. The caveat is the strings passed must be safe to use in C though. For example if name was to contain a "%" it should be double escaped in - order to avoid unpredictable behaviour:

    -
    -
    + order to avoid unpredictable behaviour:

    +
    +
     >>> traceprintf("Your result is 90%.\n")  # unpredictable behaviour
     >>> traceprintf("Your result is 90%%.\n") # good
    -
    -
    -

    Read on for further solutions.

    -

    14.4 Argument replacement using %varargs

    -

    Instead of dropping the variable length arguments, an alternative - approach is to replace (...) with a set of suitable arguments. - SWIG provides a special %varargs directive that can be used to - do this. For example,

    -
    -
    +
    +
    +

    Read on for further solutions.

    +

    16.4 Argument replacement using %varargs

    +

    Instead of dropping the variable length arguments, an alternative + approach is to replace (...) with a set of suitable arguments. + SWIG provides a special %varargs directive that can be used to + do this. For example,

    +
    +
     %varargs(int mode = 0) open;
     ...
     int open(const char *path, int oflags, ...);
    -
    -
    -

    is equivalent to this:

    -
    -
    +
    +
    +

    is equivalent to this:

    +
    +
     int open(const char *path, int oflags, int mode = 0);
    -
    -
    -

    In this case, %varargs is simply providing more specific +

    +
    +

    In this case, %varargs is simply providing more specific information about the extra arguments that might be passed to a - function. If the arguments to a varargs function are of uniform type, -%varargs can also accept a numerical argument count as follows:

    -
    -
    + function. If the arguments to a varargs function are of uniform type, 
    +%varargs can also accept a numerical argument count as follows:

    +
    +
     %varargs(3, char *str = NULL) execlp;
     ...
     int execlp(const char *path, const char *arg, ...);
    -
    -
    -

    and is effectively seen as:

    -
    -
    +
    +
    +

    and is effectively seen as:

    +
    +
     int execlp(const char *path, const char *arg, 
                char *str1 = NULL, 
                char *str2 = NULL, 
                char *str3 = NULL);
    -
    -
    -

    This would wrap execlp() as a function that accepted up to +

    +
    +

    This would wrap execlp() as a function that accepted up to 3 optional arguments. Depending on the application, this may be more - than enough for practical purposes.

    -

    The handling of default arguments - can be changed via the compactdefaultargs feature. If this - feature is used, for example

    -
    -
    + than enough for practical purposes.

    +

    The handling of default arguments + can be changed via the compactdefaultargs feature. If this + feature is used, for example

    +
    +
     %feature("compactdefaultargs") execlp;
     %varargs(3, char *str = NULL) execlp;
     ...
     int execlp(const char *path, const char *arg, ...);
    -
    -
    -

    a call from the target language which does not provide the maximum - number of arguments, such as, execlp("a", "b", "c") will - generate C code which includes the missing default values, that is, -execlp("a", "b", "c", NULL, NULL). If compactdefaultargs - is not used, then the generated code will be execlp("a", "b", "c") +

    +
    +

    a call from the target language which does not provide the maximum + number of arguments, such as, execlp("a", "b", "c") will + generate C code which includes the missing default values, that is, +execlp("a", "b", "c", NULL, NULL). If compactdefaultargs + is not used, then the generated code will be execlp("a", "b", "c") . The former is useful for helping providing a sentinel to terminate the argument list. However, this is not guaranteed, for example when a user - passes a non-NULL value for all the parameters. When using -compactdefaultargs it is possible to guarantee the NULL sentinel is - passed through the, numinputs=0 'in' - typemap attribute, naming the last parameter. For example,

    -
    -
    + passes a non-NULL value for all the parameters. When using 
    +compactdefaultargs it is possible to guarantee the NULL sentinel is
    + passed through the, numinputs=0 'in'
    + typemap attribute, naming the last parameter. For example,

    +
    +
     %feature("compactdefaultargs") execlp;
     %varargs(3, char *str = NULL) execlp;
     %typemap(in, numinputs=0) char *str3 ""
     ...
     int execlp(const char *path, const char *arg, ...);
    -
    -
    -

    Note that str3 is the name of the last argument, as we have - used %varargs with 3. Now execlp("a", "b", "c", "d", "e") +

    +
    +

    Note that str3 is the name of the last argument, as we have + used %varargs with 3. Now execlp("a", "b", "c", "d", "e") will result in an error as one too many arguments has been passed, as now only 2 additional 'str' arguments can be passed with the 3rd one - always using the specified default NULL.

    -

    Argument replacement is most appropriate in cases where the types of + always using the specified default NULL.

    +

    Argument replacement is most appropriate in cases where the types of the extra arguments are uniform and the maximum number of arguments are known. Argument replacement is not as useful when working with - functions that accept mixed argument types such as printf(). + functions that accept mixed argument types such as printf(). Providing general purpose wrappers to such functions presents special - problems (covered shortly).

    -

    14.5 Varargs and typemaps

    -

    Variable length arguments may be used in typemap specifications. For - example:

    -
    -
    + problems (covered shortly).

    +

    16.5 Varargs and typemaps

    +

    Variable length arguments may be used in typemap specifications. For + example:

    +
    +
     %typemap(in) (...) {
    -    // Get variable length arguments (somehow)
    -    ...
    +  // Get variable length arguments (somehow)
    +  ...
     }
     
     %typemap(in) (const char *fmt, ...) {
         // Multi-argument typemap
     }
    -
    -
    -

    However, this immediately raises the question of what "type" is - actually used to represent (...). For lack of a better - alternative, the type of (...) is set to void *. +

    +
    +

    However, this immediately raises the question of what "type" is + actually used to represent (...). For lack of a better + alternative, the type of (...) is set to void *. Since there is no way to dynamically pass arguments to a varargs - function (as previously described), the void * argument value + function (as previously described), the void * argument value is intended to serve as a place holder for storing some kind of information about the extra arguments (if any). In addition, the - default behavior of SWIG is to pass the void * value as an + default behavior of SWIG is to pass the void * value as an argument to the function. Therefore, you could use the pointer to hold - a valid argument value if you wanted.

    -

    To illustrate, here is a safer version of wrapping printf() - in Python:

    -
    -
    + a valid argument value if you wanted.

    +

    To illustrate, here is a safer version of wrapping printf() + in Python:

    +
    +
     %typemap(in) (const char *fmt, ...) {
         $1 = "%s";                                /* Fix format string to %s */
         $2 = (void *) PyString_AsString($input);  /* Get string argument */
     };
     ...
     int printf(const char *fmt, ...);
    -
    -
    -

    In this example, the format string is implicitly set to "%s" +

    +
    +

    In this example, the format string is implicitly set to "%s" . This prevents a program from passing a bogus format string to the - extension. Then, the passed input object is decoded and placed in the -void * argument defined for the (...) argument. When the + extension. Then, the passed input object is decoded and placed in the +void * argument defined for the (...) argument. When the actual function call is made, the underlying wrapper code will look - roughly like this:

    -
    -
    + roughly like this:

    +
    +
     wrap_printf() {
       char *arg1;
       void *arg2;
    @@ -19188,25 +20114,25 @@ wrap_printf() {
       result = printf(arg1, arg2);
       ...
     }
    -
    -
    -

    Notice how both arguments are passed to the function and it does - what you would expect.

    -

    The next example illustrates a more advanced kind of varargs +

    +
    +

    Notice how both arguments are passed to the function and it does + what you would expect.

    +

    The next example illustrates a more advanced kind of varargs typemap. Disclaimer: this requires special support in the target language module and is not guaranteed to work with all SWIG modules at this time. It also starts to illustrate some of the more fundamental - problems with supporting varargs in more generality.

    -

    If a typemap is defined for any form of (...), many SWIG + problems with supporting varargs in more generality.

    +

    If a typemap is defined for any form of (...), many SWIG modules will generate wrappers that accept a variable number of arguments as input and will make these arguments available in some form. The precise details of this depends on the language module being used (consult the appropriate chapter for more details). However, - suppose that you wanted to create a Python wrapper for the execlp() - function shown earlier. To do this using a typemap instead of using -%varargs, you might first write a typemap like this:

    -
    -
    + suppose that you wanted to create a Python wrapper for the execlp()
    + function shown earlier. To do this using a typemap instead of using 
    +%varargs, you might first write a typemap like this:

    +
    +
     %typemap(in) (...)(char *vargs[10]) {
       int i;
       int argc;
    @@ -19226,8 +20152,11 @@ wrap_printf() {
           SWIG_fail;
         }
         pystr = PyUnicode_AsUTF8String(pyobj);
    +    if (!pystr) {
    +      SWIG_fail;
    +    }
         str = strdup(PyBytes_AsString(pystr));
    -    Py_XDECREF(pystr);
    +    Py_DECREF(pystr);
     %#else  
         if (!PyString_Check(pyobj)) {
           PyErr_SetString(PyExc_ValueError, "Expected a string");
    @@ -19248,22 +20177,22 @@ wrap_printf() {
       }
     %#endif
     }
    -
    -
    -

    In the 'in' typemap, the special variable varargs is a +

    +
    +

    In the 'in' typemap, the special variable varargs is a tuple holding all of the extra arguments passed (this is specific to the Python module). The typemap then pulls this apart and sticks the - values into the array of strings args. Then, the array is - assigned to $1 (recall that this is the void * - variable corresponding to (...)). However, this assignment is + values into the array of strings args. Then, the array is + assigned to $1 (recall that this is the void * + variable corresponding to (...)). However, this assignment is only half of the picture----clearly this alone is not enough to make the function work. The 'freearg' typemap cleans up memory allocated in - the 'in' typemap; this code is generated to be called after the -execlp function is called. To patch everything up, you have to - rewrite the underlying action code using the %feature - directive like this:

    -
    -
    + the 'in' typemap; this code is generated to be called after the 
    +execlp function is called. To patch everything up, you have to
    + rewrite the underlying action code using the %feature
    + directive like this:

    +
    +
     %feature("action") execlp {
       char **vargs = (char **) arg3;
       result = execlp(arg1, arg2, vargs[0], vargs[1], vargs[2], vargs[3], vargs[4],
    @@ -19271,33 +20200,33 @@ execlp function is called. To patch everything up, you have to
     }
     
     int execlp(const char *path, const char *arg, ...);
    -
    -
    -

    This patches everything up and creates a function that more or less +

    +
    +

    This patches everything up and creates a function that more or less works. However, don't try explaining this to your coworkers unless you know for certain that they've had several cups of coffee. If you really want to elevate your guru status and increase your job security, - continue to the next section.

    -

    14.6 Varargs wrapping with libffi

    -

    All of the previous examples have relied on features of SWIG that + continue to the next section.

    +

    16.6 Varargs wrapping with libffi

    +

    All of the previous examples have relied on features of SWIG that are portable and which don't rely upon any low-level machine-level details. In many ways, they have all dodged the real issue of variable length arguments by recasting a varargs function into some weaker variation with a fixed number of arguments of known types. In many cases, this works perfectly fine. However, if you want more generality - than this, you need to bring out some bigger guns.

    -

    One way to do this is to use a special purpose library such as - libffi ( -http://www.sourceware.org/libffi/). libffi is a library that allows + than this, you need to bring out some bigger guns.

    +

    One way to do this is to use a special purpose library such as + libffi ( +http://www.sourceware.org/libffi/). libffi is a library that allows you to dynamically construct call-stacks and invoke procedures in a relatively platform independent manner. Details about the library can - be found in the libffi distribution and are not repeated here.

    -

    To illustrate the use of libffi, suppose that you really - wanted to create a wrapper for execlp() that accepted any + be found in the libffi distribution and are not repeated here.

    +

    To illustrate the use of libffi, suppose that you really + wanted to create a wrapper for execlp() that accepted any number of arguments. To do this, you might make a few adjustments to - the previous example. For example:

    -
    -
    + the previous example. For example:

    +
    +
     /* Take an arbitrary number of extra arguments and place into an array
        of strings */
     
    @@ -19365,18 +20294,18 @@ http://www.sourceware.org/libffi/). libffi is a library that allows
     
     /* Declare the function. Whew! */
     int execlp(const char *path, const char *arg1, ...);
    -
    -
    -

    Looking at this example, you may start to wonder if SWIG is making +

    +
    +

    Looking at this example, you may start to wonder if SWIG is making life any easier. Given the amount of code involved, you might also wonder why you didn't just write a hand-crafted wrapper! Either that or you're wondering "why in the hell am I trying to wrap this varargs function in the first place?!?" Obviously, those are questions you'll - have to answer for yourself.

    -

    As a more extreme example of libffi, here is some code that attempts - to wrap printf(),

    -
    -
    + have to answer for yourself.

    +

    As a more extreme example of libffi, here is some code that attempts + to wrap printf(),

    +
    +
     /* A wrapper for printf() using libffi */
     
     %{
    @@ -19477,58 +20406,58 @@ int execlp(const char *path, const char *arg1, ...);
     
     /* The function */
     int printf(const char *fmt, ...);
    -
    -
    -

    Much to your amazement, it even seems to work if you try it:

    -
    -
    +
    +
    +

    Much to your amazement, it even seems to work if you try it:

    +
    +
     >>> import example
     >>> example.printf("Grade: %s   %d/60 = %0.2f%%\n", "Dave", 47, 47.0*100/60)
     Grade: Dave   47/60 = 78.33%
     >>>
    -
    -
    -

    Of course, there are still some limitations to consider:

    -
    -
    +
    +
    +

    Of course, there are still some limitations to consider:

    +
    +
     >>> example.printf("la de da de da %s", 42)
     Segmentation fault (core dumped)
    -
    -
    -

    And, on this note, we leave further exploration of libffi to the +

    +
    +

    And, on this note, we leave further exploration of libffi to the reader as an exercise. Although Python has been used as an example, most of the techniques in this section can be extrapolated to other language modules with a bit of work. The only details you need to know is how the extra arguments are accessed in each target language. For - example, in the Python module, we used the special varargs + example, in the Python module, we used the special varargs variable to get these arguments. Modules such as Tcl8 and Perl5 simply provide an argument number for the first extra argument. This can be used to index into an array of passed arguments to get values. Please - consult the chapter on each language module for more details.

    -

    14.7 Wrapping of va_list

    -

    Closely related to variable length argument wrapping, you may - encounter functions that accept a parameter of type va_list. - For example:

    -
    -
    + consult the chapter on each language module for more details.

    +

    16.7 Wrapping of va_list

    +

    Closely related to variable length argument wrapping, you may + encounter functions that accept a parameter of type va_list. + For example:

    +
    +
     int vprintf(const char *fmt, va_list ap);
    -
    -
    -

    As far as we know, there is no obvious way to wrap these functions +

    +
    +

    As far as we know, there is no obvious way to wrap these functions with SWIG. This is because there is no documented way to assemble the proper va_list structure (there are no C library functions to do it and - the contents of va_list are opaque). Not only that, the contents of a -va_list structure are closely tied to the underlying call-stack. - It's not clear that exporting a va_list would have any use or - that it would work at all.

    -

    A workaround can be implemented by writing a simple varargs C + the contents of va_list are opaque). Not only that, the contents of a +va_list structure are closely tied to the underlying call-stack. + It's not clear that exporting a va_list would have any use or + that it would work at all.

    +

    A workaround can be implemented by writing a simple varargs C wrapper and then using the techniques discussed earlier in this chapter - for varargs. Below is a simple wrapper for vprintf renamed so - that it can still be called as vprintf from your target - language. The %varargs used in the example restricts the - function to taking one string argument.

    -
    -
    + for varargs. Below is a simple wrapper for vprintf renamed so
    + that it can still be called as vprintf from your target
    + language. The %varargs used in the example restricts the
    + function to taking one string argument.

    +
    +
     %{
     int vprintf(const char *fmt, va_list ap);
     %}
    @@ -19547,16 +20476,16 @@ int my_vprintf(const char *fmt, ...) {
       return result;
     }
     %}
    -
    -
    -

    14.8 C++ Issues

    -

    Wrapping of C++ member functions that accept a variable number of +

    +
    +

    16.8 C++ Issues

    +

    Wrapping of C++ member functions that accept a variable number of arguments presents a number of challenges. By far, the easiest way to - handle this is to use the %varargs directive. This is portable - and it fully supports classes much like the %rename directive. - For example:

    -
    -
    + handle this is to use the %varargs directive. This is portable
    + and it fully supports classes much like the %rename directive.
    + For example:

    +
    +
     %varargs (10, char * = NULL) Foo::bar;
     
     class Foo {
    @@ -19568,14 +20497,14 @@ class Spam: public Foo {
     public:
       virtual void bar(char *arg, ...);   // gets varargs above
     };
    -
    -
    -

    %varargs also works with constructors, operators, and any - other C++ programming construct that accepts variable arguments.

    -

    Doing anything more advanced than this is likely to involve a +

    +
    +

    %varargs also works with constructors, operators, and any + other C++ programming construct that accepts variable arguments.

    +

    Doing anything more advanced than this is likely to involve a serious world of pain. In order to use a library like libffi, you will need to know the underlying calling conventions and details of the C++ - ABI. For instance, the details of how this is passed to member + ABI. For instance, the details of how this is passed to member functions as well as any hidden arguments that might be used to pass additional information. These details are implementation specific and may differ between compilers and even different versions of the same @@ -19583,31 +20512,31 @@ public: complicated if it is a virtual method. In this case, invocation might require a table lookup to obtain the proper function address (although you might be able to obtain an address by casting a bound pointer to a - pointer to function as described in the C++ ARM section 18.3.4).

    -

    If you do decide to change the underlying action code, be aware that - SWIG always places the this pointer in arg1. Other - arguments are placed in arg2, arg3, and so forth. For - example:

    -
    -
    + pointer to function as described in the C++ ARM section 18.3.4).

    +

    If you do decide to change the underlying action code, be aware that + SWIG always places the this pointer in arg1. Other + arguments are placed in arg2, arg3, and so forth. For + example:

    +
    +
     %feature("action") Foo::bar {
       ...
       result = arg1->bar(arg2, arg3, etc.);
       ...
     }
    -
    -
    -

    Given the potential to shoot yourself in the foot, it is probably +

    +
    +

    Given the potential to shoot yourself in the foot, it is probably easier to reconsider your design or to provide an alternative interface using a helper function than it is to create a fully general wrapper to - a varargs C++ member function.

    -

    14.9 Discussion

    -

    This chapter has provided a number of techniques that can be used to + a varargs C++ member function.

    +

    16.9 Discussion

    +

    This chapter has provided a number of techniques that can be used to address the problem of variable length argument wrapping. If you care - about portability and ease of use, the %varargs directive is + about portability and ease of use, the %varargs directive is probably the easiest way to tackle the problem. However, using - typemaps, it is possible to do some very advanced kinds of wrapping.

    -

    One point of discussion concerns the structure of the libffi + typemaps, it is possible to do some very advanced kinds of wrapping.

    +

    One point of discussion concerns the structure of the libffi examples in the previous section. Looking at that code, it is not at all clear that this is the easiest way to solve the problem. However, there are a number of subtle aspects of the solution to @@ -19615,9 +20544,9 @@ public: decomposed. First, the example is structured in a way that tries to maintain separation between wrapper-specific information and the declaration of the function itself. The idea here is that you might - structure your interface like this:

    -
    -
    + structure your interface like this:

    +
    +
     %typemap(const char *fmt, ...) {
       ...
     }
    @@ -19627,18 +20556,18 @@ public:
     
     /* Include some header file with traceprintf in it */
     %include "someheader.h"
    -
    -
    -

    Second, careful scrutiny will reveal that the typemaps involving -(...) have nothing whatsoever to do with the libffi library. In +

    +
    +

    Second, careful scrutiny will reveal that the typemaps involving +(...) have nothing whatsoever to do with the libffi library. In fact, they are generic with respect to the way in which the function is actually called. This decoupling means that it will be much easier to consider other library alternatives for making the function call. For instance, if libffi wasn't supported on a certain platform, you might be able to use something else instead. You could use conditional - compilation to control this:

    -
    -
    + compilation to control this:

    +
    +
     #ifdef USE_LIBFFI
     %feature("action") printf {
       ...
    @@ -19649,13 +20578,13 @@ public:
     ...
     }
     #endif
    -
    -
    -

    Finally, even though you might be inclined to just write a +

    +
    +

    Finally, even though you might be inclined to just write a hand-written wrapper for varargs functions, the techniques used in the previous section have the advantage of being compatible with all other - features of SWIG such as exception handling.

    -

    As a final word, some C programmers seem to have the assumption that + features of SWIG such as exception handling.

    +

    As a final word, some C programmers seem to have the assumption that the wrapping of variable length argument functions is an easily solved problem. However, this section has hopefully dispelled some of these myths. All things being equal, you are better off avoiding variable @@ -19666,87 +20595,1126 @@ public: Ritchie and make sure you fully understand the parameter passing conventions used for varargs. Also, be aware of the platform dependencies and reliability issues that this will introduce. Good - luck.

    + luck.


    -

    15 Warning Messages

    +

    17 SWIG and Doxygen Translation

    - + -

    15.1 Introduction

    -

    During compilation, SWIG may generate a variety of warning messages. - For example:

    -
    -
    +

    This chapter describes SWIG's support for translating Doxygen + comments found in interface and header files into a target language's + normal documentation language. Currently only Javadoc and Pydoc is + supported.

    +

    17.1 Doxygen translation + overview

    +

    The Doxygen Translation module of SWIG adds an extra layer of + functionality to SWIG, allowing automated translation of +Doxygen formatted comments from input files into a documentation + language more suited for the target language. Currently this module + only translates into Javadoc and Pydoc for the SWIG Java and Python + modules. Other extensions could be added at a later date. The Doxygen + Translation module originally started as a +Google Summer of Code proposal from Summer 2008.

    +

    17.2 Preparations

    +

    To make use of the comment translation system, your documentation + comments must be in properly formatted +Doxygen. Doxygen comments can be present in your main SWIG interface + file or any header file that it imports. You are advised to be validate + that your comments compile properly with Doxygen before you try to + translate them. Doxygen itself is a more comprehensive tool and can + provide you better feedback for correcting any syntax errors that may + be present. Please look at Doxygen's + Documenting the code for the full comment format specifications. + However, SWIG's Doxygen parser will still report many errors and + warnings found in comments (like unterminated strings or missing ending + tags).

    +

    Currently, the whole subset of Doxygen comment styles is supported + (See Documenting + the code). Here they are:

    +
    +
    +/**
    + * Javadoc style comment, multiline
    + */
    +/*!
    + * QT-style comment, multiline
    + */
    +/**
    + Any of the above, but without intermediate *'s
    + */
    +/// Single-line comment
    +//! Another single-line comment
    +
    +
    +

    Also any of the above with '<' added after comment-starting symbol, + like /**<, /*!<, ///<, or //!< will be treated as a + post-comment and will be assigned to the code before the comment. Any + number of '*' or '/' within a Doxygen comment is considered to be a + separator and is not included in the final comment, so you may safely + use comments like /*********/ or //////////.

    +

    Please note, as SWIG parses the input file by itself with strict + grammar, there is only a limited support for various cases of comment + placement in the file.

    +

    Comments can be placed before C/C++ expressions on separate lines:

    +
    +
    +/**
    + * Some comment
    + */
    +void someOtherFunction();
    +/**
    + * Some comment
    + */
    +void someFunction();
    +
    +class Shape {
    +  /*
    +   * Calculate the area in cm^2
    +   */
    +  int getArea();
    +}
    +
    +
    +

    After C/C++ expressions at the end of the line:

    +
    +
    +int someVariable = 9; ///< This is a var holding magic number 9
    +void doNothing(); ///< This does nothing, nop
    +
    +
    +

    and in some special cases, like function parameter comments:

    +
    +
    +void someFunction(
    +         int a ///< Some parameter 
    +     );
    +
    +
    +

    or enum element comments:

    +
    +
    +enum E_NUMBERS
    +{
    +    EN_ZERO, ///< The first enum item, gets zero as it's value
    +    EN_ONE, ///< The second, EN_ONE=1
    +    EN_THREE
    +};
    +
    +
    +

    Currently only comments directly before or after the code items are + supported. Doxygen also supports comments containing structural + commands, where the comments for a code item are not put directly + before or after the code item. These structural commands are stripped + out by SWIG and are not assigned to anything.

    +

    17.2.1 Enabling Doxygen translation +

    +

    Doxygen comments translation is disabled by default and needs to be + explicitly enabled using the command line -doxygen option for + the languages that do support it (currently Java and Python).

    +

    17.2.2 Doxygen-specific %feature + directives

    +

    Translation of Doxygen comments is influenced by the following +%feature directives:

    +

    17.2.2.1 doxygen:notranslate

    +

    Turns off translation of Doxygen comments to the target language + syntax: the original comment will be copied to the output unchanged. + This is useful if you want to use Doxygen itself to generate + documentation for the target language instead of the corresponding + language tool (javadoc, sphinx, ...).

    +

    17.2.2.2 doxygen:alias:<command-name>

    +

    Specify an alias for a Doxygen command with the given name. This can + be useful for custom Doxygen commands which can be defined using +ALIASES option for Doxygen itself but which are unknown to SWIG. +"command-name" is the name of the command in the Doxyfile, e.g. if + it contains

    +
    +
    +ALIASES = "sideeffect=\par Side Effects:\n"
    +
    +
    +

    Then you could also specify the same expansion for SWIG with:

    +
    +
    +%feature("doxygen:alias:sideeffect") "\par Side Effects:\n"
    +
    +
    +

    Please note that command arguments are not currently supported with + this feature.

    +

    Notice that it is perfectly possible and potentially useful to + define the alias expansion differently depending on the target + language, e.g. with

    +
    +
    +#ifdef SWIGJAVA
    +%feature("doxygen:alias:not_for_java") "This functionality is not available for Java"
    +#else
    +%feature("doxygen:alias:not_for_java") ""
    +#endif
    +
    +
    +

    you could use @not_for_java in the documentation comments + of all functions which can't, for whatever reason, be currently exposed + in Java wrappers of the C++ API.

    +

    17.2.2.3 doxygen:ignore:<command-name>

    +

    This feature makes it possible to just ignore an unknown Doxygen + command, instead of replacing it with the predefined text that +doxygen:alias does. For example, you could use

    +
    +
    +%feature("doxygen:ignore:transferfull") Fantastic();
    +/**
    +    A fantastic function.
    +
    +    @transferfull Command ignored, but anything here is still included.
    + */
    +int * Fantastic();
    +
    +
    +

    if you use a custom Doxygen transferfull command to + indicate that the return value ownership is transferred to the caller, + as this information doesn't make much sense for the other languages + without explicit ownership management.

    +

    Doxygen syntax is rather rich and, in addition to simple commands + such as @transferfull, it is also possible to define commands + with arguments. As explained in +Doxygen documentation, the arguments can have a range of a single + word, everything until the end of line or everything until the end of + the next paragraph. Currently, only the "end of line" case is supported + using the range="line" argument of the feature directive:

    +
    +
    +// Ignore occurrences of
    +//
    +//    @compileroptions Some special C++ compiler options.
    +//
    +// in Doxygen comments as C++ options are not interesting for the target language
    +// developers.
    +%feature("doxygen:ignore:compileroptions", range="line") Amazing();
    +
    +/**
    +    An amazing function.
    +
    +    @compileroptions This function must be compiled with /EHa when using MSVC.
    + */
    +void Amazing();
    +
    +
    +
    +

    In addition, it is also possible to have custom pairs of begin/end + tags, similarly to the standard Doxygen @code/@endcode, for + example. Such tags can also be ignored using the special value of +range starting with end to indicate that the range is an + interval, for example:

    +
    +
    +%feature("doxygen:ignore:forcpponly", range="end"); // same as "end:endforcpponly"
    +/**
    +    An incredible function.
    +
    +    @forcpponly
    +    This is C++-specific.
    +    @endforcpponly
    + */
    +void Incredible();
    +
    +
    +

    would ignore everything between @forcpponly and +@endforcpponly commands in Doxygen comments. By default, the name + of the end command is the same as of the start one with "end" prefix, + following Doxygen conventions, but this can be overridden by providing + the end command name after the colon.

    +

    This example shows how custom tags can be used to bracket anything + specific to C++ and prevent it from appearing in the target language + documentation. Conversely, another pair of custom tags could be used to + put target language specific information in the C++ comments. In this + case, only the custom tags themselves should be ignored, but their + contents should be parsed as usual and contents="parse" can be + used for this:

    +
    +
    +%feature("doxygen:ignore:beginPythonOnly", range="end:endPythonOnly", contents="parse");
    +/**
    +    A splendid function.
    +
    +    @beginPythonOnly
    +    This is specific to @b Python.
    +    @endPythonOnly
    + */
    +void Splendid();
    +
    +
    +
    +

    Putting everything together, if these directives are in effect:

    +
    +
    +%feature("doxygen:ignore:transferfull");
    +%feature("doxygen:ignore:compileroptions", range="line");
    +%feature("doxygen:ignore:forcpponly", range="end");
    +%feature("doxygen:ignore:beginPythonOnly", range="end:endPythonOnly", contents="parse");
    +
    +
    +

    then the following C++ Doxygen comment:

    +
    +
    +/**
    +    A contrived example of ignoring too many commands in one comment.
    +
    +    @forcpponly
    +    This is C++-specific.
    +    @endforcpponly
    +
    +    @beginPythonOnly
    +    This is specific to @b Python.
    +    @endPythonOnly
    +
    +    @transferfull Command ignored, but anything here is still included.
    +
    +    @compileroptions This function must be compiled with /EHa when using MSVC.
    + */
    +int * Contrived();
    +
    +
    +

    would be translated to this comment in Python:

    +
    +
    +def func():
    +    r"""
    +    A contrived example of ignoring too many commands in one comment.
    +
    +    This is specific to **Python**.
    +
    +    Command ignored, but anything here is still included.
    +    """
    +    ...
    +
    +
    +

    17.2.2.4 doxygen:nolinktranslate +

    +

    Turn off automatic link-objects translation. This is only applicable + to Java at the moment.

    +

    17.2.2.5 doxygen:nostripparams

    +

    Turn off stripping of @param and @tparam Doxygen + commands if the parameter is not found in the function signature. This + is only applicable to Java at the moment.

    +

    17.2.3 Additional command line + options

    +

    ALSO TO BE ADDED (Javadoc auto brief?)

    +

    17.3 Doxygen to Javadoc

    +

    If translation is enabled, Javadoc formatted comments should be + automatically placed in the correct locations in the resulting module + and proxy files.

    +

    17.3.1 Basic example

    +

    Here is an example segment from an included header file

    +
    +
    +/*! This is describing class Shape
    + \author Bob
    + */
    +
    +class Shape {
    +public:
    +  Shape() {
    +    nshapes++;
    +  }
    +  virtual ~Shape() {
    +    nshapes--;
    +  };
    +  double  x, y; /*!< Important Variables */
    +  void    move(double dx, double dy); /*!< Moves the Shape */
    +  virtual double area(void) = 0; /*!< \return the area */
    +  virtual double perimeter(void) = 0; /*!< \return the perimeter */
    +  static  int nshapes;
    +};
    +
    +
    +

    Simply running SWIG should result in the following code being + present in Shapes.java

    +
    +
    +
    +/**
    + * This is describing class Shape 
    + * @author Bob 
    + * 
    + */
    +
    +public class Shape {
    +
    +...
    +
    +/**
    + * Important Variables 
    + */
    +  public void setX(double value) {
    +    ShapesJNI.Shape_x_set(swigCPtr, this, value);
    +  }
    +
    +/**
    + * Important Variables 
    + */
    +  public double getX() {
    +    return ShapesJNI.Shape_x_get(swigCPtr, this);
    +  }
    +
    +/**
    + * Moves the Shape 
    + */
    +  public void move(double dx, double dy) {
    +    ShapesJNI.Shape_move(swigCPtr, this, dx, dy);
    +  }
    +
    +/**
    + * @return the area 
    + */
    +  public double area() {
    +    return ShapesJNI.Shape_area(swigCPtr, this);
    +  }
    +
    +/**
    + * @return the perimeter 
    + */
    +  public double perimeter() {
    +    return ShapesJNI.Shape_perimeter(swigCPtr, this);
    +  }
    +}
    +
    +
    +
    +

    The code Java-wise should be identical to what would have been + generated without the doxygen functionality enabled. When the Doxygen + Translator module encounters a comment that contains nothing useful or + a doxygen comment that it cannot parse, it will not affect the + functionality of the SWIG generated code.

    +

    The Javadoc translator will handle most of the tags conversions (see + the table below). It will also automatically translate link-objects + params, in \see and \link...\endlink commands. For example, + 'someFunction(std::string)' will be converted to + 'someFunction(String)'. If you don't want such behaviour, you could + turn this off by using the 'doxygen:nolinktranslate' feature. Also all + '\param' and '\tparam' commands are stripped out, if the specified + parameter is not present in the function. Use 'doxygen:nostripparams' + to avoid.

    +

    Javadoc translator features summary (see +%feature directives):

    +

    17.3.2 Javadoc tags

    +

    Here is the list of all Doxygen tags and the description of how they + are translated to Javadoc

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Doxygen tags
    \awrapped with <i> html tag
    \argwrapped with <li> html tag
    \authortranslated to @author
    \authorstranslated to @author
    \bwrapped with <b> html tag
    \cwrapped with <code> html tag
    \citewrapped with <i> html tag
    \codetranslated to {@code ...}
    \condtranslated to 'Conditional comment: <condition>'
    \copyrightreplaced with 'Copyright:'
    \deprecatedtranslated to @deprecated
    \ewrapped with <i> html tag
    \elsereplaced with '}Else:{'
    \elseifreplaced with '}Else if: <condition>{'
    \emwrapped with <i> html tag
    \endcodesee note for \code
    \endcondreplaced with 'End of conditional comment.'
    \endifreplaced with '}'
    \endlinksee note for \link
    \endverbatimsee note for \verbatim
    \exceptiontranslated to @exception
    \f$, \f[, \f], \f{, \f}LateX formulas are left + unchanged
    \ifreplaced with 'If: <condition> {'
    \ifnotreplaced with 'If not: <condition> {'
    \imagetranslated to <img/> html tag only if target=HTML
    \liwrapped with <li> html tag
    \linktranslated to {@link ...}
    \nreplaced with new line char
    \notereplaced with 'Note:'
    \overloadprints 'This is an overloaded ...' according + to Doxygen docs
    \pwrapped with <code> html tag
    \parreplaced with <p alt='title'>...</p>
    \paramtranslated to @param
    \remarkreplaced with 'Remarks:'
    \remarksreplaced with 'Remarks:'
    \resulttranslated to @return
    \returntranslated to @return
    \returnstranslated to @return
    \satranslated to @see
    \seetranslated to @see
    \sincetranslated to @since
    \throwtranslated to @throws
    \throwstranslated to @throws
    \todoreplaced with 'TODO:'
    \tparamtranslated to @param
    \verbatimtranslated to {@literal ...}
    \versiontranslated to @version
    \warningtranslated to 'Warning:'
    \$prints $ char
    \@prints @ char
    \\prints \ char
    \&prints & char
    \~prints ~ char
    \<prints < char
    \>prints > char
    \#prints # char
    \%prints % char
    \"prints " char
    \.prints . char
    \::prints ::
    +
    +

    17.3.3 Unsupported tags

    +

    Doxygen has a wealth of tags such as @latexonly that have no + equivalent in Javadoc (all supported tags are listed in +Javadoc documentation). As a result several tags have no translation + or particular use, such as some linking and section tags. These are + suppressed with their content just printed out (if the tag has any + sense, typically text content). Here is the list of these tags:

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Unsupported Doxygen tags
    \addindex\addtogroup\anchor\attention
    \brief\bug\callgraph\callergraph
    \class\copybrief\copydetails\copydoc
    \date\def\defgroup\details
    \dir\dontinclude\dot\dotfile
    \enddot\endhtmlonly\endinternal +\endlatexonly
    \endmanonly\endmsc\endrtfonly +\endxmlonly
    \enum\example\extends
    \file\fn\headerfile\hideinitializer
    \htmlinclude\htmlonly\implements +\include
    \includelineno\ingroup\internal +\invariant
    \interface\latexonly\line\mainpage
    \manonly\memberof\msc\mscfile
    \name\namespace\nosubgrouping\package
    \page\paragraph\post\pre
    \private\privatesection\property +\protected
    \protectedsection\protocol\public +\publicsection
    \ref\related\relates\relatedalso
    \relatesalso\retval\rtfonly\section
    \short\showinitializer\skip\skipline
    \snippet\struct\subpage\subsection
    \subsubsection\tableofcontents\test +\typedef
    \union\until\var\verbinclude
    \weakgroup\xmlonly\xrefitem\category
    +
    +

    If one of the following Doxygen tags appears as the first tag in a + comment, the whole comment block is ignored: + +

    +
    + + + + + + + + + + + + +
    Ignored Doxygen tags
    \addtogroup\callgraph\callergraph +\category
    \class\def\defgroup\dir
    \enum\example\file\fn
    \headerfile\hideinitializer\interface +\internal
    \mainpage\name\namespace +\nosubgrouping
    \overload\package\page\property
    \protocol\relates\relatesalso +\showinitializer
    \struct\name\namespace\nosubgrouping
    \typedef\union\var\weakgroup
    +
    +

    17.3.4 Further details

    +

    TO BE ADDED.

    +

    17.4 Doxygen to Pydoc

    +

    If translation is enabled, Pydoc formatted comments should be + automatically placed in the correct locations in the resulting module + and proxy files. The problem is that Pydoc has no tag mechanism like + Doxygen or Javadoc, so most of Doxygen commands are translated by + merely copying the appropriate command text.

    +

    17.4.1 Basic example

    +

    Here is an example segment from an included header file

    +
    +
    +/*! This is describing class Shape
    + \author Bob
    + */
    +
    +class Shape {
    +public:
    +  Shape() {
    +    nshapes++;
    +  }
    +  virtual ~Shape() {
    +    nshapes--;
    +  };
    +  double  x, y; /*!< Important Variables */
    +  void    move(double dx, double dy); /*!< Moves the Shape */
    +  virtual double area(void) = 0; /*!< \return the area */
    +  virtual double perimeter(void) = 0; /*!< \return the perimeter */
    +  static  int nshapes;
    +};
    +
    +
    +

    Simply running SWIG should result in the following code being + present in Shapes.py

    +
    +
    +
    +...
    +
    +class Shape(_object):
    +    """
    +    This is describing class Shape 
    +    Authors:
    +    Bob 
    +
    +    """
    +    
    +    ...
    +    
    +    def move(self, *args):
    +        """
    +        Moves the Shape 
    +        """
    +        return _Shapes.Shape_move(self, *args)
    +
    +    def area(self):
    +        """
    +        Return:
    +        the area 
    +        """
    +        return _Shapes.Shape_area(self)
    +
    +    def perimeter(self):
    +        """
    +        Return:
    +        the perimeter 
    +        """
    +        return _Shapes.Shape_perimeter(self)
    +
    +
    +

    If any parameters of a function or a method are documented in the + Doxygen comment, their description is copied into the generated output + using Sphinx documentation + conventions. For example

    +
    +
    +/**
    +    Set a breakpoint at the given location.
    +
    +    @param filename The full path to the file.
    +    @param line_number The line number in the file.
    + */
    +bool SetBreakpoint(const char* filename, int line_number);
    +
    +
    +

    would be translated to

    +
    +
    +def SetBreakpoint(filename, line_number):
    +    r"""
    +    Set a breakpoint at the given location.
    +
    +    :type filename: string
    +    :param filename: The full path to the file.
    +    :type line_number: int
    +    :param line_number: The line number in the file.
    +    """
    +
    +
    +

    The types used for the parameter documentation come from the + "doctype" typemap which is defined for all the primitive types and a + few others (e.g. std::string and shared_ptr<T>) but + for non-primitive types is taken to be just the C++ name of the type + with namespace scope delimiters (::) replaced with a dot. To + change this, you can define your own typemaps for the custom types, + e.g:

    +
    +
    +%typemap(doctype) MyDate "datetime.date";
    +
    +
    +

    Currently Doxygen comments assigned to global variables and static + member variables are not present in generated code, so they have no + comment translated for them.

    +

    Whitespace and tables Whitespace is preserved when + translating comments, so it makes sense to have Doxygen comments + formatted in a readable way. This includes tables, where tags <th>, + <td> and </tr>are translated to '|'. The line after line with <th> tags + contains dashes. If we take care about whitespace, comments in Python + are much more readable. Example:

    +
    +/**
    + * <table border = '1'>
    + * <caption>Animals</caption>
    + * <tr><th> Column 1 </th><th> Column 2 </th></tr>
    + * <tr><td> cow      </td><td> dog      </td></tr>
    + * <tr><td> cat      </td><td> mouse    </td></tr>
    + * <tr><td> horse    </td><td> parrot   </td></tr>
    + * </table>
    + */
    +
    +

    +

    translates to Python as:

    +
    +
    +  Animals
    +  | Column 1 | Column 2 |
    +  -----------------------
    +  | cow      | dog      |
    +  | cat      | mouse    |
    +  | horse    | parrot   |
    +
    +
    +

    Overloaded functions Since all the overloaded functions in + c++ are wrapped into one Python function, Pydoc translator will combine + every comment of every overloaded function and put it into the comment + for the one wrapper function.

    +

    If you intend to use resulting generated Python file with the + Doxygen docs generator, rather than Pydoc, you may want to turn off + translation completely (doxygen:notranslate feature). Then SWIG will + just copy the comments to the proxy file and reformat them if needed, + but all the comment content will be left as is. As Doxygen doesn't + support special commands in Python comments (see +Doxygen docs), you may want to use some tool like doxypy ( +doxypy) to do the work.

    +

    17.4.2 Pydoc translator

    +

    Here is the list of all Doxygen tags and the description of how they + are translated to Pydoc

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Doxygen tags
    \awrapped with '_'
    \argprepended with ' --'
    \authorprints 'Author:'
    \authorsprints 'Author:'
    \bwrapped with '__'
    \citewrapped with single quotes
    \condtranslated to 'Conditional comment: <condition>'
    \copyrightprints 'Copyright:'
    \deprecatedprints 'Deprecated:'
    \ewrapped with '_'
    \elsereplaced with '}Else:{'
    \elseifreplaced with '}Else if: <condition>{'
    \emwrapped with '_'
    \endcondreplaced with 'End of conditional comment.'
    \endifreplaced with '}'
    \exceptionreplaced with 'Throws:'
    \ifreplaced with 'If: <condition> {'
    \ifnotreplaced with 'If not: <condition> {'
    \liprepended with ' --'
    \nreplaced with new line char
    \notereplaced with 'Note:'
    \overloadprints 'This is an overloaded ...' according + to Doxygen docs
    \parreplaced with 'Title: ...'
    \paramtranslated to 'Arguments:\n param(type) + --description'
    \remarkreplaced with 'Remarks:'
    \remarksreplaced with 'Remarks:'
    \resultreplaced with 'Result:'
    \returnreplaced with 'Result:'
    \returnsreplaced with 'Result:'
    \sareplaced with 'See also:'
    \seereplaced with 'See also:'
    \sincereplaced with 'Since:'
    \throwreplaced with 'Throws:'
    \throwsreplaced wih 'Throws:'
    \todoreplaced with 'TODO:'
    \tparamtranslated to 'Arguments:\n param(type) + --description'
    \versionreplaced with 'Version:'
    \warningtranslated to 'Warning:'
    \$prints $ char
    \@prints @ char
    \\prints \ char
    \&prints & char
    \~prints ~ char
    \<prints < char
    \>prints > char
    \#prints # char
    \%prints % char
    \"prints " char
    \.prints . character
    \::prints ::
    +
    +

    17.4.3 Unsupported tags +

    +

    Doxygen has a wealth of tags such as @latexonly that have no + equivalent in Pydoc. As a result several tags that have no translation + (or particular use, such as some linking and section tags) are + suppressed with their content just printed out (if it has any sense, + typically text content). Here is the list of these tags:

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Unsupported Doxygen tags
    \addindex\addtogroup\anchor\attention
    \brief\bug\callgraph\callergraph
    \class\copybrief\copydetails\copydoc
    \date\def\defgroup\details
    \dir\dontinclude\dot\dotfile
    \code\endcode\endverbatim\endlink
    \enddot\endhtmlonly\endinternal +\endlatexonly
    \endmanonly\endmsc\endrtfonly +\endxmlonly
    \enum\example\extends\f$
    \f[\f]\f{\f}
    \file\fn\headerfile\hideinitializer
    \htmlinclude\htmlonly\implements +\include
    \image\link\verbatim\p
    \includelineno\ingroup\internal +\invariant
    \interface\latexonly\line\mainpage
    \manonly\memberof\msc\mscfile
    \name\namespace\nosubgrouping\package
    \page\paragraph\post\pre
    \private\privatesection\property +\protected
    \protectedsection\protocol\public +\publicsection
    \ref\related\relates\relatedalso
    \relatesalso\retval\rtfonly\section
    \short\showinitializer\skip\skipline
    \snippet\struct\subpage\subsection
    \subsubsection\tableofcontents\test +\typedef
    \union\until\var\verbinclude
    \weakgroup\xmlonly\xrefitem\category
    \c
    +
    +

    17.4.4 Further details

    +

    TO BE ADDED.

    +

    17.5 Troubleshooting

    +

    When running SWIG with command line option -doxygen, it may + happen that SWIG will fail to parse the code, which is valid C++ code + and is parsed without problems without the option. The problem is, that + Doxygen comments are not tokens (the C/C++ compiler actually never sees + them) and that they can appear anywhere in the code. That's why it is + practically impossible to handle all corner cases with the parser. + However, these problems can usually be avoided by minor changes in the + code or comment. Known problems and solutions are shown in this + section.

    +

    Recommended approach is to first run SWIG without command line + option -doxygen. When it successfully processes the code, + include the option and fix problems with Doxygen comments.

    +

    17.5.1 Problem with conditional + compilation

    +

    Inserting a conditional compilation preprocessor directive between a + Doxygen comment and a commented item may break parsing:

    +
    +
    +class A {
    +  /**
    +   * Some func.
    +   */
    +  #ifndef SWIG
    +  void myfunc()
    +  {
    +  }
    +  #endif
    +};
    +
    +
    +

    The solution is to move the directive above the comment:

    +
    +
    +class A {
    +  #ifndef SWIG
    +  /**
    +   * Some func.
    +   */
    +  void myfunc()
    +  {
    +  }
    +  #endif
    +};
    +
    +
    +

    17.6 Developer information

    +

    This section contains information for developers enhancing the + Doxygen translator.

    +

    17.6.1 Doxygen translator design +

    +

    If this functionality is turned on, SWIG places all comments found + into the SWIG parse tree. Nodes contain an additional attribute called +doxygen when a comment is present. Individual nodes containing + Doxygen with Structural Indicators, such as @file, as their first + command, are also present in the parse tree. These individual "blobs" + of Doxygen such as :

    +
    +
    +/*! This is describing function Foo
    + \param x some random variable
    + \author Bob
    + \return Foo
    + */
    +
    +
    +

    are passed on individually to the Doxygen Translator module. This + module builds its own private parse tree and hands it to a separate + class for translation into the target documentation language. For + example, JavaDocConverter is the Javadoc module class.

    +

    17.6.2 Debugging the Doxygen + parser and translator

    +

    There are two handy command line options, that enable lots of + detailed debug information printing.

    +
    +
    +  -debug-doxygen-parser     - Display Doxygen parser module debugging information
    +  -debug-doxygen-translator - Display Doxygen translator module debugging information
    +
    +
    +

    17.6.3 Tests

    +

    Doxygen tests have been added to the regular SWIG test-suite. There + are a number of tests beginning doxygen_ in the + Examples/test-suite sub-directory.

    +

    Like any other SWIG test case, the tests are included in + Examples/test-suite/common.mk and can be tested with commands like +make check-test-suite or make check-python-test-suite. To + run them individually, type make -s <testname>.cpptest in the + language-specific sub-directory in Examples/test-suite + directory. For example:

    +
    +
    +  Examples/test-suite/java $ make -s doxygen_parsing.cpptest
    +
    +
    +

    If the test fails, both expected and translated comments are printed + to std out, but also written to files expected.txt and + got.txt. Since it is often difficult to find a single character + difference in several lines of text, we can use some diff tool, for + example:

    +
    +
    +  Examples/test-suite/java $ kdiff3 expected.txt got.txt
    +
    +
    +

    Runtime tests in Java are implemented using Javadoc doclets. To make + that work, you should have tools.jar from the JDK in your classpath. Or + you should have JAVA_HOME environment variable defined and pointing to + the JDK location.

    +

    The Java's comment parsing code (the testing part) is located in + commentParser.java. It checks the generated code. It is possible to run + this file as a stand-alone program, with java commentParser <some + java package>, and it will print the list of comments found in the + specified directory (in the format it has used in the runtime tests). + So, when you want to create a new Doxygen test case, just copy an + existing one and replace the actual comment content (section of entries + in form 'wantedComments.put(...)' with the output of the above command.

    +

    Runtime tests in Python are just plain string comparisons of the + __doc__ properties.

    +

    17.7 Extending to other + languages

    +

    In general, an extension to another language requires a fairly deep + understanding of the target language module, such as Modules/python.cxx + for Python. Searching for "doxygen" in the java.cxx module can give you + a good idea of the process for placing documentation comments into the + correct areas. The basic gist is that anywhere a comment may reside on + a node, there needs to be a catch for it in front of where that + function, class, or other object is written out to a target language + file. The other half of extension is building a target documentation + language comment generator that handles one blob at a time. However, + this is relatively simple and nowhere near as complex as the wrapper + generating modules in SWIG. See Source/Doxygen/javadoc.cxx for a good + example. The target language module passes the Doxygen Translator the + blob to translate, and receives back the translated text.

    +

    What is given to the Doxygen Translator

    +
    +
    +/*! This is describing function Foo
    + \param x some random variable
    + \author Bob
    + \return Foo
    + */
    +
    +
    +

    What is received back by java.cxx

    +
    +
    +/** This is describing function Foo
    + *
    + * @param x some random variable
    + * @author Bob
    + * @return Foo
    + */
    +
    +
    +

    Development of the comment translator itself is simplified by the + fact that the Doxygen Translator module can easily include a main + function and thus be developed, compiled, and tested independently of + SWIG.

    +
    +

    18 Warning Messages

    + + + + +

    18.1 Introduction

    +

    During compilation, SWIG may generate a variety of warning messages. + For example:

    +
    +
     example.i:16: Warning 501: Overloaded declaration ignored.  bar(double)
     example.i:15: Warning 501: Previous declaration is bar(int)
    -
    -
    -

    Typically, warning messages indicate non-fatal problems with the +

    +
    +

    Typically, warning messages indicate non-fatal problems with the input where the generated wrapper code will probably compile, but it - may not work like you expect.

    -

    15.2 Warning message suppression

    -

    All warning messages have a numeric code that is shown in the + may not work like you expect.

    +

    18.2 Warning message suppression

    +

    All warning messages have a numeric code that is shown in the warning message itself. To suppress the printing of a warning message, - a number of techniques can be used. First, you can run SWIG with the --w command line option. For example:

    -
    -
    + a number of techniques can be used. First, you can run SWIG with the 
    +-w command line option. For example:

    +
    +
     % swig -python -w501 example.i
     % swig -python -w501,505,401 example.i
    -
    -
    -

    Alternatively, warnings can be suppressed by inserting a special - preprocessor pragma into the input file:

    -
    -
    +
    +
    +

    Alternatively, warnings can be suppressed by inserting a special + preprocessor pragma into the input file:

    +
    +
     %module example
     #pragma SWIG nowarn=501
     #pragma SWIG nowarn=501,505,401
    -
    -
    -

    Finally, code-generation warnings can be disabled on a declaration - by declaration basis using the %warnfilter directive. For - example:

    -
    -
    +
    +
    +

    Finally, code-generation warnings can be disabled on a declaration + by declaration basis using the %warnfilter directive. For + example:

    +
    +
     %module example
     %warnfilter(501) foo;
     ...
     int foo(int);
     int foo(double);              // Silently ignored.
    -
    -
    -

    The %warnfilter directive has the same semantics as other - declaration modifiers like %rename, %ignore and -%feature, see the %feature - directive section. For example, if you wanted to suppress a warning - for a method in a class hierarchy, you could do this:

    -
    -
    +
    +
    +

    The %warnfilter directive has the same semantics as other + declaration modifiers like %rename, %ignore and +%feature, see the %feature + directive section. For example, if you wanted to suppress a warning + for a method in a class hierarchy, you could do this:

    +
    +
     %warnfilter(501) Object::foo;
     class Object {
     public:
    @@ -19761,494 +21729,508 @@ public:
       int foo(double);      // Silently ignored
       ...
     };
    -
    -
    -

    Warnings can be suppressed for an entire class by supplying a class - name. For example:

    -
    -
    +
    +
    +

    Warnings can be suppressed for an entire class by supplying a class + name. For example:

    +
    +
     %warnfilter(501) Object;
     
     class Object {
     public:
       ...                      // All 501 warnings ignored in class
     };
    -
    -
    -

    There is no option to suppress all SWIG warning messages. The +

    +
    +

    There is no option to suppress all SWIG warning messages. The warning messages are there for a reason---to tell you that something - may be broken in your interface. Ignore the warning messages - at your own peril.

    -

    15.3 Enabling extra warnings

    -

    Some warning messages are disabled by default and are generated only + may be broken in your interface. Ignore the warning messages + at your own peril.

    +

    18.3 Enabling extra warnings

    +

    Some warning messages are disabled by default and are generated only to provide additional diagnostics. These warnings can be turned on - using the -Wextra option. For example:

    -
    -
    + using the -Wextra option. For example:

    +
    +
     % swig -Wextra -python example.i
    -
    -
    -

    To selectively turn on extra warning messages, you can use the +

    +
    +

    To selectively turn on extra warning messages, you can use the directives and options in the previous section--simply add a "+" to all - warning numbers. For example:

    -
    -
    + warning numbers. For example:

    +
    +
     % swig -w+309,+452 example.i
    -
    -
    -

    or in your interface file use either

    -
    -
    +
    +
    +

    or in your interface file use either

    +
    +
     #pragma SWIG nowarn=+309,+452
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %warnfilter(+309,+452) foo;
    -
    -
    -

    Note: selective enabling of warnings with %warnfilter - overrides any global settings you might have made using -w or -#pragma.

    -

    You can of course also enable all warnings and suppress a select - few, for example:

    -
    -
    +
    +
    +

    Note: selective enabling of warnings with %warnfilter + overrides any global settings you might have made using -w or +#pragma.

    +

    You can of course also enable all warnings and suppress a select + few, for example:

    +
    +
     % swig -Wextra -w309,452 example.i
    -
    -
    -

    The warnings on the right take precedence over the warnings on the - left, so in the above example -Wextra adds numerous warnings - including 452, but then -w309,452 overrides this and so 452 is - suppressesed.

    -

    If you would like all warnings to appear, regardless of the warning - filters used, then use the -Wall option. The -Wall - option also turns on the extra warnings that -Wextra adds, - however, it is subtely different. When -Wall is used, it also +

    +
    +

    The warnings on the right take precedence over the warnings on the + left, so in the above example -Wextra adds numerous warnings + including 452, but then -w309,452 overrides this and so 452 is + suppressesed.

    +

    If you would like all warnings to appear, regardless of the warning + filters used, then use the -Wall option. The -Wall + option also turns on the extra warnings that -Wextra adds, + however, it is subtely different. When -Wall is used, it also disables all other warning filters, that is, any warnings suppressed or - added in %warnfilter, #pragma SWIG nowarn or the --w option.

    -

    15.4 Issuing a warning message

    -

    Warning messages can be issued from an interface file using a number - of directives. The %warn directive is the most simple:

    -
    -
    + added in %warnfilter, #pragma SWIG nowarn or the 
    +-w option.

    +

    18.4 Issuing a warning message

    +

    Warning messages can be issued from an interface file using a number + of directives. The %warn directive is the most simple:

    +
    +
     %warn "900:This is your last warning!"
    -
    -
    -

    All warning messages are optionally prefixed by the warning number +

    +
    +

    All warning messages are optionally prefixed by the warning number to use. If you are generating your own warnings, make sure you don't - use numbers defined in the table at the end of this section.

    -

    The %ignorewarn directive is the same as %ignore + use numbers defined in the table at the end of this section.

    +

    The %ignorewarn directive is the same as %ignore except that it issues a warning message whenever a matching declaration - is found. For example:

    -
    -
    + is found. For example:

    +
    +
     %ignorewarn("362:operator= ignored") operator=;
    -
    -
    -

    Warning messages can be associated with typemaps using the -warning attribute of a typemap declaration. For example:

    -
    -
    +
    +
    +

    Warning messages can be associated with typemaps using the +warning attribute of a typemap declaration. For example:

    +
    +
     %typemap(in, warning="901:You are really going to regret this usage of $1_type $1_name") blah * {
       ...
     }
    -
    -
    -

    In this case, the warning message will be printed whenever the - typemap is actually used and the -special variables will be expanded as appropriate, for example:

    -
    -
    +
    +
    +

    In this case, the warning message will be printed whenever the + typemap is actually used and the +special variables will be expanded as appropriate, for example:

    +
    +
     example.i:23: Warning 901: You are really going to regret this usage of blah * self
     example.i:24: Warning 901: You are really going to regret this usage of blah * stuff
    -
    -
    -

    15.5 Symbolic symbols

    -

    The swigwarn.swg file that is installed with SWIG contains - symbol constants that could also be used in %warnfilter and -#pragma SWIG nowarn. For example this file contains the following - line:

    -
    -
    +
    +
    +

    18.5 Symbolic symbols

    +

    The swigwarn.swg file that is installed with SWIG contains + symbol constants that could also be used in %warnfilter and +#pragma SWIG nowarn. For example this file contains the following + line:

    +
    +
     %define SWIGWARN_TYPE_UNDEFINED_CLASS 401 %enddef
    -
    -
    -

    so SWIGWARN_TYPE_UNDEFINED_CLASS could be used instead of - 401, for example:

    -
    -
    +
    +
    +

    so SWIGWARN_TYPE_UNDEFINED_CLASS could be used instead of + 401, for example:

    +
    +
     #pragma SWIG nowarn=SWIGWARN_TYPE_UNDEFINED_CLASS
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %warnfilter(SWIGWARN_TYPE_UNDEFINED_CLASS) Foo;
    -
    -
    -

    15.6 Commentary

    -

    The ability to suppress warning messages is really only provided for +

    +
    +

    18.6 Commentary

    +

    The ability to suppress warning messages is really only provided for advanced users and is not recommended in normal use. You are advised to modify your interface to fix the problems highlighted by the warnings - wherever possible instead of suppressing warnings.

    -

    Certain types of SWIG problems are errors. These usually arise due + wherever possible instead of suppressing warnings.

    +

    Certain types of SWIG problems are errors. These usually arise due to parsing errors (bad syntax) or semantic problems for which there is no obvious recovery. There is no mechanism for suppressing error - messages.

    -

    15.7 Warnings as errors

    -

    Warnings can be handled as errors by using the -Werror + messages.

    +

    18.7 Warnings as errors

    +

    Warnings can be handled as errors by using the -Werror command line option. This will cause SWIG to exit with a non successful - exit code if a warning is encountered.

    -

    15.8 Message output format

    -

    The output format for both warnings and errors can be selected for + exit code if a warning is encountered.

    +

    18.8 Message output format

    +

    The output format for both warnings and errors can be selected for integration with your favourite IDE/editor. Editors and IDEs can usually parse error messages and if in the appropriate format will easily take you directly to the source of the error. The standard format is used by default except on Windows where the Microsoft format is used by default. These can be overridden using command line options, - for example:

    -
    -
    + for example:

    +
    +
     $ swig -python -Fstandard example.i
     example.i:4: Syntax error in input(1).
     $ swig -python -Fmicrosoft example.i
     example.i(4) : Syntax error in input(1).
    -
    -
    -

    15.9 Warning number reference

    -

    15.9.1 Deprecated features (100-199)

    -
      -
    • 101. Deprecated %extern directive.
    • -
    • 102. Deprecated %val directive.
    • -
    • 103. Deprecated %out directive.
    • -
    • 104. Deprecated %disabledoc directive.
    • -
    • 105. Deprecated %enabledoc directive.
    • -
    • 106. Deprecated %doconly directive.
    • -
    • 107. Deprecated %style directive.
    • -
    • 108. Deprecated %localstyle directive.
    • -
    • 109. Deprecated %title directive.
    • -
    • 110. Deprecated %section directive.
    • -
    • 111. Deprecated %subsection directive.
    • -
    • 112. Deprecated %subsubsection directive.
    • -
    • 113. Deprecated %addmethods directive.
    • -
    • 114. Deprecated %readonly directive.
    • -
    • 115. Deprecated %readwrite directive.
    • -
    • 116. Deprecated %except directive.
    • -
    • 117. Deprecated %new directive.
    • -
    • 118. Deprecated %typemap(except).
    • -
    • 119. Deprecated %typemap(ignore).
    • -
    • 120. Deprecated command line option (-runtime, -noruntime).
    • -
    • 121. Deprecated %name directive.
    • -
    • 126. The 'nestedworkaround' feature is deprecated.
    • -
    -

    15.9.2 Preprocessor (200-299)

    -
      -
    • 201. Unable to find filename.
    • -
    • 202. Could not evaluate expression expr.
    • -
    • 203. Both includeall and importall are defined: using includeall.
    • -
    • 204. CPP #warning, "warning".
    • -
    • 205. CPP #error, "error".
    • -
    • 206. Unexpected tokens after #directive directive.
    • -
    -

    15.9.3 C/C++ Parser (300-399)

    -
      -
    • 301. class keyword used, but not in C++ mode.
    • -
    • 302. Identifier 'name' redefined (ignored).
    • -
    • 303. %extend defined for an undeclared class 'name -'.
    • -
    • 304. Unsupported constant value (ignored).
    • -
    • 305. Bad constant value (ignored).
    • -
    • 306. 'identifier' is private in this context.
    • -
    • 307. Can't set default argument value (ignored)
    • -
    • 308. Namespace alias 'name' not allowed here. Assuming ' -name'
    • -
    • 309. [private | protected] inheritance ignored.
    • -
    • 310. Template 'name' was already wrapped as 'name' - (ignored)
    • -
    • 312. Unnamed nested class not currently supported (ignored).
    • -
    • 313. Unrecognized extern type "name" (ignored).
    • -
    • 314. 'identifier' is a lang keyword.
    • -
    • 315. Nothing known about 'identifier'.
    • -
    • 316. Repeated %module directive.
    • -
    • 317. Specialization of non-template 'name'.
    • -
    • 318. Instantiation of template 'name' is ambiguous, - instantiation templ used, instantiation templ - ignored.
    • -
    • 319. No access specifier given for base class name - (ignored).
    • -
    • 320. Explicit template instantiation ignored.
    • -
    • 321. identifier conflicts with a built-in name.
    • -
    • 322. Redundant redeclaration of 'name'.
    • -
    • 323. Recursive scope inheritance of 'name'.
    • -
    • 324. Named nested template instantiations not supported. Processing - as if no name was given to %template().
    • -
    • 325. Nested kind not currently supported (name - ignored).
    • -
    • 326. Deprecated %extend name used - the kind name 'name -' should be used instead of the typedef name 'name'.
    • -
    • 350. operator new ignored.
    • -
    • 351. operator delete ignored.
    • -
    • 352. operator+ ignored.
    • -
    • 353. operator- ignored.
    • -
    • 354. operator* ignored.
    • -
    • 355. operator/ ignored.
    • -
    • 356. operator% ignored.
    • -
    • 357. operator^ ignored.
    • -
    • 358. operator& ignored.
    • -
    • 359. operator| ignored.
    • -
    • 360. operator~ ignored.
    • -
    • 361. operator! ignored.
    • -
    • 362. operator= ignored.
    • -
    • 363. operator< ignored.
    • -
    • 364. operator> ignored.
    • -
    • 365. operator+= ignored.
    • -
    • 366. operator-= ignored.
    • -
    • 367. operator*= ignored.
    • -
    • 368. operator/= ignored.
    • -
    • 369. operator%= ignored.
    • -
    • 370. operator^= ignored.
    • -
    • 371. operator&= ignored.
    • -
    • 372. operator|= ignored.
    • -
    • 373. operator<< ignored.
    • -
    • 374. operator>>ignored.
    • -
    • 375. operator<<= ignored.
    • -
    • 376. operator>>= ignored.
    • -
    • 377. operator== ignored.
    • -
    • 378. operator!= ignored.
    • -
    • 379. operator<= ignored.
    • -
    • 380. operator>= ignored.
    • -
    • 381. operator&& ignored.
    • -
    • 382. operator|| ignored.
    • -
    • 383. operator++ ignored.
    • -
    • 384. operator-- ignored.
    • -
    • 385. operator, ignored.
    • -
    • 386. operator-<* ignored.
    • -
    • 387. operator-< ignored.
    • -
    • 388. operator() ignored.
    • -
    • 389. operator[] ignored.
    • -
    • 390. operator+ ignored (unary).
    • -
    • 391. operator- ignored (unary).
    • -
    • 392. operator* ignored (unary).
    • -
    • 393. operator& ignored (unary).
    • -
    • 394. operator new[] ignored.
    • -
    • 395. operator delete[] ignored.
    • -
    -

    15.9.4 Types and typemaps (400-499)

    -
      -
    • 401. Nothing known about class 'name'. Ignored.
    • -
    • 402. Base class 'name' is incomplete.
    • -
    • 403. Class 'name' might be abstract.
    • -
    • 450. Deprecated typemap feature ($source/$target).
    • -
    • 451. Setting const char * variable may leak memory.
    • -
    • 452. Reserved
    • -
    • 453. Can't apply (pattern). No typemaps are defined.
    • -
    • 460. Unable to use type type as a function argument.
    • -
    • 461. Unable to use return type type in function name -.
    • -
    • 462. Unable to set variable of type type.
    • -
    • 463. Unable to read variable of type type.
    • -
    • 464. Unsupported constant value.
    • -
    • 465. Unable to handle type type.
    • -
    • 466. Unsupported variable type type.
    • -
    • 467. Overloaded declaration not supported (incomplete type - checking rule - no precedence level in typecheck typemap for 'type -')
    • -
    • 468. No 'throw' typemap defined for exception type type
    • -
    • 469. No or improper directorin typemap defined for type
    • -
    • 470. Thread/reentrant unsafe wrapping, consider returning by value - instead.
    • -
    • 471. Unable to use return type type in director method
    • -
    • 474. Method method usage of the optimal attribute ignored +
    +
    +

    18.9 Warning number reference

    +

    18.9.1 Deprecated features (100-199)

    +
      +
    • 101. Deprecated %extern directive.
    • +
    • 102. Deprecated %val directive.
    • +
    • 103. Deprecated %out directive.
    • +
    • 104. Deprecated %disabledoc directive.
    • +
    • 105. Deprecated %enabledoc directive.
    • +
    • 106. Deprecated %doconly directive.
    • +
    • 107. Deprecated %style directive.
    • +
    • 108. Deprecated %localstyle directive.
    • +
    • 109. Deprecated %title directive.
    • +
    • 110. Deprecated %section directive.
    • +
    • 111. Deprecated %subsection directive.
    • +
    • 112. Deprecated %subsubsection directive.
    • +
    • 113. Deprecated %addmethods directive.
    • +
    • 114. Deprecated %readonly directive.
    • +
    • 115. Deprecated %readwrite directive.
    • +
    • 116. Deprecated %except directive.
    • +
    • 117. Deprecated %new directive.
    • +
    • 118. Deprecated %typemap(except).
    • +
    • 119. Deprecated %typemap(ignore).
    • +
    • 120. Deprecated command line option (-runtime, -noruntime).
    • +
    • 121. Deprecated %name directive.
    • +
    • 126. The 'nestedworkaround' feature is deprecated.
    • +
    +

    18.9.2 Preprocessor (200-299)

    +
      +
    • 201. Unable to find filename.
    • +
    • 202. Could not evaluate expression expr.
    • +
    • 203. Both includeall and importall are defined: using includeall.
    • +
    • 204. CPP #warning, "warning".
    • +
    • 205. CPP #error, "error".
    • +
    • 206. Unexpected tokens after #directive directive.
    • +
    +

    18.9.3 C/C++ Parser (300-399)

    +
      +
    • 301. class keyword used, but not in C++ mode.
    • +
    • 302. Identifier 'name' redefined (ignored).
    • +
    • 303. %extend defined for an undeclared class 'name +'.
    • +
    • 304. Unsupported constant value (ignored).
    • +
    • 305. Bad constant value (ignored).
    • +
    • 306. 'identifier' is private in this context.
    • +
    • 307. Can't set default argument value (ignored)
    • +
    • 308. Namespace alias 'name' not allowed here. Assuming ' +name'
    • +
    • 309. [private | protected] inheritance ignored.
    • +
    • 310. Template 'name' was already wrapped as 'name' + (ignored)
    • +
    • 312. Unnamed nested class not currently supported (ignored).
    • +
    • 313. Unrecognized extern type "name" (ignored).
    • +
    • 314. 'identifier' is a lang keyword.
    • +
    • 315. Nothing known about 'identifier'.
    • +
    • 316. Repeated %module directive.
    • +
    • 317. Specialization of non-template 'name'.
    • +
    • 318. Instantiation of template 'name' is ambiguous, + instantiation templ used, instantiation templ + ignored.
    • +
    • 319. No access specifier given for base class name + (ignored).
    • +
    • 320. Explicit template instantiation ignored.
    • +
    • 321. identifier conflicts with a built-in name.
    • +
    • 322. Redundant redeclaration of 'name'.
    • +
    • 323. Recursive scope inheritance of 'name'.
    • +
    • 324. Named nested template instantiations not supported. Processing + as if no name was given to %template().
    • +
    • 325. Nested kind not currently supported (name + ignored).
    • +
    • 326. Deprecated %extend name used - the kind name 'name +' should be used instead of the typedef name 'name'.
    • +
    • 350. operator new ignored.
    • +
    • 351. operator delete ignored.
    • +
    • 352. operator+ ignored.
    • +
    • 353. operator- ignored.
    • +
    • 354. operator* ignored.
    • +
    • 355. operator/ ignored.
    • +
    • 356. operator% ignored.
    • +
    • 357. operator^ ignored.
    • +
    • 358. operator& ignored.
    • +
    • 359. operator| ignored.
    • +
    • 360. operator~ ignored.
    • +
    • 361. operator! ignored.
    • +
    • 362. operator= ignored.
    • +
    • 363. operator< ignored.
    • +
    • 364. operator> ignored.
    • +
    • 365. operator+= ignored.
    • +
    • 366. operator-= ignored.
    • +
    • 367. operator*= ignored.
    • +
    • 368. operator/= ignored.
    • +
    • 369. operator%= ignored.
    • +
    • 370. operator^= ignored.
    • +
    • 371. operator&= ignored.
    • +
    • 372. operator|= ignored.
    • +
    • 373. operator<< ignored.
    • +
    • 374. operator>>ignored.
    • +
    • 375. operator<<= ignored.
    • +
    • 376. operator>>= ignored.
    • +
    • 377. operator== ignored.
    • +
    • 378. operator!= ignored.
    • +
    • 379. operator<= ignored.
    • +
    • 380. operator>= ignored.
    • +
    • 381. operator&& ignored.
    • +
    • 382. operator|| ignored.
    • +
    • 383. operator++ ignored.
    • +
    • 384. operator-- ignored.
    • +
    • 385. operator, ignored.
    • +
    • 386. operator-<* ignored.
    • +
    • 387. operator-< ignored.
    • +
    • 388. operator() ignored.
    • +
    • 389. operator[] ignored.
    • +
    • 390. operator+ ignored (unary).
    • +
    • 391. operator- ignored (unary).
    • +
    • 392. operator* ignored (unary).
    • +
    • 393. operator& ignored (unary).
    • +
    • 394. operator new[] ignored.
    • +
    • 395. operator delete[] ignored.
    • +
    +

    18.9.4 Types and typemaps (400-499)

    +
      +
    • 401. Nothing known about class 'name'. Ignored.
    • +
    • 402. Base class 'name' is incomplete.
    • +
    • 403. Class 'name' might be abstract.
    • +
    • 450. Deprecated typemap feature ($source/$target).
    • +
    • 451. Setting const char * variable may leak memory.
    • +
    • 452. Reserved
    • +
    • 453. Can't apply (pattern). No typemaps are defined.
    • +
    • 460. Unable to use type type as a function argument.
    • +
    • 461. Unable to use return type type in function name +.
    • +
    • 462. Unable to set variable of type type.
    • +
    • 463. Unable to read variable of type type.
    • +
    • 464. Unsupported constant value.
    • +
    • 465. Unable to handle type type.
    • +
    • 466. Unsupported variable type type.
    • +
    • 467. Overloaded declaration not supported (incomplete type + checking rule - no precedence level in typecheck typemap for 'type +')
    • +
    • 468. No 'throw' typemap defined for exception type type
    • +
    • 469. No or improper directorin typemap defined for type
    • +
    • 470. Thread/reentrant unsafe wrapping, consider returning by value + instead.
    • +
    • 471. Unable to use return type type in director method
    • +
    • 474. Method method usage of the optimal attribute ignored in the out typemap as the following cannot be used to generate optimal - code: code
    • -
    • 475. Multiple calls to method might be generated due to - optimal attribute usage in the out typemap.
    • -
    • 476. Initialization using std::initializer_list.
    • -
    • 477. No directorthrows typemap defined for type
    • -
    -

    15.9.5 Code generation (500-599)

    -
      -
    • 501. Overloaded declaration ignored. decl. Previous - declaration is decl.
    • -
    • 502. Overloaded constructor ignored. decl. Previous - declaration is decl.
    • -
    • 503. Can't wrap 'identifier' unless renamed to a valid - identifier.
    • -
    • 504. Function name must have a return type. Ignored.
    • -
    • 505. Variable length arguments discarded.
    • -
    • 506. Can't wrap varargs with keyword arguments enabled.
    • -
    • 507. Adding native function name not supported (ignored).
    • -
    • 508. Declaration of 'name' shadows declaration accessible - via operator->(), previous declaration of'declaration'.
    • -
    • 509. Overloaded method declaration effectively ignored, as - it is shadowed by declaration.
    • -
    • 510. Friend function 'name' ignored.
    • -
    • 511. Can't use keyword arguments with overloaded functions.
    • -
    • 512. Overloaded method declaration ignored, using non-const - method declaration instead.
    • -
    • 513. Can't generate wrappers for unnamed struct/class.
    • -
    • 514.
    • -
    • 515.
    • -
    • 516. Overloaded method declaration ignored, using - declaration instead.
    • -
    • 517.
    • -
    • 518. Portability warning: File file1 will be overwritten by - file2 on case insensitive filesystems such as Windows' FAT32 and - NTFS unless the class/module name is renamed.
    • -
    • 519. %template() contains no name. Template method ignored: - declaration
    • -
    • 520. Base/Derived class 'classname1' of ' -classname2' is not similarly marked as a smart pointer.
    • -
    • 521. Illegal destructor name name. Ignored.
    • -
    • 522. Use of an illegal constructor name 'name' in %extend - is deprecated, the constructor name should be 'name'.
    • -
    • 523. Use of an illegal destructor name 'name' in %extend is - deprecated, the destructor name should be 'name'.
    • -
    -

    15.9.6 Language module specific (700-899) -

    -
      -
    • 801. Wrong name (corrected to 'name'). (Ruby).
    • -
    -
      -
    • 810. No jni typemap defined for type (Java).
    • -
    • 811. No jtype typemap defined for type (Java).
    • -
    • 812. No jstype typemap defined for type (Java).
    • -
    • 813. Warning for classname, base baseclass - ignored. Multiple inheritance is not supported in Java. (Java).
    • -
    • 814.
    • -
    • 815. No javafinalize typemap defined for type (Java).
    • -
    • 816. No javabody typemap defined for type (Java).
    • -
    • 817. No javaout typemap defined for type (Java).
    • -
    • 818. No javain typemap defined for type (Java).
    • -
    • 819. No javadirectorin typemap defined for type (Java).
    • -
    • 820. No javadirectorout typemap defined for type (Java).
    • -
    • 821.
    • -
    • 822. Covariant return types not supported in Java. Proxy method will - return basetype (Java).
    • -
    • 823. No javaconstruct typemap defined for type (Java).
    • -
    • 824. Missing JNI descriptor in directorin typemap defined for - type (Java).
    • -
    • 825. "directorconnect" attribute missing in type - "javaconstruct" typemap. (Java).
    • -
    • 826. The nspace feature is used on 'type' without -package. + code: code
    • +
    • 475. Multiple calls to method might be generated due to + optimal attribute usage in the out typemap.
    • +
    • 476. Initialization using std::initializer_list.
    • +
    • 477. No directorthrows typemap defined for type
    • +
    +

    18.9.5 Code generation (500-559)

    +
      +
    • 501. Overloaded declaration ignored. decl. Previous + declaration is decl.
    • +
    • 502. Overloaded constructor ignored. decl. Previous + declaration is decl.
    • +
    • 503. Can't wrap 'identifier' unless renamed to a valid + identifier.
    • +
    • 504. Function name must have a return type. Ignored.
    • +
    • 505. Variable length arguments discarded.
    • +
    • 506. Can't wrap varargs with keyword arguments enabled.
    • +
    • 507. Adding native function name not supported (ignored).
    • +
    • 508. Declaration of 'name' shadows declaration accessible + via operator->(), previous declaration of'declaration'.
    • +
    • 509. Overloaded method declaration effectively ignored, as + it is shadowed by declaration.
    • +
    • 510. Friend function 'name' ignored.
    • +
    • 511. Can't use keyword arguments with overloaded functions.
    • +
    • 512. Overloaded method declaration ignored, using non-const + method declaration instead.
    • +
    • 513. Can't generate wrappers for unnamed struct/class.
    • +
    • 514.
    • +
    • 515.
    • +
    • 516. Overloaded method declaration ignored, using + declaration instead.
    • +
    • 517.
    • +
    • 518. Portability warning: File file1 will be overwritten by + file2 on case insensitive filesystems such as Windows' FAT32 and + NTFS unless the class/module name is renamed.
    • +
    • 519. %template() contains no name. Template method ignored: + declaration
    • +
    • 520. Base/Derived class 'classname1' of ' +classname2' is not similarly marked as a smart pointer.
    • +
    • 521. Illegal destructor name name. Ignored.
    • +
    • 522. Use of an illegal constructor name 'name' in %extend + is deprecated, the constructor name should be 'name'.
    • +
    • 523. Use of an illegal destructor name 'name' in %extend is + deprecated, the destructor name should be 'name'.
    • +
    • 524. Experimental target language. Target language language + specified by lang is an experimental language. Please read + about SWIG experimental languages, htmllink.
    • +
    • 525. Destructor declaration is final, name cannot + be a director class.
    • +
    +

    18.9.6 Doxygen comments (560-599)

    +
      +
    • 560: Unknown Doxygen command: command.
    • +
    • 561: Unexpected end of Doxygen comment encountered.
    • +
    • 562: Expected Doxygen command: command
    • +
    • 563: Doxygen HTML error for tag tag: error text.
    • +
    • 564: Error parsing Doxygen command command: error text +. Command ignored."
    • +
    +

    18.9.7 Language module specific (700-899) +

    +
      +
    • 801. Wrong name (corrected to 'name'). (Ruby).
    • +
    +
      +
    • 810. No jni typemap defined for type (Java).
    • +
    • 811. No jtype typemap defined for type (Java).
    • +
    • 812. No jstype typemap defined for type (Java).
    • +
    • 813. Warning for classname, base baseclass + ignored. Multiple inheritance is not supported in Java. (Java).
    • +
    • 814.
    • +
    • 815. No javafinalize typemap defined for type (Java).
    • +
    • 816. No javabody typemap defined for type (Java).
    • +
    • 817. No javaout typemap defined for type (Java).
    • +
    • 818. No javain typemap defined for type (Java).
    • +
    • 819. No javadirectorin typemap defined for type (Java).
    • +
    • 820. No javadirectorout typemap defined for type (Java).
    • +
    • 821.
    • +
    • 822. Covariant return types not supported in Java. Proxy method will + return basetype (Java).
    • +
    • 823. No javaconstruct typemap defined for type (Java).
    • +
    • 824. Missing JNI descriptor in directorin typemap defined for + type (Java).
    • +
    • 825. "directorconnect" attribute missing in type + "javaconstruct" typemap. (Java).
    • +
    • 826. The nspace feature is used on 'type' without -package. The generated code may not compile as Java does not support types declared in a named package accessing types declared in an unnamed - package. (Java).
    • -
    -
      -
    • 830. No ctype typemap defined for type (C#).
    • -
    • 831. No cstype typemap defined for type (C#).
    • -
    • 832. No cswtype typemap defined for type (C#).
    • -
    • 833. Warning for classname, base baseclass - ignored. Multiple inheritance is not supported in C#. (C#).
    • -
    • 834.
    • -
    • 835. No csfinalize typemap defined for type (C#).
    • -
    • 836. No csbody typemap defined for type (C#).
    • -
    • 837. No csout typemap defined for type (C#).
    • -
    • 838. No csin typemap defined for type (C#).
    • -
    • 839.
    • -
    • 840.
    • -
    • 841.
    • -
    • 842. Covariant return types not supported in C#. Proxy method will - return basetype (C#).
    • -
    • 843. No csconstruct typemap defined for type (C#).
    • -
    • 844. C# exception may not be thrown - no $excode or excode attribute - in typemap typemap. (C#).
    • -
    • 845. Unmanaged code contains a call to a + package. (Java).
    • +
    +
      +
    • 830. No ctype typemap defined for type (C#).
    • +
    • 831. No cstype typemap defined for type (C#).
    • +
    • 832. No cswtype typemap defined for type (C#).
    • +
    • 833. Warning for classname, base baseclass + ignored. Multiple inheritance is not supported in C#. (C#).
    • +
    • 834.
    • +
    • 835. No csfinalize typemap defined for type (C#).
    • +
    • 836. No csbody typemap defined for type (C#).
    • +
    • 837. No csout typemap defined for type (C#).
    • +
    • 838. No csin typemap defined for type (C#).
    • +
    • 839.
    • +
    • 840.
    • +
    • 841.
    • +
    • 842. Covariant return types not supported in C#. Proxy method will + return basetype (C#).
    • +
    • 843. No csconstruct typemap defined for type (C#).
    • +
    • 844. C# exception may not be thrown - no $excode or excode attribute + in typemap typemap. (C#).
    • +
    • 845. Unmanaged code contains a call to a SWIG_CSharpSetPendingException method and C# code does not handle - pending exceptions via the canthrow attribute. (C#).
    • -
    -
      -
    • 870. Warning for classname: Base baseclass - ignored. Multiple inheritance is not supported in PHP. (Php).
    • -
    • 871. Unrecognized pragma pragma. (Php).
    • -
    -

    15.9.7 User defined (900-999)

    -

    These numbers can be used by your own application.

    -

    15.10 History

    -

    The ability to control warning messages was first added to - SWIG-1.3.12.

    + pending exceptions via the canthrow attribute. (C#). + +
      +
    • 870. Warning for classname: Base baseclass + ignored. Multiple inheritance is not supported in PHP. (Php).
    • +
    • 871. Unrecognized pragma pragma. (Php).
    • +
    +

    18.9.8 User defined (900-999)

    +

    These numbers can be used by your own application.

    +

    18.10 History

    +

    The ability to control warning messages was first added to + SWIG-1.3.12.


    -

    16 Working with Modules

    +

    19 Working with Modules

    - + -

    16.1 Modules Introduction

    -

    Each invocation of SWIG requires a module name to be specified. The +

    19.1 Modules Introduction

    +

    Each invocation of SWIG requires a module name to be specified. The module name is used to name the resulting target language extension module. Exactly what this means and what the name is used for depends on the target language, for example the name can define a target language namespace or merely be a useful name for naming files or helper classes. Essentially, a module comprises target language wrappers for a chosen collection of global variables/functions, - structs/classes and other C/C++ types.

    -

    The module name can be supplied in one of two ways. The first is to - specify it with the special %module directive. This directive + structs/classes and other C/C++ types.

    +

    The module name can be supplied in one of two ways. The first is to + specify it with the special %module directive. This directive must appear at the beginning of the interface file. The general form of - this directive is:

    -
    -
    -%module(option1="value1", option2="value2", ...) modulename
    -
    -
    -

    where the modulename is mandatory and the options add one or more + this directive is:

    +
    +
    +%module(option1="value1", option2="value2", ...) modulename
    +
    +
    +

    where the modulename is mandatory and the options add one or more optional additional features. Typically no options are specified, for - example:

    -
    -
    -%module mymodule
    -
    -
    -

    The second way to specify the module name is with the -module - command line option, for example -module mymodule. If the + example:

    +
    +
    +%module mymodule
    +
    +
    +

    The second way to specify the module name is with the -module + command line option, for example -module mymodule. If the module name is supplied on the command line, it overrides the name - specified by the %module directive.

    -

    When first working with SWIG, users commonly start by creating a + specified by the %module directive.

    +

    When first working with SWIG, users commonly start by creating a single module. That is, you might define a single SWIG interface that wraps some set of C/C++ code. You then compile all of the generated wrapper code together and use it. For large applications, however, this approach is problematic---the size of the generated wrapper code can be rather large. Moreover, it is probably easier to manage the target - language interface when it is broken up into smaller pieces.

    -

    This chapter describes the problem of using SWIG in programs where + language interface when it is broken up into smaller pieces.

    +

    This chapter describes the problem of using SWIG in programs where you want to create a collection of modules. Each module in the - collection is created via separate invocations of SWIG.

    -

    16.2 Basics

    -

    The basic usage case with multiple modules is when modules do not + collection is created via separate invocations of SWIG.

    +

    19.2 Basics

    +

    The basic usage case with multiple modules is when modules do not have cross-references (ie. when wrapping multiple independent C APIs). In that case, swig input files should just work out of the box - you simply create multiple wrapper .cxx files, link them into your application, and insert/load each in the scripting language runtime as - you would do for the single module case.

    -

    A bit more complex is the case in which modules need to share + you would do for the single module case.

    +

    A bit more complex is the case in which modules need to share information. For example, when one module extends the class of another - by deriving from it:

    -
    -
    + by deriving from it:

    +
    +
     // File: base.h
     class base {
     public:
       int foo();
     };
    -
    -
     
    -
    +
    +
     
    +
     // File: base_module.i
     %module base_module
     
    @@ -20256,9 +22238,9 @@ public:
     #include "base.h"
     %}
     %include "base.h"
    -
    -
     
    -
    +
    +
     
    +
     // File: derived_module.i
     %module derived_module
     
    @@ -20270,32 +22252,32 @@ public:
       int bar();
     };
     %}
    -
    -
    -

    To create the wrapper properly, module derived_module needs - to know about the base class and that its interface is covered - in another module. The line %import "base_module.i" lets SWIG - know exactly that. Often the .h file is passed to %import - instead of the .i, which unfortunately doesn't work for all +

    +
    +

    To create the wrapper properly, module derived_module needs + to know about the base class and that its interface is covered + in another module. The line %import "base_module.i" lets SWIG + know exactly that. Often the .h file is passed to %import + instead of the .i, which unfortunately doesn't work for all language modules. For example, Python requires the name of module that the base class exists in so that the proxy classes can fully inherit the base class's methods. Typically you will get a warning when the - module name is missing, eg:

    -
    -
    + module name is missing, eg:

    +
    +
     derived_module.i:8: Warning 401: Base class 'base' ignored - unknown module name for base. Either
     import
     the appropriate module interface file or specify the name of the module in the %import directive.
    -
    -
    -

    It is sometimes desirable to import the header file rather than the +

    +
    +

    It is sometimes desirable to import the header file rather than the interface file and overcome the above warning. For example in the case of the imported interface being quite large, it may be desirable to simplify matters and just import a small header file of dependent - types. This can be done by specifying the optional module - attribute in the %import directive. The derived_module.i - file shown above could be replaced with the following:

    -
    + types. This can be done by specifying the optional module
    + attribute in the %import directive. The derived_module.i
    + file shown above could be replaced with the following:
    +
     // File: derived_module.i
     %module derived_module
     
    @@ -20306,90 +22288,90 @@ class derived : public base {
     public:
       int bar();
     };
    -
    -

    -

    Note that "base_module" is the module name and is the same as that - specified in %module in base_module.i as well as the -%import in derived_module.i.

    -

    Another issue to beware of is that multiple dependent wrappers +

    +

    +

    Note that "base_module" is the module name and is the same as that + specified in %module in base_module.i as well as the +%import in derived_module.i.

    +

    Another issue to beware of is that multiple dependent wrappers should not be linked/loaded in parallel from multiple threads as SWIG - provides no locking - for more on that issue, read on.

    -

    16.3 The SWIG runtime code

    -

    Many of SWIG's target languages generate a set of functions commonly + provides no locking - for more on that issue, read on.

    +

    19.3 The SWIG runtime code

    +

    Many of SWIG's target languages generate a set of functions commonly known as the "SWIG runtime." These functions are primarily related to the runtime type system which checks pointer types and performs other tasks such as proper casting of pointer values in C++. As a general rule, the statically typed target languages, such as Java, use the language's built in static type checking and have no need for a SWIG runtime. All the dynamically typed / interpreted languages rely on the - SWIG runtime.

    -

    The runtime functions are private to each SWIG-generated module. + SWIG runtime.

    +

    The runtime functions are private to each SWIG-generated module. That is, the runtime functions are declared with "static" linkage and are visible only to the wrapper functions defined in that module. The only problem with this approach is that when more than one SWIG module is used in the same application, those modules often need to share type information. This is especially true for C++ programs where SWIG must collect and share information about inheritance relationships that - cross module boundaries.

    -

    To solve the problem of sharing information across modules, a + cross module boundaries.

    +

    To solve the problem of sharing information across modules, a pointer to the type information is stored in a global variable in the target language namespace. During module initialization, type information is loaded into the global data structure of type - information from all modules.

    -

    There are a few trade offs with this approach. This type information + information from all modules.

    +

    There are a few trade offs with this approach. This type information is global across all SWIG modules loaded, and can cause type conflicts between modules that were not designed to work together. To solve this approach, the SWIG runtime code uses a define SWIG_TYPE_TABLE to provide a unique type table. This behavior can be enabled when compiling the generated _wrap.cxx or _wrap.c file by adding - -DSWIG_TYPE_TABLE=myprojectname to the command line argument.

    -

    Then, only modules compiled with SWIG_TYPE_TABLE set to + -DSWIG_TYPE_TABLE=myprojectname to the command line argument.

    +

    Then, only modules compiled with SWIG_TYPE_TABLE set to myprojectname will share type information. So if your project has three modules, all three should be compiled with -DSWIG_TYPE_TABLE=myprojectname, and then these three modules will share type information. But any other project's types will not - interfere or clash with the types in your module.

    -

    Another issue relating to the global type table is thread safety. If + interfere or clash with the types in your module.

    +

    Another issue relating to the global type table is thread safety. If two modules try and load at the same time, the type information can become corrupt. SWIG currently does not provide any locking, and if you use threads, you must make sure that modules are loaded serially. Be careful if you use threads and the automatic module loading that some scripting languages provide. One solution is to load all modules before spawning any threads, or use SWIG_TYPE_TABLE to separate type tables so - they do not clash with each other.

    -

    Lastly, SWIG uses a #define SWIG_RUNTIME_VERSION, located in + they do not clash with each other.

    +

    Lastly, SWIG uses a #define SWIG_RUNTIME_VERSION, located in Lib/swigrun.swg and near the top of every generated module. This number gets incremented when the data structures change, so that SWIG modules generated with different versions can peacefully coexist. So the type structures are separated by the (SWIG_TYPE_TABLE, SWIG_RUNTIME_VERSION) pair, where by default SWIG_TYPE_TABLE is empty. Only modules compiled - with the same pair will share type information.

    -

    16.4 External access to the - runtime

    -

    As described in The run-time - type checker, the functions SWIG_TypeQuery, -SWIG_NewPointerObj, and others sometimes need to be called. Calling + with the same pair will share type information.

    +

    19.4 External access to the + runtime

    +

    As described in The run-time + type checker, the functions SWIG_TypeQuery, +SWIG_NewPointerObj, and others sometimes need to be called. Calling these functions from a typemap is supported, since the typemap code is - embedded into the _wrap.c file, which has those declarations + embedded into the _wrap.c file, which has those declarations available. If you need to call the SWIG run-time functions from another C file, there is one header you need to include. To generate the header - that needs to be included, SWIG can be run in a different mode via --external-runtime to generate the run-time instead of the normal - mode of processing an input interface file. For example:

    -
    + that needs to be included, SWIG can be run in a different mode via 
    +-external-runtime to generate the run-time instead of the normal
    + mode of processing an input interface file. For example:
    +
     $ swig -python -external-runtime <filename>
    -
    -

    -

    The filename argument is optional and if it is not passed, then the - default filename will be something like swigpyrun.h, depending +

    +

    +

    The filename argument is optional and if it is not passed, then the + default filename will be something like swigpyrun.h, depending on the language. This header file should be treated like any of the other _wrap.c output files, and should be regenerated when the _wrap - files are. After including this header, your code will be able to call -SWIG_TypeQuery, SWIG_NewPointerObj, SWIG_ConvertPtr + files are. After including this header, your code will be able to call +SWIG_TypeQuery, SWIG_NewPointerObj, SWIG_ConvertPtr and others. The exact argument parameters for these functions might differ between language modules; please check the language module - chapters for more information.

    -

    Inside this header the functions are declared static and are included + chapters for more information.

    +

    Inside this header the functions are declared static and are included inline into the file, and thus the file does not need to be linked against any SWIG libraries or code (you might still need to link against the language libraries like libpython-2.3). Data is shared @@ -20398,42 +22380,42 @@ SWIG_TypeQuery, SWIG_NewPointerObj, SWIG_ConvertPtr along with the generated wrapper files into your own package, so that you can distribute a package that can be compiled without SWIG installed (this works because the header file is self-contained, and - does not need to link with anything).

    -

    This header will also use the -DSWIG_TYPE_TABLE described above, so + does not need to link with anything).

    +

    This header will also use the -DSWIG_TYPE_TABLE described above, so when compiling any code which includes the generated header file should define the SWIG_TYPE_TABLE to be the same as the module whose types you - are trying to access.

    -

    16.5 A word of caution about static libraries -

    -

    When working with multiple SWIG modules, you should take care not to - use static libraries. For example, if you have a static library -libfoo.a and you link a collection of SWIG modules with that + are trying to access.

    +

    19.5 A word of caution about static libraries +

    +

    When working with multiple SWIG modules, you should take care not to + use static libraries. For example, if you have a static library +libfoo.a and you link a collection of SWIG modules with that library, each module will get its own private copy of the library code - inserted into it. This is very often NOT what you want and it + inserted into it. This is very often NOT what you want and it can lead to unexpected or bizarre program behavior. When working with dynamically loadable modules, you should try to work exclusively with - shared libraries.

    -

    16.6 References

    -

    Due to the complexity of working with shared libraries and multiple + shared libraries.

    +

    19.6 References

    +

    Due to the complexity of working with shared libraries and multiple modules, it might be a good idea to consult an outside reference. John - Levine's "Linkers and Loaders" is highly recommended.

    -

    16.7 Reducing the wrapper file size

    -

    Using multiple modules with the %import directive is the + Levine's "Linkers and Loaders" is highly recommended.

    +

    19.7 Reducing the wrapper file size

    +

    Using multiple modules with the %import directive is the most common approach to modularising large projects. In this way a number of different wrapper files can be generated, thereby avoiding the generation of a single large wrapper file. There are a couple of alternative solutions for reducing the size of a wrapper file through - the use of command line options and features.

    -

    -fcompact -
    This command line option will compact the size of the wrapper file + the use of command line options and features.

    +

    -fcompact +
    This command line option will compact the size of the wrapper file without changing the code generated into the wrapper file. It simply removes blank lines and joins lines of code together. This is useful - for compilers that have a maximum file size that can be handled.

    -

    -fvirtual -
    This command line option will remove the generation of superfluous - virtual method wrappers. Consider the following inheritance hierarchy:

    -
    -
    + for compilers that have a maximum file size that can be handled.

    +

    -fvirtual +
    This command line option will remove the generation of superfluous + virtual method wrappers. Consider the following inheritance hierarchy:

    +
    +
     struct Base {
       virtual void method();
       ...
    @@ -20443,64 +22425,64 @@ struct Derived : Base {
       virtual void method();
       ...
     };
    -
    -
    -

    Normally wrappers are generated for both methods, whereas this - command line option will suppress the generation of a wrapper for -Derived::method. Normal polymorphic behaviour remains as -Derived::method will still be called should you have a Derived - instance and call the wrapper for Base::method.

    -

    %feature("compactdefaultargs") -
    This feature can reduce the number of wrapper methods when wrapping - methods with default arguments. The section on -default arguments discusses the feature and its limitations.

    +
    +
    +

    Normally wrappers are generated for both methods, whereas this + command line option will suppress the generation of a wrapper for +Derived::method. Normal polymorphic behaviour remains as +Derived::method will still be called should you have a Derived + instance and call the wrapper for Base::method.

    +

    %feature("compactdefaultargs") +
    This feature can reduce the number of wrapper methods when wrapping + methods with default arguments. The section on +default arguments discusses the feature and its limitations.


    -

    17 Using SWIG with ccache - ccache-swig(1) manpage -

    +

    20 Using SWIG with ccache - ccache-swig(1) manpage +

    - + -

    -

    17.1 NAME

    -

    ccache-swig - a fast compiler cache

    -

    -

    17.2 SYNOPSIS

    -

    ccache-swig [OPTION]

    -

    ccache-swig <compiler> [COMPILER OPTIONS]

    -

    <compiler> [COMPILER OPTIONS]

    -

    -

    17.3 DESCRIPTION

    -

    ccache-swig is a compiler cache. It speeds up re-compilation of +

    +

    20.1 NAME

    +

    ccache-swig - a fast compiler cache

    +

    +

    20.2 SYNOPSIS

    +

    ccache-swig [OPTION]

    +

    ccache-swig <compiler> [COMPILER OPTIONS]

    +

    <compiler> [COMPILER OPTIONS]

    +

    +

    20.3 DESCRIPTION

    +

    ccache-swig is a compiler cache. It speeds up re-compilation of C/C++/SWIG code by caching previous compiles and detecting when the same compile is being done again. ccache-swig is ccache plus support for SWIG. ccache and ccache-swig are used interchangeably in this - document.

    -

    -

    17.4 OPTIONS SUMMARY

    -

    Here is a summary of the options to ccache-swig.

    -

    -
    + document.

    +

    +

    20.4 OPTIONS SUMMARY

    +

    Here is a summary of the options to ccache-swig.

    +

    +
     
     -s                      show statistics summary
     -z                      zero statistics
    @@ -20511,83 +22493,83 @@ default arguments discusses the feature and its limitations.

    -h this help page -V print version number -
    -

    -

    17.5 OPTIONS

    -

    These options only apply when you invoke ccache as "ccache-swig". +

    +

    +

    20.5 OPTIONS

    +

    These options only apply when you invoke ccache as "ccache-swig". When invoked as a compiler none of these options apply. In that case your normal compiler options apply and you should refer to your - compilers documentation.

    -

    -
    -

    -

    -h
    -
    Print a options summary page -

    -

    -
    -
    -s
    -
    Print the current statistics summary for the cache. The statistics + compilers documentation.

    +

    +
    +

    +

    -h
    +
    Print a options summary page +

    +

    +
    +
    -s
    +
    Print the current statistics summary for the cache. The statistics are stored spread across the subdirectories of the cache. Using "ccache-swig -s" adds up the statistics across all subdirectories and prints the totals. -

    -

    -
    -
    -z
    -
    Zero the cache statistics. -

    -

    -
    -
    -V
    -
    Print the ccache version number -

    -

    -
    -
    -c
    -
    Clean the cache and re-calculate the cache file count and size +

    +

    +
    +
    -z
    +
    Zero the cache statistics. +

    +

    +
    +
    -V
    +
    Print the ccache version number +

    +

    +
    +
    -c
    +
    Clean the cache and re-calculate the cache file count and size totals. Normally the -c option should not be necessary as ccache keeps the cache below the specified limits at runtime and keeps statistics up to date on each compile. This option is mostly useful if you manually modify the cache contents or believe that the cache size statistics may be inaccurate. -

    -

    -
    -
    -C
    -
    Clear the entire cache, removing all cached files. -

    -

    -
    -
    -F <maxfiles>
    -
    This sets the maximum number of files allowed in the cache. The +

    +

    +
    +
    -C
    +
    Clear the entire cache, removing all cached files. +

    +

    +
    +
    -F <maxfiles>
    +
    This sets the maximum number of files allowed in the cache. The value is stored inside the cache directory and applies to all future compiles. Due to the way the value is stored the actual value used is always rounded down to the nearest multiple of 16. -

    -

    -
    -
    -M <maxsize>
    -
    This sets the maximum cache size. You can specify a value in +

    +

    +
    +
    -M <maxsize>
    +
    This sets the maximum cache size. You can specify a value in gigabytes, megabytes or kilobytes by appending a G, M or K to the value. The default is gigabytes. The actual value stored is rounded down to the nearest multiple of 16 kilobytes. -

    -
    -

    -
    -

    -

    17.6 INSTALLATION

    -

    There are two ways to use ccache. You can either prefix your compile +

    +
    +

    +
    +

    +

    20.6 INSTALLATION

    +

    There are two ways to use ccache. You can either prefix your compile commands with "ccache-swig" or you can create a symbolic link between ccache-swig and the names of your compilers. The first method is most convenient if you just want to try out ccache or wish to use it for some specific projects. The second method is most useful for when you - wish to use ccache for all your compiles.

    -

    To install for usage by the first method just copy ccache-swig to - somewhere in your path.

    -

    To install for the second method do something like this:

    -
    + wish to use ccache for all your compiles.

    +

    To install for usage by the first method just copy ccache-swig to + somewhere in your path.

    +

    To install for the second method do something like this:

    +
     
       cp ccache-swig /usr/local/bin/
       ln -s /usr/local/bin/ccache-swig /usr/local/bin/gcc
    @@ -20595,20 +22577,20 @@ default arguments discusses the feature and its limitations.

    ln -s /usr/local/bin/ccache-swig /usr/local/bin/cc ln -s /usr/local/bin/ccache-swig /usr/local/bin/swig -
    +
    This will work as long as /usr/local/bin comes before the path to gcc (which is usually in /usr/bin). After installing you may wish to run "which gcc" to make sure that the correct link is being used. -

    Note! Do not use a hard link, use a symbolic link. A hardlink will - cause "interesting" problems.

    -

    -

    17.7 EXTRA OPTIONS

    -

    When run as a compiler front end ccache usually just takes the same +

    Note! Do not use a hard link, use a symbolic link. A hardlink will + cause "interesting" problems.

    +

    +

    20.7 EXTRA OPTIONS

    +

    When run as a compiler front end ccache usually just takes the same command line options as the compiler you are using. The only exception to this is the option '--ccache-skip'. That option can be used to tell ccache that the next option is definitely not a input filename, and - should be passed along to the compiler as-is.

    -

    The reason this can be important is that ccache does need to parse + should be passed along to the compiler as-is.

    +

    The reason this can be important is that ccache does need to parse the command line and determine what is an input filename and what is a compiler option, as it needs the input filename to determine the name of the resulting object file (among other things). The heuristic ccache @@ -20616,139 +22598,139 @@ default arguments discusses the feature and its limitations.

    as a file is treated as an input file name (usually a C file). By using --ccache-skip you can force an option to not be treated as an input file name and instead be passed along to the compiler as a command line - option.

    -

    -

    17.8 ENVIRONMENT VARIABLES

    -

    ccache uses a number of environment variables to control operation. - In most cases you won't need any of these as the defaults will be fine.

    -

    -
    -

    -

    -

    CCACHE_DIR
    -
    the CCACHE_DIR environment variable specifies where ccache will + option.

    +

    +

    20.8 ENVIRONMENT VARIABLES

    +

    ccache uses a number of environment variables to control operation. + In most cases you won't need any of these as the defaults will be fine.

    +

    +
    +

    +

    +

    CCACHE_DIR
    +
    the CCACHE_DIR environment variable specifies where ccache will keep its cached compiler output. The default is "$HOME/.ccache". -

    -

    -
    -
    CCACHE_TEMPDIR
    -
    the CCACHE_TEMPDIR environment variable specifies where ccache will +

    +

    +
    +
    CCACHE_TEMPDIR
    +
    the CCACHE_TEMPDIR environment variable specifies where ccache will put temporary files. The default is the same as CCACHE_DIR. Note that the CCACHE_TEMPDIR path must be on the same filesystem as the CCACHE_DIR path, so that renames of files between the two directories can work. -

    -

    -
    -
    CCACHE_LOGFILE
    -
    If you set the CCACHE_LOGFILE environment variable then ccache will +

    +

    +
    +
    CCACHE_LOGFILE
    +
    If you set the CCACHE_LOGFILE environment variable then ccache will write some log information on cache hits and misses in that file. This is useful for tracking down problems. -

    -

    -
    -
    CCACHE_VERBOSE
    -
    If you set the CCACHE_VERBOSE environment variable then ccache will +

    +

    +
    +
    CCACHE_VERBOSE
    +
    If you set the CCACHE_VERBOSE environment variable then ccache will display on stdout all the compiler invocations that it makes. This can useful for debugging unexpected problems. -

    -

    -
    -
    CCACHE_PATH
    -
    You can optionally set CCACHE_PATH to a colon separated path where +

    +

    +
    +
    CCACHE_PATH
    +
    You can optionally set CCACHE_PATH to a colon separated path where ccache will look for the real compilers. If you don't do this then ccache will look for the first executable matching the compiler name in the normal PATH that isn't a symbolic link to ccache itself. -

    -

    -
    -
    CCACHE_CC
    -
    You can optionally set CCACHE_CC to force the name of the compiler +

    +

    +
    +
    CCACHE_CC
    +
    You can optionally set CCACHE_CC to force the name of the compiler to use. If you don't do this then ccache works it out from the command line. -

    -

    -
    -
    CCACHE_PREFIX
    -
    This option adds a prefix to the command line that ccache runs when +

    +

    +
    +
    CCACHE_PREFIX
    +
    This option adds a prefix to the command line that ccache runs when invoking the compiler. Also see the section below on using ccache with distcc. -

    -

    -
    -
    CCACHE_DISABLE
    -
    If you set the environment variable CCACHE_DISABLE then ccache will +

    +

    +
    +
    CCACHE_DISABLE
    +
    If you set the environment variable CCACHE_DISABLE then ccache will just call the real compiler, bypassing the cache completely. -

    -

    -
    -
    CCACHE_READONLY
    -
    the CCACHE_READONLY environment variable tells ccache to attempt to +

    +

    +
    +
    CCACHE_READONLY
    +
    the CCACHE_READONLY environment variable tells ccache to attempt to use existing cached object files, but not to try to add anything new to the cache. If you are using this because your CCACHE_DIR is read-only, then you may find that you also need to set CCACHE_TEMPDIR as otherwise ccache will fail to create the temporary files. -

    -

    -
    -
    CCACHE_CPP2
    -
    If you set the environment variable CCACHE_CPP2 then ccache will +

    +

    +
    +
    CCACHE_CPP2
    +
    If you set the environment variable CCACHE_CPP2 then ccache will not use the optimisation of avoiding the 2nd call to the pre-processor by compiling the pre-processed output that was used for finding the hash in the case of a cache miss. This is primarily a debugging option, although it is possible that some unusual compilers will have problems with the intermediate filename extensions used in this optimisation, in which case this option could allow ccache to be used. -

    -

    -
    -
    CCACHE_NOCOMPRESS
    -
    If you set the environment variable CCACHE_NOCOMPRESS then there is +

    +

    +
    +
    CCACHE_NOCOMPRESS
    +
    If you set the environment variable CCACHE_NOCOMPRESS then there is no compression used on files that go into the cache. However, this setting has no effect on how files are retrieved from the cache, compressed results will still be usable. -

    -

    -
    -
    CCACHE_NOSTATS
    -
    If you set the environment variable CCACHE_NOSTATS then ccache will +

    +

    +
    +
    CCACHE_NOSTATS
    +
    If you set the environment variable CCACHE_NOSTATS then ccache will not update the statistics files on each compile. -

    -

    -
    -
    CCACHE_NLEVELS
    -
    The environment variable CCACHE_NLEVELS allows you to choose the +

    +

    +
    +
    CCACHE_NLEVELS
    +
    The environment variable CCACHE_NLEVELS allows you to choose the number of levels of hash in the cache directory. The default is 2. The minimum is 1 and the maximum is 8. -

    -

    -
    -
    CCACHE_HARDLINK
    -
    If you set the environment variable CCACHE_HARDLINK then ccache +

    +

    +
    +
    CCACHE_HARDLINK
    +
    If you set the environment variable CCACHE_HARDLINK then ccache will attempt to use hard links from the cache directory when creating the compiler output rather than using a file copy. Using hard links is faster, but can confuse programs like 'make' that rely on modification times. Hard links are never made for compressed cache files. -

    -

    -
    -
    CCACHE_RECACHE
    -
    This forces ccache to not use any cached results, even if it finds +

    +

    +
    +
    CCACHE_RECACHE
    +
    This forces ccache to not use any cached results, even if it finds them. New results are still cached, but existing cache entries are ignored. -

    -

    -
    -
    CCACHE_UMASK
    -
    This sets the umask for ccache and all child processes (such as the +

    +

    +
    +
    CCACHE_UMASK
    +
    This sets the umask for ccache and all child processes (such as the compiler). This is mostly useful when you wish to share your cache with other users. Note that this also affects the file permissions set on the object files created from your compilations. -

    -

    -
    -
    CCACHE_HASHDIR
    -
    This tells ccache to hash the current working directory when +

    +

    +
    +
    CCACHE_HASHDIR
    +
    This tells ccache to hash the current working directory when calculating the hash that is used to distinguish two compiles. This prevents a problem with the storage of the current working directory in the debug info of a object file, which can lead ccache to give a cached @@ -20756,11 +22738,11 @@ default arguments discusses the feature and its limitations.

    incorrectly. This option is off by default as the incorrect setting of this debug info rarely causes problems. If you strike problems with gdb not using the correct directory then enable this option. -

    -

    -
    -
    CCACHE_UNIFY
    -
    If you set the environment variable CCACHE_UNIFY then ccache will +

    +

    +
    +
    CCACHE_UNIFY
    +
    If you set the environment variable CCACHE_UNIFY then ccache will use the C/C++ unifier when hashing the pre-processor output if -g is not used in the compile. The unifier is slower than a normal hash, so setting this environment variable loses a little bit of speed, but it @@ -20770,30 +22752,30 @@ default arguments discusses the feature and its limitations.

    CCACHE_UNIFY set cannot be used when CCACHE_UNIFY is not set and vice versa. The reason the unifier is off by default is that it can give incorrect line number information in compiler warning messages. -

    -

    -
    -
    CCACHE_EXTENSION
    -
    Normally ccache tries to automatically determine the extension to +

    +

    +
    +
    CCACHE_EXTENSION
    +
    Normally ccache tries to automatically determine the extension to use for intermediate C pre-processor files based on the type of file being compiled. Unfortunately this sometimes doesn't work, for example when using the aCC compiler on HP-UX. On systems like this you can use the CCACHE_EXTENSION option to override the default. On HP-UX set this environment variable to "i" if you use the aCC compiler. -

    -

    -
    -
    CCACHE_STRIPC
    -
    If you set the environment variable CCACHE_STRIPC then ccache will +

    +

    +
    +
    CCACHE_STRIPC
    +
    If you set the environment variable CCACHE_STRIPC then ccache will strip the -c option when invoking the preprocessor. This option is primarily for the Sun Workshop C++ compiler as without this option an unwarranted warning is displayed: CC: Warning: "-E" redefines product from "object" to "source (stdout)" when -E and -c is used together. -

    -

    -
    -
    CCACHE_SWIG
    -
    When using SWIG as the compiler and it does not have 'swig' in the +

    +

    +
    +
    CCACHE_SWIG
    +
    When using SWIG as the compiler and it does not have 'swig' in the executable name, then the CCACHE_SWIG environment variable needs to be set in order for ccache to work correctly with SWIG. The use of CCACHE_CPP2 is also recommended for SWIG due to some preprocessor @@ -20801,1883 +22783,206 @@ default arguments discusses the feature and its limitations.

    generated code with and without this option set. Known problems are using preprocessor directives within %inline blocks and the use of '#pragma SWIG'. -

    -
    -

    -
    -

    -

    17.9 CACHE SIZE MANAGEMENT

    -

    By default ccache has a one gigabyte limit on the cache size and no +

    +
    +

    +
    +

    +

    20.9 CACHE SIZE MANAGEMENT

    +

    By default ccache has a one gigabyte limit on the cache size and no maximum number of files. You can set a different limit using the "ccache -M" and "ccache -F" options, which set the size and number of - files limits.

    -

    When these limits are reached ccache will reduce the cache to 20% + files limits.

    +

    When these limits are reached ccache will reduce the cache to 20% below the numbers you specified in order to avoid doing the cache clean - operation too often.

    -

    -

    17.10 CACHE COMPRESSION

    -

    By default on most platforms ccache will compress all files it puts + operation too often.

    +

    +

    20.10 CACHE COMPRESSION

    +

    By default on most platforms ccache will compress all files it puts into the cache using the zlib compression. While this involves a negligible performance slowdown, it significantly increases the number of files that fit in the cache. You can turn off compression setting - the CCACHE_NOCOMPRESS environment variable.

    -

    -

    17.11 HOW IT WORKS

    -

    The basic idea is to detect when you are compiling exactly the same + the CCACHE_NOCOMPRESS environment variable.

    +

    +

    20.11 HOW IT WORKS

    +

    The basic idea is to detect when you are compiling exactly the same code a 2nd time and use the previously compiled output. You detect that - it is the same code by forming a hash of:

    -

    -
      -
    • the pre-processor output from running the compiler with -E
    • -
    • the command line options
    • -
    • the real compilers size and modification time
    • -
    • any stderr output generated by the compiler
    • -
    -

    These are hashed using md4 (a strong hash) and a cache file is + it is the same code by forming a hash of:

    +

    +
      +
    • the pre-processor output from running the compiler with -E
    • +
    • the command line options
    • +
    • the real compilers size and modification time
    • +
    • any stderr output generated by the compiler
    • +
    +

    These are hashed using md4 (a strong hash) and a cache file is formed based on that hash result. When the same compilation is done a second time ccache is able to supply the correct compiler output - (including all warnings etc) from the cache.

    -

    ccache has been carefully written to always produce exactly the same + (including all warnings etc) from the cache.

    +

    ccache has been carefully written to always produce exactly the same compiler output that you would get without the cache. If you ever discover a case where ccache changes the output of your compiler then - please let me know.

    -

    -

    17.12 USING CCACHE WITH DISTCC

    -

    distcc is a very useful program for distributing compilation across + please let me know.

    +

    +

    20.12 USING CCACHE WITH DISTCC

    +

    distcc is a very useful program for distributing compilation across a range of compiler servers. It is often useful to combine distcc with ccache, so that compiles that are done are sped up by distcc, but that - ccache avoids the compile completely where possible.

    -

    To use distcc with ccache I recommend using the CCACHE_PREFIX + ccache avoids the compile completely where possible.

    +

    To use distcc with ccache I recommend using the CCACHE_PREFIX option. You just need to set the environment variable CCACHE_PREFIX to 'distcc' and ccache will prefix the command line used with the compiler - with the command 'distcc'.

    -

    -

    17.13 SHARING A CACHE

    -

    A group of developers can increase the cache hit rate by sharing a + with the command 'distcc'.

    +

    +

    20.13 SHARING A CACHE

    +

    A group of developers can increase the cache hit rate by sharing a cache directory. The hard links however cause unwanted side effects, as all links to a cached file share the file's modification timestamp. This results in false dependencies to be triggered by timestamp-based build systems whenever another user links to an existing file. Typically, users will see that their libraries and binaries are relinked without reason. To share a cache without side effects, the - following conditions need to be met:

    -

    -
      -
    • Use the same CCACHE_DIR environment variable - setting
    • -
    • Unset the CCACHE_HARDLINK environment variable
    • -
    • Make sure everyone sets the CCACHE_UMASK environment variable to + following conditions need to be met:

      +

      +
        +
      • Use the same CCACHE_DIR environment variable + setting
      • +
      • Unset the CCACHE_HARDLINK environment variable
      • +
      • Make sure everyone sets the CCACHE_UMASK environment variable to 002, this ensures that cached files are accessible to everyone in the - group.
      • -
      • Make sure that all users have write permission in the entire cache - directory (and that you trust all users of the shared cache).
      • -
      • Make sure that the setgid bit is set on all directories in the + group.
      • +
      • Make sure that all users have write permission in the entire cache + directory (and that you trust all users of the shared cache).
      • +
      • Make sure that the setgid bit is set on all directories in the cache. This tells the filesystem to inherit group ownership for new directories. The command "chmod g+s `find $CCACHE_DIR -type d`" might - be useful for this.
      • -
      • Set CCACHE_NOCOMPRESS for all users, if there are - users with versions of ccache that do not support compression.
      • -
      -

      -

      17.14 HISTORY

      -

      ccache was inspired by the compilercache shell script script written - by Erik Thiele and I would like to thank him for an excellent piece of - work. See -http://www.erikyyy.de/compilercache/ for the Erik's scripts. + be useful for this.

    • +
    • Set CCACHE_NOCOMPRESS for all users, if there are + users with versions of ccache that do not support compression.
    • +
    +

    +

    20.14 HISTORY

    +

    ccache was inspired by the compilercache shell script written by + Erik Thiele and I would like to thank him for an excellent piece of + work. See +http://www.erikyyy.de/compilercache/ for the Erik's scripts. ccache-swig is a port of the original ccache with support added for use - with SWIG.

    -

    I wrote ccache because I wanted to get a bit more speed out of a + with SWIG.

    +

    I wrote ccache because I wanted to get a bit more speed out of a compiler cache and I wanted to remove some of the limitations of the - shell-script version.

    -

    -

    17.15 DIFFERENCES FROM COMPILERCACHE

    -

    The biggest differences between Erik's compilercache script and - ccache are:

    -
      -
    • ccache is written in C, which makes it a bit faster (calling out to - external programs is mostly what slowed down the scripts).
    • -
    • ccache can automatically find the real compiler
    • -
    • ccache keeps statistics on hits/misses
    • -
    • ccache can do automatic cache management
    • -
    • ccache can cache compiler output that includes warnings. In many - cases this gives ccache a much higher cache hit rate.
    • -
    • ccache can handle a much wider ranger of compiler options
    • -
    • ccache avoids a double call to cpp on a cache miss
    • -
    -

    -

    17.16 CREDITS

    -

    Thanks to the following people for their contributions to ccache

    -
      -
    • Erik Thiele for the original compilercache script
    • -
    • Luciano Rocha for the idea of compiling the pre-processor output to - avoid a 2nd cpp pass
    • -
    • Paul Russell for many suggestions and the debian packaging
    • -
    -

    -

    17.17 AUTHOR

    -

    ccache was written by Andrew Tridgell -http://samba.org/~tridge/. ccache was adapted to create ccache-swig - for use with SWIG by William Fulton.

    -

    If you wish to report a problem or make a suggestion then please - email the SWIG developers on the swig-devel mailing list, see -http://www.swig.org/mail.html

    -

    ccache is released under the GNU General Public License version 2 or - later. Please see the file COPYING for license details.

    -

    + shell-script version.

    +

    +

    20.15 DIFFERENCES FROM COMPILERCACHE

    +

    The biggest differences between Erik's compilercache script and + ccache are:

    +
      +
    • ccache is written in C, which makes it a bit faster (calling out to + external programs is mostly what slowed down the scripts).
    • +
    • ccache can automatically find the real compiler
    • +
    • ccache keeps statistics on hits/misses
    • +
    • ccache can do automatic cache management
    • +
    • ccache can cache compiler output that includes warnings. In many + cases this gives ccache a much higher cache hit rate.
    • +
    • ccache can handle a much wider ranger of compiler options
    • +
    • ccache avoids a double call to cpp on a cache miss
    • +
    +

    +

    20.16 CREDITS

    +

    Thanks to the following people for their contributions to ccache

    +
      +
    • Erik Thiele for the original compilercache script
    • +
    • Luciano Rocha for the idea of compiling the pre-processor output to + avoid a 2nd cpp pass
    • +
    • Paul Russell for many suggestions and the debian packaging
    • +
    +

    +

    20.17 AUTHOR

    +

    ccache was written by Andrew Tridgell +https://www.samba.org/~tridge/. ccache was adapted to create + ccache-swig for use with SWIG by William Fulton.

    +

    If you wish to report a problem or make a suggestion then please + email the SWIG developers on the swig-devel mailing list, see +http://www.swig.org/mail.html

    +

    ccache is released under the GNU General Public License version 2 or + later. Please see the file COPYING for license details.

    +


    -

    18 SWIG and Allegro Common Lisp

    +

    21 SWIG and Android

    - + -

    This chapter describes SWIG's support of Allegro Common Lisp. - Allegro CL is a full-featured implementation of the Common Lisp - language standard that includes many vendor-specific enhancements and - add-on modules for increased usability.

    -

    One such module included in Allegro CL is the Foreign Functions - Interface (FFI). This module, tailored primarily toward interfacing - with C/C++ and, historically, Fortran, provides a means by which - compiled foreign code can be loaded into a running lisp environment and - executed. The interface supports the calling of foreign functions and - methods, allows for executing lisp routines from foreign code - (callbacks), and the passing of data between foreign and lisp code.

    -

    The goal of this module is to make it possible to quickly generate - the necessary foreign function definitions so one can make use of C/C++ - foreign libraries directly from lisp without the tedium of having to - code them by hand. When necessary, it will also generate further C/C++ - code that will need to be linked with the intended library for proper - interfacing from lisp. It has been designed with an eye toward - flexibility. Some foreign function calls may release the heap, while - other should not. Some foreign functions should automatically convert - lisp strings into native strings, while others should not. These - adjustments and many more are possible with the current module.

    -

    It is significant to note that, while this is a vendor-specific - module, we would like to acknowledge the current and ongoing work by - developers in the open source lisp community that are working on - similar interfaces to implementation-independent foreign function - interfaces (UFFI or CFFI, for example). Such work can only benefit the - lisp community, and we would not be unhappy to see some enterprising - folk use this work to add to it.

    -

    18.1 Basics

    -

    18.1.1 Running SWIG

    -

    If you're reading this, you must have some library you need to - generate an interface for. In order for SWIG to do this work, however, - it needs a bit of information about how it should go about creating - your interface, and what you are interfacing to.

    -

    SWIG expects a description of what in the foreign interface you wish - to connect to. It must consisting of C/C++ declarations and special - SWIG directives. SWIG can be furnished with a header file, but an - interface can also be generated without library headers by supplying a - simple text file--called the interface file, which is typically named - with a .i extension--containing any foreign declarations of - identifiers you wish to use. The most common approach is to use a an - interface file with directives to parse the needed headers. A straight - parse of library headers will result in usable code, but SWIG - directives provides much freedom in how a user might tailor the - generated code to their needs or style of coding.

    -

    Note that SWIG does not require any function definitions; the - declarations of those functions is all that is necessary. Be careful - when tuning the interface as it is quite possible to generate code that - will not load or compile.

    -

    An example interface file is shown below. It makes use of two SWIG - directives, one of which requests that the declarations in a header - file be used to generate part of the interface, and also includes an - additional declaration to be added.

    -
    example.i -
    -%module example
    -
    -%include "header.h"
    -
    -int fact(int n);
    -
    -
    -

    The contents of header.h are very simple:

    -
    header.h -
    -int fact(char *statement);   // pass it a fact, and it will rate it.
    -
    -
    -

    The contents of example.cl will look like this:

    -
    example.cl -
    -(defpackage :example
    -  (:use :common-lisp :swig :ff :excl))
    -
    -  ... helper routines for defining the interface ...
    -
    -(swig-in-package ())
    -
    -(swig-defun ("fact")
    -  ((PARM0_statement cl:string (* :char) ))
    -  (:returning (:int )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_statement))
    -  (swig-ff-call SWIG_arg0)))
    -
    -(swig-defun ("fact")
    -  ((PARM0_n cl:integer :int ))
    -  (:returning (:int )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_n))
    -  (swig-ff-call SWIG_arg0)))
    -
    -(swig-dispatcher ("fact" :type :function :arities (1)))
    -
    -
    -

    The generated file contains calls to internal swig helper functions. - In this case there are two calls to swig-defun. These calls will expand - into code that will make the appropriate definitions using the Allegro - FFI. Note also, that this code is erroneous. Function - overloading is not supported in C, and this code will not compile even - though SWIG did not complain.

    -

    In order to generate a C interface to Allegro CL using this code run - swig using the -allegrocl option, as below:

    -
    -
    -% swig -allegrocl example.i
    -
    -
    -

    When building an interface to C++ code, include the -c++ - option:

    -
    -
    -% swig -allegrocl -c++ example.i
    -
    -
    -

    As a result of running one of the above commands, a file named -example.cl will be generated containing the lisp side of the - interface. As well, a file example_wrap.cxx is also generated, - containing C/C++ wrapper code to facilitate access to C++ methods, - enumeration values, and constant values. Wrapper functions are - necessary in C++ due to the lack of a standard for mangling the names - of symbols across all C++ compilers. These wrapper functions are - exported from the shared library as appropriate, using the C name - mangling convention. The lisp code that is generated will interface to - your foreign library through these wrappers.

    -

    It is possible to disable the creation of the .cxx file when - generating a C interface by using the -nocwrap command-line argument. - For interfaces that don't contain complex enum or constant expressions, - contain nested struct/union declarations, or doesn't need to use many - of the SWIG customization featuers, this will result in a more - streamlined, direct interface to the intended module.

    -

    The generated wrapper file is below. It contains very simple - wrappers by default, that simply pass the arguments to the actual - function.

    -
    example_wrap.i -
    -  ... lots of SWIG internals ...
    -
    -EXPORT int ACL___fact__SWIG_0 (char *larg1) {
    -  int lresult = (int)0 ;
    -  char *arg1 = (char *) 0 ;
    -  int result;
    -
    -  arg1 = larg1;
    -  try {
    -    result = (int)fact(arg1);
    -
    -    lresult = result;
    -    return lresult;
    -  } catch (...) {
    -    return (int)0;
    -  }
    -}
    -
    -
    -EXPORT int ACL___fact__SWIG_1 (int larg1) {
    -  int lresult = (int)0 ;
    -  int arg1 ;
    -  int result;
    -
    -  arg1 = larg1;
    -  try {
    -    result = (int)fact(arg1);
    -
    -    lresult = result;
    -    return lresult;
    -  } catch (...) {
    -    return (int)0;
    -  }
    -}
    -
    -
    -

    And again, the generated lisp code. Note that it differs from what - is generated when parsing C code:

    -
    -
    -  ...
    -
    -(swig-in-package ())
    -
    -(swig-defmethod ("fact" "ACL___fact__SWIG_0" :type :function :arity 1)
    -  ((PARM0_statement cl:string (* :char) ))
    -  (:returning (:int )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_statement))
    -  (swig-ff-call SWIG_arg0)))
    -
    -(swig-defmethod ("fact" "ACL___fact__SWIG_1" :type :function :arity 1)
    -  ((PARM0_n cl:integer :int ))
    -  (:returning (:int )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_n))
    -  (swig-ff-call SWIG_arg0)))
    -
    -(swig-dispatcher ("fact" :type :function :arities (1)))
    -
    -
    -

    In this case, the interface generates two swig-defmethod forms and a - swig-dispatcher form. This provides a single functional interface for - all overloaded routines. A more detailed description of this features - is to be found in the section titled Function overloading/Parameter - defaulting.

    -

    In order to load a C++ interface, you will need to build a shared - library from example_wrap.cxx. Be sure to link in the actual library - you created the interface for, as well as any other dependent shared - libraries. For example, if you intend to be able to call back into - lisp, you will also need to link in the Allegro shared library. The - library you create from the C++ wrapper will be what you then load into - Allegro CL.

    -

    18.1.2 Command Line Options

    -

    There are three Allegro CL specific command-line option:

    -
    -
    -swig -allegrocl [ options ] filename
    -
    -   -identifier-converter [name] - Binds the variable swig:*swig-identifier-convert* 
    -                                  in the generated .cl file to name.
    -                                  This function is used to generate symbols
    -                                  for the lisp side of the interface.
    -
    -   -cwrap - [default] Generate a .cxx file containing C wrapper function when
    -            wrapping C code. The interface generated is similar to what is
    -            done for C++ code.
    -   -nocwrap - Explicitly turn off generation of .cxx wrappers for C code. Reasonable
    -              for modules with simple interfaces. Can not handle all legal enum
    -              and constant constructs, or take advantage of SWIG customization features.
    -
    -   -isolate - With this command-line argument, all lisp helper functions are defined
    -              in a unique package named swig.<module-name> rather than
    -              swig. This prevents conflicts when the module is
    -              intended to be used with other swig generated interfaces that may,
    -              for instance, make use of different identifier converters.
    -
    -
    -

    See Section 17.5 Identifier converter - functions for more details.

    -

    18.1.3 Inserting user code into generated - files

    -

    It is often necessary to include user-defined code into the - automatically generated interface files. For example, when building a - C++ interface, example_wrap.cxx will likely not compile unless you add - a #include "header.h" directive. This can be done using the - SWIG %insert(section) %{ ...code... %} directive:

    -
    -
    -%module example
    -
    -%{
    -#include "header.h"
    -%}
    -
    -%include "header.h"
    -
    -int fact(int n);
    -
    -
    -

    Additional sections have been added for inserting into the generated - lisp interface file

    -
      -
    • lisphead - inserts before type declarations
    • -
    • lisp - inserts after type declarations according to where - it appears in the .i file
    • -
    -

    Note that the block %{ ... %} is effectively a shortcut for - %insert("header") %{ ... %}.

    -

    18.2 Wrapping Overview

    -

    New users to SWIG are encouraged to read SWIG Basics -, and SWIG and C++, for those interested in - generating an interface to C++.

    -

    18.2.1 Function Wrapping

    -

    Writing lisp code that directly invokes functions at the foreign - function interface level can be cumbersome. Data must often be - translated between lisp and foreign types, data extracted from objects, - foreign objects allocated and freed upon completion of the foreign - call. Dealing with pointers can be unwieldy when it comes to keeping - them distinct from other valid integer values.

    -

    We make an attempt to ease some of these burdens by making the - interface to foreign code much more lisp-like, rather than C like. How - this is done is described in later chapters. The layers themselves, - appear as follows:

    -
    -
    -        ______________
    -       |              |  (foreign side)
    -       | Foreign Code |  What we're generating an interface to.
    -       |______________|
    -               |
    -               |
    -        _______v______
    -       |              |  (foreign side)
    -       | Wrapper code |  extern "C" wrappers calling C++ 
    -       |______________|  functions and methods.
    -               |
    -    .  . . - - + - - . .  .
    -        _______v______
    -       |              |  (lisp side)
    -       |  FFI Layer   |  Low level lisp interface. ff:def-foreign-call,
    -       |______________|  ff:def-foreign-variable
    -               |
    -               +----------------------------
    -        _______v______              _______v______
    -       |              |            |              | (lisp side)    
    -       |    Defuns    |            |  Defmethods  | wrapper for overloaded
    -       |______________|            |______________| functions or those with
    -        (lisp side)                        |        defaulted arguments
    -        Wrapper for non-overloaded         |
    -        functions and methods       _______v______
    -                                   |              | (lisp side)
    -                                   |    Defuns    | dispatch function
    -                                   |______________| to overloads based
    -                                                    on arity
    -  
    -
    -

    18.2.2 Foreign Wrappers

    -

    These wrappers are as generated by SWIG default. The types of - function parameters can be transformed in place using the CTYPE - typemap. This is use for converting pass-by-value parameters to - pass-by-reference where necessary. All wrapper parameters are then - bound to local variables for possible transformation of values (see LIN - typemap). Return values can be transformed via the OUT typemap.

    -

    18.2.3 FFI Wrappers

    -

    These are the generated ff:def-foreign-call forms. No typemaps are - applicable to this layer, but the %ffargs directive is - available for use in .i files, to specify which keyword arguments - should be specified for a given function.

    -
    ffargs.i: -
    -%module ffargs
    -
    -%ffargs(strings_convert="nil", call_direct="t") foo;
    -%ffargs(strings_convert="nil", release_heap=":never", optimize_for_space="t") bar;
    -
    -int foo(float f1, float f2);
    -int foo(float f1, char c2);
    -
    -void bar(void *lisp_fn);
    -
    -char *xxx();
    -  
    -
    -

    Generates:

    -
    ffargs.cl: -
    -(swig-in-package ())
    -
    -(swig-defmethod ("foo" "ACL___foo__SWIG_0" :type :function :arity 2)
    -  ((PARM0_f1 cl:single-float :float )
    -   (PARM1_f2 cl:single-float :float ))
    -  (:returning (:int )
    -   :call-direct t
    -   :strings-convert nil)
    -  (let ((SWIG_arg0 PARM0_f1))
    -  (let ((SWIG_arg1 PARM1_f2))
    -  (swig-ff-call SWIG_arg0 SWIG_arg1))))
    -
    -(swig-defmethod ("foo" "ACL___foo__SWIG_1" :type :function :arity 2)
    -  ((PARM0_f1 cl:single-float :float )
    -   (PARM1_c2 cl:character :char character))
    -  (:returning (:int )
    -   :call-direct t
    -   :strings-convert nil)
    -  (let ((SWIG_arg0 PARM0_f1))
    -  (let ((SWIG_arg1 PARM1_c2))
    -  (swig-ff-call SWIG_arg0 SWIG_arg1))))
    -
    -(swig-dispatcher ("foo" :type :function :arities (2)))
    -(swig-defun ("bar" "ACL___bar__SWIG_0" :type :function)
    -  ((PARM0_lisp_fn  (* :void) ))
    -  (:returning (:void )
    -   :release-heap :never
    -   :optimize-for-space t
    -   :strings-convert nil)
    -  (let ((SWIG_arg0 PARM0_lisp_fn))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("xxx" "ACL___xxx__SWIG_0" :type :function)
    -  (:void)
    -  (:returning ((* :char) )
    -   :strings-convert t)
    -  (swig-ff-call))
    -  
    -
    -
    %ffargs(strings_convert="t");
    -
    -

    Is the only default value specified in allegrocl.swg to - force the muffling of warnings about automatic string conversion when - defining ff:def-foreign-call's.

    -

    18.2.4 Non-overloaded Defuns

    -

    These are simple defuns. There is no typechecking of arguments. - Parameters are bound to local variables for possible transformation of - values, such as pulling values out of instance slots or allocating - temporary stack allocated structures, via the lin typemap. - These arguments are then passed to the foreign-call (where typechecking - may occur). The return value from this function can be manipulated via - the lout typemap.

    -

    18.2.5 Overloaded Defuns

    -

    In the case of overloaded functions, mulitple layers are generated. - First, all the overloads for a given name are separated out into groups - based on arity, and are wrapped in defmethods. Each method calls a - distinct wrapper function, but are themselves distinguished by the - types of their arguments (see lispclass typemap). These are - further wrapped in a dispatching function (defun) which will invoke the - appropriate generic-function based on arity. This provides a single - functional interface to all overloads. The return value from this - function can be manipulated via the lout typemap.

    -

    18.2.6 What about constant and variable - access?

    -

    Along with the described functional layering, when creating a .cxx - wrapper, this module will generate getter and--if not - immutable--setter, functions for variables and constants. If the - -nocwrap option is used, defconstant and -ff:def-foreign-variable forms will be generated for accessing - constants and global variables. These, along with the defuns - listed above are the intended API for calling into the foreign module.

    -

    18.2.7 Object Wrapping

    -

    All non-primitive types (Classes, structs, unions, and typedefs - involving same) have a corresponding foreign-type defined on the lisp - side via ff:def-foreign-type.

    -

    All non-primitive types are further represented by a CLOS class, - created via defclass. An attempt is made to create the same class - hierarchy, with all classes inheriting directly or indirectly from - ff:foreign-pointer. Further, wherever it is apparent, all pointers - returned from foreign code are wrapped in a CLOS instance of the - appropriate class. For ff:def-foreign-calls that have been defined to - expect a :foreign-address type as argument, these CLOS instances can - legally be passed and the pointer to the C++ object automatically - extracted. This is a natural feature of Allegro's foreign function - interface.

    -

    18.3 Wrapping Details

    -

    In this section is described how particular C/C++ constructs are - translated into lisp.

    -

    18.3.1 Namespaces

    -

    C++ namespaces are translated into Lisp packages by SWIG. The Global - namespace is mapped to a package named by the %module - directive or the -module command-line argument. Further - namespaces are generated by the swig-defpackage utility - function and given names based on Allegro CLs nested namespace - convention. For example:

    -
    foo.i: -
    -%module foo
    -
    -%{
    -#include "foo.h"
    -%}
    -
    -%include "foo.h"
    -
    -namespace car {
    -  ...
    -  namespace tires {
    -    int do_something(int n);
    -  }
    -}
    -    
    -
    -

    Generates the following code.

    -
    foo.cl -
    -(defpackage :foo
    -  (:use :common-lisp :swig :ff :excl))
    -
    -...
    -
    -(swig-defpackage ("car"))
    -(swig-defpackage ("car" "tires"))
    -
    -...
    -
    -(swig-in-package ("car" "tires"))
    -(swig-defun ("do_something" "ACL_car_tires__do_something__SWIG_0" :type :function)
    -  ((PARM0_n  :int ))
    -  (:returning (:int )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_n))
    -  (swig-ff-call SWIG_arg0)))
    -    
    -
    -

    The above interface file would cause packages foo, foo.car, and - foo.car.tires to be created. One would find the function wrapper for - do_something defined in the foo.car.tires package(*).

    -

    (*) Except for the package named by the module, all namespace - names are passed to the identifier-converter-function as strings with a - :type of :namespace. It is the job of this function - to generate the desired symbol, accounting for case preferences, - additional naming cues, etc.

    -

    Note that packages created by swig-defpackage do not use - the COMMON-LISP or EXCL package. This reduces possible conflicts when - defining foreign types via the SWIG interface in all but the - toplevel modules package. This may lead to confusion if, for - example, the current package is foo.car.tires and you attempt - to use a common-lisp function such as (car '(1 2 3).

    -

    18.3.2 Constants

    -

    Constants, as declared by the preprocessor #define macro or SWIG -%constant directive, are included in SWIG's parse tree when it can - be determined that they are, or could be reduced to, a literal value. - Such values are translated into defconstant forms in the generated lisp - wrapper when the -nocwrap command-line options is used. Else, wrapper - functions are generated as in the case of variable access (see section - below).

    -

    Here are examples of simple preprocessor constants when using - -nocwrap.

    -
    -
    -#define A 1                    => (swig-defconstant "A" 1)  
    -#define B 'c'                  => (swig-defconstant "B" #\c)
    -#define C B                    => (swig-defconstant "C" #\c)
    -#define D 1.0e2                => (swig-defconstant "D" 1.0d2)
    -#define E 2222                 => (swig-defconstant "E" 2222)
    -#define F (unsigned int)2222   => no code generated
    -#define G 1.02e2f              => (swig-defconstant "G" 1.02f2)
    -#define H foo                  => no code generated
    -      
    -
    -

    Note that where SWIG is unable to determine if a constant is a - literal, no node is added to the SWIG parse tree, and so no values can - be generated.

    -

    For preprocessor constants containing expressions which can be - reduced to literal values, nodes are created, but with no - simplification of the constant value. A very very simple infix to - prefix converter has been implemented that tries to do the right thing - for simple cases, but does not for more complex expressions. If the - literal parser determines that something is wrong, a warning will be - generated and the literal expression will be included in the generated - code, but commented out.

    -
    -
    -#define I A + E                => (swig-defconstant "I" (+ 1 2222))
    -#define J 1|2                  => (swig-defconstant "J" (logior 1 2))
    -#define Y 1 + 2 * 3 + 4        => (swig-defconstant "Y" (* (+ 1 2) (+ 3 4)))
    -#define Y1 (1 + 2) * (3 + 4)   => (swig-defconstant "Y1" (* (+ 1 2) (+ 3 4)))
    -#define Y2 1 * 2 + 3 * 4       => (swig-defconstant "Y2" (* 1 (+ 2 3) 4))  ;; WRONG
    -#define Y3 (1 * 2) + (3 * 4)   => (swig-defconstant "Y3" (* 1 (+ 2 3) 4))  ;; WRONG
    -#define Z 1 + 2 - 3 + 4 * 5    => (swig-defconstant "Z" (* (+ 1 (- 2 3) 4) 5)) ;; WRONG
    -      
    -
    -

    Users are cautioned to get to know their constants before use, or - not use the -nocwrap command-line option.

    -

    18.3.3 Variables

    -

    For C wrapping, a def-foreign-variable call is generated for access - to global variables.

    -

    When wrapping C++ code, both global and member variables, getter - wrappers are generated for accessing their value, and if not immutable, - setter wrappers as well. In the example below, note the lack of a - setter wrapper for global_var, defined as const.

    -
    vars.h -
    -namespace nnn {
    -  int const global_var = 2;
    -  float glob_float = 2.0;
    -}
    -    
    -
    -

    Generated code:

    -
    vars.cl -
    -(swig-in-package ("nnn"))
    -(swig-defun ("global_var" "ACL_nnn__global_var_get__SWIG_0" :type :getter)
    -  (:void)
    -  (:returning (:int )
    -   :strings-convert t)
    -  (swig-ff-call))
    -
    -
    -(swig-defun ("glob_float" "ACL_nnn__glob_float_set__SWIG_0" :type :setter)
    -  ((PARM0_glob_float  :float ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_glob_float))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("glob_float" "ACL_nnn__glob_float_get__SWIG_0" :type :getter)
    -  (:void)
    -  (:returning (:float )
    -   :strings-convert t)
    -  (swig-ff-call))
    -    
    -
    -

    Note also, that where applicable, setter wrappers are implemented as - setf methods on the getter function, providing a lispy interface to the - foreign code.

    -
    -
    -user> (load "globalvar.dll")
    -; Foreign loading globalvar.dll.
    -t
    -user> (load "globalvar.cl")
    -; Loading c:\mikel\src\swig\test\globalvar.cl
    -t
    -user> 
    -globalvar> (globalvar.nnn::global_var)
    -2
    -globalvar> (globalvar.nnn::glob_float)
    -2.0
    -globalvar> (setf (globalvar.nnn::glob_float) 3.0)
    -3.0
    -globalvar> (globalvar.nnn::glob_float)
    -3.0
    -    
    -
    -

    18.3.4 Enumerations

    -

    In C, an enumeration value is an integer value, while in C++ an - enumeration value is implicitly convertible to an integer value, but - can also be distinguished by its enum type. For each enum declaration a - def-foreign-type is generated, assigning the enum a default type of - :int. Users may adjust the foreign type of enums via SWIG typemaps -.

    -

    Enum values are a bit trickier as they can be initialized using any - valid C/C++ expression. In C with the -nocwrap command-line option, we - handle the typical cases (simple integer initialization) and generate a - defconstant form for each enum value. This has the advantage of it not - being necessary to probe into foreign space to retrieve enum values. - When generating a .cxx wrapper file, a more general solution is - employed. A wrapper variable is created in the module_wrap.cxx file, - and a ff:def-foreign-variable call is generated to retrieve its value - into lisp.

    -

    For example, the following header file

    enum.h: -
    -enum COL { RED, GREEN, BLUE };
    -enum FOO { FOO1 = 10, FOO2, FOO3 };
    -      
    -

    -

    In -nocwrap mode, generates

    -
    enum.cl: -
    -(swig-def-foreign-type "COL" :int)
    -(swig-defconstant "RED" 0)
    -(swig-defconstant "GREEN" (+ #.(swig-insert-id "RED" () :type :constant) 1))
    -(swig-defconstant "BLUE" (+ #.(swig-insert-id "GREEN" () :type :constant) 1))
    -
    -(swig-def-foreign-type "FOO" :int)
    -(swig-defconstant "FOO1" 10)
    -(swig-defconstant "FOO2" (+ #.(swig-insert-id "FOO1" () :type :constant) 1))
    -(swig-defconstant "FOO3" (+ #.(swig-insert-id "FOO2" () :type :constant) 1))
    -      
    -
    -

    And when generating a .cxx wrapper

    enum_wrap.cxx: -
    -EXPORT const int ACL_ENUM___RED__SWIG_0 = RED;
    -EXPORT const int ACL_ENUM___GREEN__SWIG_0 = GREEN;
    -EXPORT const int ACL_ENUM___BLUE__SWIG_0 = BLUE;
    -EXPORT const int ACL_ENUM___FOO1__SWIG_0 = FOO1;
    -EXPORT const int ACL_ENUM___FOO2__SWIG_0 = FOO2;
    -EXPORT const int ACL_ENUM___FOO3__SWIG_0 = FOO3;
    -      
    -

    -

    and

    -
    enum.cl: -
    -(swig-def-foreign-type "COL" :int)
    -(swig-defvar "RED" "ACL_ENUM___RED__SWIG_0" :type :constant)
    -(swig-defvar "GREEN" "ACL_ENUM___GREEN__SWIG_0" :type :constant)
    -(swig-defvar "BLUE" "ACL_ENUM___BLUE__SWIG_0" :type :constant)
    -
    -(swig-def-foreign-type "FOO" :int)
    -(swig-defvar "FOO1" "ACL_ENUM___FOO1__SWIG_0" :type :constant)
    -(swig-defvar "FOO2" "ACL_ENUM___FOO2__SWIG_0" :type :constant)
    -(swig-defvar "FOO3" "ACL_ENUM___FOO3__SWIG_0" :type :constant)
    -
    -      
    -
    -

    18.3.5 Arrays

    -

    One limitation in the Allegro CL foreign-types module, is that, - without macrology, expressions may not be used to specify the - dimensions of an array declaration. This is not a horrible drawback - unless it is necessary to allocate foreign structures based on the - array declaration using ff:allocate-fobject. When it can be determined - that an array bound is a valid numeric value, SWIG will include this in - the generated array declaration on the lisp side, otherwise the value - will be included, but commented out.

    -

    Below is a comprehensive example, showing a number of legal C/C++ - array declarations and how they are translated into foreign-type - specifications in the generated lisp code.

    -
    array.h -
    -#define MAX_BUF_SIZE 1024
    -
    -namespace FOO {
    -  int global_var1[13];
    -  float global_var2[MAX_BUF_SIZE];
    -
    -}
    -
    -enum COLOR { RED = 10, GREEN = 20, BLUE, PURPLE = 50, CYAN };
    -
    -namespace BAR {
    -  char global_var3[MAX_BUF_SIZE + 1];
    -  float global_var4[MAX_BUF_SIZE][13];
    -  signed short global_var5[MAX_BUF_SIZE + MAX_BUF_SIZE];
    -
    -  int enum_var5[GREEN];
    -  int enum_var6[CYAN];
    -
    -  COLOR enum_var7[CYAN][MAX_BUF_SIZE];
    -}
    -    
    -
    -

    Generates:

    -
    array.cl -
    -(in-package #.*swig-module-name*)
    -
    -(swig-defpackage ("FOO"))
    -(swig-defpackage ("BAR"))
    -
    -(swig-in-package ())
    -(swig-def-foreign-type "COLOR" :int)
    -(swig-defvar "RED" "ACL_ENUM___RED__SWIG_0" :type :constant)
    -(swig-defvar "GREEN" "ACL_ENUM___GREEN__SWIG_0" :type :constant)
    -(swig-defvar "BLUE" "ACL_ENUM___BLUE__SWIG_0" :type :constant)
    -(swig-defvar "PURPLE" "ACL_ENUM___PURPLE__SWIG_0" :type :constant)
    -(swig-defvar "CYAN" "ACL_ENUM___CYAN__SWIG_0" :type :constant)
    -
    -(swig-in-package ())
    -
    -(swig-defconstant "MAX_BUF_SIZE" 1024)
    -(swig-in-package ("FOO"))
    -
    -(swig-defun ("global_var1" "ACL_FOO__global_var1_get__SWIG_0" :type :getter)
    -  (:void)
    -  (:returning ((* :int) )
    -   :strings-convert t)
    -  (make-instance 'ff:foreign-pointer :foreign-address (swig-ff-call)))
    -
    -
    -(swig-defun ("global_var2" "ACL_FOO__global_var2_set__SWIG_0" :type :setter)
    -  ((global_var2  (:array :float 1024) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 global_var2))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-in-package ())
    -(swig-in-package ("BAR"))
    -(swig-defun ("global_var3" "ACL_BAR__global_var3_set__SWIG_0" :type :setter)
    -  ((global_var3  (:array :char #|1024+1|#) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 global_var3))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("global_var4" "ACL_BAR__global_var4_set__SWIG_0" :type :setter)
    -  ((global_var4  (:array (:array :float 13) 1024) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 global_var4))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("global_var4" "ACL_BAR__global_var4_get__SWIG_0" :type :getter)
    -  (:void)
    -  (:returning ((* (:array :float 13)) )
    -   :strings-convert t)
    -  (make-instance 'ff:foreign-pointer :foreign-address (swig-ff-call)))
    -
    -
    -(swig-defun ("global_var5" "ACL_BAR__global_var5_set__SWIG_0" :type :setter)
    -  ((global_var5  (:array :short #|1024+1024|#) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 global_var5))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("enum_var5" "ACL_BAR__enum_var5_set__SWIG_0" :type :setter)
    -  ((enum_var5  (:array :int #|GREEN|#) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 enum_var5))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("enum_var6" "ACL_BAR__enum_var6_set__SWIG_0" :type :setter)
    -  ((enum_var6  (:array :int #|CYAN|#) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 enum_var6))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("enum_var7" "ACL_BAR__enum_var7_set__SWIG_0" :type :setter)
    -  ((enum_var7  (:array (:array #.(swig-insert-id "COLOR" ()) 1024) #|CYAN|#) ))
    -  (:returning (:void )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 enum_var7))
    -  (swig-ff-call SWIG_arg0)))
    -
    -
    -(swig-defun ("enum_var7" "ACL_BAR__enum_var7_get__SWIG_0" :type :getter)
    -  (:void)
    -  (:returning ((* (:array #.(swig-insert-id "COLOR" ()) 1024)) )
    -   :strings-convert t)
    -  (make-instance 'ff:foreign-pointer :foreign-address (swig-ff-call)))
    -    
    -
    -

    18.3.6 Classes and Structs and Unions (oh - my!)

    -

    18.3.6.1 CLOS wrapping of

    -

    Classes, unions, and structs are all treated the same way by the - interface generator. For any of these objects, a def-foreign-type and a - defclass form are generated. For every function that returns an object - (or pointer/reference) of C/C++ type X, the wrapping defun (or - defmethod) on the Lisp side will automatically wrap the pointer - returned in an instance of the appropriate class. This makes it much - easier to write and debug code than if pointers were passed around as a - jumble of integer values.

    -

    18.3.6.2 CLOS Inheritance

    -

    The CLOS class schema generated by the interface mirrors the - inheritance of the classes in foreign code, with the ff:foreign-pointer - class at its root. ff:foreign-pointer is a thin wrapper for pointers - that is made available by the foreign function interface. Its key - benefit is that it may be passed as an argument to any - ff:def-foreign-call that is expecting a pointer as the parameter.

    -

    18.3.6.3 Member fields and functions

    -

    All public fields will have accessor getter/setter functions - generated for them, as appropriate. All public member functions will - have wrapper functions generated.

    -

    We currently ignore anything that isn't public (i.e. -private or protected), because the C++ compiler won't - allow the wrapper functions to access such fields. Likewise, the - interface does nothing for friend directives,

    -

    18.3.6.4 Why not directly access C++ - classes using foreign types?

    -

    The def-foreign-type generated by the SWIG interface is currently - incomplete. We can reliably generate the object layout of simple - structs and unions; they can be allocated via ff:allocate-fobject, and - their member variables accessed directly using the various - ff:fslot-value-* functions. However, the layout of C++ classes is more - complicated. Different compilers adjust class layout based on - inheritance patterns, and the presence of virtual member functions. The - size of member function pointers vary across compilers as well. As a - result, it is recommended that users of any generated interface not - attempt to access C++ instances via the foreign type system, but - instead use the more robust wrapper functions.

    -

    18.3.7 Templates

    -

    18.3.7.1 Generating wrapper code for - templates

    -

    SWIG provides support for dealing with templates, but by default, it - will not generate any member variable or function wrappers for - templated classes. In order to create these wrappers, you need to - explicitly tell SWIG to instantiate them. This is done via the -%template directive.

    -

    18.3.7.2 Implicit Template instantiation -

    -

    While no wrapper code is generated for accessing member variables, - or calling member functions, type code is generated to include these - templated classes in the foreign-type and CLOS class schema.

    -

    18.3.8 Typedef, Templates, and Synonym - Types

    -

    In C/C++ it is possible, via typedef, to have many names refer to - the same type. In general, this is not a problem, though it - can lead to confusion. Assume the below C++ header file:

    -
    synonyms.h -
    -class A { 
    -  int x;
    -  int y;
    -};
    -
    -typedef A Foo;
    -
    -A *xxx(int i);         /* sets A->x = A->y = i */
    -Foo *yyy(int i);       /* sets Foo->x = Foo->y = i */
    -
    -int zzz(A *inst = 0);  /* return inst->x + inst->y */
    -    
    -
    -

    The function zzz is an overloaded functions; the foreign - function call to it will be wrapped in a generic-function whose - argument will be checked against a type of A. Assuming a - simple implementation, a call to xxx(1) will return a pointer - to an A object, which will be wrapped in a CLOS instance of class A -, and a call to yyy(1) will result in a CLOS instance of type -Foo being returned. Without establishing a clear type relationship - between Foo and A, an attempt to call zzz(yyy(1)) - will result in an error.

    -

    We resolve this issue, by noting synonym relationships between types - while generating the interface. A Primary type is selected (more on - this below) from the candidate list of synonyms. For all other - synonyms, intead of generating a distinct CLOS class definition, we - generate a form that expands to:

    -
    (setf (find-class <synonym>) <primary>) -
    -

    The result is that all references to synonym types in foreign code, - are wrapped in the same CLOS wrapper, and, in particular, method - specialization in wrapping generic functions works as expected.

    -

    Given the above header file, synonym.h, a Lisp session would appear - as follows:

    -
    -
    -CL-USER> (load "synonym.dll")
    -; Foreign loading synonym.dll.
    -t
    -CL-USER> (load "synonym.cl")
    -; Loading c:\mikel\src\swig\test\synonym.cl
    -t
    -CL-USER> 
    -synonym> (setf a (xxx 3))
    -#<A nil #x3261a0 @ #x207299da>
    -synonym> (setf foo (yyy 10))
    -#<A nil #x3291d0 @ #x2072e982>
    -synonym> (zzz a)
    -6
    -synonym> (zzz foo)
    -20
    -synonym> 
    -    
    -
    -

    18.3.8.1 Choosing a primary type

    -

    The choice of a primary type is selected by the following criteria - from a set of synonym types.

    -
      -
    • If a synonym type has a class definition, it is the primary type.
    • -
    • If a synonym type is a class template and has been explicitly - instantiated via %template, it is the primary type.
    • -
    • For all other sets of synonymous types, the synonym which is parsed - first becomes the primary type.
    • -
    -

    18.3.9 Function overloading/Parameter - defaulting

    -

    For each possible argument combination, a distinct wrapper function - is created in the .cxx file. On the Lisp side, a generic functions is - defined for each possible arity the overloaded/defaulted call may have. - Each distinct wrapper is then called from within a defmethod on the - appropriate generic function. These are further wrapped inside a - dispatch function that checks the number of arguments it is called with - and passes them via apply to the appropriate generic-function. This - allows for a single entry point to overloaded functions on the lisp - side.

    -

    Example:

    -
    overload.h: -
    -
    -class A {
    - public:
    -  int x;
    -  int y;
    -};
    -
    -float xxx(int i, int x = 0);   /* return i * x */
    -float xxx(A *inst, int x);     /* return x + A->x + A->y */
    -    
    -
    -

    Creates the following three wrappers, for each of the possible - argument combinations

    -
    overload_wrap.cxx -
    -EXPORT void ACL___delete_A__SWIG_0 (A *larg1) {
    -  A *arg1 = (A *) 0 ;
    -
    -  arg1 = larg1;
    -  try {
    -    delete arg1;
    -
    -  } catch (...) {
    -
    -  }
    -}
    -
    -
    -EXPORT float ACL___xxx__SWIG_0 (int larg1, int larg2) {
    -  float lresult = (float)0 ;
    -  int arg1 ;
    -  int arg2 ;
    -  float result;
    -
    -  arg1 = larg1;
    -  arg2 = larg2;
    -  try {
    -    result = (float)xxx(arg1, arg2);
    -
    -    lresult = result;
    -    return lresult;
    -  } catch (...) {
    -    return (float)0;
    -  }
    -}
    -
    -
    -EXPORT float ACL___xxx__SWIG_1 (int larg1) {
    -  float lresult = (float)0 ;
    -  int arg1 ;
    -  float result;
    -
    -  arg1 = larg1;
    -  try {
    -    result = (float)xxx(arg1);
    -
    -    lresult = result;
    -    return lresult;
    -  } catch (...) {
    -    return (float)0;
    -  }
    -}
    -
    -
    -EXPORT float ACL___xxx__SWIG_2 (A *larg1, int larg2) {
    -  float lresult = (float)0 ;
    -  A *arg1 = (A *) 0 ;
    -  int arg2 ;
    -  float result;
    -
    -  arg1 = larg1;
    -  arg2 = larg2;
    -  try {
    -    result = (float)xxx(arg1, arg2);
    -
    -    lresult = result;
    -    return lresult;
    -  } catch (...) {
    -    return (float)0;
    -  }
    -}
    -    
    -
    -

    And the following foreign-function-call and method definitions on - the lisp side:

    -
    overload.cl -
    -(swig-defmethod ("xxx" "ACL___xxx__SWIG_0" :type :function :arity 2)
    -  ((PARM0_i cl:integer :int )
    -   (PARM1_x cl:integer :int ))
    -  (:returning (:float )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_i))
    -  (let ((SWIG_arg1 PARM1_x))
    -  (swig-ff-call SWIG_arg0 SWIG_arg1))))
    -
    -(swig-defmethod ("xxx" "ACL___xxx__SWIG_1" :type :function :arity 1)
    -  ((PARM0_i cl:integer :int ))
    -  (:returning (:float )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_i))
    -  (swig-ff-call SWIG_arg0)))
    -
    -(swig-defmethod ("xxx" "ACL___xxx__SWIG_2" :type :function :arity 2)
    -  ((PARM0_inst #.(swig-insert-id "A" () :type :class) (* #.(swig-insert-id "A" ())) )
    -   (PARM1_x cl:integer :int ))
    -  (:returning (:float )
    -   :strings-convert t)
    -  (let ((SWIG_arg0 PARM0_inst))
    -  (let ((SWIG_arg1 PARM1_x))
    -  (swig-ff-call SWIG_arg0 SWIG_arg1))))
    -
    -(swig-dispatcher ("xxx" :type :function :arities (1 2)))
    -    
    -
    -

    And their usage in a sample lisp session:

    -
    -
    -overload> (setf a (new_A))
    -#<A nil #x329268 @ #x206cf612>
    -overload> (setf (A_x a) 10)
    -10
    -overload> (setf (A_y a) 20)
    -20
    -overload> (xxx 1)
    -0.0
    -overload> (xxx 3 10)
    -30.0
    -overload> (xxx a 1)
    -31.0
    -overload> (xxx a 2)
    -32.0
    -overload> 
    -    
    -
    -

    18.3.10 Operator wrapping and Operator - overloading

    -

    Wrappers to defined C++ Operators are automatically renamed, using -%rename, to the following defaults:

    -
    -
    -/* name conversion for overloaded operators. */
    -#ifdef __cplusplus
    -%rename(__add__)             *::operator+;
    -%rename(__pos__)             *::operator+();
    -%rename(__pos__)             *::operator+() const;
    -
    -%rename(__sub__)             *::operator-;
    -%rename(__neg__)             *::operator-() const;
    -%rename(__neg__)             *::operator-();
    -
    -%rename(__mul__)             *::operator*;
    -%rename(__deref__)           *::operator*();
    -%rename(__deref__)           *::operator*() const;
    -
    -%rename(__div__)             *::operator/;
    -%rename(__mod__)             *::operator%;
    -%rename(__logxor__)          *::operator^;
    -%rename(__logand__)          *::operator&;
    -%rename(__logior__)          *::operator|;
    -%rename(__lognot__)          *::operator~();
    -%rename(__lognot__)          *::operator~() const;
    -
    -%rename(__not__)             *::operator!();
    -%rename(__not__)             *::operator!() const;
    -
    -%rename(__assign__)          *::operator=;
    -
    -%rename(__add_assign__)      *::operator+=;
    -%rename(__sub_assign__)      *::operator-=;
    -%rename(__mul_assign__)      *::operator*=;
    -%rename(__div_assign__)      *::operator/=;
    -%rename(__mod_assign__)      *::operator%=;
    -%rename(__logxor_assign__)   *::operator^=;
    -%rename(__logand_assign__)   *::operator&=;
    -%rename(__logior_assign__)   *::operator|=;
    -
    -%rename(__lshift__)          *::operator<<;
    -%rename(__lshift_assign__)   *::operator<<=;
    -%rename(__rshift__)          *::operator>>;
    -%rename(__rshift_assign__)   *::operator>>=;
    -
    -%rename(__eq__)              *::operator==;
    -%rename(__ne__)              *::operator!=;
    -%rename(__lt__)              *::operator<;
    -%rename(__gt__)              *::operator>;
    -%rename(__lte__)             *::operator<=;
    -%rename(__gte__)             *::operator>=;
    -
    -%rename(__and__)             *::operator&&;
    -%rename(__or__)              *::operator||;
    -
    -%rename(__preincr__)         *::operator++();
    -%rename(__postincr__)        *::operator++(int);
    -%rename(__predecr__)         *::operator--();
    -%rename(__postdecr__)        *::operator--(int);
    -
    -%rename(__comma__)           *::operator,();
    -%rename(__comma__)           *::operator,() const;
    -
    -%rename(__member_ref__)      *::operator->;
    -%rename(__member_func_ref__) *::operator->*;
    -
    -%rename(__funcall__)         *::operator();
    -%rename(__aref__)            *::operator[];
    -    
    -
    -

    Name mangling occurs on all such renamed identifiers, so that - wrapper name generated by B::operator= will be B___eq__ -, i.e. <class-or-namespace>_ has been added. Users may modify - these default names by adding %rename directives in their own - .i files.

    -

    Operator overloading can be achieved by adding functions based on - the mangled names of the function. In the following example, a class B - is defined with a Operator== method defined. The swig %extend - directive is used to add an overload method on Operator==.

    -
    opoverload.h -
    -class B {
    - public:
    -  int x;
    -  int y;
    -  bool operator==(B const& other) const;
    -};
    -    
    -
    -

    and

    -
    opoverload.i -
    -%module opoverload
    -
    -%{
    -#include <fstream>
    -#include "opoverload.h"
    -%}
    -
    -%{
    -bool B___eq__(B const *inst, int const x)
    -{
    -  // insert the function definition into the wrapper code before
    -  // the wrapper for it.
    -  // ... do stuff ...
    -}
    -%}
    -
    -%include "opoverload.h"
    -
    -%extend B {
    - public:
    -  bool __eq__(int const x) const;
    -};
    -    
    -
    -

    Either operator can be called via a single call to the dispatch - function:

    -
    -
    -opoverload> (B___eq__ x1 x2)
    -nil
    -opoverload> (B___eq__ x1 3)
    -nil
    -opoverload> 
    -    
    -
    -

    18.3.11 Varargs

    -

    Variable length argument lists are not supported, by default. If - such a function is encountered, a warning will generated to stderr. - Varargs are supported via the SWIG %varargs directive. This - directive allows you to specify a (finite) argument list which will be - inserted into the wrapper in place of the variable length argument - indicator. As an example, consider the function printf(). Its - declaration would appear as follows:

    -

    See the following section on Variable Length - arguments provides examples on how %varargs can be used, - along with other ways such functions can be wrapped.

    -

    18.3.12 C++ Exceptions

    -

    Each C++ wrapper includes a handler to catch any exceptions that may - be thrown while in foreign code. This helps prevent simple C++ errors - from killing the entire lisp process. There is currently no mechanism - to have these exceptions forwarded to the lisp condition system, nor - has any explicit support of the exception related SWIG typemaps been - implemented.

    -

    18.3.13 Pass by value, pass by reference -

    -

    Allegro CL does not support the passing of non-primitive foreign - structures by value. As a result, SWIG must automatically detect and - convert function parameters and return values to pointers whenever - necessary. This is done via the use of typemaps, and should - not require any fine tuning by the user, even for newly defined types.

    -

    18.4 Typemaps

    -

    SWIG Typemaps provide a powerful tool for automatically generating - code to handle various menial tasks required of writing an interface to - foreign code. The purpose of this section is to describe each of the - typemaps used by the Allegro CL module. Please read the chapter on -Typemaps for more information.

    -

    18.4.1 Code Generation in the C++ Wrapper -

    -

    Every C++ wrapper generated by SWIG takes the following form:

    -
    -
    -return-val wrapper-name(parm0, parm1, ..., parmN)
    -{
    -  return-val lresult;   /* return value from wrapper */
    -  <local-declaration>
    -  ... results;          /* return value from function call */
    -
    -  <binding locals to parameters>
    -
    -  try {
    -    result = function-name(local0, local1, ..., localN);
    -
    -    <convert and bind result to lresult>
    -
    -    return lresult;
    -  catch (...) {
    -    return (int)0;
    -  }
    -    
    -
    -

    18.4.1.1 IN Typemap

    -

    the in typemap is used to generate code to convert - parameters passed to C++ wrapper functions into the arguments desired - for the call being wrapped. That is, it fills in the code for the -<binding locals to parameters> section above. We use this map to - automatically convert parameters passed by reference to the wrapper - function into by-value arguments for the wrapped call, and also to - convert boolean values, which are passed as integers from lisp (by - default), into the appropriate type for the language of code being - wrapped.

    -

    These are the default specifications for the IN typemap. Here, -$input refers to the parameter code is being generated for, and -$1 is the local variable to which it is being assigned. The default - settings of this typemap are as follows:

    -
    -
    -%typemap(in) bool                          "$1 = (bool)$input;";
    -%typemap(in) char, unsigned char, signed char,
    -             short, signed short, unsigned short,
    -             int, signed int, unsigned int,
    -             long, signed long, unsigned long,
    -             float, double, long double, char *, void *, void,
    -             enum SWIGTYPE, SWIGTYPE *,
    -             SWIGTYPE[ANY], SWIGTYPE &     "$1 = $input;";
    -%typemap(in) SWIGTYPE                      "$1 = *$input;";
    -    
    -
    -

    18.4.1.2 OUT Typemap

    -

    The out typemap is used to generate code to form the return - value of the wrapper from the return value of the wrapped function. - This code is placed in the <convert and bind result to lresult> section - of the above code diagram. Its default mapping is as follows:

    -
    -
    -%typemap(out) bool                          "$result = (int)$1;";
    -%typemap(out) char, unsigned char, signed char,
    -              short, signed short, unsigned short,
    -              int, signed int, unsigned int,
    -              long, signed long, unsigned long,
    -              float, double, long double, char *, void *, void,
    -              enum SWIGTYPE, SWIGTYPE *,
    -              SWIGTYPE[ANY], SWIGTYPE &    "$result = $1;";
    -%typemap(out) SWIGTYPE                     "$result = new $1_type($1);";
    -    
    -
    -

    18.4.1.3 CTYPE Typemap

    -

    This typemap is not used for code generation, but purely for the - transformation of types in the parameter list of the wrapper function. - Its primary use is to handle by-value to by-reference conversion in the - wrappers parameter list. Its default settings are:

    -
    -
    -%typemap(ctype) bool                       "int";
    -%typemap(ctype) char, unsigned char, signed char,
    -                short, signed short, unsigned short,
    -                int, signed int, unsigned int,
    -                long, signed long, unsigned long,
    -                float, double, long double, char *, void *, void,
    -                enum SWIGTYPE, SWIGTYPE *,
    -                SWIGTYPE[ANY], SWIGTYPE &  "$1_ltype";
    -%typemap(ctype) SWIGTYPE                   "$&1_type";
    -    
    -
    -

    These three typemaps are specifically employed by the Allegro CL - interface generator. SWIG also implements a number of other typemaps - that can be used for generating code in the C/C++ wrappers. You can - read about these common typemaps here.

    -

    18.4.2 Code generation in Lisp wrappers

    -

    A number of custom typemaps have also been added to facilitate the - generation of code in the lisp side of the interface. These are - described below. The basic code generation structure is applied as a - series of nested expressions, one for each parameter, then one for - manipulating the return value, and last, the foreign function call - itself.

    -

    Note that the typemaps below use fully qualified symbols where - necessary. Users writing their own typemaps should do likewise. See the - explanation in the last paragraph of 16.3.1 - Namespaces for details.

    -

    18.4.2.1 LIN Typemap

    -

    The LIN typemap allows for the manipulating the lisp objects passed - as arguments to the wrapping defun before passing them to the foreign - function call. For example, when passing lisp strings to foreign code, - it is often necessary to copy the string into a foreign structure of - type (:char *) of appropriate size, and pass this copy to the foreign - call. Using the LIN typemap, one could arrange for the stack-allocation - of a foreign char array, copy your string into it, and not have to - worry about freeing the copy after the function returns.

    -

    The LIN typemap accepts the following $variable references.

    -
      -
    • $in - expands to the name of the parameter being applied to - this typemap
    • -
    • $out - expands to the name of the local variable assigned - to this typemap
    • -
    • $in_fftype - the foreign function type of the C type.
    • -
    • $*in_fftype - the foreign function type of the C type with - one pointer removed. If there is no pointer, then $*in_fftype is the - same as $in_fftype.
    • -
    • $body - very important. Instructs SWIG where subsequent - code generation steps should be inserted into the current typemap. - Leaving out a $body reference will result in lisp wrappers - that do very little by way of calling into foreign code. Not - recommended.
    • -
    -
    -
    -%typemap(lin) SWIGTYPE "(cl:let (($out $in))\n  $body)";
    -    
    -
    -

    18.4.2.2 LOUT Typemap

    -

    The LOUT typemap is the means by which we effect the wrapping of - foreign pointers in CLOS instances. It is applied after all LIN - typemaps, and immediately before the actual foreign-call.

    -

    The LOUT typemap uses the following $variable

    -
      -
    • $lclass - Expands to the CLOS class that represents - foreign-objects of the return type matching this typemap.
    • -
    • $body - Same as for the LIN map. Place this variable where - you want the foreign-function call to occur.
    • -
    • $ldestructor - Expands to the symbol naming the destructor - for this class ($lclass) of object. Allows you to insert finalization - or automatic garbage collection into the wrapper code (see default - mappings below).
    • -
    -
    -
    -%typemap(lout) bool, char, unsigned char, signed char,
    -               short, signed short, unsigned short,
    -               int, signed int, unsigned int,
    -               long, signed long, unsigned long,
    -               float, double, long double, char *, void *, void,
    -               enum SWIGTYPE    "$body";
    -%typemap(lout) SWIGTYPE[ANY], SWIGTYPE *,
    -               SWIGTYPE &       "(cl:make-instance '$lclass :foreign-address $body)";
    -%typemap(lout) SWIGTYPE    "(cl:let* ((address $body)\n
    -                            (ACL_result (cl:make-instance '$lclass :foreign-address address)))\n
    -                            (cl:unless (cl::zerop address)\n
    -                            (excl:schedule-finalization ACL_result #'$ldestructor))\n
    -                             ACL_result)";
    -    
    -
    -

    18.4.2.3 FFITYPE Typemap

    -

    The FFITYPE typemap works as a helper for a body of code that - converts C/C++ type specifications into Allegro CL foreign-type - specifications. These foreign-type specifications appear in - ff:def-foreing-type declarations, and in the argument list and return - values of ff:def-foreign-calls. You would modify this typemap if you - want to change how the FFI passes through arguments of a given type. - For example, if you know that a particular compiler represents booleans - as a single byte, you might add an entry for:

    -
    -
    -%typemap(ffitype) bool ":unsigned-char";
    -    
    -
    -

    Note that this typemap is pure type transformation, and is not used - in any code generations step the way the LIN and LOUT typemaps are. The - default mappings for this typemap are:

    -
    -
    -%typemap(ffitype) bool ":int";
    -%typemap(ffitype) char ":char";
    -%typemap(ffitype) unsigned char ":unsigned-char";
    -%typemap(ffitype) signed char ":char";
    -%typemap(ffitype) short, signed short ":short";
    -%typemap(ffitype) unsigned short ":unsigned-short";
    -%typemap(ffitype) int, signed int ":int";
    -%typemap(ffitype) unsigned int ":unsigned-int";
    -%typemap(ffitype) long, signed long ":long";
    -%typemap(ffitype) unsigned long ":unsigned-long";
    -%typemap(ffitype) float ":float";
    -%typemap(ffitype) double ":double";
    -%typemap(ffitype) char * "(* :char)";
    -%typemap(ffitype) void * "(* :void)";
    -%typemap(ffitype) void ":void";
    -%typemap(ffitype) enum SWIGTYPE ":int";
    -%typemap(ffitype) SWIGTYPE & "(* :void)";
    -    
    -
    -

    18.4.2.4 LISPTYPE Typemap

    -

    This is another type only transformation map, and is used to provide - the lisp-type, which is the optional third argument in argument - specifier in a ff:def-foreign-call form. Specifying a lisp-type allows - the foreign call to perform type checking on the arguments passed in. - The default entries in this typemap are:

    -
    -
    -%typemap(lisptype) bool "cl:boolean";
    -%typemap(lisptype) char "cl:character";
    -%typemap(lisptype) unsigned char "cl:integer";
    -%typemap(lisptype) signed char "cl:integer";
    -    
    -
    -

    18.4.2.5 LISPCLASS Typemap

    -

    The LISPCLASS typemap is used to generate the method signatures for - the generic-functions which wrap overloaded functions and functions - with defaulted arguments. The default entries are:

    -
    -
    -%typemap(lispclass) bool "t";
    -%typemap(lispclass) char "cl:character";
    -%typemap(lispclass) unsigned char, signed char,
    -                    short, signed short, unsigned short,
    -                    int, signed int, unsigned int,
    -                    long, signed long, unsigned long,
    -                    enum SWIGTYPE       "cl:integer";
    -%typemap(lispclass) float "cl:single-float";
    -%typemap(lispclass) double "cl:double-float";
    -%typemap(lispclass) char * "cl:string";
    -    
    -
    -

    18.4.3 Modifying SWIG behavior using - typemaps

    -

    The following example shows how we made use of the above typemaps to - add support for the wchar_t type.

    -
    -
    -%typecheck(SWIG_TYPECHECK_UNICHAR) wchar_t { $1 = 1; };
    -
    -%typemap(in)        wchar_t "$1 = $input;";
    -%typemap(lin)       wchar_t "(cl:let (($out (cl:char-code $in)))\n  $body)";
    -%typemap(lin)       wchar_t* "(excl:with-native-string
    -                                         ($out $in
    -                                          :external-format #+little-endian :fat-le 
    -                                                           #-little-endian :fat)\n
    -                                 $body)"
    -
    -%typemap(out)       wchar_t "$result = $1;";
    -%typemap(lout)      wchar_t "(cl:code-char $body)";
    -%typemap(lout)      wchar_t* "(excl:native-to-string $body
    -                                          :external-format #+little-endian :fat-le
    -                                                           #-little-endian :fat)";
    -
    -%typemap(ffitype)   wchar_t ":unsigned-short";
    -%typemap(lisptype)  wchar_t "";
    -%typemap(ctype)     wchar_t "wchar_t";
    -%typemap(lispclass) wchar_t "cl:character";
    -%typemap(lispclass) wchar_t* "cl:string";
    -    
    -
    -

    18.5 Identifier Converter functions

    -

    18.5.1 Creating symbols in the lisp - environment

    -

    Various symbols must be generated in the lisp environment to which - class definitions, functions, constants, variables, etc. must be bound. - Rather than force a particular convention for naming these symbols, an - identifier (to symbol) conversion function is used. A user-defined - identifier-converter can then implement any symbol naming, - case-modifying, scheme desired.

    -

    In generated SWIG code, whenever some interface object must be - referenced by its lisp symbol, a macro is inserted that calls the - identifier-converter function to generate the appropriate symbol - reference. It is therefore expected that the identifier-converter - function reliably return the same (eq) symbol given the same set of - arguments.

    -

    18.5.2 Existing identifier-converter - functions

    -

    Two basic identifier routines have been defined.

    -

    18.5.2.1 identifier-convert-null

    -

    No modification of the identifier string is performed. Based on - other arguments, the identifier may be concatenated with other strings, - from which a symbol will be created.

    -

    18.5.2.2 identifier-convert-lispify

    -

    All underscores in the identifier string are converted to hyphens. - Otherwise, identifier-convert-lispify performs the same symbol - transformations.

    -

    18.5.2.3 Default identifier to symbol - conversions

    -

    Check the definitions of the above two default identifier-converters - in Lib/allegrocl/allegrocl.swg for default naming conventions.

    -

    18.5.3 Defining your own - identifier-converter

    -

    A user-defined identifier-converter function should conform to the - following specification:

    -
    -
    -(defun identifier-convert-fn (id &key type class arity) ...body...)
    -result ==> symbol or (setf symbol)
    -
    -
    -

    The ID argument is a string representing an identifier in - the foreign environment.

    -

    The :type keyword argument provides more information on the type of - identifier. Its value is a symbol. This allows the identifier-converter - to apply different heuristics when mapping different types of - identifiers to symbols. SWIG will generate calls to your - identifier-converter using the following types.

    -
      -
    • :class - names a CLOS class.
    • -
    • :constant - names a defconstant
    • -
    • :constructor - names a function for creating a foreign object
    • -
    • :destructor - names a function for freeing a foreign object
    • -
    • :function - names a CLOS wrapping defmethod or defun.
    • -
    • :ff-operator - names a foreign call defined via ff:def-foreign-call
    • -
    • :getter - getter function
    • -
    • :namespace - names a C++ namespace
    • -
    • :setter - names a setter function. May return a (setf symbol) - reference
    • -
    • :operator - names a C++ operator, such as Operator=, Operator*.
    • -
    • :slot - names a slot in a struct/class/union declaration.
    • -
    • :type - names a foreign-type defined via ff:def-foreign-type.
    • -
    • :variable - names a variable defined via ff:def-foreign-variable.
    • -
    -

    The :class keyword argument is a string naming a foreign class. When - non-nil, it indicates that the current identifier has scope in the - specified class.

    -

    The :arity keyword argument only appears in swig:swig-defmethod - forms generated for overloaded functions. Its value is an integer - indicating the number of arguments passed to the routine indicated by - this identifier.

    -

    18.5.4 Instructing SWIG to use a particular - identifier-converter

    -

    By default, SWIG will use identifier-converter-null. To specify - another convert function, use the -identifier-converter - command-line argument. The value should be a string naming the function - you wish the interface to use instead, when generating symbols. ex:

    -
    -
    -% swig -allegrocl -c++ -module mymodule -identifier-converter my-identifier-converter
    -
    -

    -

    19 SWIG and Android

    - - - - -

    This chapter describes SWIG's support of Android.

    -

    19.1 Overview

    -

    The Android chapter is fairly short as support for Android is the +

    This chapter describes SWIG's support of Android.

    +

    21.1 Overview

    +

    The Android chapter is fairly short as support for Android is the same as for Java, where the Java Native Interface (JNI) is used to call - from Android Java into C or C++ compiled code. Everything in the -Java chapter applies to generating code for access from Android Java - code. This chapter contains a few Android specific notes and examples.

    -

    19.2 Android examples

    -

    19.2.1 Examples introduction

    -

    The examples require the -Android SDK and -Android NDK which can be installed as per instructions in the links. - The Eclipse version is not required for these examples as just the - command line tools are used (shown for Linux as the host, but Windows - will be very similar, if not identical in most places). Add the SDK - tools and NDK tools to your path and create a directory somewhere for - your Android projects (adjust PATH as necessary to where you installed - the tools):

    -
    -
    + from Android Java into C or C++ compiled code. Everything in the 
    +Java chapter applies to generating code for access from Android Java
    + code. This chapter contains a few Android specific notes and examples.

    +

    21.2 Android examples

    +

    21.2.1 Examples introduction

    +

    The examples require the +Android SDK and Android + NDK which can be installed as per instructions in the links. The + Eclipse version is not required for these examples as just the command + line tools are used (shown for Linux as the host, but Windows will be + very similar, if not identical in most places). Add the SDK tools and + NDK tools to your path and create a directory somewhere for your + Android projects (adjust PATH as necessary to where you installed the + tools):

    +
    +
     $ export PATH=$HOME/android/android-sdk-linux_x86/tools:$HOME/android/android-sdk-linux_x86/platform-tools:$HOME/android/android-ndk-r6b:$PATH
     $ mkdir AndroidApps 
     $ cd AndroidApps
    -
    -
    -

    The examples use a target id of 1. This might need changing +

    +
    +

    The examples use a target id of 1. This might need changing depending on your setup. After installation of the Android SDK, the available target ids can be viewed by running the command below. Please - adjust the id to suit your target device.

    -
    -
    + adjust the id to suit your target device.

    +
    +
     $ android list targets
    -
    -
    -

    The following examples are shipped with SWIG under the +

    +
    +

    The following examples are shipped with SWIG under the Examples/android directory and include a Makefile to build and install - each example.

    -

    19.2.2 Simple C example

    -

    This simple C example shows how to call a C function as well as read + each example.

    +

    21.2.2 Simple C example

    +

    This simple C example shows how to call a C function as well as read and modify a global variable. First we'll create and build a pure Java Android app. Afterwards the JNI code will be generated by SWIG and - built into the app. First create and build an app called SwigSimple - in a subdirectory called simple using the commands below. - Adjust the --target id as mentioned earlier in the -Examples introduction. -Managing Projects from the Command Line on the Android developer's - site is a useful reference for these steps.

    -
    -
    + built into the app. First create and build an app called SwigSimple
    + in a subdirectory called simple using the commands below.
    + Adjust the --target id as mentioned earlier in the 
    +Examples introduction. 
    +Managing Projects from the Command Line on the Android developer's
    + site is a useful reference for these steps.

    +
    +
     $ android create project --target 1 --name SwigSimple --path ./simple --activity SwigSimple --package org.swig.simple
     $ cd simple
     $ ant debug
    -
    -
    -

    Modify src/org/swig/simple/SwigSimple.java from the default - to:

    -
    -
    +
    +
    +

    Modify src/org/swig/simple/SwigSimple.java from the default + to:

    +
    +
     package org.swig.simple;
     
     import android.app.Activity;
    @@ -22727,13 +23032,13 @@ public class SwigSimple extends Activity
             // TODO
         }
     }
    -
    -
    -

    The above simply adds a Run button and scrollable text view +

    +
    +

    The above simply adds a Run button and scrollable text view as the GUI aspects of the program. The associated resources need to be - created, modify res/layout/main.xml as follows:

    -
    -
    + created, modify res/layout/main.xml as follows:

    +
    +
     <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
    @@ -22759,56 +23064,56 @@ public class SwigSimple extends Activity
         />
     </ScrollView>
     </LinearLayout>
    -
    -
    -

    Rebuild the project with your changes:

    -
    -
    +
    +
    +

    Rebuild the project with your changes:

    +
    +
     $ ant debug
    -
    -
    -

    Although there are no native function calls in the code, yet, you +

    +
    +

    Although there are no native function calls in the code, yet, you may want to check that this simple pure Java app runs before adding in the native calls. First, set up your Android device for hardware - debugging, see -Using hardware devices on the Android developer's site. When + debugging, see +Using hardware devices on the Android developer's site. When complete your device should be listed in those attached, something - like:

    -
    -
    + like:

    +
    +
     $ adb devices
     List of devices attached 
     A32-6DBE0001-9FF80000-015D62C3-02018028 device
    -
    -
    -

    This means you are now ready to install the application...

    -
    -
    +
    +
    +

    This means you are now ready to install the application...

    +
    +
     $ adb install bin/SwigSimple-debug.apk 
     95 KB/s (4834 bytes in 0.049s)
             pkg: /data/local/tmp/SwigSimple-debug.apk
     Success
    -
    -
    -

    The newly installed 'SwigSimple' app will be amongst all your other - applications on the home screen. Run the app and it will show a Run - button text box below it. Press the Run button to see the simple - text output.

    -

    The application can be uninstalled like any other application and in +

    +
    +

    The newly installed 'SwigSimple' app will be amongst all your other + applications on the home screen. Run the app and it will show a Run + button text box below it. Press the Run button to see the simple + text output.

    +

    The application can be uninstalled like any other application and in fact must be uninstalled before installing an updated version. - Uninstalling is quite easy too from your host computer:

    -
    -
    + Uninstalling is quite easy too from your host computer:

    +
    +
     $ adb uninstall org.swig.simple
     Success
    -
    -
    -

    Now that you have a pure Java Android app working, let's add some - JNI code generated from SWIG.

    -

    First create a jni subdirectory and then create some C - source code in jni/example.c:

    -
    -
    +
    +
    +

    Now that you have a pure Java Android app working, let's add some + JNI code generated from SWIG.

    +

    First create a jni subdirectory and then create some C + source code in jni/example.c:

    +
    +
     /* File : example.c */
     
     /* A global variable */
    @@ -22825,12 +23130,12 @@ int gcd(int x, int y) {
       }
       return g;
     }
    -
    -
    -

    Create a SWIG interface file for this C code, jni/example.i -:

    -
    -
    +
    +
    +

    Create a SWIG interface file for this C code, jni/example.i +:

    +
    +
     /* File : example.i */
     %module example
     
    @@ -22838,24 +23143,24 @@ int gcd(int x, int y) {
     extern int    gcd(int x, int y);
     extern double Foo;
     %}
    -
    -
    -

    Invoke SWIG as follows:

    -
    -
    +
    +
    +

    Invoke SWIG as follows:

    +
    +
     $ swig -java -package org.swig.simple -outdir src/org/swig/simple -o jni/example_wrap.c jni/example.i
    -
    -
    -

    SWIG generates the following files:

    -
      -
    • src/org/swig/simple/exampleJNI.java
    • -
    • src/org/swig/simple/example.java
    • -
    • jni/example_wrap.c
    • -
    -

    Next we need to create a standard Android NDK build system file -jni/Android.mk:

    -
    -
    +
    +
    +

    SWIG generates the following files:

    +
      +
    • src/org/swig/simple/exampleJNI.java
    • +
    • src/org/swig/simple/example.java
    • +
    • jni/example_wrap.c
    • +
    +

    Next we need to create a standard Android NDK build system file +jni/Android.mk:

    +
    +
     # File: Android.mk
     LOCAL_PATH := $(call my-dir)
     
    @@ -22865,29 +23170,29 @@ LOCAL_MODULE    := example
     LOCAL_SRC_FILES := example_wrap.c example.c
     
     include $(BUILD_SHARED_LIBRARY)
    -
    -
    -

    See the -Android NDK documentation for more on the NDK build system and - getting started with the NDK. A simple invocation of ndk-build will - compile the .c files and generate a shared object/system library. - Output will be similar to:

    -
    -
    +
    +
    +

    See the Android NDK + documentation for more on the NDK build system and getting started + with the NDK. A simple invocation of ndk-build will compile the .c + files and generate a shared object/system library. Output will be + similar to:

    +
    +
     $ ndk-build
     Compile thumb  : example <= example_wrap.c
     Compile thumb  : example <= example.c
     SharedLibrary  : libexample.so
     Install        : libexample.so => libs/armeabi/libexample.so
    -
    -
    -

    Now that the C JNI layer has been built, we can write Java code to - call into the this layer. Modify the nativeCall method in -src/org/swig/simple/SwigSimple.java to call the JNI code as follows +

    +
    +

    Now that the C JNI layer has been built, we can write Java code to + call into the this layer. Modify the nativeCall method in +src/org/swig/simple/SwigSimple.java to call the JNI code as follows and add the static constructor to load the system library containing - the compiled JNI C code:

    -
    -
    + the compiled JNI C code:

    +
    +
         /** Calls into C/C++ code */
         public void nativeCall()
         {
    @@ -22918,40 +23223,40 @@ src/org/swig/simple/SwigSimple.java to call the JNI code as follows
         static {
             System.loadLibrary("example");
         }
    -
    -
    -

    Compile the Java code as usual, uninstall the old version of the app - if still installed and re-install the new app:

    -
    -
    +
    +
    +

    Compile the Java code as usual, uninstall the old version of the app + if still installed and re-install the new app:

    +
    +
     $ ant debug
     $ adb uninstall org.swig.simple
     $ adb install bin/SwigSimple-debug.apk 
    -
    -
    -

    Run the app again and this time you will see the output pictured - below, showing the result of calls into the C code:

    -
    Android screenshot of SwigSimple example
    -

    19.2.3 C++ class example

    -

    The steps for calling C++ code are almost identical to those in the +

    +
    +

    Run the app again and this time you will see the output pictured + below, showing the result of calls into the C code:

    +
    Android screenshot of SwigSimple example
    +

    21.2.3 C++ class example

    +

    The steps for calling C++ code are almost identical to those in the previous C code example. All the steps required to compile and use a - simple hierarchy of classes for shapes are shown in this example.

    -

    First create an Android project called SwigClass in a - subdirectory called class. The steps below create and build a - the JNI C++ app. Adjust the --target id as mentioned earlier - in the Examples introduction.

    -
    -
    + simple hierarchy of classes for shapes are shown in this example.

    +

    First create an Android project called SwigClass in a + subdirectory called class. The steps below create and build + the JNI C++ app. Adjust the --target id as mentioned earlier + in the Examples introduction.

    +
    +
     $ android create project --target 1 --name SwigClass --path ./class --activity SwigClass --package org.swig.classexample
     $ cd class
    -
    -
    -

    Now create a jni subdirectory and then create a C++ header - file jni/example.h which defines our hierarchy of shape - classes:

    -
    -
    +
    +
    +

    Now create a jni subdirectory and then create a C++ header + file jni/example.h which defines our hierarchy of shape + classes:

    +
    +
     /* File : example.h */
     
     class Shape {
    @@ -22986,11 +23291,11 @@ public:
       virtual double area();
       virtual double perimeter();
     };
    -
    -
    -

    and create the implementation in the jni/example.cpp file:

    -
    -
    +
    +
    +

    and create the implementation in the jni/example.cpp file:

    +
    +
     /* File : example.cpp */
     
     #include "example.h"
    @@ -23019,12 +23324,12 @@ double Square::area() {
     double Square::perimeter() {
       return 4*width;
     }
    -
    -
    -

    Create a SWIG interface file for this C++ code in jni/example.i -:

    -
    -
    +
    +
    +

    Create a SWIG interface file for this C++ code in jni/example.i +:

    +
    +
     /* File : example.i */
     %module example
     
    @@ -23034,30 +23339,30 @@ double Square::perimeter() {
     
     /* Let's just grab the original header file here */
     %include "example.h"
    -
    -
    -

    Invoke SWIG as follows, note that the -c++ option is required for - C++ code:

    -
    -
    +
    +
    +

    Invoke SWIG as follows, note that the -c++ option is required for + C++ code:

    +
    +
     $ swig -c++ -java -package org.swig.classexample -outdir src/org/swig/classexample -o jni/example_wrap.cpp jni/example.i
    -
    -
    -

    SWIG generates the following files:

    -
      -
    • src/org/swig/classexample/Square.java
    • -
    • src/org/swig/classexample/exampleJNI.java
    • -
    • src/org/swig/classexample/example.java
    • -
    • src/org/swig/classexample/Circle.java
    • -
    • src/org/swig/classexample/Shape.java
    • -
    • jni/example_wrap.cpp
    • -
    -

    Next we need to create an Android NDK build system file for - compiling the C++ code jni/Android.mk. The -frtti +

    +
    +

    SWIG generates the following files:

    +
      +
    • src/org/swig/classexample/Square.java
    • +
    • src/org/swig/classexample/exampleJNI.java
    • +
    • src/org/swig/classexample/example.java
    • +
    • src/org/swig/classexample/Circle.java
    • +
    • src/org/swig/classexample/Shape.java
    • +
    • jni/example_wrap.cpp
    • +
    +

    Next we need to create an Android NDK build system file for + compiling the C++ code jni/Android.mk. The -frtti compiler flag isn't strictly needed for this example, but is needed for - any code that uses C++ RTTI:

    -
    -
    + any code that uses C++ RTTI:

    +
    +
     # File: Android.mk
     LOCAL_PATH := $(call my-dir)
     
    @@ -23068,25 +23373,25 @@ LOCAL_SRC_FILES := example_wrap.cpp example.cpp
     LOCAL_CFLAGS    := -frtti
     
     include $(BUILD_SHARED_LIBRARY)
    -
    -
    -

    A simple invocation of ndk-build will compile the .cpp files and - generate a shared object/system library. Output will be similar to:

    -
    -
    +
    +
    +

    A simple invocation of ndk-build will compile the .cpp files and + generate a shared object/system library. Output will be similar to:

    +
    +
     $ ndk-build
     Compile++ thumb  : example <= example_wrap.cpp
     Compile++ thumb  : example <= example.cpp
     StaticLibrary  : libstdc++.a
     SharedLibrary  : libexample.so
     Install        : libexample.so => libs/armeabi/libexample.so
    -
    -
    -

    Now that the C JNI layer has been built, we can write Java code to - call into this layer. Modify -src/org/swig/classexample/SwigClass.java from the default to:

    -
    -
    +
    +
    +

    Now that the C JNI layer has been built, we can write Java code to + call into this layer. Modify +src/org/swig/classexample/SwigClass.java from the default to:

    +
    +
     package org.swig.classexample;
     
     import android.app.Activity;
    @@ -23193,15 +23498,15 @@ public class SwigClass extends Activity
             System.loadLibrary("example");
         }
     }
    -
    -
    -

    Note the static constructor and the interesting JNI code is in the -nativeCall method. The remaining code deals with the GUI aspects - which are identical to the previous C simple example. Modify -res/layout/main.xml to contain the xml for the 'Run' button and - scrollable text view:

    -
    -
    +
    +
    +

    Note the static constructor and the interesting JNI code is in the +nativeCall method. The remaining code deals with the GUI aspects + which are identical to the previous C simple example. Modify +res/layout/main.xml to contain the xml for the 'Run' button and + scrollable text view:

    +
    +
     <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
    @@ -23227,233 +23532,235 @@ res/layout/main.xml to contain the xml for the 'Run' button and
         />
     </ScrollView>
     </LinearLayout>
    -
    -
    -

    Compile the Java code as usual, uninstall the old version of the app - if installed and re-install the new app:

    -
    -
    +
    +
    +

    Compile the Java code as usual, uninstall the old version of the app + if installed and re-install the new app:

    +
    +
     $ ant debug
     $ adb uninstall org.swig.classexample
     $ adb install bin/SwigClass-debug.apk 
    -
    -
    -

    Run the app to see the result of calling the C++ code from Java:

    -
    Android screenshot of SwigClass example
    -

    19.2.4 Other examples

    -

    The Examples/android directory contains further examples which can - be run and installed in a similar manner to the previous two examples.

    -

    Note that the 'extend' example is demonstrates the directors +

    +
    +

    Run the app to see the result of calling the C++ code from Java:

    +
    Android screenshot of SwigClass example
    +

    21.2.4 Other examples

    +

    The Examples/android directory contains further examples which can + be run and installed in a similar manner to the previous two examples.

    +

    Note that the 'extend' example is demonstrates the directors feature. Normally C++ exception handling and the STL is not available by default in the version of g++ shipped with Android, but this example - turns these features on as described in the next section.

    -

    19.3 C++ STL

    -

    Should the C++ Standard Template Library (STL) be required, an -Application.mk file needs to be created in the same directory as - the Android.mk directory containing information about the STL + turns these features on as described in the next section.

    +

    21.3 C++ STL

    +

    Should the C++ Standard Template Library (STL) be required, an +Application.mk file needs to be created in the same directory as + the Android.mk directory containing information about the STL to use. See the NDK documentation in the $NDKROOT/docs folder - especially CPLUSPLUS-SUPPORT.html. Below is an example of the -Application.mk file to make the STLport static library available - for use:

    -
    -
    + especially CPLUSPLUS-SUPPORT.html. Below is an example of the 
    +Application.mk file to make the STLport static library available
    + for use:

    +
    +
     # File: Application.mk
     APP_STL := gnustl_static
    -
    -

    -

    20 SWIG and C#

    +
    +

    +

    22 SWIG and C#

    - + -

    20.1 Introduction

    -

    The purpose of the C# module is to offer an automated way of +

    22.1 Introduction

    +

    The purpose of the C# module is to offer an automated way of accessing existing C/C++ code from .NET languages. The wrapper code implementation uses C# and the Platform Invoke (PInvoke) interface to access natively compiled C/C++ code. The PInvoke interface has been chosen over Microsoft's Managed C++ interface as it is portable to both Microsoft Windows and non-Microsoft platforms. PInvoke is part of the ECMA/ISO C# specification. It is also better suited for robust - production environments due to the Managed C++ flaw called the -Mixed DLL Loading Problem. SWIG C# works equally well on + production environments due to the Managed C++ flaw called the +Mixed DLL Loading Problem. SWIG C# works equally well on non-Microsoft operating systems such as Linux, Solaris and Apple Mac - using Mono and -Portable.NET.

    -

    To get the most out of this chapter an understanding of interop is - required. The Microsoft Developer - Network (MSDN) has a good reference guide in a section titled + using Mono and +Portable.NET.

    +

    To get the most out of this chapter an understanding of interop is + required. The Microsoft Developer + Network (MSDN) has a good reference guide in a section titled "Interop Marshaling". Monodoc, available from the Mono project, has a - very useful section titled -Interop with native libraries.

    -

    20.1.1 SWIG 2 - Compatibility

    -

    In order to minimize name collisions between names generated based + very useful section titled +Interop with native libraries.

    +

    22.1.1 SWIG 2 + Compatibility

    +

    In order to minimize name collisions between names generated based on input to SWIG and names used in the generated code from the .NET framework, SWIG 3 fully qualifies the use of all .NET types. - Furthermore, SWIG 3 avoids using directives in generated code. + Furthermore, SWIG 3 avoids using directives in generated code. This breaks backwards compatibility with typemaps, pragmas, etc written - for use with SWIG 2 that assume the presence of using System; - or using System.Runtime.InteropServices; directives in the + for use with SWIG 2 that assume the presence of using System; + or using System.Runtime.InteropServices; directives in the intermediate class imports, module imports, or proxy imports. SWIG 3 - supports backwards compatibility though the use of the SWIG2_CSHARP - macro. If SWIG2_CSHARP is defined, SWIG 3 generates using + supports backwards compatibility though the use of the SWIG2_CSHARP + macro. If SWIG2_CSHARP is defined, SWIG 3 generates using directives in the intermediate class, module class, and proxy class code similar to those generated by SWIG 2. This can be done without - modifying any of the input code by passing the -DSWIG2_CSHARP - commandline parameter when executing swig.

    -

    20.1.2 Additional command line options -

    -

    The following table lists the additional commandline options - available for the C# module. They can also be seen by using:

    -
    -
    + modifying any of the input code by passing the -DSWIG2_CSHARP
    + commandline parameter when executing swig.

    +

    22.1.2 Additional command line options +

    +

    The following table lists the additional commandline options + available for the C# module. They can also be seen by using:

    +
    +
     swig -csharp -help 
    -
    -
    - - - - - - - - -
    C# specific options
    -dllimport <dl>Override DllImport attribute name to - <dl>
    -namespace <nm>Generate wrappers into C# namespace <nm>
    -noproxyGenerate the low-level functional interface - instead of proxy classes
    -oldvarnamesOld intermediary method names for variable - wrappers
    -outfile <file>Write all C# into a single <file> - located in the output directory
    -

    The -outfile option combines all the generated C# code into a single +

    +
    + + + + + + + + +
    C# specific options
    -dllimport <dl>Override DllImport attribute name to + <dl>
    -namespace <nm>Generate wrappers into C# namespace <nm>
    -noproxyGenerate the low-level functional interface + instead of proxy classes
    -oldvarnamesOld intermediary method names for variable + wrappers
    -outfile <file>Write all C# into a single <file> + located in the output directory
    +

    The -outfile option combines all the generated C# code into a single output file instead of creating multiple C# files. The default, when this option is not provided, is to generate separate .cs files for the module class, intermediary class and each of the generated proxy and type wrapper classes. Note that the file extension (.cs) will not be automatically added and needs to be provided. Due to possible compiler - limits it is not advisable to use -outfile for large projects.

    -

    20.2 Differences to the Java - module

    -

    The C# module is very similar to the Java module, so until some more - complete documentation has been written, please use the -Java documentation as a guide to using SWIG with C#. The C# module + limits it is not advisable to use -outfile for large projects.

    +

    22.2 Differences to the Java + module

    +

    The C# module is very similar to the Java module, so until some more + complete documentation has been written, please use the +Java documentation as a guide to using SWIG with C#. The C# module has the same major SWIG features as the Java module. The rest of this section should be read in conjunction with the Java documentation as it lists the main differences. The most notable differences to Java are - the following:

    -
      -
    • When invoking SWIG use the -csharp command line option - instead of -java.
    • -
    • The -nopgcpp command line option does not exist.
    • -
    • The -package command line option does not exist.
    • -
    • The -namespace <name> commandline option will generate all - code into the namespace specified by <name>. C# supports + the following:

      +
        +
      • When invoking SWIG use the -csharp command line option + instead of -java.
      • +
      • The -nopgcpp command line option does not exist.
      • +
      • The -package command line option does not exist.
      • +
      • The -namespace <name> commandline option will generate all + code into the namespace specified by <name>. C# supports nested namespaces that are not lexically nested, so nested namespaces - will of course also work. For example: -namespace com.bloggs.widget -, will generate code into C# namespaces:
        -
        + will of course also work. For example: -namespace com.bloggs.widget
        +, will generate code into C# namespaces:
        +
         namespace com.bloggs.widget {
           ...
         }
        -
        -
        Note that by default, the generated C# classes have no namespace +
        +
        Note that by default, the generated C# classes have no namespace and the module name is unrelated to namespaces. The module name is just - like in Java and is merely used to name some of the generated classes.
      • -
      • The nspace feature is also supported + like in Java and is merely used to name some of the generated classes.
      • +
      • The nspace feature is also supported as described in this general section with a C# example. Unlike Java - which requires the use of the -package option when using the nspace - feature, the -namespace option is not mandatory for C#.
      • -
      • The -dllimport <name> commandline option specifies the - name of the DLL for the DllImport attribute for every PInvoke - method. If this commandline option is not given, the DllImport + which requires the use of the -package option when using the nspace + feature, the -namespace option is not mandatory for C#.
      • +
      • The -dllimport <name> commandline option specifies the + name of the DLL for the DllImport attribute for every PInvoke + method. If this commandline option is not given, the DllImport DLL name is the same as the module name. This option is useful for when one wants to invoke SWIG multiple times on different modules, yet - compile all the resulting code into a single DLL.
      • -
      • C/C++ variables are wrapped with C# properties and not JavaBean - style getters and setters.
      • -
      • Global constants are generated into the module class. There is no - constants interface.
      • -
      • There is no implementation for type unsafe enums - not deemed - necessary.
      • -
      • The default enum wrapping approach is proper C# enums, not typesafe + compile all the resulting code into a single DLL.
      • +
      • C/C++ variables are wrapped with C# properties and not JavaBean + style getters and setters.
      • +
      • Global constants are generated into the module class. There is no + constants interface.
      • +
      • There is no implementation for type unsafe enums - not deemed + necessary.
      • +
      • The default enum wrapping approach is proper C# enums, not typesafe enums. -
        Note that %csconst(0) will be ignored when wrapping C/C++ enums +
        Note that %csconst(0) will be ignored when wrapping C/C++ enums with proper C# enums. This is because C# enum items must be initialised from a compile time constant. If an enum item has an initialiser and the initialiser doesn't compile as C# code, then the %csconstvalue directive must be used as %csconst(0) will have no effect. If it was used, it would generate an illegal runtime initialisation via a PInvoke - call.
      • -
      • C# doesn't support the notion of throws clauses. Therefore there is + call.
      • +
      • C# doesn't support the notion of throws clauses. Therefore there is no 'throws' typemap attribute support for adding exception classes to a - throws clause. Likewise there is no need for an equivalent to -%javaexception. In fact, throwing C# exceptions works quite - differently, see C# Exceptions below.
      • -
      • The majority of the typemaps are in csharp.swg, not java.swg.
      • -
      • -

        Typemap equivalent names:

        -
        -
        + throws clause. Likewise there is no need for an equivalent to 
        +%javaexception. In fact, throwing C# exceptions works quite
        + differently, see C# Exceptions below.
      • +
      • The majority of the typemaps are in csharp.swg, not java.swg.
      • +
      • +

        Typemap equivalent names:

        +
        +
         jni                         -> ctype
         jtype                       -> imtype
         jstype                      -> cstype
        @@ -23468,65 +23775,65 @@ javacode                    -> cscode
         javaimports                 -> csimports
         javabody                    -> csbody
         javafinalize                -> csfinalize
        -javadestruct                -> csdestruct
        -javadestruct_derived        -> csdestruct_derived
        +javadestruct                -> csdisposing and csdispose
        +javadestruct_derived        -> csdisposing_derived and csdispose_derived
         javainterfacecode           -> csinterfacecode
        -
        -
      • -
      • -

        Typemap macros:

        -
        -
        +
        +
      • +
      • +

        Typemap macros:

        +
        +
         SWIG_JAVABODY_PROXY         -> SWIG_CSBODY_PROXY
         SWIG_JAVABODY_TYPEWRAPPER   -> SWIG_CSBODY_TYPEWRAPPER
        -
        -
      • -
      • -

        Additional typemaps:

        -
        -
        +
        +
      • +
      • +

        Additional typemaps:

        +
        +
         csvarin                     C# code property set typemap
         csvarout                    C# code property get typemap
         csattributes                C# attributes for attaching to proxy classes/enums
        -
        -
      • -
      • -

        Additional typemap attributes:

        -

        The "null" attribute in the "out" typemap can be specified to - provide a value for $null to expand into for wrapped functions - that return non-void. Normally the default value of 0 is used. - For example this is needed if you change the return type to void:

        -
        -
        +
        +
      • +
      • +

        Additional typemap attributes:

        +

        The "null" attribute in the "out" typemap can be specified to + provide a value for $null to expand into for wrapped functions + that return non-void. Normally the default value of 0 is used. + For example this is needed if you change the return type to void:

        +
        +
         %typemap(ctype) Status "void"
         %typemap(out, null="") Status { ... }
        -
        -
      • -
      • -

        Feature equivalent names:

        -
        -
        +
        +
      • +
      • +

        Feature equivalent names:

        +
        +
         %javaconst                  -> %csconst
         %javaconstvalue             -> %csconstvalue
         %javamethodmodifiers        -> %csmethodmodifiers
        -
        -
      • -
      • -

        Pragma equivalent names:

        -
        -
        +
        +
      • +
      • +

        Pragma equivalent names:

        +
        +
         %pragma(java)               -> %pragma(csharp)
         jniclassbase                -> imclassbase
         jniclassclassmodifiers      -> imclassclassmodifiers
         jniclasscode                -> imclasscode
         jniclassimports             -> imclassimports
         jniclassinterfaces          -> imclassinterfaces
        -
        -
      • -
      • -

        Special variable equivalent names:

        -
        -
        +
        +
      • +
      • +

        Special variable equivalent names:

        +
        +
         $javaclassname              -> $csclassname
         $&javaclassname             -> $&csclassname
         $*javaclassname             -> $*csclassname
        @@ -23536,77 +23843,77 @@ $jnicall                    -> $imcall
         $javainterfacename          -> $csinterfacename
         $&javainterfacename         -> $&csinterfacename
         $*javainterfacename         -> $*csinterfacename
        -
        -
      • -
      • -

        Unlike the "javain" typemap, the "csin" typemap does not support the + +

      • +
      • +

        Unlike the "javain" typemap, the "csin" typemap does not support the 'pgcpp' attribute as the C# module does not have a premature garbage collection prevention parameter. The "csin" typemap supports additional optional attributes called 'cshin' and 'terminator'. The "csdirectorin" typemap supports additional optional attributes called 'terminator'. The 'cshin' attribute should contain the parameter type and name - whenever a constructor - helper function is generated due to the 'pre' or 'post' attributes. + whenever a constructor + helper function is generated due to the 'pre' or 'post' attributes. The 'terminator' attribute normally just contains a closing brace for - when the 'pre' attribute contains an opening brace, such as when a C# -using or fixed block is started. Note that 'pre', 'post', + when the 'pre' attribute contains an opening brace, such as when a C# +using or fixed block is started. Note that 'pre', 'post', 'terminator' and 'cshin' attributes are not used for marshalling the - property set. Please see the Date - marshalling example and Date - marshalling of properties example for further understanding of - these "csin" applicable attributes. Please see the -Date marshalling director example for further understanding of the - "csdirectorin" attributes.

        -
      • -
      • -

        Support for asymmetric type marshalling. The 'ctype', 'imtype' and - 'cstype' typemaps support an optional out attribute which is + property set. Please see the Date + marshalling example and Date + marshalling of properties example for further understanding of + these "csin" applicable attributes. Please see the +Date marshalling director example for further understanding of the + "csdirectorin" attributes.

        +
      • +
      • +

        Support for asymmetric type marshalling. The 'ctype', 'imtype' and + 'cstype' typemaps support an optional out attribute which is used for output types. If this typemap attribute is specified, then the type specified in the attribute is used for output types and the type specified in the typemap itself is used for the input type. If this typemap attribute is not specified, then the type used for both input - and output is the type specified in the typemap. An example shows that -char * could be marshalled in different ways,

        -
        -
        + and output is the type specified in the typemap. An example shows that 
        +char * could be marshalled in different ways,

        +
        +
         %typemap(imtype, out="global::System.IntPtr") char * "string"
         char * function(char *);
        -
        -
        -

        The output type is thus IntPtr and the input type is string. The - resulting intermediary C# code is:

        -
        -
        +
        +
        +

        The output type is thus IntPtr and the input type is string. The + resulting intermediary C# code is:

        +
        +
         public static extern global::System.IntPtr function(string jarg1);
        -
        -
      • -
      • -

        Support for type attributes. The 'imtype' and 'cstype' typemaps can - have an optional inattributes and outattributes - typemap attribute. The 'imtype' typemap can also have an optional -directorinattributes and directoroutattributes typemap + +

      • +
      • +

        Support for type attributes. The 'imtype' and 'cstype' typemaps can + have an optional inattributes and outattributes + typemap attribute. The 'imtype' typemap can also have an optional +directorinattributes and directoroutattributes typemap attribute which attaches to director delegates, an implementation - detail of directors, see -directors implementation. Note that there are C# attributes and + detail of directors, see +directors implementation. Note that there are C# attributes and typemap attributes, don't get confused between the two!! The C# attributes specified in these typemap attributes are generated wherever the type is used in the C# wrappers. These can be used to specify any C# attribute associated with a C/C++ type, but are more typically used - for the C# MarshalAs attribute. For example:

        -
        -
        + for the C# MarshalAs attribute. For example:

        +
        +
         %typemap(imtype,
                  inattributes="[global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPStr)]",
                  outattributes="[return: global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPStr)]") const char * "String"
         
         const char * GetMsg() {}
         void SetMsg(const char *msg) {}
        -
        -
        -

        The intermediary class will then have the marshalling as specified - by everything in the 'imtype' typemap:

        -
        -
        +
        +
        +

        The intermediary class will then have the marshalling as specified + by everything in the 'imtype' typemap:

        +
        +
         class examplePINVOKE {
           ...
           [global::System.Runtime.InteropServices.DllImport("example", EntryPoint="CSharp_GetMsg")]
        @@ -23616,29 +23923,29 @@ class examplePINVOKE {
           [global::System.Runtime.InteropServices.DllImport("example", EntryPoint="CSharp_SetMsg")]
           public static extern void SetMsg([global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPStr)]String jarg1);
         }
        -
        -
        -

        Note that the DllImport attribute is always generated, - irrespective of any additional attributes specified.

        -

        These attributes are associated with the C/C++ parameter type or +

        +
        +

        Note that the DllImport attribute is always generated, + irrespective of any additional attributes specified.

        +

        These attributes are associated with the C/C++ parameter type or return type, which is subtly different to the attribute features and typemaps covered next. Note that all these different C# attributes can - be combined so that a method has more than one attribute.

        -

        The directorinattributes and directoroutattributes + be combined so that a method has more than one attribute.

        +

        The directorinattributes and directoroutattributes typemap attribute are attached to the delegates in the director class, - for example, the SwigDelegateBase_0

        -
      • -
      • -

        Support for attaching C# attributes to wrapped methods, variables - and enum values. This is done using the %csattributes feature, - see %feature directives. Note - that C# attributes are attached to proxy classes and enums using the -csattributes typemap. For example, imagine we have a custom - attribute class, ThreadSafeAttribute, for labelling thread + for example, the SwigDelegateBase_0

        +
      • +
      • +

        Support for attaching C# attributes to wrapped methods, variables + and enum values. This is done using the %csattributes feature, + see %feature directives. Note + that C# attributes are attached to proxy classes and enums using the +csattributes typemap. For example, imagine we have a custom + attribute class, ThreadSafeAttribute, for labelling thread safety. The following SWIG code shows how to attach this C# attribute - to some methods and the class declaration itself:

        -
        -
        + to some methods and the class declaration itself:

        +
        +
         %typemap(csattributes) AClass          "[ThreadSafe]"
         %csattributes AClass::AClass(double d) "[ThreadSafe(false)]"
         %csattributes AClass::AMethod()        "[ThreadSafe(true)]"
        @@ -23650,11 +23957,11 @@ public:
           void AMethod() {}
         };
         %}
        -
        -
        -

        will generate a C# proxy class:

        -
        -
        +
        +
        +

        will generate a C# proxy class:

        +
        +
         [ThreadSafe]
         public class AClass : global::System.IDisposable {
           ...
        @@ -23664,29 +23971,29 @@ public class AClass : global::System.IDisposable {
           [ThreadSafe(true)]
           public void AMethod() ...
         }
        -
        -
        -

        If C# attributes need adding to the set or get +

        +
        +

        If C# attributes need adding to the set or get part of C# properties, when wrapping C/C++ variables, they can be added using the 'csvarin' and 'csvarout' typemaps respectively. Note that the type used for the property is specified in the 'cstype' typemap. If the 'out' attribute exists in this typemap, then the type used is from the - 'out' attribute.

        -

        An example for attaching attributes to the enum and enum values is - shown below.

        -
        -
        + 'out' attribute.

        +

        An example for attaching attributes to the enum and enum values is + shown below.

        +
        +
         %typemap(csattributes) Couleur "[global::System.ComponentModel.Description(\"Colours\")]"
         %csattributes Rouge "[global::System.ComponentModel.Description(\"Red\")]"
         %csattributes Vert "[global::System.ComponentModel.Description(\"Green\")]"
         %inline %{
           enum Couleur { Rouge, Orange, Vert };
         %}
        -
        -
        -

        which will result in the following C# enum:

        -
        -
        +
        +
        +

        which will result in the following C# enum:

        +
        +
         [global::System.ComponentModel.Description("Colours")]
         public enum Couleur {
           [global::System.ComponentModel.Description("Red")]
        @@ -23695,120 +24002,120 @@ public enum Couleur {
           [global::System.ComponentModel.Description("Green")]
           Vert
         }
        -
        -
      • -
      • -

        The intermediary classname has PINVOKE appended after the - module name instead of JNI, for example modulenamePINVOKE -.

        -
      • -
      • -

        The %csmethodmodifiers feature can also be applied to - variables as well as methods. In addition to the default public - modifier that SWIG generates when %csmethodmodifiers is not - specified, the feature will also replace the virtual/new -/override modifiers that SWIG thinks is appropriate. This - feature is useful for some obscure cases where SWIG might get the -virtual/new/override modifiers incorrect, for - example with multiple inheritance.

        -
      • -
      • -

        The name of the intermediary class can be changed from its default, + +

      • +
      • +

        The intermediary classname has PINVOKE appended after the + module name instead of JNI, for example modulenamePINVOKE +.

        +
      • +
      • +

        The %csmethodmodifiers feature can also be applied to + variables as well as methods. In addition to the default public + modifier that SWIG generates when %csmethodmodifiers is not + specified, the feature will also replace the virtual/new +/override modifiers that SWIG thinks is appropriate. This + feature is useful for some obscure cases where SWIG might get the +virtual/new/override modifiers incorrect, for + example with multiple inheritance.

        +
      • +
      • +

        The name of the intermediary class can be changed from its default, that is, the module name with PINVOKE appended after it. The module - directive attribute imclassname is used to achieve this:

        -
        -
        + directive attribute imclassname is used to achieve this:

        +
        +
         %module (imclassname="name") modulename
        -
        -
        -

        If name is the same as modulename then the module - class name gets changed from modulename to -modulenameModule.

        -
      • -
      • There is no additional 'premature garbage collection prevention - parameter' as the marshalling of the HandleRef object takes + + +

        If name is the same as modulename then the module + class name gets changed from modulename to +modulenameModule.

        +
      • +
      • There is no additional 'premature garbage collection prevention + parameter' as the marshalling of the HandleRef object takes care of ensuring a reference to the proxy class is held until the - unmanaged call completed.
      • -
      -

      $dllimport -
      This is a C# only special variable that can be used in typemaps, + unmanaged call completed.

    • +
    +

    $dllimport +
    This is a C# only special variable that can be used in typemaps, pragmas, features etc. The special variable will get translated into - the value specified by the -dllimport commandline option if - specified, otherwise it is equivalent to the $module special - variable.

    -

    $imclassname -
    This special variable expands to the intermediary class name. For + the value specified by the -dllimport commandline option if + specified, otherwise it is equivalent to the $module special + variable.

    +

    $imclassname +
    This special variable expands to the intermediary class name. For C# this is usually the same as '$modulePINVOKE' ('$moduleJNI' for - Java), unless the imclassname attribute is specified in the -%module directive.

    -

    The directory Examples/csharp has a number of simple + Java), unless the imclassname attribute is specified in the +%module directive.

    +

    The directory Examples/csharp has a number of simple examples. Visual Studio .NET 2003 solution and project files are available for compiling with the Microsoft .NET C# compiler on Windows. This also works with newer versions of Visual Studio if you allow it to convert the solution to the latest version. If your SWIG installation went well on a Unix environment and your C# compiler was detected, you - should be able to type make in each example directory. After + should be able to type make in each example directory. After SWIG has run and both the C# and C/C++ compilers have finished - building, the examples will be run, by either running runme.exe - or by running mono runme.exe (Mono C# compiler). Windows users - can also get the examples working using a -Cygwin or MinGW environment for + building, the examples will be run, by either running runme.exe + or by running mono runme.exe (Mono C# compiler). Windows users + can also get the examples working using a +Cygwin or MinGW environment for automatic configuration of the example makefiles. Any one of the C# compilers (Mono or Microsoft) can be detected from within a Cygwin or - Mingw environment if installed in your path.

    -

    20.3 Void pointers

    -

    By default SWIG treats void * as any other pointer and - hence marshalls it as a type wrapper class called SWIGTYPE_p_void -. If you want to marshall with the .NET System.IntPtr type - instead, there is a simple set of named typemaps called void - *VOID_INT_PTR that can be used. They can be applied like any other - named typemaps:

    -
    -
    + Mingw environment if installed in your path.

    +

    22.3 Void pointers

    +

    By default SWIG treats void * as any other pointer and + hence marshalls it as a type wrapper class called SWIGTYPE_p_void +. If you want to marshall with the .NET System.IntPtr type + instead, there is a simple set of named typemaps called void + *VOID_INT_PTR that can be used. They can be applied like any other + named typemaps:

    +
    +
     %apply void *VOID_INT_PTR { void * }
     void * f(void *v);
    -
    -
    -

    20.4 C# Arrays

    -

    There are various ways to pass arrays from C# to C/C++. The default +

    +
    +

    22.4 C# Arrays

    +

    There are various ways to pass arrays from C# to C/C++. The default wrapping treats arrays as pointers and as such simple type wrapper - classes are generated, eg SWIGTYPE_p_int when wrapping the C - type int [] or int *. This gives a rather restricted + classes are generated, eg SWIGTYPE_p_int when wrapping the C + type int [] or int *. This gives a rather restricted use of the underlying unmanaged code and the most practical way to use arrays is to enhance or customise with one of the following three approaches; namely the SWIG C arrays library, P/Invoke default array - marshalling or pinned arrays.

    -

    20.4.1 The SWIG C arrays - library

    -

    The C arrays library keeps all the array memory in the unmanaged + marshalling or pinned arrays.

    +

    22.4.1 The SWIG C arrays + library

    +

    The C arrays library keeps all the array memory in the unmanaged layer. The library is available to all language modules and is - documented in the carrays.i library + documented in the carrays.i library section. Please refer to this section for details, but for convenience, - the C# usage for the two examples outlined there is shown below.

    -

    For the %array_functions example, the equivalent usage - would be:

    -
    -
    + the C# usage for the two examples outlined there is shown below.

    +

    For the %array_functions example, the equivalent usage + would be:

    +
    +
     SWIGTYPE_p_double a = example.new_doubleArray(10);  // Create an array
     for (int i=0; i<10; i++)
       example.doubleArray_setitem(a, i, 2*i);           // Set a value
     example.print_array(a);                             // Pass to C
     example.delete_doubleArray(a);                      // Destroy array
    -
    -
    -

    and for the %array_class example, the equivalent usage - would be:

    -
    -
    +
    +
    +

    and for the %array_class example, the equivalent usage + would be:

    +
    +
     doubleArray c = new doubleArray(10);    // Create double[10]
     for (int i=0; i<10; i++)
       c.setitem(i, 2*i);                    // Assign values
     example.print_array(c.cast());          // Pass to C
    -
    -
    -

    20.4.2 - Managed arrays using P/Invoke default array marshalling

    -

    In the P/Invoke default marshalling scheme, one needs to designate +

    +
    +

    22.4.2 + Managed arrays using P/Invoke default array marshalling

    +

    In the P/Invoke default marshalling scheme, one needs to designate whether the invoked function will treat a managed array parameter as input, output, or both. When the function is invoked, the CLR allocates a separate chunk of memory as big as the given managed array, which is @@ -23817,128 +24124,128 @@ example.print_array(c.cast()); // Pass to C copied into this buffer when the call is made. Correspondingly, if the array parameter is marked as being output, the contents of the reserved buffer are copied back into the managed array after the call returns. A - pointer to this buffer is passed to the native function.

    -

    The reason for allocating a separate buffer is to leave the CLR free + pointer to this buffer is passed to the native function.

    +

    The reason for allocating a separate buffer is to leave the CLR free to relocate the managed array object during garbage collection. If the overhead caused by the copying is causing a significant performance penalty, consider pinning the managed array and passing a direct - reference as described in the next section.

    -

    For more information on the subject, see the -Default Marshaling for Arrays article on MSDN.

    -

    The P/Invoke default marshalling is supported by the -arrays_csharp.i library via the INPUT, OUTPUT and INOUT typemaps. - Let's look at some example usage. Consider the following C function:

    -
    -
    + reference as described in the next section.

    +

    For more information on the subject, see the +Default Marshaling for Arrays article on MSDN.

    +

    The P/Invoke default marshalling is supported by the +arrays_csharp.i library via the INPUT, OUTPUT and INOUT typemaps. + Let's look at some example usage. Consider the following C function:

    +
    +
     void myArrayCopy(int *sourceArray, int *targetArray, int nitems);
    -
    -
    -

    We can now instruct SWIG to use the default marshalling typemaps by

    -
    -
    +
    +
    +

    We can now instruct SWIG to use the default marshalling typemaps by

    +
    +
     %include "arrays_csharp.i"
     
     %apply int INPUT[]  {int *sourceArray}
     %apply int OUTPUT[] {int *targetArray}
    -
    -
    -

    As a result, we get the following method in the module class:

    -
    -
    +
    +
    +

    As a result, we get the following method in the module class:

    +
    +
     public static void myArrayCopy(int[] sourceArray, int[] targetArray, int nitems) {
    -    examplePINVOKE.myArrayCopy(sourceArray, targetArray, nitems);
    +  examplePINVOKE.myArrayCopy(sourceArray, targetArray, nitems);
     }
    -
    -
    -

    If we look beneath the surface at the corresponding intermediary +

    +
    +

    If we look beneath the surface at the corresponding intermediary class code, we see that SWIG has generated code that uses attributes (from the System.Runtime.InteropServices namespace) to tell the CLR to - use default marshalling for the arrays:

    -
    -
    + use default marshalling for the arrays:

    +
    +
     [global::System.Runtime.InteropServices.DllImport("example", EntryPoint="CSharp_myArrayCopy")]
     public static extern void myArrayCopy([global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPArray)]int[] jarg1, 
                                           [global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPArray)]int[] jarg2,
                                            int jarg3);
    -
    -
    -

    As an example of passing an inout array (i.e. the target function +

    +
    +

    As an example of passing an inout array (i.e. the target function will both read from and write to the array), consider this C function - that swaps a given number of elements in the given arrays:

    -
    -
    + that swaps a given number of elements in the given arrays:

    +
    +
     void myArraySwap(int *array1, int *array2, int nitems);
    -
    -
    -

    Now, we can instruct SWIG to wrap this by

    -
    -
    +
    +
    +

    Now, we can instruct SWIG to wrap this by

    +
    +
     %include "arrays_csharp.i"
     
     %apply int INOUT[] {int *array1}
     %apply int INOUT[] {int *array2}
    -
    -
    -

    This results in the module class method

    -
    -
    +
    +
    +

    This results in the module class method

    +
    +
       public static void myArraySwap(int[] array1, int[] array2, int nitems) {
         examplePINVOKE.myArraySwap(array1, array2, nitems);
       }
    -
    -
    -

    and intermediary class method

    -
    -
    +
    +
    +

    and intermediary class method

    +
    +
       [global::System.Runtime.InteropServices.DllImport("example", EntryPoint="CSharp_myArraySwap")]
       public static extern void myArraySwap([global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPArray)]int[] jarg1, 
                                             [global::System.Runtime.InteropServices.In, global::System.Runtime.InteropServices.Out, global::System.Runtime.InteropServices.MarshalAs(UnmanagedType.LPArray)]int[] jarg2,
                                              int jarg3);
    -
    -
    -

    20.4.3 Managed arrays using pinning -

    -

    It is also possible to pin a given array in memory (i.e. fix its +

    +
    +

    22.4.3 Managed arrays using pinning +

    +

    It is also possible to pin a given array in memory (i.e. fix its location in memory), obtain a direct pointer to it, and then pass this pointer to the wrapped C/C++ function. This approach involves no copying, but it makes the work of the garbage collector harder as the managed array object can not be relocated before the fix on the array is released. You should avoid fixing arrays in memory in cases where the control may re-enter the managed side via a callback and/or another - thread may produce enough garbage to trigger garbage collection.

    -

    For more information, see the -fixed statement in the C# language reference.

    -

    Now let's look at an example using pinning, thus avoiding the CLR - making copies of the arrays passed as parameters. The -arrays_csharp.i library file again provides the required support - via the FIXED typemaps. Let's use the same function from the - previous section:

    -
    -
    + thread may produce enough garbage to trigger garbage collection.

    +

    For more information, see the +fixed statement in the C# language reference.

    +

    Now let's look at an example using pinning, thus avoiding the CLR + making copies of the arrays passed as parameters. The +arrays_csharp.i library file again provides the required support + via the FIXED typemaps. Let's use the same function from the + previous section:

    +
    +
     void myArrayCopy(int *sourceArray, int *targetArray, int nitems);
    -
    -
    -

    We now need to declare the module class method unsafe, as we are - using pointers:

    -
    -
    +
    +
    +

    We now need to declare the module class method unsafe, as we are + using pointers:

    +
    +
     %csmethodmodifiers myArrayCopy "public unsafe";
    - 
    -
    -

    Apply the appropriate typemaps to the array parameters:

    -
    -
    + 
    +
    +

    Apply the appropriate typemaps to the array parameters:

    +
    +
     %include "arrays_csharp.i"
     
     %apply int FIXED[] {int *sourceArray}
     %apply int FIXED[] {int *targetArray}
    -
    -
    -

    Notice that there is no need for separate in, out or inout typemaps - as is the case when using P/Invoke default marshalling.

    -

    As a result, we get the following method in the module class:

    -
    -
    +
    +
    +

    Notice that there is no need for separate in, out or inout typemaps + as is the case when using P/Invoke default marshalling.

    +

    As a result, we get the following method in the module class:

    +
    +
       public unsafe static void myArrayCopy(int[] sourceArray, int[] targetArray, int nitems) {
         fixed ( int *swig_ptrTo_sourceArray = sourceArray ) {
         fixed ( int *swig_ptrTo_targetArray = targetArray ) {
    @@ -23949,33 +24256,33 @@ void myArrayCopy(int *sourceArray, int *targetArray, int nitems);
         }
         }
       }
    -
    -
    -

    On the method signature level the only difference to the version +

    +
    +

    On the method signature level the only difference to the version using P/Invoke default marshalling is the "unsafe" quantifier, which is - required because we are handling pointers.

    -

    Also the intermediary class method looks a little different from the + required because we are handling pointers.

    +

    Also the intermediary class method looks a little different from the default marshalling example - the method is expecting an IntPtr as the - parameter type.

    -
    -
    + parameter type.

    +
    +
     [global::System.Runtime.InteropServices.DllImport("example", EntryPoint="CSharp_myArrayCopy")]
     public static extern void myArrayCopy(global::System.IntPtr jarg1, global::System.IntPtr jarg2, int jarg3);
    -
    -
    -

    20.5 C# Exceptions

    -

    It is possible to throw a C# Exception from C/C++ code. SWIG already +

    +
    +

    22.5 C# Exceptions

    +

    It is possible to throw a C# Exception from C/C++ code. SWIG already provides the framework for throwing C# exceptions if it is able to detect that a C++ exception could be thrown. Automatically detecting that a C++ exception could be thrown is only possible when a C++ - exception specification is used, see -Exception specifications. The -Exception handling with %exception section details the -%exception feature. Customised code for handling exceptions with or + exception specification is used, see +Exception specifications. The +Exception handling with %exception section details the +%exception feature. Customised code for handling exceptions with or without a C++ exception specification is possible and the details follow. However anyone wishing to do this should be familiar with the - contents of the sections referred to above.

    -

    Unfortunately a C# exception cannot simply be thrown from unmanaged + contents of the sections referred to above.

    +

    Unfortunately a C# exception cannot simply be thrown from unmanaged code for a variety of reasons. Most notably being that throwing a C# exception results in exceptions being thrown across the C PInvoke interface and C does not understand exceptions. The design revolves @@ -23983,15 +24290,15 @@ Exception handling with %exception section details the exception, to be thrown only when the unmanaged code has completed. Implementing this is a tad involved and there are thus some unusual typemap constructs. Some practical examples follow and they should be - read in conjunction with the rest of this section.

    -

    First some details about the design that must be followed. Each - typemap or feature that generates unmanaged code supports an - attribute called canthrow. This is simply a flag which when + read in conjunction with the rest of this section.

    +

    First some details about the design that must be followed. Each + typemap or feature that generates unmanaged code supports an + attribute called canthrow. This is simply a flag which when set indicates that the code in the typemap/feature has code which might want to throw a C# exception. The code in the typemap/feature can then - raise a C# exception by calling one of the C functions, -SWIG_CSharpSetPendingException() or -SWIG_CSharpSetPendingExceptionArgument(). When called, the function + raise a C# exception by calling one of the C functions, +SWIG_CSharpSetPendingException() or +SWIG_CSharpSetPendingExceptionArgument(). When called, the function makes a callback into the managed world via a delegate. The callback creates and stores an exception ready for throwing when the unmanaged code has finished. The typemap/feature unmanaged code is then expected @@ -23999,31 +24306,31 @@ SWIG_CSharpSetPendingExceptionArgument(). When called, the function that the pending managed exception can then be thrown. The support code has been carefully designed to be efficient as well as thread-safe. However to achieve the goal of efficiency requires some optional code - generation in the managed code typemaps. Code to check for + generation in the managed code typemaps. Code to check for pending exceptions is generated if and only if the unmanaged code has - code to set a pending exception, that is if the canthrow - attribute is set. The optional managed code is generated using the -excode typemap attribute and $excode special variable in + code to set a pending exception, that is if the canthrow + attribute is set. The optional managed code is generated using the +excode typemap attribute and $excode special variable in the relevant managed code typemaps. Simply, if any relevant unmanaged - code has the canthrow attribute set, then any occurrences of -$excode is replaced with the code in the excode attribute. - If the canthrow attribute is not set, then any occurrences of -$excode are replaced with nothing.

    -

    The prototypes for the SWIG_CSharpSetPendingException() and - SWIG_CSharpSetPendingExceptionArgument() functions are

    -
    -
    + code has the canthrow attribute set, then any occurrences of 
    +$excode is replaced with the code in the excode attribute.
    + If the canthrow attribute is not set, then any occurrences of 
    +$excode are replaced with nothing.

    +

    The prototypes for the SWIG_CSharpSetPendingException() and + SWIG_CSharpSetPendingExceptionArgument() functions are

    +
    +
     static void SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code,
                                                const char *msg);
     
     static void SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code,
                                                        const char *msg,
                                                        const char *param_name);
    -
    -
    -

    The first parameter defines which .NET exceptions can be thrown:

    -
    -
    +
    +
    +

    The first parameter defines which .NET exceptions can be thrown:

    +
    +
     typedef enum {
       SWIG_CSharpApplicationException,
       SWIG_CSharpArithmeticException,
    @@ -24043,32 +24350,32 @@ typedef enum {
       SWIG_CSharpArgumentNullException,
       SWIG_CSharpArgumentOutOfRangeException,
     } SWIG_CSharpExceptionArgumentCodes;
    -
    -
    -

    where, for example, SWIG_CSharpApplicationException - corresponds to the .NET exception, ApplicationException. The -msg and param_name parameters contain the C# exception - message and parameter name associated with the exception.

    -

    The %exception feature in C# has the canthrow - attribute set. The %csnothrowexception feature is like -%exception, but it does not have the canthrow attribute - set so should only be used when a C# exception is not created.

    -

    20.5.1 C# exception - example using "check" typemap

    -

    Let's say we have the following simple C++ method:

    -
    -
    +
    +
    +

    where, for example, SWIG_CSharpApplicationException + corresponds to the .NET exception, ApplicationException. The +msg and param_name parameters contain the C# exception + message and parameter name associated with the exception.

    +

    The %exception feature in C# has the canthrow + attribute set. The %csnothrowexception feature is like +%exception, but it does not have the canthrow attribute + set so should only be used when a C# exception is not created.

    +

    22.5.1 C# exception + example using "check" typemap

    +

    Let's say we have the following simple C++ method:

    +
    +
     void positivesonly(int number);
    -
    -
    -

    and we want to check that the input number is always - positive and if not throw a C# ArgumentOutOfRangeException. +

    +
    +

    and we want to check that the input number is always + positive and if not throw a C# ArgumentOutOfRangeException. The "check" typemap is designed for checking input parameters. Below - you will see the canthrow attribute is set because the code - contains a call to SWIG_CSharpSetPendingExceptionArgument(). - The full example follows:

    -
    -
    + you will see the canthrow attribute is set because the code
    + contains a call to SWIG_CSharpSetPendingExceptionArgument().
    + The full example follows:

    +
    +
     %module example
     
     %typemap(check, canthrow=1) int number %{
    @@ -24093,31 +24400,31 @@ void positivesonly(int number) {
     }
     
     %}
    -
    -
    -

    When the following C# code is executed:

    -
    -
    +
    +
    +

    When the following C# code is executed:

    +
    +
     public class runme {
    -    static void Main() {
    -      example.positivesonly(-1);
    -    }
    +  static void Main() {
    +    example.positivesonly(-1);
    +  }
     }
    -
    -
    -

    The exception is thrown:

    -
    -
    +
    +
    +

    The exception is thrown:

    +
    +
     Unhandled Exception: System.ArgumentOutOfRangeException: only positive numbers accepted
     Parameter name: number
     in <0x00034> example:positivesonly (int)
     in <0x0000c> runme:Main ()
    -
    -
    -

    Now let's analyse the generated code to gain a fuller understanding - of the typemaps. The generated unmanaged C++ code is:

    -
    -
    +
    +
    +

    Now let's analyse the generated code to gain a fuller understanding + of the typemaps. The generated unmanaged C++ code is:

    +
    +
     SWIGEXPORT void SWIGSTDCALL CSharp_positivesonly(int jarg1) {
       int arg1 ;
     
    @@ -24132,12 +24439,12 @@ SWIGEXPORT void SWIGSTDCALL CSharp_positivesonly(int jarg1) {
       positivesonly(arg1);
     
     }
    -
    -
    -

    This largely comes from the "check" typemap. The managed code in the - module class is:

    -
    -
    +
    +
    +

    This largely comes from the "check" typemap. The managed code in the + module class is:

    +
    +
     public class example {
       public static void positivesonly(int number) {
         examplePINVOKE.positivesonly(number);
    @@ -24146,40 +24453,40 @@ public class example {
       }
     
     }
    -
    -
    -

    This comes largely from the "csout" typemap.

    -

    The "csout" typemap is the same as the default void "csout" typemap +

    +
    +

    This comes largely from the "csout" typemap.

    +

    The "csout" typemap is the same as the default void "csout" typemap so is not strictly necessary for the example. However, it is shown to demonstrate what managed output code typemaps should contain, that is, - a $excode special variable and an excode attribute. - Also note that $excode is expanded into the code held in the -excode attribute. The $imcall as always expands into -examplePINVOKE.positivesonly(number). The exception support code in - the intermediary class, examplePINVOKE, is not shown, but is - contained within the inner classes, SWIGPendingException and -SWIGExceptionHelper and is always generated. These classes can be + a $excode special variable and an excode attribute. + Also note that $excode is expanded into the code held in the +excode attribute. The $imcall as always expands into +examplePINVOKE.positivesonly(number). The exception support code in + the intermediary class, examplePINVOKE, is not shown, but is + contained within the inner classes, SWIGPendingException and +SWIGExceptionHelper and is always generated. These classes can be seen in any of the generated wrappers. However, all that is required of a user is as demonstrated in the "csin" typemap above. That is, is to - check SWIGPendingException.Pending and to throw the exception - returned by SWIGPendingException.Retrieve().

    -

    If the "check" typemap did not exist, then the following module - class would instead be generated:

    -
    -
    + check SWIGPendingException.Pending and to throw the exception
    + returned by SWIGPendingException.Retrieve().

    +

    If the "check" typemap did not exist, then the following module + class would instead be generated:

    +
    +
     public class example {
       public static void positivesonly(int number) {
         examplePINVOKE.positivesonly(number);
       }
     
     }
    -
    -
    -

    Here we see the pending exception checking code is omitted. In fact, - the code above would be generated if the canthrow attribute - was not in the "check" typemap, such as:

    -
    -
    +
    +
    +

    Here we see the pending exception checking code is omitted. In fact, + the code above would be generated if the canthrow attribute + was not in the "check" typemap, such as:

    +
    +
     %typemap(check) int number %{
     if ($1 < 0) {
       SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException,
    @@ -24187,28 +24494,28 @@ if ($1 < 0) {
       return $null;
     }
     %}
    -
    -
    -

    Note that if SWIG detects you have used -SWIG_CSharpSetPendingException() or -SWIG_CSharpSetPendingExceptionArgument() without setting the -canthrow attribute you will get a warning message similar to

    -
    -
    +
    +
    +

    Note that if SWIG detects you have used +SWIG_CSharpSetPendingException() or +SWIG_CSharpSetPendingExceptionArgument() without setting the +canthrow attribute you will get a warning message similar to

    +
    +
     example.i:21: Warning 845: Unmanaged code contains a call to a SWIG_CSharpSetPendingException
     method and C# code does not handle pending exceptions via the canthrow attribute.
    -
    -
    -

    Actually it will issue this warning for any function beginning with -SWIG_CSharpSetPendingException.

    -

    20.5.2 C# - exception example using %exception

    -

    Let's consider a similar, but more common example that throws a C++ - exception from within a wrapped function. We can use %exception - as mentioned in Exception handling - with %exception.

    -
    -
    +
    +
    +

    Actually it will issue this warning for any function beginning with +SWIG_CSharpSetPendingException.

    +

    22.5.2 C# + exception example using %exception

    +

    Let's consider a similar, but more common example that throws a C++ + exception from within a wrapped function. We can use %exception + as mentioned in Exception handling + with %exception.

    +
    +
     %exception negativesonly(int value) %{
     try {
       $action
    @@ -24225,12 +24532,12 @@ void negativesonly(int value) {
         throw std::out_of_range("number should be negative");
     }
     %}
    -
    -
    -

    The generated unmanaged code this time catches the C++ exception and - converts it into a C# ApplicationException.

    -
    -
    +
    +
    +

    The generated unmanaged code this time catches the C++ exception and + converts it into a C# ApplicationException.

    +
    +
     SWIGEXPORT void SWIGSTDCALL CSharp_negativesonly(int jarg1) {
       int arg1 ;
     
    @@ -24244,31 +24551,31 @@ SWIGEXPORT void SWIGSTDCALL CSharp_negativesonly(int jarg1) {
         return ;
       }
     }
    -
    -
    -

    The managed code generated does check for the pending exception as - mentioned earlier as the C# version of %exception has the -canthrow attribute set by default:

    -
    -
    +
    +
    +

    The managed code generated does check for the pending exception as + mentioned earlier as the C# version of %exception has the +canthrow attribute set by default:

    +
    +
       public static void negativesonly(int value) {
         examplePINVOKE.negativesonly(value);
         if (examplePINVOKE.SWIGPendingException.Pending)
           throw examplePINVOKE.SWIGPendingException.Retrieve();
       }
    -
    -
    -

    20.5.3 - C# exception example using exception specifications

    -

    When C++ exception specifications are used, SWIG is able to detect +

    +
    +

    22.5.3 + C# exception example using exception specifications

    +

    When C++ exception specifications are used, SWIG is able to detect that the method might throw an exception. By default SWIG will automatically generate code to catch the exception and convert it into - a managed ApplicationException, as defined by the default + a managed ApplicationException, as defined by the default "throws" typemaps. The following example has a user supplied "throws" - typemap which is used whenever an exception specification contains a -std::out_of_range, such as the evensonly method below.

    -
    -
    + typemap which is used whenever an exception specification contains a 
    +std::out_of_range, such as the evensonly method below.

    +
    +
     %typemap(throws, canthrow=1) std::out_of_range {
       SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentException, $1.what(), NULL);
       return $null;
    @@ -24281,13 +24588,13 @@ void evensonly(int input) throw (std::out_of_range) {
         throw std::out_of_range("number is not even");
     }
     %}
    -
    -
    -

    Note that the type for the throws typemap is the type in the +

    +
    +

    Note that the type for the throws typemap is the type in the exception specification. SWIG generates a try catch block with the - throws typemap code in the catch handler.

    -
    -
    + throws typemap code in the catch handler.

    +
    +
     SWIGEXPORT void SWIGSTDCALL CSharp_evensonly(int jarg1) {
       int arg1 ;
     
    @@ -24302,28 +24609,28 @@ SWIGEXPORT void SWIGSTDCALL CSharp_evensonly(int jarg1) {
         }
       }
     }
    -
    -
    -

    Multiple catch handlers are generated should there be more than one - exception specifications declared.

    -

    20.5.4 Custom C# - ApplicationException example

    -

    This example involves a user defined exception. The conventional - .NET exception handling approach is to create a custom -ApplicationException and throw it in your application. The goal in - this example is to convert the STL std::out_of_range exception - into one of these custom .NET exceptions.

    -

    The default exception handling is quite easy to use as the -SWIG_CSharpSetPendingException() and -SWIG_CSharpSetPendingExceptionArgument() methods are provided by +

    +
    +

    Multiple catch handlers are generated should there be more than one + exception specifications declared.

    +

    22.5.4 Custom C# + ApplicationException example

    +

    This example involves a user defined exception. The conventional + .NET exception handling approach is to create a custom +ApplicationException and throw it in your application. The goal in + this example is to convert the STL std::out_of_range exception + into one of these custom .NET exceptions.

    +

    The default exception handling is quite easy to use as the +SWIG_CSharpSetPendingException() and +SWIG_CSharpSetPendingExceptionArgument() methods are provided by SWIG. However, for a custom C# exception, the boiler plate code that supports these functions needs replicating. In essence this consists of some C/C++ code and C# code. The C/C++ code can be generated into the - wrapper file using the %insert(runtime) directive and the C# - code can be generated into the intermediary class using the -imclasscode pragma as follows:

    -
    -
    + wrapper file using the %insert(runtime) directive and the C#
    + code can be generated into the intermediary class using the 
    +imclasscode pragma as follows:

    +
    +
     %insert(runtime) %{
       // Code to handle throwing of C# CustomApplicationException from C/C++ code.
       // The equivalent delegate to the callback, CSharpExceptionCallback_t, is CustomExceptionDelegate
    @@ -24364,50 +24671,50 @@ imclasscode pragma as follows:

    } static CustomExceptionHelper exceptionHelper = new CustomExceptionHelper(); %} -
    -
    -

    The method stored in the C# delegate instance, customDelegate +

    +
    +

    The method stored in the C# delegate instance, customDelegate is what gets called by the C/C++ callback. However, the equivalent to the C# delegate, that is the C/C++ callback, needs to be assigned before any unmanaged code is executed. This is achieved by putting the initialisation code in the intermediary class. Recall that the intermediary class contains all the PInvoke methods, so the static variables in the intermediary class will be initialised before any of - the PInvoke methods in this class are called. The exceptionHelper + the PInvoke methods in this class are called. The exceptionHelper static variable ensures the C/C++ callback is initialised with the - value in customDelegate by calling the -CustomExceptionRegisterCallback method in the -CustomExceptionHelper static constructor. Once this has been done, - unmanaged code can make callbacks into the managed world as -customExceptionCallback will be initialised with a valid - callback/delegate. Any calls to -SWIG_CSharpSetPendingExceptionCustom() will make the callback to - create the pending exception in the same way that -SWIG_CSharpSetPendingException() and -SWIG_CSharpSetPendingExceptionArgument() does. In fact the method + value in customDelegate by calling the +CustomExceptionRegisterCallback method in the +CustomExceptionHelper static constructor. Once this has been done, + unmanaged code can make callbacks into the managed world as +customExceptionCallback will be initialised with a valid + callback/delegate. Any calls to +SWIG_CSharpSetPendingExceptionCustom() will make the callback to + create the pending exception in the same way that +SWIG_CSharpSetPendingException() and +SWIG_CSharpSetPendingExceptionArgument() does. In fact the method has been similarly named so that SWIG can issue the warning about - missing canthrow attributes as discussed earlier. It is an - invaluable warning as it is easy to forget the canthrow - attribute when writing typemaps/features.

    -

    The SWIGPendingException helper class is not shown, but is + missing canthrow attributes as discussed earlier. It is an + invaluable warning as it is easy to forget the canthrow + attribute when writing typemaps/features.

    +

    The SWIGPendingException helper class is not shown, but is generated as an inner class into the intermediary class. It stores the pending exception in Thread Local Storage so that the exception - handling mechanism is thread safe.

    -

    The boiler plate code above must be used in addition to a - handcrafted CustomApplicationException:

    -
    -
    + handling mechanism is thread safe.

    +

    The boiler plate code above must be used in addition to a + handcrafted CustomApplicationException:

    +
    +
     // Custom C# Exception
     class CustomApplicationException : global::System.ApplicationException {
       public CustomApplicationException(string message) 
         : base(message) {
       }
     }
    -
    -
    -

    and the SWIG interface code:

    -
    -
    +
    +
    +

    and the SWIG interface code:

    +
    +
     %typemap(throws, canthrow=1) std::out_of_range {
       SWIG_CSharpSetPendingExceptionCustom($1.what());
       return $null;
    @@ -24419,38 +24726,38 @@ void oddsonly(int input) throw (std::out_of_range) {
         throw std::out_of_range("number is not odd");
     }
     %}
    -
    -
    -

    The "throws" typemap now simply calls our new -SWIG_CSharpSetPendingExceptionCustom() function so that the - exception can be caught, as such:

    -
    -
    +
    +
    +

    The "throws" typemap now simply calls our new +SWIG_CSharpSetPendingExceptionCustom() function so that the + exception can be caught, as such:

    +
    +
     try {
       example.oddsonly(2);
     } catch (CustomApplicationException e) {
       ...
     }
    -
    -
    -

    20.6 C# Directors

    -

    The SWIG directors feature adds extra code to the generated C# proxy +

    +
    +

    22.6 C# Directors

    +

    The SWIG directors feature adds extra code to the generated C# proxy classes that enable these classes to be used in cross-language polymorphism. Essentially, it enables unmanaged C++ code to call back into managed code for virtual methods so that a C# class can derive - from a wrapped C++ class.

    -

    The following sections provide information on the C# director + from a wrapped C++ class.

    +

    The following sections provide information on the C# director implementation and contain most of the information required to use the - C# directors. However, the Java directors + C# directors. However, the Java directors section should also be read in order to gain more insight into - directors.

    -

    20.6.1 Directors example

    -

    Imagine we are wrapping a C++ base class, Base, from which + directors.

    +

    22.6.1 Directors example

    +

    Imagine we are wrapping a C++ base class, Base, from which we would like to inherit in C#. Such a class is shown below as well as - another class, Caller, which calls the virtual method -UIntMethod from pure unmanaged C++ code.

    -
    -
    + another class, Caller, which calls the virtual method 
    +UIntMethod from pure unmanaged C++ code.

    +
    +
     // file: example.h
     class Base {
     public:
    @@ -24475,13 +24782,13 @@ private:
       Base *m_base;
       void delBase() { delete m_base; m_base = 0; }
     };
    -
    -
    -

    The director feature is turned off by default and the following - simple interface file shows how directors are enabled for the class -Base.

    -
    -
    +
    +
    +

    The director feature is turned off by default and the following + simple interface file shows how directors are enabled for the class +Base.

    +
    +
     /* File : example.i */
     %module(directors="1") example
     %{
    @@ -24491,11 +24798,11 @@ Base.

    %feature("director") Base; %include "example.h" -
    -
    -

    The following is a C# class inheriting from Base:

    -
    -
    +
    +
    +

    The following is a C# class inheriting from Base:

    +
    +
     public class CSharpDerived : Base
     {
       public override uint UIntMethod(uint x)
    @@ -24504,12 +24811,12 @@ public class CSharpDerived : Base
         return x;
       }
     }
    -
    -
    -

    The Caller class can demonstrate the UIntMethod - method being called from unmanaged code using the following C# code:

    -
    -
    +
    +
    +

    The Caller class can demonstrate the UIntMethod + method being called from unmanaged code using the following C# code:

    +
    +
     public class runme
     {
       static void Main() 
    @@ -24536,27 +24843,27 @@ public class runme
         myCaller.reset();
       }
     }
    -
    -
    -

    If the above is run, the output is then:

    -
    -
    +
    +
    +

    If the above is run, the output is then:

    +
    +
     Base - UIntMethod(123)
     CSharpDerived - UIntMethod(123)
    -
    -
    -

    20.6.2 Directors - implementation

    -

    The previous section demonstrated a simple example where the virtual - UIntMethod method was called from C++ code, even when the +

    +
    +

    22.6.2 Directors + implementation

    +

    The previous section demonstrated a simple example where the virtual + UIntMethod method was called from C++ code, even when the overridden method is implemented in C#. The intention of this section is to gain an insight into how the director feature works. It shows the - generated code for the two virtual methods, UIntMethod and -BaseBoolMethod, when the director feature is enabled for the -Base class.

    -

    Below is the generated C# Base director class.

    -
    -
    + generated code for the two virtual methods, UIntMethod and 
    +BaseBoolMethod, when the director feature is enabled for the 
    +Base class.

    +

    Below is the generated C# Base director class.

    +
    +
     public class Base : global::System.IDisposable {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
       protected bool swigCMemOwn;
    @@ -24602,9 +24909,9 @@ public class Base : global::System.IDisposable {
     
       private void SwigDirectorConnect() {
         if (SwigDerivedClassHasMethod("UIntMethod", swigMethodTypes0))
    -      swigDelegate0 = new SwigDelegateBase_0(SwigDirectorUIntMethod);
    +      swigDelegate0 = new SwigDelegateBase_0(SwigDirectorMethodUIntMethod);
         if (SwigDerivedClassHasMethod("BaseBoolMethod", swigMethodTypes1))
    -      swigDelegate1 = new SwigDelegateBase_1(SwigDirectorBaseBoolMethod);
    +      swigDelegate1 = new SwigDelegateBase_1(SwigDirectorMethodBaseBoolMethod);
         examplePINVOKE.Base_director_connect(swigCPtr, swigDelegate0, swigDelegate1);
       }
     
    @@ -24614,11 +24921,11 @@ public class Base : global::System.IDisposable {
         return hasDerivedMethod;
       }
     
    -  private uint SwigDirectorUIntMethod(uint x) {
    +  private uint SwigDirectorMethodUIntMethod(uint x) {
         return UIntMethod(x);
       }
     
    -  private void SwigDirectorBaseBoolMethod(global::System.IntPtr b, bool flag) {
    +  private void SwigDirectorMethodBaseBoolMethod(global::System.IntPtr b, bool flag) {
         BaseBoolMethod(new Base(b, false), flag);
       }
     
    @@ -24631,35 +24938,36 @@ public class Base : global::System.IDisposable {
       private static global::System.Type[] swigMethodTypes0 = new global::System.Type[] { typeof(uint) };
       private static global::System.Type[] swigMethodTypes1 = new global::System.Type[] { typeof(Base), typeof(bool) };
     }
    -
    -
    -

    Everything from the SwigDirectorConnect() method and below +

    +
    +

    Everything from the SwigDirectorConnect() method and below is code that is only generated when directors are enabled. The design comprises a C# delegate being initialised for each virtual method on - construction of the class. Let's examine the BaseBoolMethod.

    -

    In the Base constructor a call is made to -SwigDirectorConnect() which contains the initialisation code for - all the virtual methods. It uses a support method, -SwigDerivedClassHasMethod(), which simply uses reflection to + construction of the class. Let's examine the BaseBoolMethod.

    +

    In the Base constructor a call is made to +SwigDirectorConnect() which contains the initialisation code for + all the virtual methods. It uses a support method, +SwigDerivedClassHasMethod(), which simply uses reflection to determine if the named method, BaseBoolMethod, with the list of required parameter types, exists in a subclass. If it does not exist, the delegate is not initialised as there is no need for unmanaged code to call back into managed C# code. However, if there is an overridden method in any subclass, the delegate is required. It is then - initialised to the SwigDirectorBaseBoolMethod which in turn - will call BaseBoolMethod if invoked. The delegate is not - initialised to the BaseBoolMethod directly as quite often + initialised to the SwigDirectorMethodBaseBoolMethod which in + turn will call BaseBoolMethod if invoked. The delegate is not + initialised to the BaseBoolMethod directly as quite often types will need marshalling from the unmanaged type to the managed type - in which case an intermediary method (SwigDirectorBaseBoolMethod -) is required for the marshalling. In this case, the C# Base - class needs to be created from the unmanaged IntPtr type.

    -

    The last thing that SwigDirectorConnect() does is to pass - the delegates to the unmanaged code. It calls the intermediary method -Base_director_connect() which is really a call to the C function -CSharp_Base_director_connect(). This method simply maps each C# - delegate onto a C function pointer.

    -
    -
    + in which case an intermediary method (
    +SwigDirectorMethodBaseBoolMethod) is required for the marshalling.
    + In this case, the C# Base class needs to be created from the
    + unmanaged IntPtr type.

    +

    The last thing that SwigDirectorConnect() does is to pass + the delegates to the unmanaged code. It calls the intermediary method +Base_director_connect() which is really a call to the C function +CSharp_Base_director_connect(). This method simply maps each C# + delegate onto a C function pointer.

    +
    +
     SWIGEXPORT void SWIGSTDCALL CSharp_Base_director_connect(void *objarg, 
                                             SwigDirector_Base::SWIG_Callback0_t callback0,
                                             SwigDirector_Base::SWIG_Callback1_t callback1) {
    @@ -24693,20 +25001,20 @@ void SwigDirector_Base::swig_connect_director(SWIG_Callback0_t callbackUIntMetho
       swig_callbackUIntMethod = callbackUIntMethod;
       swig_callbackBaseBoolMethod = callbackBaseBoolMethod;
     }
    -
    -
    -

    Note that for each director class SWIG creates an unmanaged director - class for making the callbacks. For example Base has -SwigDirector_Base and SwigDirector_Base is derived from -Base. Should a C# class be derived from Base, the - underlying C++ SwigDirector_Base is created rather than -Base. The SwigDirector_Base class then implements all the +

    +
    +

    Note that for each director class SWIG creates an unmanaged director + class for making the callbacks. For example Base has +SwigDirector_Base and SwigDirector_Base is derived from +Base. Should a C# class be derived from Base, the + underlying C++ SwigDirector_Base is created rather than +Base. The SwigDirector_Base class then implements all the virtual methods, redirecting calls up to managed code if the - callback/delegate is non-zero. The implementation of -SwigDirector_Base::BaseBoolMethod shows this - the callback is made - by invoking the swig_callbackBaseBoolMethod function pointer:

    -
    -
    + callback/delegate is non-zero. The implementation of 
    +SwigDirector_Base::BaseBoolMethod shows this - the callback is made
    + by invoking the swig_callbackBaseBoolMethod function pointer:

    +
    +
     void SwigDirector_Base::BaseBoolMethod(Base const &b, bool flag) {
       void * jb = 0 ;
       unsigned int jflag  ;
    @@ -24720,47 +25028,47 @@ void SwigDirector_Base::BaseBoolMethod(Base const &b, bool flag) {
         swig_callbackBaseBoolMethod(jb, jflag);
       }
     }
    -
    -
    -

    The delegates from the above example are public by default:

    -
    -
    +
    +
    +

    The delegates from the above example are public by default:

    +
    +
       public delegate uint SwigDelegateBase_0(uint x);
       public delegate void SwigDelegateBase_1(global::System.IntPtr b, bool flag);
    -
    -
    -

    These can be changed if desired via the -csdirectordelegatemodifiers -%feature directive. For example, using -%feature("csdirectordelegatemodifiers") "internal" before SWIG - parses the Base class will change all the delegates to internal -:

    -
    -
    +
    +
    +

    These can be changed if desired via the +csdirectordelegatemodifiers +%feature directive. For example, using +%feature("csdirectordelegatemodifiers") "internal" before SWIG + parses the Base class will change all the delegates to internal +:

    +
    +
       internal delegate uint SwigDelegateBase_0(uint x);
       internal delegate void SwigDelegateBase_1(global::System.IntPtr b, bool flag);
    -
    -
    -

    20.6.3 Director caveats

    -

    There is a subtle gotcha with directors. If default parameters are +

    +
    +

    22.6.3 Director caveats

    +

    There is a subtle gotcha with directors. If default parameters are used, it is recommended to follow a pattern of always calling a single method in any C# derived class. An example will clarify this and the reasoning behind the recommendation. Consider the following C++ class - wrapped as a director class:

    -
    -
    + wrapped as a director class:

    +
    +
     class Defaults {
     public:
       virtual ~Defaults();
       virtual void DefaultMethod(int a=-100);
     };
    -
    -
    -

    Recall that C++ methods with default parameters generate overloaded +

    +
    +

    Recall that C++ methods with default parameters generate overloaded methods for each defaulted parameter, so a C# derived class can be - created with two DefaultMethod override methods:

    -
    -
    + created with two DefaultMethod override methods:

    +
    +
     public class CSharpDefaults : Defaults
     {
       public override void DefaultMethod()
    @@ -24771,67 +25079,66 @@ public class CSharpDefaults : Defaults
       {
       }
     }
    -
    -
    -

    It may not be clear at first, but should a user intend to call -CSharpDefaults.DefaultMethod() from C++, a call is actually made to - CSharpDefaults.DefaultMethod(int). This is because the initial - call is made in C++ and therefore the DefaultMethod(int) +

    +
    +

    It may not be clear at first, but should a user intend to call +CSharpDefaults.DefaultMethod() from C++, a call is actually made to + CSharpDefaults.DefaultMethod(int). This is because the initial + call is made in C++ and therefore the DefaultMethod(int) method will be called as is expected with C++ calls to methods with defaults, with the default being set to -100. The callback/delegate - matching this method is of course the overloaded method -DefaultMethod(int). However, a call from C# to -CSharpDefaults.DefaultMethod() will of course call this exact + matching this method is of course the overloaded method +DefaultMethod(int). However, a call from C# to +CSharpDefaults.DefaultMethod() will of course call this exact method and in order for behaviour to be consistent with calls from C++, - the implementation should pass the call on to -CSharpDefaults.DefaultMethod(int)using the C++ default value, as - shown above.

    -

    20.7 Multiple modules

    -

    When using multiple modules it is is possible - to compile each SWIG generated wrapper into a different assembly. - However, by default the generated code may not compile if generated - classes in one assembly use generated classes in another assembly. The - visibility of the getCPtr() and pointer constructor generated - from the csbody typemaps needs changing. The default - visibility is internal but it needs to be public for - access from a different assembly. Just changing 'internal' to 'public' - in the typemap achieves this. Two macros are available in -csharp.swg to make this easier and using them is the preferred - approach over simply copying the typemaps and modifying as this is - forward compatible with any changes in the csbody typemap in - future versions of SWIG. The macros are for the proxy and typewrapper - classes and can respectively be used to to make the method and - constructor public:

    -
    -
    + the implementation should pass the call on to 
    +CSharpDefaults.DefaultMethod(int)using the C++ default value, as
    + shown above.

    +

    22.7 Multiple modules

    +

    When using multiple modules it is possible to + compile each SWIG generated wrapper into a different assembly. However, + by default the generated code may not compile if generated classes in + one assembly use generated classes in another assembly. The visibility + of the getCPtr() and pointer constructor generated from the +csbody typemaps needs changing. The default visibility is +internal but it needs to be public for access from a + different assembly. Just changing 'internal' to 'public' in the typemap + achieves this. Two macros are available in csharp.swg to make + this easier and using them is the preferred approach over simply + copying the typemaps and modifying as this is forward compatible with + any changes in the csbody typemap in future versions of SWIG. + The macros are for the proxy and typewrapper classes and can + respectively be used to to make the method and constructor public:

    +
    +
       SWIG_CSBODY_PROXY(public, public, SWIGTYPE)
       SWIG_CSBODY_TYPEWRAPPER(public, public, public, SWIGTYPE)
    -
    -
    -

    Alternatively, instead of exposing these as public, consider using - the [assembly:InternalsVisibleTo("Name")] attribute available +

    +
    +

    Alternatively, instead of exposing these as public, consider using + the [assembly:InternalsVisibleTo("Name")] attribute available in the .NET framework when you know which assemblies these can be exposed to. Another approach would be to make these public, but also to - hide them from intellisense by using the + hide them from intellisense by using the [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - attribute if you don't want users to easily stumble upon these so - called 'internal workings' of the wrappers.

    -

    20.8 C# Typemap examples

    +
    attribute if you don't want users to easily stumble upon these so + called 'internal workings' of the wrappers.

    +

    22.8 C# Typemap examples

    This section includes a few examples of typemaps. For more examples, - you might look at the files "csharp.swg" and "typemaps.i + you might look at the files "csharp.swg" and "typemaps.i " in the SWIG library. -

    20.8.1 Memory - management when returning references to member variables

    -

    This example shows how to prevent premature garbage collection of +

    22.8.1 Memory + management when returning references to member variables

    +

    This example shows how to prevent premature garbage collection of objects when the underlying C++ class returns a pointer or reference to - a member variable. The example is a direct equivalent to this -Java equivalent.

    -

    Consider the following C++ code:

    -
    -
    + a member variable. The example is a direct equivalent to this 
    +Java equivalent.

    +

    Consider the following C++ code:

    +
    +
     struct Wheel {
       int size;
    -  Wheel(int sz) : size(sz) {}
    +  Wheel(int sz = 0) : size(sz) {}
     };
     
     class Bike {
    @@ -24840,37 +25147,37 @@ public:
       Bike(int val) : wheel(val) {}
       Wheel& getWheel() { return wheel; }
     };
    -
    -
    -

    and the following usage from C# after running the code through SWIG:

    -
    -
    -      Wheel wheel = new Bike(10).getWheel();
    -      Console.WriteLine("wheel size: " + wheel.size);
    -      // Simulate a garbage collection
    -      global::System.GC.Collect();
    -      global::System.GC.WaitForPendingFinalizers();
    -      global::System.Console.WriteLine("wheel size: " + wheel.size);
    -
    -
    -

    Don't be surprised that if the resulting output gives strange - results such as...

    -
    -
    +
    +
    +

    and the following usage from C# after running the code through SWIG:

    +
    +
    +  Wheel wheel = new Bike(10).getWheel();
    +  Console.WriteLine("wheel size: " + wheel.size);
    +  // Simulate a garbage collection
    +  global::System.GC.Collect();
    +  global::System.GC.WaitForPendingFinalizers();
    +  global::System.Console.WriteLine("wheel size: " + wheel.size);
    +
    +
    +

    Don't be surprised that if the resulting output gives strange + results such as...

    +
    +
     wheel size: 10
     wheel size: 135019664
    -
    -
    -

    What has happened here is the garbage collector has collected the -Bike instance as it doesn't think it is needed any more. The proxy - instance, wheel, contains a reference to memory that was - deleted when the Bike instance was collected. In order to - prevent the garbage collector from collecting the Bike - instance a reference to the Bike must be added to the -wheel instance. You can do this by adding the reference when the -getWheel() method is called using the following typemaps.

    -
    -
    +
    +
    +

    What has happened here is the garbage collector has collected the +Bike instance as it doesn't think it is needed any more. The proxy + instance, wheel, contains a reference to memory that was + deleted when the Bike instance was collected. In order to + prevent the garbage collector from collecting the Bike + instance a reference to the Bike must be added to the +wheel instance. You can do this by adding the reference when the +getWheel() method is called using the following typemaps.

    +
    +
     %typemap(cscode) Wheel %{
       // Ensure that the GC doesn't collect any Bike instance set from C#
       private Bike bikeReference;
    @@ -24891,13 +25198,13 @@ getWheel() method is called using the following typemaps.

    } return ret; } -
    -
    -

    The code in the first typemap gets added to the Wheel proxy +

    +
    +

    The code in the first typemap gets added to the Wheel proxy class. The code in the second typemap constitutes the bulk of the code - in the generated getWheel() function:

    -
    -
    + in the generated getWheel() function:

    +
    +
     public class Wheel : global::System.IDisposable {
       ...
       // Ensure that the GC doesn't collect any Bike instance set from C#
    @@ -24919,19 +25226,19 @@ public class Bike : global::System.IDisposable {
         return ret;
       }
     }
    -
    -
    -

    Note the addReference call.

    -

    20.8.2 Memory management - for objects passed to the C++ layer

    -

    The example is a direct equivalent to this -Java equivalent. Managing memory can be tricky when using C++ and C# +

    +
    +

    Note the addReference call.

    +

    22.8.2 Memory management + for objects passed to the C++ layer

    +

    The example is a direct equivalent to this +Java equivalent. Managing memory can be tricky when using C++ and C# proxy classes. The previous example shows one such case and this example looks at memory management for a class passed to a C++ method which expects the object to remain in scope after the function has - returned. Consider the following two C++ classes:

    -
    -
    + returned. Consider the following two C++ classes:

    +
    +
     struct Element {
       int value;
       Element(int val) : value(val) {}
    @@ -24943,47 +25250,47 @@ public:
       void setElement(Element* e) { element = e; }
       Element* getElement() { return element; }
     };
    -
    -
    -

    and usage from C++

    -
    -
    +
    +
    +

    and usage from C++

    +
    +
       Container container;
       Element element(20);
       container.setElement(&element);
       cout << "element.value: " << container.getElement()->value << endl;
    -
    -
    -

    and more or less equivalent usage from C#

    -
    -
    -      Container container = new Container();
    -      Element element = new Element(20);
    -      container.setElement(element);
    -
    -
    -

    The C++ code will always print out 20, but the value printed out may +

    +
    +

    and more or less equivalent usage from C#

    +
    +
    +  Container container = new Container();
    +  Element element = new Element(20);
    +  container.setElement(element);
    +
    +
    +

    The C++ code will always print out 20, but the value printed out may not be this in the C# equivalent code. In order to understand why, - consider a garbage collection occuring...

    -
    -
    -      Container container = new Container();
    -      Element element = new Element(20);
    -      container.setElement(element);
    -      Console.WriteLine("element.value: " + container.getElement().value);
    -      // Simulate a garbage collection
    -      global::System.GC.Collect();
    -      global::System.GC.WaitForPendingFinalizers();
    -      global::System.Console.WriteLine("element.value: " + container.getElement().value);
    -
    -
    -

    The temporary element created with new Element(20) could - get garbage collected which ultimately means the container + consider a garbage collection occurring...

    +
    +
    +  Container container = new Container();
    +  Element element = new Element(20);
    +  container.setElement(element);
    +  Console.WriteLine("element.value: " + container.getElement().value);
    +  // Simulate a garbage collection
    +  global::System.GC.Collect();
    +  global::System.GC.WaitForPendingFinalizers();
    +  global::System.Console.WriteLine("element.value: " + container.getElement().value);
    +
    +
    +

    The temporary element created with new Element(20) could + get garbage collected which ultimately means the container variable is holding a dangling pointer, thereby printing out any old random value instead of the expected value of 20. One solution is to - add in the appropriate references in the C# layer...

    -
    -
    + add in the appropriate references in the C# layer...

    +
    +
     public class Container : global::System.IDisposable {
     
       ...
    @@ -24991,50 +25298,59 @@ public class Container : global::System.IDisposable {
       // Ensure that the GC doesn't collect any Element set from C#
       // as the underlying C++ class stores a shallow copy
       private Element elementReference;
    -  private global::System.Runtime.InteropServices.HandleRef getCPtrAndAddReference(Element element) {
    -    elementReference = element;
    -    return Element.getCPtr(element);
    -  }
     
       public void setElement(Element e) {
    -    examplePINVOKE.Container_setElement(swigCPtr, getCPtrAndAddReference(e));
    +    examplePINVOKE.Container_setElement(swigCPtr, Element.getCPtr(e));
    +    elementReference = e;
       }
     }
    -
    -
    -

    The following typemaps will generate the desired code. The 'csin' - typemap matches the input parameter type for the setElement - method. The 'cscode' typemap simply adds in the specified code into the - C# proxy class.

    -
    -
    -%typemap(csin) Element *e "getCPtrAndAddReference($csinput)"
    -
    +
    +
    +

    The following typemaps can be used to generate this code:

    +
    +
     %typemap(cscode) Container %{
       // Ensure that the GC doesn't collect any Element set from C#
       // as the underlying C++ class stores a shallow copy
       private Element elementReference;
    -  private global::System.Runtime.InteropServices.HandleRef getCPtrAndAddReference(Element element) {
    -    elementReference = element;
    -    return Element.getCPtr(element);
    -  }
     %}
    -
    -
    -

    20.8.3 Date marshalling using the - csin typemap and associated attributes

    -

    The NaN Exception example + +%typemap(csin, + post=" elementReference = $csinput;" + ) Element *e "Element.getCPtr($csinput)" +

    +
    +

    The 'cscode' typemap simply adds in the specified code into the C# + proxy class. The 'csin' typemap matches the input parameter type and + name for the setElement method and the 'post' typemap + attribute allows adding code after the PInvoke call. The 'post' code is + generated into a finally block after the PInvoke call so the resulting + code isn't quite as mentioned earlier, setElement is actually:

    +
    +
    +  public void setElement(Element e) {
    +    try {
    +      examplePINVOKE.Container_setElement(swigCPtr, Element.getCPtr(e));
    +    } finally {
    +      elementReference = e;
    +    }
    +  }
    +
    +
    +

    22.8.3 Date marshalling using the + csin typemap and associated attributes

    +

    The NaN Exception example is a simple example of the "javain" typemap and its 'pre' attribute. - This example demonstrates how a C++ date class, say CDate, can - be mapped onto the standard .NET date class, System.DateTime + This example demonstrates how a C++ date class, say CDate, can + be mapped onto the standard .NET date class, System.DateTime by using the 'pre', 'post' and 'pgcppname' attributes of the "csin" typemap (the C# equivalent to the "javain" typemap). The example is an - equivalent to the Java Date - marshalling example. The idea is that the System.DateTime - is used wherever the C++ API uses a CDate. Let's assume the - code being wrapped is as follows:

    -
    -
    + equivalent to the Java Date
    + marshalling example. The idea is that the System.DateTime
    + is used wherever the C++ API uses a CDate. Let's assume the
    + code being wrapped is as follows:

    +
    +
     class CDate {
     public:
       CDate();
    @@ -25048,14 +25364,14 @@ struct Action {
       static int doSomething(const CDate &dateIn, CDate &dateOut);
       Action(const CDate &date, CDate &dateOut);
     };
    -
    -
    -

    Note that dateIn is const and therefore read only and -dateOut is a non-const output type.

    -

    First let's look at the code that is generated by default, where the - C# proxy class CDate is used in the proxy interface:

    -
    -
    +
    +
    +

    Note that dateIn is const and therefore read only and +dateOut is a non-const output type.

    +

    First let's look at the code that is generated by default, where the + C# proxy class CDate is used in the proxy interface:

    +
    +
     public class Action : global::System.IDisposable {
       ...
       public Action(CDate dateIn, CDate dateOut) 
    @@ -25073,22 +25389,22 @@ public class Action : global::System.IDisposable {
         return ret;
       }
     }
    -
    -
    -

    The CDate & and const CDate & C# code is generated - from the following two default typemaps:

    -
    -
    +
    +
    +

    The CDate & and const CDate & C# code is generated + from the following two default typemaps:

    +
    +
     %typemap(cstype) SWIGTYPE & "$csclassname"
     %typemap(csin) SWIGTYPE & "$csclassname.getCPtr($csinput)"
    -
    -
    -

    where '$csclassname' is translated into the proxy class name, -CDate and '$csinput' is translated into the name of the parameter, - eg dateIn. From C#, the intention is then to call into a - modifed API with something like:

    -
    -
    +
    +
    +

    where '$csclassname' is translated into the proxy class name, +CDate and '$csinput' is translated into the name of the parameter, + eg dateIn. From C#, the intention is then to call into a + modified API with something like:

    +
    +
     System.DateTime dateIn = new System.DateTime(2011, 4, 13);
     System.DateTime dateOut = new System.DateTime();
     
    @@ -25096,15 +25412,15 @@ System.DateTime dateOut = new System.DateTime();
     // is set to a new value by the C++ call
     Action action = new Action(dateIn, out dateOut);
     dateIn = new System.DateTime(2012, 7, 14);
    -
    -
    -

    To achieve this mapping, we need to alter the default code - generation slightly so that at the C# layer, a System.DateTime - is converted into a CDate. The intermediary layer will still - take a pointer to the underlying CDate class. The typemaps to - achieve this are shown below.

    -
    -
    +
    +
    +

    To achieve this mapping, we need to alter the default code + generation slightly so that at the C# layer, a System.DateTime + is converted into a CDate. The intermediary layer will still + take a pointer to the underlying CDate class. The typemaps to + achieve this are shown below.

    +
    +
     %typemap(cstype) const CDate & "System.DateTime"
     %typemap(csin, 
              pre="    CDate temp$csinput = new CDate($csinput.Year, $csinput.Month, $csinput.Day);"
    @@ -25120,12 +25436,12 @@ dateIn = new System.DateTime(2012, 7, 14);
             ) CDate &
              "$csclassname.getCPtr(temp$csinput)"
     
    -
    -
    -

    The resulting generated proxy code in the Action class - follows:

    -
    -
    +
    +
    +

    The resulting generated proxy code in the Action class + follows:

    +
    +
     public class Action : global::System.IDisposable {
       ...
       public int doSomething(System.DateTime dateIn, out System.DateTime dateOut) {
    @@ -25161,62 +25477,62 @@ public class Action : global::System.IDisposable {
           throw examplePINVOKE.SWIGPendingException.Retrieve();
       }
     }
    -
    -
    -

    A few things to note:

    -
      -
    • The "cstype" typemap has changed the parameter type to -System.DateTime instead of the default generated CDate - proxy.
    • -
    • The non-const CDate & type is marshalled as a reference +
    +
    +

    A few things to note:

    +
      +
    • The "cstype" typemap has changed the parameter type to +System.DateTime instead of the default generated CDate + proxy.
    • +
    • The non-const CDate & type is marshalled as a reference parameter in C# as the date cannot be explicitly set once the object - has been created, so a new object is created instead.
    • -
    • The code in the 'pre' attribute appears before the intermediary - call (examplePINVOKE.new_Action / -examplePINVOKE.Action_doSomething).
    • -
    • The code in the 'post' attribute appears after the intermediary - call.
    • -
    • A try .. finally block is generated with the intermediary call in + has been created, so a new object is created instead.
    • +
    • The code in the 'pre' attribute appears before the intermediary + call (examplePINVOKE.new_Action / +examplePINVOKE.Action_doSomething).
    • +
    • The code in the 'post' attribute appears after the intermediary + call.
    • +
    • A try .. finally block is generated with the intermediary call in the try block and 'post' code in the finally block. The alternative of just using a temporary variable for the return value from the intermediary call and the 'post' code being inserted before the return statement is not possible given that the intermediary call and method - return comes from a single source (the "csout" typemap).
    • -
    • The temporary variables in the "csin" typemaps are called -temp$csin, where "$csin" is replaced with the parameter name. - "$csin" is used to mangle the variable name so that more than one -CDate & type can be used as a parameter in a method, otherwise two - or more local variables with the same name would be generated.
    • -
    • The use of the "csin" typemap causes a constructor helper function - (SwigConstructAction) to be generated. This allows C# code to + return comes from a single source (the "csout" typemap).
    • +
    • The temporary variables in the "csin" typemaps are called +temp$csin, where "$csin" is replaced with the parameter name. + "$csin" is used to mangle the variable name so that more than one +CDate & type can be used as a parameter in a method, otherwise two + or more local variables with the same name would be generated.
    • +
    • The use of the "csin" typemap causes a constructor helper function + (SwigConstructAction) to be generated. This allows C# code to be called before the intermediary call made in the constructor - initialization list.
    • -
    • The 'cshin' attribute is required for the SwigConstructAction - constructor helper function so that the 2nd parameter is declared as -out dateOut instead of just dateOut.
    • -
    -

    So far we have considered the date as an input only and an output - only type. Now let's consider CDate * used as an input/output + initialization list. +

  • The 'cshin' attribute is required for the SwigConstructAction + constructor helper function so that the 2nd parameter is declared as +out dateOut instead of just dateOut.
  • + +

    So far we have considered the date as an input only and an output + only type. Now let's consider CDate * used as an input/output type. Consider the following C++ function which modifies the date - passed in:

    -
    -
    + passed in:

    +
    +
     void addYears(CDate *pDate, int years) {
       *pDate = CDate(pDate->getYear() + years, pDate->getMonth(), pDate->getDay());
     }
    -
    -
    -

    If usage of CDate * commonly follows this input/output - pattern, usage from C# like the following

    -
    -
    +
    +
    +

    If usage of CDate * commonly follows this input/output + pattern, usage from C# like the following

    +
    +
     System.DateTime christmasEve = new System.DateTime(2000, 12, 24);
     example.addYears(ref christmasEve, 10); // christmasEve now contains 2010-12-24
    -
    -
    -

    will be possible with the following CDate * typemaps

    -
    -
    +
    +
    +

    will be possible with the following CDate * typemaps

    +
    +
     %typemap(cstype, out="System.DateTime") CDate * "ref System.DateTime"
     
     %typemap(csin,
    @@ -25226,12 +25542,12 @@ example.addYears(ref christmasEve, 10); // christmasEve now contains 2010-12-24
              cshin="ref $csinput"
             ) CDate *
              "$csclassname.getCPtr(temp$csinput)"
    -
    -
    -

    Globals are wrapped by the module class and for a module called - example, the typemaps result in the following code:

    -
    -
    +
    +
    +

    Globals are wrapped by the module class and for a module called + example, the typemaps result in the following code:

    +
    +
     public class example {
       public static void addYears(ref System.DateTime pDate, int years) {
         CDate temppDate = new CDate(pDate.Year, pDate.Month, pDate.Day);
    @@ -25244,15 +25560,15 @@ public class example {
       }
       ...
     }
    -
    -
    -

    The following typemap is the same as the previous but demonstrates +

    +
    +

    The following typemap is the same as the previous but demonstrates how a using block can be used for the temporary variable. The only change to the previous typemap is the introduction of the 'terminator' - attribute to terminate the using block. The subtractYears - method is nearly identical to the above addYears method.

    -
    -
    + attribute to terminate the using block. The subtractYears
    + method is nearly identical to the above addYears method.

    +
    +
     %typemap(csin,
       pre="    using (CDate temp$csinput = new CDate($csinput.Year, $csinput.Month, $csinput.Day)) {",
       post="      $csinput = new System.DateTime(temp$csinput.getYear(),"
    @@ -25265,12 +25581,12 @@ public class example {
     void subtractYears(CDate *pDate, int years) {
       *pDate = CDate(pDate->getYear() - years, pDate->getMonth(), pDate->getDay());
     }
    -
    -
    -

    The resulting generated code shows the termination of the using - block:

    -
    -
    +
    +
    +

    The resulting generated code shows the termination of the using + block:

    +
    +
     public class example {
       public static void subtractYears(ref System.DateTime pDate, int years) {
         using (CDate temppDate = new CDate(pDate.Year, pDate.Month, pDate.Day)) {
    @@ -25284,37 +25600,37 @@ public class example {
       }
       ...
     }
    -
    -
    -

    20.8.4 A date example demonstrating - marshalling of C# properties

    -

    The previous section looked at converting a C++ date class to -System.DateTime for parameters. This section extends this idea so +

    +
    +

    22.8.4 A date example demonstrating + marshalling of C# properties

    +

    The previous section looked at converting a C++ date class to +System.DateTime for parameters. This section extends this idea so that the correct marshalling is obtained when wrapping C++ variables. - Consider the same CDate class from the previous section and a - global variable:

    -
    -
    + Consider the same CDate class from the previous section and a
    + global variable:

    +
    +
     CDate ImportantDate = CDate(1999, 12, 31);
    -
    -
    -

    The aim is to use System.DateTime from C# when accessing +

    +
    +

    The aim is to use System.DateTime from C# when accessing this date as shown in the following usage where the module name is - 'example':

    -
    -
    + 'example':

    +
    +
     example.ImportantDate = new System.DateTime(2000, 11, 22);
     System.DateTime importantDate = example.ImportantDate;
     Console.WriteLine("Important date: " + importantDate);
    -
    -
    -

    When SWIG wraps a variable that is a class/struct/union, it is - wrapped using a pointer to the type for the reasons given in -Structure data members. The typemap type required is thus CDate - *. Given that the previous section already designed CDate * +

    +
    +

    When SWIG wraps a variable that is a class/struct/union, it is + wrapped using a pointer to the type for the reasons given in +Structure data members. The typemap type required is thus CDate + *. Given that the previous section already designed CDate * typemaps, we'll use those same typemaps plus the 'csvarin' and - 'csvarout' typemaps.

    -
    + 'csvarout' typemaps.
    +
     %typemap(cstype, out="System.DateTime") CDate * "ref System.DateTime"
     
     %typemap(csin,
    @@ -25340,12 +25656,12 @@ Structure data members. The typemap type required is thus CDate
           return new System.DateTime(tempDate.getYear(), tempDate.getMonth(), tempDate.getDay(),
                                      0, 0, 0);
         } %}
    -
    -

    -

    For a module called example, the typemaps result in the following - code:

    -
    -
    +
    +

    +

    For a module called example, the typemaps result in the following + code:

    +
    +
     public class example {
       public static System.DateTime ImportantDate {
         /* csvarin typemap code */
    @@ -25363,43 +25679,43 @@ public class example {
       }
       ...
     }
    -
    -
    -

    Some points to note:

    -
      -
    • The property set comes from the 'csvarin' typemap and the property - get comes from the 'csvarout' typemap.
    • -
    • The type used for the property comes from the 'cstype' typemap. This +
    +
    +

    Some points to note:

    +
      +
    • The property set comes from the 'csvarin' typemap and the property + get comes from the 'csvarout' typemap.
    • +
    • The type used for the property comes from the 'cstype' typemap. This particular example has the 'out' attribute set in the typemap and as it is specified, it is used in preference to the type in the typemap body. This is because the type in the 'out' attribute can never include - modifiers such as 'ref', thereby avoiding code such as public - static ref System.DateTime ImportantDate { ..., which would of - course not compile.
    • -
    • The $excode special variable expands to nothing as there + modifiers such as 'ref', thereby avoiding code such as public + static ref System.DateTime ImportantDate { ..., which would of + course not compile.
    • +
    • The $excode special variable expands to nothing as there are no exception handlers specified in any of the unmanaged code typemaps (in fact the marshalling was done using the default unmanaged - code typemaps.)
    • -
    • The $imcall typemap expands to the appropriate intermediary - method call in the examplePINVOKE class.
    • -
    • The $csinput special variable in the 'csin' typemap always - expands to value for properties. In this case -$csclassname.getCPtr(temp$csinput) expands to -CDate.getCPtr(tempvalue).
    • -
    • The 'csin' typemap has 'pre', 'post' and 'cshin' attributes, and + code typemaps.)
    • +
    • The $imcall typemap expands to the appropriate intermediary + method call in the examplePINVOKE class.
    • +
    • The $csinput special variable in the 'csin' typemap always + expands to value for properties. In this case +$csclassname.getCPtr(temp$csinput) expands to +CDate.getCPtr(tempvalue).
    • +
    • The 'csin' typemap has 'pre', 'post' and 'cshin' attributes, and these are all ignored in the property set. The code in these attributes must instead be replicated within the 'csvarin' typemap. The line - creating the temp$csinput variable is such an example; it is - identical to what is in the 'pre' attribute.
    • -
    -

    20.8.5 Date example - demonstrating the 'pre' and 'post' typemap attributes for directors

    -

    The 'pre' and 'post' attributes in the "csdirectorin" typemap act + creating the temp$csinput variable is such an example; it is + identical to what is in the 'pre' attribute. + +

    22.8.5 Date example + demonstrating the 'pre' and 'post' typemap attributes for directors

    +

    The 'pre' and 'post' attributes in the "csdirectorin" typemap act like the attributes of the same name in the "csin" typemap. For example - if we modify the Date marshalling - example like this:

    -
    -
    + if we modify the Date marshalling
    + example like this:

    +
    +
     class CDate {
       ...
       void setYear(int);
    @@ -25411,13 +25727,13 @@ struct Action {
       virtual ~Action();
       ...
     };
    -
    -
    -

    and declare %feature ("director") for the Action - class, we would have to define additional marshalling rules for -CDate & parameter. The typemap may look like this:

    -
    -
    +
    +
    +

    and declare %feature ("director") for the Action + class, we would have to define additional marshalling rules for +CDate & parameter. The typemap may look like this:

    +
    +
     %typemap(csdirectorin,
              pre="System.DateTime temp$iminput = new System.DateTime();",
              post="CDate temp2$iminput = new CDate($iminput, false);\n"
    @@ -25425,14 +25741,14 @@ CDate & parameter. The typemap may look like this:

    "temp2$iminput.setMonth(tempdate.Month);\n" "temp2$iminput.setDay(tempdate.Day);" ) CDate &date "out temp$iminput" -
    -
    -

    The generated proxy class code will then contain the following - wrapper for calling user-overloaded someCallback():

    -
    -
    +
    +
    +

    The generated proxy class code will then contain the following + wrapper for calling user-overloaded someCallback():

    +
    +
     ...
    -  private void SwigDirectorsomeCallback(global::System.IntPtr date) {
    +  private void SwigDirectorMethodsomeCallback(global::System.IntPtr date) {
         System.DateTime tempdate = new System.DateTime();
         try {
           someCallback(out tempdate);
    @@ -25445,106 +25761,172 @@ CDate & parameter. The typemap may look like this:

    } } ... -
    -
    -

    Pay special attention to the memory management issues, using these - attributes.

    -

    20.8.6 Turning wrapped classes into - partial classes

    -

    C# supports the notion of partial classes whereby a class definition +

    +
    +

    Pay special attention to the memory management issues, using these + attributes.

    +

    22.8.6 Turning proxy classes into + partial classes

    +

    C# supports the notion of partial classes whereby a class definition can be split into more than one file. It is possible to turn the - wrapped C++ class into a partial C# class using the -csclassmodifiers typemap. Consider a C++ class called ExtendMe -:

    -
    -
    + wrapped C++ class into a partial C# class using the 
    +csclassmodifiers typemap. Consider a C++ class called ExtendMe
    +:

    +
    +
     class ExtendMe {
     public:
       int Part1() { return 1; }
     };
    -
    -
    -

    The default C# proxy class generated is:

    -
    -
    +
    +
    +

    The default C# proxy class generated is:

    +
    +
     public class ExtendMe : global::System.IDisposable {
       ...
       public int Part1() {
         ...
       }
     }
    -
    -
    -

    The default csclassmodifiers typemap shipped with SWIG is

    -
    -
    +
    +
    +

    The default csclassmodifiers typemap shipped with SWIG is

    +
    +
     %typemap(csclassmodifiers) SWIGTYPE "public class"
    -
    -
    -

    Note that the type used is the special catch all type SWIGTYPE -. If instead we use the following typemap to override this for just the -ExtendMe class:

    -
    -
    +
    +
    +

    Note that the type used is the special catch all type SWIGTYPE +. If instead we use the following typemap to override this for just the +ExtendMe class:

    +
    +
     %typemap(csclassmodifiers) ExtendMe "public partial class"
    -
    -
    -

    The C# proxy class becomes a partial class:

    -
    -
    +
    +
    +

    The C# proxy class becomes a partial class:

    +
    +
     public partial class ExtendMe : global::System.IDisposable {
       ...
       public int Part1() {
         ...
       }
     }
    -
    -
    -

    You can then of course declare another part of the partial class - elsewhere, for example:

    -
    -
    +
    +
    +

    You can then of course declare another part of the partial class + elsewhere, for example:

    +
    +
     public partial class ExtendMe : global::System.IDisposable {
       public int Part2() {
         return 2;
       }
     }
    -
    -
    -

    and compile the following code:

    -
    -
    +
    +
    +

    and compile the following code:

    +
    +
     ExtendMe em = new ExtendMe();
     Console.WriteLine("part1: {0}", em.Part1());
     Console.WriteLine("part2: {0}", em.Part2());
    -
    -
    -

    demonstrating that the class contains methods calling both unmanaged - code - Part1() and managed code - Part2(). The +

    +
    +

    demonstrating that the class contains methods calling both unmanaged + code - Part1() and managed code - Part2(). The following example is an alternative approach to adding managed code to - the generated proxy class.

    -

    20.8.7 Extending proxy - classes with additional C# code

    -

    The previous example showed how to use partial classes to add + the generated proxy class.

    +

    22.8.7 Turning proxy classes + into sealed classes

    +

    The technique in the previous section can be used to make the proxy + class a sealed class. Consider a C++ class NotABaseClass that + you don't want to be derived from in C#:

    +
    +
    +struct NotABaseClass {
    +  NotABaseClass();
    +  ~NotABaseClass();
    +};
    +
    +
    +

    The default C# proxy class method generated with Dispose method is:

    +
    +
    +public class NotABaseClass : global::System.IDisposable {
    +  ...
    +  public virtual void Dispose() {
    +    ...
    +  }
    +}
    +
    +
    +

    The csclassmodifiers typemap can be used to modify the + class modifiers and the csmethodmodifiers feature can be used + on the destructor to modify the proxy's Dispose method:

    +
    +
    +%typemap(csclassmodifiers) NotABaseClass "public sealed class"
    +%csmethodmodifiers NotABaseClass::~NotABaseClass "public /*virtual*/";
    +
    +
    +

    The relevant generated code is thus:

    +
    +
    +public sealed class NotABaseClass : global::System.IDisposable {
    +  ...
    +  public /*virtual*/ void Dispose() {
    +    ...
    +  }
    +}
    +
    +
    +

    Any attempt to derive from the NotABaseClass in C# will + result in a C# compiler error, for example:

    +
    +
    +public class Derived : NotABaseClass {
    +};
    +
    +
    +
    +runme.cs(6,14): error CS0509: `Derived': cannot derive from sealed type `NotABaseClass'
    +
    +
    +

    Finally, if you get a warning about use of 'protected' in the + generated base class:

    +
    +
    +NotABaseClass.cs(14,18): warning CS0628: `NotABaseClass.swigCMemOwn': new protected member declared in sealed class
    +
    +
    +

    Either suppress the warning or modify the generated code by copying + and tweaking the default 'csbody' typemap code in csharp.swg by + modifying swigCMemOwn to not be protected.

    +

    22.8.8 Extending proxy + classes with additional C# code

    +

    The previous example showed how to use partial classes to add functionality to a generated C# proxy class. It is also possible to - extend a wrapped struct/class with C/C++ code by using the -%extend directive. A third approach is to add some C# methods into - the generated proxy class with the cscode typemap. If we - declare the following typemap before SWIG parses the ExtendMe - class used in the previous example

    -
    -
    + extend a wrapped struct/class with C/C++ code by using the 
    +%extend directive. A third approach is to add some C# methods into
    + the generated proxy class with the cscode typemap. If we
    + declare the following typemap before SWIG parses the ExtendMe
    + class used in the previous example

    +
    +
     %typemap(cscode) ExtendMe %{
       public int Part3() {
         return 3;
       }
     %}
     
    -
    -
    -

    The generated C# proxy class will instead be:

    -
    -
    +
    +
    +

    The generated C# proxy class will instead be:

    +
    +
     public class ExtendMe : global::System.IDisposable {
       ...
       public int Part3() {
    @@ -25554,601 +25936,153 @@ public class ExtendMe : global::System.IDisposable {
         ...
       }
     }
    -
    -
    -

    20.8.8 Underlying type for - enums

    -

    C# enums use int as the underlying type for each enum item. If you - wish to change the underlying type to something else, then use the -csbase typemap. For example when your C++ code uses a value larget +

    +
    +

    22.8.9 Underlying type for + enums

    +

    C# enums use int as the underlying type for each enum item. If you + wish to change the underlying type to something else, then use the +csbase typemap. For example when your C++ code uses a value larger than int, this is necessary as the C# compiler will not compile values - which are too large to fit into an int. Here is an example:

    -
    -
    + which are too large to fit into an int. Here is an example:

    +
    +
     %typemap(csbase) BigNumbers "uint"
     %inline %{
       enum BigNumbers { big=0x80000000, bigger };
     %}
    -
    -
    -

    The generated enum will then use the given underlying type and - compile correctly:

    -
    -
    +
    +
    +

    The generated enum will then use the given underlying type and + compile correctly:

    +
    +
     public enum BigNumbers : uint {
       big = 0x80000000,
       bigger
     }
    -
    -

    -

    21 SWIG and Chicken

    +
    +

    +

    23 SWIG and D

    - + -

    This chapter describes SWIG's support of CHICKEN. CHICKEN is a - Scheme-to-C compiler supporting most of the language features as - defined in the Revised^5 Report on Scheme. Its main attributes - are that it

    -
      -
    1. generates portable C code
    2. -
    3. includes a customizable interpreter
    4. -
    5. links to C libraries with a simple Foreign Function Interface
    6. -
    7. supports full tail-recursion and first-class continuations
    8. -
    -

    When confronted with a large C library, CHICKEN users can use SWIG - to generate CHICKEN wrappers for the C library. However, the real - advantages of using SWIG with CHICKEN are its support for C++ - -- object-oriented code is difficult to wrap by hand in CHICKEN -- and - its typed pointer representation, essential for C and - C++ libraries involving structures or classes.

    -

    21.1 Preliminaries

    -

    CHICKEN support was introduced to SWIG in version 1.3.18. SWIG - relies on some recent additions to CHICKEN, which are only present in - releases of CHICKEN with version number greater than or equal - to 1.89. To use a chicken version between 1.40 and 1.89, see - the Garbage collection section below.

    -

    You may want to look at any of the examples in Examples/chicken/ - directory for the basic steps to run SWIG CHICKEN.

    -

    21.1.1 Running SWIG in C mode

    -

    To run SWIG CHICKEN in C mode, use the -chicken option.

    -
    -
    % swig -chicken example.i
    -
    -

    To allow the wrapper to take advantage of future CHICKEN code - generation improvements, part of the wrapper is direct CHICKEN function - calls (example_wrap.c) and part is CHICKEN Scheme ( -example.scm). The basic Scheme code must be compiled to C using - your system's CHICKEN compiler or both files can be compiled directly - using the much simpler csc.

    -
    -
    -% chicken example.scm -output-file oexample.c
    -
    -
    -

    So for the C mode of SWIG CHICKEN, example_wrap.c and -oexample.c are the files that must be compiled to object files and - linked into your project.

    -

    21.1.2 Running SWIG in C++ mode

    -

    To run SWIG CHICKEN in C++ mode, use the -chicken -c++ option.

    -
    -
    % swig -chicken -c++ example.i
    -
    -

    This will generate example_wrap.cxx and example.scm -. The basic Scheme code must be compiled to C using your system's - CHICKEN compiler or both files can be compiled directly using the much - simpler csc.

    -
    -
    % chicken example.scm -output-file oexample.c
    -
    -

    So for the C++ mode of SWIG CHICKEN, example_wrap.cxx and -oexample.c are the files that must be compiled to object files and - linked into your project.

    -

    21.2 Code Generation

    -

    21.2.1 Naming Conventions

    -

    Given a C variable, function or constant declaration named -Foo_Bar, the declaration will be available in CHICKEN as an - identifier ending with Foo-Bar. That is, an underscore is - converted to a dash.

    -

    You may control what the CHICKEN identifier will be by using the -%rename SWIG directive in the SWIG interface file.

    -

    21.2.2 Modules

    -

    The name of the module must be declared one of two ways:

    -
      -
    • Placing %module example in the SWIG interface file.
    • -
    • Using -module example on the SWIG command line.
    • -
    -

    The generated example.scm file then exports (declare (unit - modulename)). If you do not want SWIG to export the -(declare (unit modulename)), pass the -nounit option to SWIG.

    -

    CHICKEN will be able to access the module using the (declare - (uses modulename)) CHICKEN Scheme form.

    -

    21.2.3 Constants and Variables

    -

    Constants may be created using any of the four constructs in the - interface file:

    -
      -
    1. #define MYCONSTANT1 ...
    2. -
    3. %constant int MYCONSTANT2 = ...
    4. -
    5. const int MYCONSTANT3 = ...
    6. -
    7. enum { MYCONSTANT4 = ... };
    8. -
    -

    In all cases, the constants may be accessed from within CHICKEN - using the form (MYCONSTANT1); that is, the constants may be - accessed using the read-only parameter form.

    -

    Variables are accessed using the full parameter form. For example, - to set the C variable "int my_variable;", use the Scheme form -(my-variable 2345). To get the C variable, use (my-variable) -.

    -

    The %feature("constasvar") can be applied to any constant - or immutable variable. Instead of exporting the constant as a function - that must be called, the constant will appear as a scheme variable. - This causes the generated .scm file to just contain the code (set! - MYCONSTANT1 (MYCONSTANT1)). See -Features and the %feature directive for info on how to apply the - %feature.

    -

    21.2.4 Functions

    -

    C functions declared in the SWIG interface file will have - corresponding CHICKEN Scheme procedures. For example, the C function - "int sqrt(double x);" will be available using the Scheme form (sqrt - 2345.0). A void return value will give - C_SCHEME_UNDEFINED as a result.

    -

    A function may return more than one value by using the OUTPUT - specifier (see Lib/chicken/typemaps.i). They will be returned as - multiple values using (values) if there is more than one - result (that is, a non-void return value and at least one argout - parameter, or a void return value and at least two argout parameters). - The return values can then be accessed with (call-with-values) -.

    -

    21.2.5 Exceptions

    -

    The SWIG chicken module has support for exceptions thrown from C or - C++ code to be caught in scheme. See -Exception handling with %exception for more information about - declaring exceptions in the interface file.

    -

    Chicken supports both the SWIG_exception(int code, const char - *msg) interface as well as a SWIG_ThrowException(C_word - val) function for throwing exceptions from inside the %exception - blocks. SWIG_exception will throw a list consisting of the - code (as an integer) and the message. Both of these will throw an - exception using (abort), which can be handled by -(handle-exceptions). See the Chicken manual on Exceptions and -SFRI-12. Since the exception values are thrown directly, if -(condition-case) is used to catch an exception the exception will - come through in the val () case.

    -

    The following simple module

    -
    -
    -%module exception_test
    -
    -%inline %{
    -  void test_throw(int i) throws (int) { 
    -    if (i == 1) throw 15; 
    -  }
    -%}
    -
    -
    -

    could be run with

    -
    -
    -(handle-exceptions exvar 
    -  (if (= exvar 15)
    -    (print "Correct!") 
    -    (print "Threw something else " exvar))
    -  (test-throw 1))
    -
    -
    -

    21.3 TinyCLOS

    -

    The author of TinyCLOS, Gregor Kiczales, describes TinyCLOS as: - "Tiny CLOS is a Scheme implementation of a 'kernelized' CLOS, with a - metaobject protocol. The implementation is even simpler than the simple - CLOS found in 'The Art of the Metaobject Protocol', weighing in at - around 850 lines of code, including (some) comments and documentation."

    -

    Almost all good Scheme books describe how to use metaobjects and - generic procedures to implement an object-oriented Scheme system. - Please consult a Scheme book if you are unfamiliar with the concept.

    -

    CHICKEN has a modified version of TinyCLOS, which SWIG CHICKEN uses - if the -proxy argument is given. If -proxy is passed, then the - generated example.scm file will contain TinyCLOS class definitions. A - class named Foo is declared as <Foo>, and each member variable is - allocated a slot. Member functions are exported as generic functions.

    -

    Primitive symbols and functions (the interface that would be - presented if -proxy was not passed) are hidden and no longer - accessible. If the -unhideprimitive command line argument is passed to - SWIG, then the primitive symbols will be available, but each will be - prefixed by the string "primitive:"

    -

    The exported symbol names can be controlled with the -closprefix and - -useclassprefix arguments. If -useclassprefix is passed to SWIG, every - member function will be generated with the class name as a prefix. If - the -closprefix mymod: argument is passed to SWIG, then the exported - functions will be prefixed by the string "mymod:". If -useclassprefix - is passed, -closprefix is ignored.

    -

    21.4 Linkage

    -

    Please refer to CHICKEN - A practical and portable Scheme system - - User's manual for detailed help on how to link object files to - create a CHICKEN Scheme program. Briefly, to link object files, be sure - to add `chicken-config -extra-libs -libs` or -`chicken-config -shared -extra-libs -libs`to your linker options. - Use the -shared option if you want to create a dynamically - loadable module. You might also want to use the much simpler csc - or csc.bat.

    -

    Each scheme file that is generated by SWIG contains (declare - (uses modname)). This means that to load the module from - scheme code, the code must include (declare (uses modname -)).

    -

    21.4.1 Static binary or shared library linked - at compile time

    -

    We can easily use csc to build a static binary.

    -
    -
    -$ swig -chicken example.i
    -$ csc -v example.scm example_impl.c example_wrap.c test_script.scm -o example
    -$ ./example
    -
    -
    -

    Similar to the above, any number of module.scm files could - be compiled into a shared library, and then that shared library linked - when compiling the main application.

    -
    -
    -$ swig -chicken example.i
    -$ csc -sv example.scm example_wrap.c example_impl.c -o example.so
    -
    -
    -

    The example.so file can then linked with test_script.scm - when it is compiled, in which case test_script.scm must have -(declare (uses example)). Multiple SWIG modules could have been - linked into example.so and each one accessed with a -(declare (uses ... )).

    -
    -
    -$ csc -v test_script.scm -lexample
    -
    -
    -

    An alternative is that the test_script.scm can have the code -(load-library 'example "example.so"), in which case the test - script does not need to be linked with example.so. The test_script.scm - file can then be run with csi.

    -

    21.4.2 Building chicken extension libraries -

    -

    Building a shared library like in the above section only works if the - library is linked at compile time with a script containing -(declare (uses ...)) or is loaded explicitly with -(load-library 'example "example.so"). It is not the format that - CHICKEN expects for extension libraries and eggs. The problem is the -(declare (unit modname)) inside the modname.scm - file. There are two possible solutions to this.

    -

    First, SWIG accepts a -nounit argument, in which case the -(declare (unit modname)) is not generated. Then, the -modname.scm and modname_wrap.c files must be - compiled into their own shared library.

    -
    -
    -$ csc -sv modname.scm modname_wrap.c modname_impl.c -o modname.so
    -
    -
    -

    This library can then be loaded by scheme code with the -(require 'modname) function. See the Loading-extension-libraries - in the eval unit inside the CHICKEN manual for more information.

    -

    Another alternative is to run SWIG normally and create a scheme file - that contains (declare (uses modname)) and then - compile that file into the shared library as well. For example, inside - the mod_load.scm file,

    -
    -
    -(declare (uses mod1))
    -(declare (uses mod2))
    -
    -
    -

    Which would then be compiled with

    -
    -
    -$ swig -chicken mod1.i
    -$ swig -chicken mod2.i
    -$ csc -sv mod_load.scm mod1.scm mod2.scm mod1_wrap.c mod2_wrap.c mod1_impl.c mod2_impl.c -o mod.so
    -
    -
    -

    Then the extension library can be loaded with (require 'mod) -. As we can see here, mod_load.scm contains the code that gets - executed when the module is loaded. All this code does is load both - mod1 and mod2. As we can see, this technique is more useful when you - want to combine a few SWIG modules into one chicken extension library, - especially if modules are related by %import

    -

    In either method, the files that are compiled into the shared library - could also be packaged into an egg. The mod1_wrap.c and -mod2_wrap.c files that are created by SWIG are stand alone and do - not need SWIG to be installed to be compiled. Thus the egg could be - distributed and used by anyone, even if SWIG is not installed.

    -

    See the Examples/chicken/egg directory in the SWIG source - for an example that builds two eggs, one using the first method and one - using the second method.

    -

    21.4.3 Linking multiple SWIG modules with - TinyCLOS

    -

    Linking together multiple modules that share type information using - the %import directive while also using -proxy is - more complicated. For example, if mod2.i imports mod1.i -, then the mod2.scm file contains references to symbols - declared in mod1.scm, and thus a (declare (uses mod1 -)) or (require 'mod1) must be exported to the - top of mod2.scm. By default, when SWIG encounters an -%import "modname.i" directive, it exports (declare (uses - modname)) into the scm file. This works fine unless mod1 was - compiled with the -nounit argument or was compiled into an - extension library with other modules under a different name.

    -

    One option is to override the automatic generation of (declare - (uses mod1)) by passing the -noclosuses option to SWIG - when compiling mod2.i. SWIG then provides the -%insert(closprefix) %{ %} directive. Any scheme code inside that - directive is inserted into the generated .scm file, and if mod1 - was compiled with -nounit, the directive should contain -(require 'mod1). This option allows for mixed loading as well, - where some modules are imported with (declare (uses modname -)) (which means they were compiled without -nounit) and some are - imported with (require 'modname).

    -

    The other option is to use the second idea in the above section. - Compile all the modules normally, without any %insert(closprefix) -, -nounit, or -noclosuses. Then the modules will - import each other correctly with (declare (uses ...)). To - create an extension library or an egg, just create a -module_load.scm file that (declare (uses ...)) all the - modules.

    -

    21.5 Typemaps

    -

    The Chicken module handles all types via typemaps. This information - is read from Lib/chicken/typemaps.i and -Lib/chicken/chicken.swg.

    -

    21.6 Pointers

    -

    For pointer types, SWIG uses CHICKEN tagged pointers. A tagged - pointer is an ordinary CHICKEN pointer with an extra slot for a void *. - With SWIG CHICKEN, this void * is a pointer to a type-info structure. - So each pointer used as input or output from the SWIG-generated CHICKEN - wrappers will have type information attached to it. This will let the - wrappers correctly determine which method should be called according to - the object type hierarchy exposed in the SWIG interface files.

    -

    To construct a Scheme object from a C pointer, the wrapper code - calls the function SWIG_NewPointerObj(void *ptr, swig_type_info - *type, int owner), The function that calls -SWIG_NewPointerObj must have a variable declared C_word - *known_space = C_alloc(C_SIZEOF_SWIG_POINTER); It is ok to call -SWIG_NewPointerObj more than once, just make sure known_space has - enough space for all the created pointers.

    -

    To get the pointer represented by a CHICKEN tagged pointer, the - wrapper code calls the function SWIG_ConvertPtr(C_word s, void - **result, swig_type_info *type, int flags), passing a pointer to - a struct representing the expected pointer type. flags is either zero - or SWIG_POINTER_DISOWN (see below).

    -

    21.6.1 Garbage collection

    -

    If the owner flag passed to SWIG_NewPointerObj is 1, -NewPointerObj will add a finalizer to the type which will call - the destructor or delete method of that type. The destructor and delete - functions are no longer exported for use in scheme code, instead SWIG - and chicken manage pointers. In situations where SWIG knows that a - function is returning a type that should be garbage collected, SWIG - will automatically set the owner flag to 1. For other functions, the -%newobject directive must be specified for functions whose return - values should be garbage collected. See -Object ownership and %newobject for more information.

    -

    In situations where a C or C++ function will assume ownership of a - pointer, and thus chicken should no longer garbage collect it, SWIG - provides the DISOWN input typemap. After applying this - typemap (see the Typemaps chapter for more - information on how to apply typemaps), any pointer that gets passed in - will no longer be garbage collected. An object is disowned by passing - the SWIG_POINTER_DISOWN flag to SWIG_ConvertPtr -. Warning: Since the lifetime of the object is now controlled by - the underlying code, the object might get deleted while the scheme code - still holds a pointer to it. Further use of this pointer can lead to a - crash.

    -

    Adding a finalizer function from C code was added to chicken in the - 1.89 release, so garbage collection does not work for chicken versions - below 1.89. If you would like the SWIG generated code to work with - chicken 1.40 to 1.89, pass the -nocollection argument to - SWIG. This will not export code inside the _wrap.c file to register - finalizers, and will then export destructor functions which must be - called manually.

    -

    21.7 Unsupported features and known problems -

    -
      -
    • No director support.
    • -
    • No support for c++ standard types like std::vector.
    • -
    • The TinyCLOS wrappers for overloaded functions will not work - correctly when using -%feature(compactdefaultargs).
    • -
    -

    21.7.1 TinyCLOS problems with Chicken version - <= 1.92

    -

    In Chicken versions equal to or below 1.92, TinyCLOS has a limitation - such that generic methods do not properly work on methods with - different number of specializers: TinyCLOS assumes that every method - added to a generic function will have the same number of specializers. - SWIG generates functions with different lengths of specializers when - C/C++ functions are overloaded. For example, the code

    -
    -
    -class Foo {};
    -int foo(int a, Foo *b);
    -int foo(int a);
    -
    -
    -

    will produce scheme code

    -
    -
    -(define-method (foo (arg0 <top>) (arg1 <Foo>)) (call primitive function))
    -(define-method (foo (arg0 <top>)) (call primitive function))
    -
    -
    -

    Using unpatched TinyCLOS, the second (define-method) - will replace the first one, so calling (foo 3 f) will - produce an error.

    -

    There are three solutions to this. The easist is to upgrade to the - latest Chicken version. Otherwise, the file -Lib/chicken/tinyclos-multi-generic.patch in the SWIG source - contains a patch against tinyclos.scm inside the 1.92 chicken source to - add support into TinyCLOS for multi-argument generics. (This patch was - accepted into Chicken) This requires chicken to be rebuilt and custom - install of chicken. An alternative is the -Lib/chicken/multi-generic.scm file in the SWIG source. This file - can be loaded after TinyCLOS is loaded, and it will override some - functions inside TinyCLOS to correctly support multi-argument generics. - Please see the comments at the top of both files for more information.

    -
    -

    22 SWIG and D

    - - - - -

    22.1 Introduction

    -

    From the D Programming - Language web site: D is a systems programming language. Its +

    23.1 Introduction

    +

    From the D Programming + Language web site: D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. [...] The D language is statically typed and compiles directly to - machine code. As such, it is not very surprising that D is able to - directly -interface with C libraries. Why would a SWIG module for D be needed - then in the first place?

    -

    Well, besides the obvious downside that the C header files have to be + machine code. As such, it is not very surprising that D is able to + directly +interface with C libraries. Why would a SWIG module for D be needed + then in the first place?

    +

    Well, besides the obvious downside that the C header files have to be manually converted to D modules for this to work, there is one major inconvenience with this approach: D code usually is on a higher abstraction level than C, and many of the features that make D interesting are simply not available when dealing with C libraries, - requiring you e.g. to manually convert strings between pointers to -\0-terminated char arrays and D char arrays, making the algorithms + requiring you e.g. to manually convert strings between pointers to +\0-terminated char arrays and D char arrays, making the algorithms from the D2 standard library unusable with C arrays and data - structures, and so on.

    -

    While these issues can be worked around relatively easy by + structures, and so on.

    +

    While these issues can be worked around relatively easy by hand-coding a thin wrapper layer around the C library in question, there is another issue where writing wrapper code per hand is not feasible: C++ libraries. D did not support interfacing to C++ in - version 1 at all, and even if extern(C++) has been added to + version 1 at all, and even if extern(C++) has been added to D2, the support is still very limited, and a custom wrapper layer is - still required in many cases.

    -

    To help addressing these issues, the SWIG C# module has been forked + still required in many cases.

    +

    To help addressing these issues, the SWIG C# module has been forked to support D. Is has evolved quite a lot since then, but there are still many similarities, so if you do not find what you are looking for - on this page, it might be worth having a look at the chapter on -C# (and also on Java, since the C# module was in - turn forked from it).

    -

    22.2 Command line invocation

    -

    To activate the D module, pass the -d option to SWIG at the - command line. The same standard command line switches as with any other - language module are available, plus the following D specific ones:

    -
    -
    -d2
    -
    -

    By default, SWIG generates code for D1/Tango. Use the -d2 - flag to target D2/Phobos instead.

    -
    -
    -splitproxy
    -
    -

    By default, SWIG generates two D modules: the proxy module, - named like the source module (either specified via the %module - directive or via the module command line switch), which - contains all the proxy classes, functions, enums, etc., and the - intermediary module (named like the proxy module, but suffixed - with _im), which contains all the extern(C) function + on this page, it might be worth having a look at the chapter on +C# (and also on Java, since the C# module was in + turn forked from it).

    +

    23.2 Command line invocation

    +

    To activate the D module, pass the -d option to SWIG at the + command line. The same standard command line options as with any other + language module are available, plus the following D specific ones:

    +
    +
    -d2
    +
    +

    By default, SWIG generates code for D1/Tango. Use the -d2 + flag to target D2/Phobos instead.

    +
    +
    -splitproxy
    +
    +

    By default, SWIG generates two D modules: the proxy module, + named like the source module (either specified via the %module + directive or via the module command line option), which + contains all the proxy classes, functions, enums, etc., and the + intermediary module (named like the proxy module, but suffixed + with _im), which contains all the extern(C) function declarations and other private parts only used internally by the proxy - module.

    -

    If the split proxy mode is enabled by passing this switch at the + module.

    +

    If the split proxy mode is enabled by passing this option at the command line, all proxy classes and enums are emitted to their own D module instead. The main proxy module only contains free functions and - constants in this case.

    -
    -
    -package <pkg>
    -
    -

    By default, the proxy D modules and the intermediary D module are + constants in this case.

    +
    +
    -package <pkg>
    +
    +

    By default, the proxy D modules and the intermediary D module are written to the root package. Using this option, you can specify another - target package instead.

    -
    -
    -wrapperlibrary <wl>
    -
    -

    The code SWIG generates to dynamically load the C/C++ wrapper layer - looks for a library called $module_wrap by default. With this - switch, you can override the name of the file the wrapper code loads at - runtime (the lib prefix and the suffix for shared libraries - are appended automatically, depending on the OS).

    -

    This might especially be useful if you want to invoke SWIG several + target package instead.

    +
    +
    -wrapperlibrary <wl>
    +
    +

    The code SWIG generates to dynamically load the C/C++ wrapper layer + looks for a library called $module_wrap by default. With this + option, you can override the name of the file the wrapper code loads at + runtime (the lib prefix and the suffix for shared libraries + are appended automatically, depending on the OS).

    +

    This might especially be useful if you want to invoke SWIG several times on separate modules, but compile the resulting code into a single - shared library.

    -
    -
    -

    22.3 Typemaps

    -

    22.3.1 C# <-> D name comparison -

    -

    If you already know the SWIG C# module, you might find the following - name comparison table useful:

    -
    -
    + shared library.

    +
    +
    +

    23.3 Typemaps

    +

    23.3.1 C# <-> D name comparison +

    +

    If you already know the SWIG C# module, you might find the following + name comparison table useful:

    +
    +
      ctype                  <->  ctype
      imtype                 <->  imtype
      cstype                 <->  dtype
    @@ -26164,61 +26098,61 @@ C# (and also on Java, since the C# module was in
      csimports              <->  dimports
      csbody                 <->  dbody
      csfinalize             <->  ddestructor
    - csdestruct             <->  ddispose
    - csdestruct_derived     <->  ddispose_derived
    -
    -
    -

    22.3.2 ctype, imtype, dtype

    -

    Mapping of types between the C/C++ library, the C/C++ library wrapper + csdisposing <-> ddispose + csdisposing_derived <-> ddispose_derived + + +

    23.3.2 ctype, imtype, dtype

    +

    Mapping of types between the C/C++ library, the C/C++ library wrapper exposing the C functions, the D wrapper module importing these - functions and the D proxy code.

    -

    The ctype typemap is used to determine the types to use in - the C wrapper functions. The types from the imtype typemap are + functions and the D proxy code.

    +

    The ctype typemap is used to determine the types to use in + the C wrapper functions. The types from the imtype typemap are used in the extern(C) declarations of these functions in the - intermediary D module. The dtype typemap contains the D types - used in the D proxy module/class.

    -

    22.3.3 in, out, - directorin, directorout

    -

    Used for converting between the types for C/C++ and D when generating - the code for the wrapper functions (on the C++ side).

    -

    The code from the in typemap is used to convert arguments to - the C wrapper function to the type used in the wrapped code (ctype -->original C++ type), the out typemap is utilized to convert + intermediary D module. The dtype typemap contains the D types + used in the D proxy module/class.

    +

    23.3.3 in, out, + directorin, directorout

    +

    Used for converting between the types for C/C++ and D when generating + the code for the wrapper functions (on the C++ side).

    +

    The code from the in typemap is used to convert arguments to + the C wrapper function to the type used in the wrapped code (ctype +->original C++ type), the out typemap is utilized to convert values from the wrapped code to wrapper function return types (original - C++ type->ctype).

    -

    The directorin typemap is used to convert parameters to the + C++ type->ctype).

    +

    The directorin typemap is used to convert parameters to the type used in the D director callback function, its return value is - processed by directorout (see below).

    -

    22.3.4 din, dout, - ddirectorin, ddirectorout

    -

    Typemaps for code generation in D proxy and type wrapper classes.

    -

    The din typemap is used for converting + processed by directorout (see below).

    +

    23.3.4 din, dout, + ddirectorin, ddirectorout

    +

    Typemaps for code generation in D proxy and type wrapper classes.

    +

    The din typemap is used for converting function parameter types from the type used in the proxy module or - class to the type used in the intermediary D module (the -$dinput macro is replaced). To inject further parameter processing - code before or after the call to the intermediary layer, the pre -, post and terminator attributes can be used (please - refer to the C# date marshalling - example for more information on these).

    -

    The dout typemap is used for converting + class to the type used in the intermediary D module (the +$dinput macro is replaced). To inject further parameter processing + code before or after the call to the intermediary layer, the pre +, post and terminator attributes can be used (please + refer to the C# date marshalling + example for more information on these).

    +

    The dout typemap is used for converting function return values from the return type used in the intermediary D - module to the type returned by the proxy function. The $excode - special variable in dout typemaps is replaced by the -excode typemap attribute code if the method can throw any - exceptions from unmanaged code, otherwise by nothing (the -$imcall and $owner macros are replaced).

    -

    The code from the ddirectorin - and ddirectorout typemaps is used for conversion in director + module to the type returned by the proxy function. The $excode + special variable in dout typemaps is replaced by the +excode typemap attribute code if the method can throw any + exceptions from unmanaged code, otherwise by nothing (the +$imcall and $owner macros are replaced).

    +

    The code from the ddirectorin + and ddirectorout typemaps is used for conversion in director callback functions. Arguments are converted to the type used in the - proxy class method they are calling by using the code from -ddirectorin, the proxy class method return value is converted to - the type the C++ code expects via the ddirectorout typemap - (the $dcall and $winput - macros are replaced).

    -

    The full chain of type conversions when a director callback is - invoked looks like this:

    -
    -
    + proxy class method they are calling by using the code from 
    +ddirectorin, the proxy class method return value is converted to
    + the type the C++ code expects via the ddirectorout typemap
    + (the $dcall and $winput
    + macros are replaced).

    +

    The full chain of type conversions when a director callback is + invoked looks like this:

    +
    +
           type              CPPClass::method(type a)
             ↑                       ↓
        <directorout>          <directorin>
    @@ -26229,105 +26163,105 @@ ddirectorin, the proxy class method return value is converted to
             ↑                       ↓
       <ddirectorout>          <ddirectorin>
             ↑                       ↓
    -      dtype             DClass.method(dtype a)
    -
    -

    22.3.5 typecheck typemaps

    -

    Because, unlike many scripting languages supported by SWIG, D does + dtype DClass.method(dtype a)

    +
    +

    23.3.5 typecheck typemaps

    +

    Because, unlike many scripting languages supported by SWIG, D does not need any dynamic dispatch helper to access an overloaded function, the purpose of these is merely to issue a warning for overloaded C++ functions that cannot be overloaded in D (as more than one C++ type - maps to a single D type).

    -

    22.3.6 Code injection typemaps -

    -

    These typemaps are used for generating the skeleton of proxy classes - for C++ types.

    -

    By overriding dbase, dinterfaces or -dinterfaces_derived, the inheritance chain of the generated proxy - class for a type can be modified. dclassmodifiers allows you - to add any custom modifiers around the class keyword.

    -

    Using dcode and dimports, you can specify + maps to a single D type).

    +

    23.3.6 Code injection typemaps +

    +

    These typemaps are used for generating the skeleton of proxy classes + for C++ types.

    +

    By overriding dbase, dinterfaces or +dinterfaces_derived, the inheritance chain of the generated proxy + class for a type can be modified. dclassmodifiers allows you + to add any custom modifiers around the class keyword.

    +

    Using dcode and dimports, you can specify additional D code which will be emitted into the class body respectively the imports section of the D module the class is written - to.

    -

    dconstructor, -ddestructor, ddispose and ddispose_derived are - used to generate the class constructor, destructor and dispose() + to.

    +

    dconstructor, +ddestructor, ddispose and ddispose_derived are + used to generate the class constructor, destructor and dispose() method, respectively. The auxiliary code for handling the pointer to - the C++ object is stored in dbody and dbody_derived. - You can override them for specific types.

    -

    Code can also be injected into the D proxy class using -%proxycode.

    -

    22.3.7 Special variable macros

    -

    The standard SWIG special variables are available for use within - typemaps as described in the Typemaps documentation -, for example $1, $input, $result etc.

    -

    When generating D wrappers, a few additional macros are available:

    -
    -
    $dclassname (C#: $csclassname)
    -
    -

    This special variable works similar to -$n_type in that it returns the name of a type - it expands + the C++ object is stored in dbody and dbody_derived. + You can override them for specific types.

    +

    Code can also be injected into the D proxy class using +%proxycode.

    +

    23.3.7 Special variable macros

    +

    The standard SWIG special variables are available for use within + typemaps as described in the Typemaps documentation +, for example $1, $input, $result etc.

    +

    When generating D wrappers, a few additional macros are available:

    +
    +
    $dclassname (C#: $csclassname)
    +
    +

    This special variable works similar to +$n_type in that it returns the name of a type - it expands to the D proxy class name of the type being wrapped. If the type does not have an associated proxy class, it expands to the type wrapper - class name, for example, SWIGTYPE_p_p_SomeCppClass is - generated when wrapping SomeCppClass **.

    -

    There are two other variants available, $&dclassname and -$*dclassname. The former adds a level of indirection, while the - latter removes one. For instance, when wrapping Foo **, -$*dclassname would be replaced by the proxy class name - corresponding to Foo *.

    -
    -
    $dclazzname (C#: $csclazzname)
    -
    -

    This special variable expands the fully qualified C++ class into the - package name, if used by the nspace - feature, and the proxy class name, mangled for use as a function - name. For example, Namespace1::Namespace2::Klass is expanded - into Namespace1_Namespace2_Klass_.

    -

    This special variable might be useful for calling certain functions + class name, for example, SWIGTYPE_p_p_SomeCppClass is + generated when wrapping SomeCppClass **.

    +

    There are two other variants available, $&dclassname and +$*dclassname. The former adds a level of indirection, while the + latter removes one. For instance, when wrapping Foo **, +$*dclassname would be replaced by the proxy class name + corresponding to Foo *.

    +
    +
    $dclazzname (C#: $csclazzname)
    +
    +

    This special variable expands the fully qualified C++ class into the + package name, if used by the nspace + feature, and the proxy class name, mangled for use as a function + name. For example, Namespace1::Namespace2::Klass is expanded + into Namespace1_Namespace2_Klass_.

    +

    This special variable might be useful for calling certain functions in the wrapper layer (e.g. upcast wrappers) which are mangled like - this.

    -
    -
    $null
    -
    -

    In code inserted into the generated C/C++ wrapper functions, this - variable is replaced by either 0 or nothing at all, depending + this.

    +
    +
    $null
    +
    +

    In code inserted into the generated C/C++ wrapper functions, this + variable is replaced by either 0 or nothing at all, depending on whether the function has a return value or not. It can be used to - bail out early e.g. in case of errors (return $null;).

    -
    -
    $dinput (C#: $csinput)
    -
    -

    This variable is used in din typemaps - and is replaced by the expression which is to be passed to C/C++.

    -

    For example, this input

    -
    -
    + bail out early e.g. in case of errors (return $null;).

    +
    +
    $dinput (C#: $csinput)
    +
    +

    This variable is used in din typemaps + and is replaced by the expression which is to be passed to C/C++.

    +

    For example, this input

    +
    +
     %typemap(din) SomeClass * "SomeClass.getCPointer($dinput)"
     
     %inline %{
       class SomeClass {};
       void foo(SomeClass *arg);
    -%}
    -
    -

    leads to the following D proxy code being generated:

    -
    -
    +%}
    +
    +

    leads to the following D proxy code being generated:

    +
    +
     void foo(SomeClass arg) {
       example_im.foo(SomeClass.getCPointer(arg));
    -}
    -
    -
    $imcall and $owner (C#: -$imcall)
    -
    -

    These variables are used in dout - typemaps. $imcall contains the call to the intermediary module - which provides the value to be used, and $owner signals if the +} +

    +
    $imcall and $owner (C#: +$imcall)
    +
    +

    These variables are used in dout + typemaps. $imcall contains the call to the intermediary module + which provides the value to be used, and $owner signals if the caller is responsible for managing the object lifetime (that is, if the - called method is a constructor or has been marked via %newobject -).

    -

    Consider the following example:

    -
    -
    + called method is a constructor or has been marked via %newobject
    +).

    +

    Consider the following example:

    +
    +
     %typemap(dout) SomeClass * {
       return new SomeClass($imcall, $owner);
     }
    @@ -26339,12 +26273,12 @@ $imcall)
       %newobject bar();
       SomeClass *bar();
     %}
    -
    -
    -

    The code generated for foo() and bar() looks like - this:

    -
    -
    +
    +
    +

    The code generated for foo() and bar() looks like + this:

    +
    +
     SomeClass foo() {
       return new SomeClass(example_im.foo(), false);
     }
    @@ -26352,119 +26286,119 @@ SomeClass foo() {
     SomeClass bar() {
       return new SomeClass(example_im.bar(), true);
     }
    -
    -
    -
    $dcall and $winput (C#: $cscall, -$iminput)
    -
    -

    These variables are used in the director-specific typemaps -ddirectorin and -ddirectorout. They are more or less the reverse of the -$imcall and $dinput macros: $dcall contains the + +

    +
    $dcall and $winput (C#: $cscall, +$iminput)
    +
    +

    These variables are used in the director-specific typemaps +ddirectorin and +ddirectorout. They are more or less the reverse of the +$imcall and $dinput macros: $dcall contains the invocation of the D proxy method of which the return value is to be - passed back to C++, $winput contains the parameter value from - C++.

    -
    -
    $excode
    -
    -

    This variable is used in dout and dconstructor - typemaps and is filled with the contents of the excode typemap - attribute if an exception could be thrown from the C++ side. See the -C# documentation for details.

    -
    -
    $dbaseclass
    -
    -

    Currently for internal use only, it contains the D name of the C++ - base class (if any) inside proxy classes.

    -
    -
    $directorconnect
    -
    -

    This macro is only valid inside the -dconstructor typemap and contains the value of the -dconstructor typemap attribute if the currently wrapped class has - directors enabled.

    -

    This is how the default dconstructor typemap looks like (you - usually do not want to specify a custom one):

    -
    -
    + passed back to C++, $winput contains the parameter value from
    + C++.

    +
    +
    $excode
    +
    +

    This variable is used in dout and dconstructor + typemaps and is filled with the contents of the excode typemap + attribute if an exception could be thrown from the C++ side. See the +C# documentation for details.

    +
    +
    $dbaseclass
    +
    +

    Currently for internal use only, it contains the D name of the C++ + base class (if any) inside proxy classes.

    +
    +
    $directorconnect
    +
    +

    This macro is only valid inside the +dconstructor typemap and contains the value of the +dconstructor typemap attribute if the currently wrapped class has + directors enabled.

    +

    This is how the default dconstructor typemap looks like (you + usually do not want to specify a custom one):

    +
    +
     %typemap(dconstructor, excode=SWIGEXCODE,
              directorconnect="\n  swigDirectorConnect();") SWIGTYPE {
       this($imcall, true);$excode$directorconnect
     }
    -
    -
    -
    $importtype(SomeDType)
    -
    -

    This macro is used in the dimports typemap if a dependency - on another D type generated by SWIG is added by a custom typemap.

    -

    Consider the following code snippet:

    -
    -
    +
    +
    +
    $importtype(SomeDType)
    +
    +

    This macro is used in the dimports typemap if a dependency + on another D type generated by SWIG is added by a custom typemap.

    +

    Consider the following code snippet:

    +
    +
     %typemap(dinterfaces) SomeClass "AnInterface, AnotherInterface";
    -
    -
    -

    This causes SWIG to add AnInterface and AnotherInterface - to the base class list of SomeClass:

    -
    -
    +
    +
    +

    This causes SWIG to add AnInterface and AnotherInterface + to the base class list of SomeClass:

    +
    +
     class SomeClass : AnInterface, AnotherInterface {
       ...
     }
    -
    -
    -

    For this to work, AnInterface and AnotherInterface + + +

    For this to work, AnInterface and AnotherInterface have to be in scope. If SWIG is not in split proxy mode, this is - already the case, but it it is, they have to be added to the import - list via the dimports typemap. Additionally, the import + already the case, but if it is, they have to be added to the import + list via the dimports typemap. Additionally, the import statement depends on the package SWIG is configured to emit the modules - to.

    -

    The $importtype macro helps you to elegantly solve this - problem:

    -
    -
    + to.

    +

    The $importtype macro helps you to elegantly solve this + problem:

    +
    +
     %typemap(dimports) RemoteMpe %{
     $importtype(AnInterface)
     $importtype(AnotherInterface)
     %}
    -
    -
    -

    If SWIG is in split proxy mode, it expands to an import - statement for the specified type, to nothing if not.

    -
    -
    $module
    -
    -

    Expands to the name of the main proxy D module.

    -
    -
    $imdmodule
    -
    -

    Contains the fully qualified name of the intermediary D module.

    -
    -
    -

    22.4 D and %feature

    -

    The D module defines a number of directives which modify the -SWIG features set globally or for a specific declaration:

    -
    -
    %dmanifestconst and %dconstvalue(value)
    -
    -

    Out of the box, SWIG generates accessor methods for C #defines - and C++ constants. The %dmanifestconst directive enables - wrapping these constants as D manifest constants (const in D1, - enum in D2).

    -

    For this to work, the C/C++ code for the constant value must directly + + +

    If SWIG is in split proxy mode, it expands to an import + statement for the specified type, to nothing if not.

    +
    +
    $module
    +
    +

    Expands to the name of the main proxy D module.

    +
    +
    $imdmodule
    +
    +

    Contains the fully qualified name of the intermediary D module.

    +
    +
    +

    23.4 D and %feature

    +

    The D module defines a number of directives which modify the +SWIG features set globally or for a specific declaration:

    +
    +
    %dmanifestconst and %dconstvalue(value)
    +
    +

    Out of the box, SWIG generates accessor methods for C #defines + and C++ constants. The %dmanifestconst directive enables + wrapping these constants as D manifest constants (const in D1, + enum in D2).

    +

    For this to work, the C/C++ code for the constant value must directly compile as D code, though. If this is not the case, you can manually - override the expression written to the D proxy module using the -%dconstvalue directive, passing the new value as parameter.

    -

    For enums, again %dconstvalue can be used to + override the expression written to the D proxy module using the +%dconstvalue directive, passing the new value as parameter.

    +

    For enums, again %dconstvalue can be used to override the value of an enum item if the initializer should not - compile in D.

    -
    -
    %dmethodmodifiers
    -
    -

    This directive can be used to override the modifiers for a proxy - function. For instance, you could make a public C++ member - function private in D like this:

    -
    -
    + compile in D.

    +
    +
    %dmethodmodifiers
    +
    +

    This directive can be used to override the modifiers for a proxy + function. For instance, you could make a public C++ member + function private in D like this:

    +
    +
     %dmethodmodifiers A::foo "private";
     
     %inline %{
    @@ -26472,309 +26406,308 @@ struct A {
       void foo();
     };
     %}
    -
    -
    -
    -

    22.5 Pragmas

    -

    There are a few SWIG pragmas specific to the D module, which you can - use to influence the D code SWIG generates:

    -
    -
    %pragma(d) imdmodulecode
    -
    -

    The passed text (D code) is copied verbatim to the intermediary D + +

    +
    +

    23.5 Pragmas

    +

    There are a few SWIG pragmas specific to the D module, which you can + use to influence the D code SWIG generates:

    +
    +
    %pragma(d) imdmodulecode
    +
    +

    The passed text (D code) is copied verbatim to the intermediary D module. For example, it can be (and is, internally) used to emit - additional private helper code for the use by proxy typemaps.

    -
    -
    %pragma(d) imdmoduleimports
    -
    -

    Additional code to be emitted to the imports section of the - intermediary D module (the $importtype + additional private helper code for the use by proxy typemaps.

    +
    +
    %pragma(d) imdmoduleimports
    +
    +

    Additional code to be emitted to the imports section of the + intermediary D module (the $importtype macro can be used here). You probably want to use this in conjunction - with the imdmodulecode pragma.

    -
    -
    %pragma(d) proxydmodulecode
    -
    -

    Just like proxydmodulecode, the argument is copied to the - proxy D module (if SWIG is in split proxy mode - and/or the nspace feature is used, it is emitted to the main - proxy D module only).

    -
    -
    %pragma(d) globalproxyimports
    -
    -

    The D module currently does not support specifying dependencies on + with the imdmodulecode pragma.

    +
    +
    %pragma(d) proxydmodulecode
    +
    +

    Just like proxydmodulecode, the argument is copied to the + proxy D module (if SWIG is in split proxy mode + and/or the nspace feature is used, it is emitted to the main + proxy D module only).

    +
    +
    %pragma(d) globalproxyimports
    +
    +

    The D module currently does not support specifying dependencies on external modules (e.g. from the standard library) for the D typemaps. - To add the import statements to the proxy modules (resp. to all - proxy modules if in split proxy mode), you can use the -globalproxyimports directive.

    -

    For example:

    -
    -
    + To add the import statements to the proxy modules (resp. to all
    + proxy modules if in split proxy mode), you can use the 
    +globalproxyimports directive.

    +

    For example:

    +
    +
     %typemap(din) char[] "($dinput ? tango.stdc.stringz.toStringz($dinput) : null)"
     %pragma(d) globalproxyimports = "static import tango.stdc.stringz;";
    -
    -
    -
    %pragma(d) wrapperloadercode
    -
    -

    The D code for loading the wrapper library (it is copied to the - intermediary D module). The $wrapperloaderbindcode variable is + +

    +
    %pragma(d) wrapperloadercode
    +
    +

    The D code for loading the wrapper library (it is copied to the + intermediary D module). The $wrapperloaderbindcode variable is replaced by the list of commands for binding the functions from the - wrapper library to the symbols in the intermediary D module.

    -

    Each time this pragma is specified, the previous value is - overwritten.

    -
    -
    %pragma(d) wrapperloaderbindcommand
    -
    -

    The D command to use for binding the wrapper functions from the C/C++ - library to the symbols in the intermediary D module. The $function - variable contains the name of the D function in the wrap module, the -$symbol variable is replaced by the name of the symbol in the - library.

    -

    Each time this pragma is specified, the previous value is - overwritten.

    -
    -
    -

    22.6 D Exceptions

    -

    Out of the box, C++ exceptions are fundamentally incompatible to + wrapper library to the symbols in the intermediary D module.

    +

    Each time this pragma is specified, the previous value is + overwritten.

    +
    +
    %pragma(d) wrapperloaderbindcommand
    +
    +

    The D command to use for binding the wrapper functions from the C/C++ + library to the symbols in the intermediary D module. The $function + variable contains the name of the D function in the wrap module, the +$symbol variable is replaced by the name of the symbol in the + library.

    +

    Each time this pragma is specified, the previous value is + overwritten.

    +
    +
    +

    23.6 D Exceptions

    +

    Out of the box, C++ exceptions are fundamentally incompatible to their equivalent in the D world and cannot simply be propagated to a calling D method. There is, however, an easy way to solve this problem: Just catch the exception in the C/C++ wrapper layer, pass the contents - to D, and make the wrapper code rethrow the exception in the D world.

    -

    The implementation details of this are a bit crude, but the SWIG D + to D, and make the wrapper code rethrow the exception in the D world.

    +

    The implementation details of this are a bit crude, but the SWIG D module automatically takes care of this, as long as it is able to detect that an exception could potentially be thrown (e.g. because the - C++ method has a throw(...) exception specification).

    -

    As this feature is implemented in exactly the same way it is for C#, - please see the C# documentation for a - more detailed explanation.

    -

    22.7 D Directors

    -

    When the directors feature is activated, SWIG generates extra code on + C++ method has a throw(...) exception specification).

    +

    As this feature is implemented in exactly the same way it is for C#, + please see the C# documentation for a + more detailed explanation.

    +

    23.7 D Directors

    +

    When the directors feature is activated, SWIG generates extra code on both the C++ and the D side to enable cross-language polymorphism. Essentially, this means that if you subclass a proxy class in D, C++ code can access any overridden virtual methods just as if you created a - derived class in C++.

    -

    There is no D specific documentation yet, but the way the feature is - implemented is very similar to how it is done in -Java and C#.

    -

    22.8 Other features

    -

    22.8.1 Extended namespace support (nspace)

    -

    By default, SWIG flattens all C++ namespaces into a single target - language namespace, but as for Java and C#, the -nspace feature is supported for D. If it is active, C++ + derived class in C++.

    +

    There is no D specific documentation yet, but the way the feature is + implemented is very similar to how it is done in +Java and C#.

    +

    23.8 Other features

    +

    23.8.1 Extended namespace support (nspace)

    +

    By default, SWIG flattens all C++ namespaces into a single target + language namespace, but as for Java and C#, the +nspace feature is supported for D. If it is active, C++ namespaces are mapped to D packages/modules. Note, however, that like - for the other languages, free variables and functions are not + for the other languages, free variables and functions are not supported yet; currently, they are all allows written to the main proxy - D module.

    -

    22.8.2 Native pointer support

    -

    Contrary to many of the scripting languages supported by SWIG, D + D module.

    +

    23.8.2 Native pointer support

    +

    Contrary to many of the scripting languages supported by SWIG, D fully supports C-style pointers. The D module thus includes a custom mechanism to wrap C pointers directly as D pointers where applicable, that is, if the type that is pointed to is represented the same in C - and D (on the bit-level), dubbed a primitive type below.

    -

    Central to this custom pointer handling scheme are two typemap - attributes: the cprimitive attribute on the dtype - typemap and the nativepointer attribute on all the typemaps - which influence the D side of the code (dtype, din, -dout, ...). When a D typemap is looked up, the following happens - behind the scenes:

    -

    First, the matching typemap is determined by the usual typemap lookup - rules. Then, it is checked if the result has the nativepointer + and D (on the bit-level), dubbed a primitive type below.

    +

    Central to this custom pointer handling scheme are two typemap + attributes: the cprimitive attribute on the dtype + typemap and the nativepointer attribute on all the typemaps + which influence the D side of the code (dtype, din, +dout, ...). When a D typemap is looked up, the following happens + behind the scenes:

    +

    First, the matching typemap is determined by the usual typemap lookup + rules. Then, it is checked if the result has the nativepointer attribute set. If it is present, it means that its value should replace - the typemap value if and only if the actual type the typemap + the typemap value if and only if the actual type the typemap is looked up for is a primitive type, a pointer to a primitive type (through an arbitrary level of indirections), or a function pointer - with only primitive types in its signature.

    -

    To determine if a type should be considered primitive, the -cprimitive attribute on its dtype attribute is used. For - example, the dtype typemap for float has -cprimitive="1", so the code from the nativepointer - attribute is taken into account e.g. for float ** or the - function pointer float (*)(float *).

    -

    22.8.3 Operator overloading

    -

    The D module comes with basic operator overloading support for both + with only primitive types in its signature.

    +

    To determine if a type should be considered primitive, the +cprimitive attribute on its dtype attribute is used. For + example, the dtype typemap for float has +cprimitive="1", so the code from the nativepointer + attribute is taken into account e.g. for float ** or the + function pointer float (*)(float *).

    +

    23.8.3 Operator overloading

    +

    The D module comes with basic operator overloading support for both D1 and D2. There are, however, a few limitations arising from - conceptual differences between C++ and D:

    -

    The first key difference is that C++ supports free functions as + conceptual differences between C++ and D:

    +

    The first key difference is that C++ supports free functions as operators (along with argument-dependent lookup), while D requires operators to be member functions of the class they are operating on. SWIG can only automatically generate wrapping code for member function operators; if you want to use operators defined as free functions in D, - you need to handle them manually.

    -

    Another set of differences between C++ and D concerns individual + you need to handle them manually.

    +

    Another set of differences between C++ and D concerns individual operators. For example, there are quite a few operators which are - overloadable in C++, but not in D, for example && and || -, but also !, and prefix increment/decrement operators in -D1 resp. their postfix pendants in -D2.

    -

    There are also some cases where the operators can be translated to D, + overloadable in C++, but not in D, for example && and || +, but also !, and prefix increment/decrement operators in +D1 resp. their postfix pendants in +D2.

    +

    There are also some cases where the operators can be translated to D, but the differences in the implementation details are big enough that a rather involved scheme would be required for automatic wrapping them, which has not been implemented yet. This affects, for example, the - array subscript operator, [], in combination with assignments - - while operator [] in C++ simply returns a reference which is - then written to, D resorts to a separate opIndexAssign method - -, or implicit casting (which was introduced in D2 via alias this + array subscript operator, [], in combination with assignments + - while operator [] in C++ simply returns a reference which is + then written to, D resorts to a separate opIndexAssign method + -, or implicit casting (which was introduced in D2 via alias this ). Despite the lack of automatic support, manually handling these cases - should be perfectly possible.

    -

    22.8.4 Running the test-suite

    -

    As with any other language, the SWIG test-suite can be built for D - using the *-d-test-suite targets of the top-level Makefile. By - default, D1 is targeted, to build it with D2, use the optional -D_VERSION variable, e.g. make check-d-test-suite D_VERSION=2 -.

    -

    Note: If you want to use GDC on Linux or another platform which - requires you to link libdl for dynamically loading the shared - library, you might have to add -ldl manually to the -d_compile target in Examples/Makefile, because GDC does - not currently honor the pragma(lib, ...) statement.

    -

    22.9 D Typemap examples

    -

    There are no D-specific typemap examples yet. However, with the above - name comparison table, you - should be able to get an idea what can be done by looking at the -corresponding C# section.

    -

    22.10 Work in progress and planned - features

    -

    There are a couple of features which are not implemented yet, but - would be very useful and might be added in the near future:

    -
      -
    • Static linking: Currently, the C wrapper code is compiled + should be perfectly possible.

      +

      23.8.4 Running the test-suite

      +

      As with any other language, the SWIG test-suite can be built for D + using the *-d-test-suite targets of the top-level Makefile. By + default, D1 is targeted, to build it with D2, use the optional +D_VERSION variable, e.g. make check-d-test-suite D_VERSION=2 +.

      +

      Note: If you want to use GDC on Linux or another platform which + requires you to link libdl for dynamically loading the shared + library, you might have to add -ldl manually to the +d_compile target in Examples/Makefile, because GDC does + not currently honor the pragma(lib, ...) statement.

      +

      23.9 D Typemap examples

      +

      There are no D-specific typemap examples yet. However, with the above + name comparison table, you + should be able to get an idea what can be done by looking at the +corresponding C# section.

      +

      23.10 Work in progress and planned + features

      +

      There are a couple of features which are not implemented yet, but + would be very useful and might be added in the near future:

      +
        +
      • Static linking: Currently, the C wrapper code is compiled into a dynamic library, out of which the symbol addresses are looked up at runtime by the D part. If statically linking the different languages into one binary was supported, a tool-chain capable of performing IPO at link time could inline the wrapping code, effectively reducing the - overhead for simple calls to zero.
      • -
      • C array handling: Many data structures in some C/C++ + overhead for simple calls to zero.
      • +
      • C array handling: Many data structures in some C/C++ libraries contain array containing of a pointer to the first element and the element count. Currently, one must manually writing wrapper code to be able to access these from D. It should be possible to add a - set of SWIG macros to semi-automatically generate conversion code.
      • -
      -

      Some generated code might also be a bit rough around the edges, - particularly in the following areas:

      -
        -
      • Memory management: Although the currently generated wrapper + set of SWIG macros to semi-automatically generate conversion code.
      • +
      +

      Some generated code might also be a bit rough around the edges, + particularly in the following areas:

      +
        +
      • Memory management: Although the currently generated wrapper code works fine with regard to the GC for the test-suite, there might - be issues coming up in real-world multi-threaded usage.
      • -
      • D2 support: Originally, the module has been developed for + be issues coming up in real-world multi-threaded usage.
      • +
      • D2 support: Originally, the module has been developed for the use with D1, D2/Phobos support has been added in later. The basic - features should work equally well for both, but there could be - issues concerning const-correctness etc.
      • -
      + features should work equally well for both, but there could be + issues concerning const-correctness etc.
    • +

    -

    23 SWIG and Go

    +

    24 SWIG and Go

    - + -

    This chapter describes SWIG's support of Go. For more information on - the Go programming language see golang.org -.

    -

    23.1 Overview

    -

    Go does not support direct calling of functions written in C/C++. - The cgo program may be used +

    This chapter describes SWIG's support of Go. For more information on + the Go programming language see golang.org +.

    +

    24.1 Overview

    +

    Go does not support direct calling of functions written in C/C++. + The cgo program may be used to generate wrappers to call C code from Go, but there is no convenient - way to call C++ code. SWIG fills this gap.

    -

    There are (at least) two different Go compilers. The first is the gc - compiler of the Go - distribution, normally invoked via the -go tool. The second Go compiler is the - gccgo compiler, which is a frontend to the GCC compiler suite. The + way to call C++ code. SWIG fills this gap.

    +

    There are (at least) two different Go compilers. The first is the gc + compiler of the Go + distribution, normally invoked via the +go tool. The second Go compiler is the + gccgo compiler, which is a frontend to the GCC compiler suite. The interface to C/C++ code is completely different for the two Go - compilers. SWIG supports both Go compilers, selected by the -gccgo - command line option.

    -

    Go is a type-safe compiled language and the wrapper code generated + compilers. SWIG supports both Go compilers, selected by the -gccgo + command line option.

    +

    Go is a type-safe compiled language and the wrapper code generated by SWIG is type-safe as well. In case of type issues the build will - fail and hence SWIG's runtime library and -runtime type checking are not used.

    -

    23.2 Examples

    -

    Working examples can be found in the -SWIG source tree .

    -

    Please note that the examples in the SWIG source tree use makefiles + fail and hence SWIG's runtime library and +runtime type checking are not used.

    +

    24.2 Examples

    +

    Working examples can be found in the +SWIG source tree .

    +

    Please note that the examples in the SWIG source tree use makefiles with the .i SWIG interface file extension for backwards compatibility - with Go 1.

    -

    23.3 Running SWIG with Go

    -

    Most Go programs are built using the -go tool. Since Go 1.1 the go tool has support for SWIG. To use it, + with Go 1.

    +

    24.3 Running SWIG with Go

    +

    Most Go programs are built using the +go tool. Since Go 1.1 the go tool has support for SWIG. To use it, give your SWIG interface file the extension .swig (for C code) or .swigcxx (for C++ code). Put that file in a GOPATH/src directory as usual for Go sources. Put other C/C++ code in the same directory with - extensions of .c and .cxx. The go build and go install + extensions of .c and .cxx. The go build and go install commands will automatically run SWIG for you and compile the generated wrapper code. To check the SWIG command line options the go tool uses - run go build -x. To access the automatically generated files - run go build -work. You'll find the files under the temporary - WORK directory.

    -

    To manually generate and compile C/C++ wrapper code for Go, use the --go option with SWIG. By default SWIG will generate code for the Go + run go build -x. To access the automatically generated files + run go build -work. You'll find the files under the temporary + WORK directory.

    +

    To manually generate and compile C/C++ wrapper code for Go, use the +-go option with SWIG. By default SWIG will generate code for the Go compiler of the Go distribution. To generate code for gccgo, you should - also use the -gccgo option.

    -

    When using the -cgo option, SWIG will generate files that - can be used directly by go build. Starting with the Go 1.5 - distribution the -cgo option has to be given. Put your SWIG - interface file in a directory under GOPATH/src, and give it a name that - does not end in the .swig or .swigcxx extension. Typically the - SWIG interface file extension is .i in this case.

    -
    -
    -% swig -go -cgo example.i
    -% go install
    -
    -
    -

    You will now have a Go package that you can import from other Go - packages as usual.

    -

    To use SWIG without the -cgo option, more steps are - required. Recall that this only works with Go versions before 1.5. When - using Go version 1.2 or later, or when using gccgo, the code generated - by SWIG can be linked directly into the Go program. A typical command - sequence when using the Go compiler of the Go distribution would look - like this:

    -
    -
    + also use the -gccgo option.

    +

    By default SWIG will generate files that can be used directly by +go build. This requires Go 1.2 or later. Put your SWIG interface + file in a directory under GOPATH/src, and give it a name that does + not end in the .swig or .swigcxx extension. Typically the SWIG + interface file extension is .i in this case.

    +
    +
     % swig -go example.i
    +% go install
    +
    +
    +

    You will now have a Go package that you can import from other Go + packages as usual.

    +

    SWIG can be used without cgo, via the -no-cgo option, but + more steps are required. This only works with Go versions before 1.5. + When using Go version 1.2 or later, or when using gccgo, the code + generated by SWIG can be linked directly into the Go program. A typical + command sequence when using the Go compiler of the Go distribution + would look like this:

    +
    +
    +% swig -go -no-cgo example.i
     % gcc -c code.c    # The C library being wrapped.
     % gcc -c example_wrap.c
     % go tool 6g example.go
    @@ -26782,14 +26715,14 @@ go tool. Since Go 1.1 the go tool has support for SWIG. To use it,
     % go tool pack grc example.a example.6 example_gc.6 code.o example_wrap.o
     % go tool 6g main.go
     % go tool 6l main.6
    -
    -
    -

    You can also put the wrapped code into a shared library, and when +

    +
    +

    You can also put the wrapped code into a shared library, and when using the Go versions before 1.2 this is the only supported option. A - typical command sequence for this approach would look like this:

    -
    -
    -% swig -go -use-shlib example.i
    + typical command sequence for this approach would look like this:

    +
    +
    +% swig -go -no-cgo -use-shlib example.i
     % gcc -c -fpic example.c
     % gcc -c -fpic example_wrap.c
     % gcc -shared example.o example_wrap.o -o example.so
    @@ -26798,162 +26731,168 @@ go tool. Since Go 1.1 the go tool has support for SWIG. To use it,
     % go tool pack grc example.a example.6 example_gc.6
     % go tool 6g main.go  # your code, not generated by SWIG
     % go tool 6l main.6
    -
    -
    -

    23.3.1 Go-specific Commandline Options

    -

    These are the command line options for SWIG's Go module. They can - also be seen by using:

    -
    -
    +
    +
    +

    24.3.1 Go-specific Commandline Options

    +

    These are the command line options for SWIG's Go module. They can + also be seen by using:

    +
    +
     swig -go -help
    -
    -
    - - - - + + + +
    Go-specific options
    -cgoGenerate files to be used as input for the Go cgo - tool. This option is required for Go 1.5 and later, and works for Go - 1.2 and later. In the future this option will likely become the - default.
    -intgosize <s>Set the size for the Go type int + + + + + + + - - - + + + - + - - -
    Go-specific options
    -cgoGenerate files to be used as input for the Go cgo + tool. This is the default.
    -no-cgoGenerate files that can be used directly, rather + than via the Go cgo tool. This option does not work with Go 1.5 or + later. It is required for versions of Go before 1.2.
    -intgosize <s>Set the size for the Go type int . This controls the size that the C/C++ code expects to see. The <s> argument should be 32 or 64. This option is currently required during - the transition from Go 1.0 to Go 1.1, as the size of int on + the transition from Go 1.0 to Go 1.1, as the size of int on 64-bit x86 systems changes between those releases (from 32 bits to 64 bits). In the future the option may become optional, and SWIG will - assume that the size of int is the size of a C pointer.
    -gccgoGenerate code for gccgo. The default is to - generate code for the Go compiler of the Go distribution.
    -package <name>Set the name of the Go package to - <name>. The default package name is the SWIG module name.
    -use-shlibTell SWIG to emit code that uses a shared + assume that the size of int is the size of a C pointer.
    -gccgoGenerate code for gccgo. The default is to + generate code for the Go compiler of the Go distribution.
    -package <name>Set the name of the Go package to + <name>. The default package name is the SWIG module name.
    -use-shlibTell SWIG to emit code that uses a shared library. This is only meaningful for the Go compiler of the Go distribution, which needs to know at compile time whether a shared - library will be used.
    -soname <name>Set the runtime name of the shared + library will be used.
    -soname <name>Set the runtime name of the shared library that the dynamic linker should include at runtime. The default is the package name with ".so" appended. This is only used when generating code for the Go compiler of the Go distribution; when using - gccgo, the equivalent name will be taken from the -soname + gccgo, the equivalent name will be taken from the -soname option passed to the linker. Using this option implies the -use-shlib - option.
    -go-pkgpath <pkgpath>When generating code for gccgo, - set the pkgpath to use. This corresponds to the -fgo-pkgpath - option to gccgo.
    -go-prefix <prefix>When generating code for gccgo, set - the prefix to use. This corresponds to the -fgo-prefix option - to gccgo. If -go-pkgpath is used, -go-prefix will be - ignored.
    -

    23.3.2 Generated Wrapper Files

    -

    There are two different approaches to generating wrapper files, - controlled by SWIG's -cgo option. The -cgo option - works with Go version 1.2 or later. It is required when using Go - version 1.5 or later.

    -

    With or without the -cgo option, SWIG will generate the - following files when generating wrapper code:

    -
      -
    • MODULE.go will contain the Go functions that your Go code will + option.
    -go-pkgpath <pkgpath>When generating code for gccgo, + set the pkgpath to use. This corresponds to the -fgo-pkgpath + option to gccgo.
    -go-prefix <prefix>When generating code for gccgo, set + the prefix to use. This corresponds to the -fgo-prefix option + to gccgo. If -go-pkgpath is used, -go-prefix will be + ignored.
    -import-prefix <prefix>A prefix to add when turning a + %import prefix in the SWIG interface file into an import statement in + the Go file. For example, with -import-prefix mymodule, a + SWIG interface file %import mypackage will become a Go + import statement import "mymodule/mypackage".
    +

    24.3.2 Generated Wrapper Files

    +

    There are two different approaches to generating wrapper files, + controlled by SWIG's -no-cgo option. The -no-cgo + option only works with version of Go before 1.5. It is required when + using versions of Go before 1.2.

    +

    With or without the -no-cgo option, SWIG will generate the + following files when generating wrapper code:

    +
      +
    • MODULE.go will contain the Go functions that your Go code will call. These functions will be wrappers for the C++ functions defined by your module. This file should, of course, be compiled with the Go - compiler.
    • -
    • MODULE_wrap.c or MODULE_wrap.cxx will contain C/C++ functions will + compiler.
    • +
    • MODULE_wrap.c or MODULE_wrap.cxx will contain C/C++ functions will be invoked by the Go wrapper code. This file should be compiled with - the usual C or C++ compiler.
    • -
    • MODULE_wrap.h will be generated if you use the directors feature. + the usual C or C++ compiler.
    • +
    • MODULE_wrap.h will be generated if you use the directors feature. It provides a definition of the generated C++ director classes. It is generally not necessary to use this file, but in some special cases it may be helpful to include it in your code, compiled with the usual C or - C++ compiler.
    • -
    -

    When neither the -cgo nor the -gccgo option is - used, SWIG will also generate an additional file:

    -
      -
    • MODULE_gc.c will contain C code which should be compiled with the C + C++ compiler.
    • +
    +

    When the -no-cgo option is used, and the -gccgo + option is not used, SWIG will also generate an additional file:

    +
      +
    • MODULE_gc.c will contain C code which should be compiled with the C compiler distributed as part of the gc compiler. It should then be - combined with the compiled MODULE.go using go tool pack.
    • -
    -

    23.4 A tour of basic C/C++ wrapping

    -

    By default, SWIG attempts to build a natural Go interface to your + combined with the compiled MODULE.go using go tool pack. + +

    24.4 A tour of basic C/C++ wrapping

    +

    By default, SWIG attempts to build a natural Go interface to your C/C++ code. However, the languages are somewhat different, so some modifications have to occur. This section briefly covers the essential - aspects of this wrapping.

    -

    23.4.1 Go Package Name

    -

    All Go source code lives in a package. The name of this package will - default to the name of the module from SWIG's %module - directive. You may override this by using SWIG's -package - command line option.

    -

    23.4.2 Go Names

    -

    In Go, a function is only visible outside the current package if the + aspects of this wrapping.

    +

    24.4.1 Go Package Name

    +

    All Go source code lives in a package. The name of this package will + default to the name of the module from SWIG's %module + directive. You may override this by using SWIG's -package + command line option.

    +

    24.4.2 Go Names

    +

    In Go, a function is only visible outside the current package if the first letter of the name is uppercase. This is quite different from C/C++. Because of this, C/C++ names are modified when generating the Go interface: the first letter is forced to be uppercase if it is not already. This affects the names of functions, methods, variables, - constants, enums, and classes.

    -

    C/C++ variables are wrapped with setter and getter functions in Go. + constants, enums, and classes.

    +

    C/C++ variables are wrapped with setter and getter functions in Go. First the first letter of the variable name will be forced to - uppercase, and then Get or Set will be prepended. For - example, if the C/C++ variable is called var, then SWIG will - define the functions GetVar and SetVar. If a variable - is declared as const, or if SWIG's - %immutable directive is used for the variable, then only - the getter will be defined.

    -

    C++ classes will be discussed further below. Here we'll note that + uppercase, and then Get or Set will be prepended. For + example, if the C/C++ variable is called var, then SWIG will + define the functions GetVar and SetVar. If a variable + is declared as const, or if SWIG's + %immutable directive is used for the variable, then only + the getter will be defined.

    +

    C++ classes will be discussed further below. Here we'll note that the first letter of the class name will be forced to uppercase to give - the name of a type in Go. A constructor will be named New - followed by that name, and the destructor will be named Delete - followed by that name.

    -

    23.4.3 Go Constants

    -

    C/C++ constants created via #define or the %constant - directive become Go constants, declared with a const - declaration.

    -

    23.4.4 Go Enumerations

    -

    C/C++ enumeration types will cause SWIG to define an integer type + the name of a type in Go. A constructor will be named New + followed by that name, and the destructor will be named Delete + followed by that name.

    +

    24.4.3 Go Constants

    +

    C/C++ constants created via #define or the %constant + directive become Go constants, declared with a const + declaration.

    +

    24.4.4 Go Enumerations

    +

    C/C++ enumeration types will cause SWIG to define an integer type with the name of the enumeration (with first letter forced to uppercase as usual). The values of the enumeration will become variables in Go; - code should avoid modifying those variables.

    -

    23.4.5 Go Classes

    -

    Go has interfaces, methods and inheritance, but it does not have + code should avoid modifying those variables.

    +

    24.4.5 Go Classes

    +

    Go has interfaces, methods and inheritance, but it does not have classes in the same sense as C++. This sections describes how SWIG - represents C++ classes represented in Go.

    -

    For a C++ class ClassName, SWIG will define two types in + represents C++ classes represented in Go.

    +

    For a C++ class ClassName, SWIG will define two types in Go: an underlying type, which will just hold a pointer to the C++ type, - and an interface type. The interface type will be named ClassName -. SWIG will define a function NewClassName which will take any - constructor arguments and return a value of the interface type -ClassName. SWIG will also define a destructor DeleteClassName -.

    -

    SWIG will represent any methods of the C++ class as methods on the + and an interface type. The interface type will be named ClassName +. SWIG will define a function NewClassName which will take any + constructor arguments and return a value of the interface type +ClassName. SWIG will also define a destructor DeleteClassName +.

    +

    SWIG will represent any methods of the C++ class as methods on the underlying type, and also as methods of the interface type. Thus C++ - methods may be invoked directly using the usual val.MethodName + methods may be invoked directly using the usual val.MethodName syntax. Public members of the C++ class will be given getter and setter - functions defined as methods of the class.

    -

    SWIG will represent static methods of C++ classes as ordinary Go - functions. SWIG will use names like ClassNameMethodName. SWIG - will give static members getter and setter functions with names like -GetClassName_VarName.

    -

    Given a value of the interface type, Go code can retrieve the - pointer to the C++ type by calling the Swigcptr method. This - will return a value of type SwigcptrClassName, which is just a - name for uintptr. A Go type conversion can be used to convert + functions defined as methods of the class.

    +

    SWIG will represent static methods of C++ classes as ordinary Go + functions. SWIG will use names like ClassNameMethodName. SWIG + will give static members getter and setter functions with names like +GetClassName_VarName.

    +

    Given a value of the interface type, Go code can retrieve the + pointer to the C++ type by calling the Swigcptr method. This + will return a value of type SwigcptrClassName, which is just a + name for uintptr. A Go type conversion can be used to convert this value to a different C++ type, but note that this conversion will - not be type checked and is essentially equivalent to -reinterpret_cast. This should only be used for very special cases, - such as where C++ would use a dynamic_cast.

    -

    Note that C++ pointers to compound objects are represented in go as + not be type checked and is essentially equivalent to +reinterpret_cast. This should only be used for very special cases, + such as where C++ would use a dynamic_cast.

    +

    Note that C++ pointers to compound objects are represented in go as objects themselves, not as go pointers. So, for example, if you wrap - the following function:

    -
    -
    + the following function:

    +
    +
     class MyClass {
       int MyMethod();
       static MyClass *MyFactoryFunction();
     };
     
    -
    -
    -

    You will get go code that looks like this:

    -
    -
    +
    +
    +

    You will get go code that looks like this:

    +
    +
     type MyClass interface {
       Swigcptr() uintptr
       SwigIsMyClass()
    @@ -26963,43 +26902,43 @@ type MyClass interface {
     func MyClassMyFactoryFunction() MyClass {
       // swig magic here
     }
    -
    -
    -

    Note that the factory function does not return a go pointer; it +

    +
    +

    Note that the factory function does not return a go pointer; it actually returns a go interface. If the returned pointer can be null, - you can check for this by calling the Swigcptr() method.

    -

    23.4.5.1 Go Class Memory Management

    -

    Calling NewClassName for a C++ class ClassName + you can check for this by calling the Swigcptr() method.

    +

    24.4.5.1 Go Class Memory Management

    +

    Calling NewClassName for a C++ class ClassName will allocate memory using the C++ memory allocator. This memory will not be automatically freed by Go's garbage collector as the object ownership is not tracked. When you are done with the C++ object you - must free it using DeleteClassName. -
    -
    The most Go idiomatic way to manage the memory for some C++ class - is to call NewClassName followed by a -defer of the DeleteClassName call. Using defer + must free it using DeleteClassName. +
    +
    The most Go idiomatic way to manage the memory for some C++ class + is to call NewClassName followed by a +defer of the DeleteClassName call. Using defer ensures that the memory of the C++ object is freed as soon as the - function containing the defer statement returns. Furthemore -defer works great for short-lived objects and fits nicely C++'s - RAII idiom. Example:

    -
    -
    + function containing the defer statement returns. Furthermore 
    +defer works great for short-lived objects and fits nicely C++'s
    + RAII idiom. Example:

    +
    +
     func UseClassName(...) ... {
       o := NewClassName(...)
       defer DeleteClassName(o)
       // Use the ClassName object
       return ...
     }
    -
    -
    -

    With increasing complexity, especially complex C++ object - hierarchies, the correct placement of defer statements becomes +

    +
    +

    With increasing complexity, especially complex C++ object + hierarchies, the correct placement of defer statements becomes harder and harder as C++ objects need to be freed in the correct order. This problem can be eased by keeping a C++ object function local so that it is only available to the function that creates a C++ object and - functions called by this function. Example:

    -
    -
    + functions called by this function. Example:

    +
    +
     func WithClassName(constructor args, f func(ClassName, ...interface{}) error, data ...interface{}) error {
       o := NewClassName(constructor args)
       defer DeleteClassName(o)
    @@ -27013,33 +26952,33 @@ func UseClassName(o ClassName, data ...interface{}) (err error) {
     func main() {
       WithClassName(constructor args, UseClassName, additional data)
     }
    -
    -
    -

    Using defer has limitations though, especially when it - comes to long-lived C++ objects whichs lifetimes are hard to predict. +

    +
    +

    Using defer has limitations though, especially when it + comes to long-lived C++ objects whose lifetimes are hard to predict. For such C++ objects a common technique is to store the C++ object into - a Go object, and to use the Go function runtime.SetFinalizer + a Go object, and to use the Go function runtime.SetFinalizer to add a finalizer which frees the C++ object when the Go object is - freed. It is strongly recommended to read the -runtime.SetFinalizer documentation before using this technique to - understand the runtime.SetFinalizer limitations. -

    -

    Common pitfalls with runtime.SetFinalizer are:

    -
      -
    • If a hierarchy of C++ objects will be automatically freed by Go + freed. It is strongly recommended to read the +runtime.SetFinalizer documentation before using this technique to + understand the runtime.SetFinalizer limitations. +

      +

      Common pitfalls with runtime.SetFinalizer are:

      +
        +
      • If a hierarchy of C++ objects will be automatically freed by Go finalizers then the Go objects that store the C++ objects need to replicate the hierarchy of the C++ objects to prevent that C++ objects - are freed prematurely while other C++ objects still rely on them.
      • -
      • The usage of Go finalizers is problematic with C++'s RAII idiom as + are freed prematurely while other C++ objects still rely on them.
      • +
      • The usage of Go finalizers is problematic with C++'s RAII idiom as it isn't predictable when the finalizer will run and this might require a Close or Delete method to be added the Go object that stores a C++ - object to mitigate.
      • -
      • The Go finalizer function typically runs in a different OS thread - which can be problematic with C++ code that uses thread-local storage.
      • -
      -

      runtime.SetFinalizer Example:

      -
      -
      + object to mitigate.
    • +
    • The Go finalizer function typically runs in a different OS thread + which can be problematic with C++ code that uses thread-local storage.
    • +
    +

    runtime.SetFinalizer Example:

    +
    +
     import (
       "runtime"
       "wrap" // SWIG generated wrapper code
    @@ -27069,37 +27008,37 @@ func (o *GoClassName) Close() {
       runtime.SetFinalizer(o, nil) // Remove finalizer.
       deleteGoClassName() // Free the C++ object.
     }
    -
    -
    -

    23.4.5.2 Go Class Inheritance

    -

    C++ class inheritance is automatically represented in Go due to its +

    +
    +

    24.4.5.2 Go Class Inheritance

    +

    C++ class inheritance is automatically represented in Go due to its use of interfaces. The interface for a child class will be a superset of the interface of its parent class. Thus a value of the child class type in Go may be passed to a function which expects the parent class. Doing the reverse will require an explicit type assertion, which will - be checked dynamically.

    -

    23.4.6 Go Templates

    -

    In order to use C++ templates in Go, you must tell SWIG to create - wrappers for a particular template instantation. To do this, use the -%template directive.

    -

    23.4.7 Go Director Classes

    -

    SWIG's director feature permits a Go type to act as the subclass of + be checked dynamically.

    +

    24.4.6 Go Templates

    +

    In order to use C++ templates in Go, you must tell SWIG to create + wrappers for a particular template instantation. To do this, use the +%template directive.

    +

    24.4.7 Go Director Classes

    +

    SWIG's director feature permits a Go type to act as the subclass of a C++ class. This is complicated by the fact that C++ and Go define inheritance differently. SWIG normally represents the C++ class inheritance automatically in Go via interfaces but with a Go type - representing a subclass of a C++ class some manual work is necessary.

    -

    This subchapter gives a step by step guide how to properly sublass a - C++ class with a Go type. In general it is strongly recommended to + representing a subclass of a C++ class some manual work is necessary.

    +

    This subchapter gives a step by step guide how to properly subclass + a C++ class with a Go type. In general it is strongly recommended to follow this guide completely to avoid common pitfalls with directors in - Go.

    -

    23.4.7.1 Example C++ code

    -

    The step by step guide is based on two example C++ classes. + Go.

    +

    24.4.7.1 Example C++ code

    +

    The step by step guide is based on two example C++ classes. FooBarAbstract is an abstract C++ class and the FooBarCpp class inherits from it. This guide explains how to implement a FooBarGo class - similar to the FooBarCpp class.

    -

    FooBarAbstract abstract C++ class:

    -
    -
    + similar to the FooBarCpp class.

    +

    FooBarAbstract abstract C++ class:

    +
    +
     class FooBarAbstract
     {
     public:
    @@ -27107,21 +27046,21 @@ public:
       virtual ~FooBarAbstract() {};
     
       std::string FooBar() {
    -          return this->Foo() + ", " + this->Bar();
    +    return this->Foo() + ", " + this->Bar();
       };
     
     protected:
       virtual std::string Foo() {
    -          return "Foo";
    +    return "Foo";
       };
     
       virtual std::string Bar() = 0;
     };
    -
    -
    -

    FooBarCpp C++ class:

    -
    -
    +
    +
    +

    FooBarCpp C++ class:

    +
    +
     class FooBarCpp : public FooBarAbstract
     {
     protected:
    @@ -27133,50 +27072,50 @@ protected:
         return "C++ Bar";
       }
     };
    -
    -
    -

    Returned string by the FooBarCpp::FooBar method is:

    -
    -
    +
    +
    +

    Returned string by the FooBarCpp::FooBar method is:

    +
    +
     C++ Foo, C++ Bar
    -
    -
    -

    The complete example, including the FooBarGoo class - implementation, can be found in -the end of the guide.

    -

    23.4.7.2 Enable director feature

    -

    The director feature is disabled by default. To use directors you +

    +
    +

    The complete example, including the FooBarGoo class + implementation, can be found in +the end of the guide.

    +

    24.4.7.2 Enable director feature

    +

    The director feature is disabled by default. To use directors you must make two changes to the interface file. First, add the "directors" - option to the %module directive, like this:

    -
    -
    + option to the %module directive, like this:

    +
    +
     %module(directors="1") modulename
    -
    -
    -

    Second, you must use the %feature("director") directive to tell SWIG +

    +
    +

    Second, you must use the %feature("director") directive to tell SWIG which classes should get directors. In the example the FooBarAbstract class needs the director feature enabled so that the FooBarGo class can - inherit from it, like this:

    -
    -
    + inherit from it, like this:

    +
    +
     %feature("director") FooBarAbstract;
    -
    -
    -

    For a more detailed documentation of the director feature and how to +

    +
    +

    For a more detailed documentation of the director feature and how to enable or disable it for specific classes and virtual methods see - SWIG's Java documentation on directors.

    -

    23.4.7.3 Constructor and destructor -

    -

    SWIG creates an additional set of constructor and destructor - functions once the director feature has been enabled for a C++ class. -NewDirectorClassName allows overriding virtual methods on the new - object instance and DeleteDirectorClassName needs to be used - to free a director object instance created with -NewDirectorClassName. More on overriding virtual methods follows - later in this guide under overriding - virtual methods.

    -

    The default constructor and destructor functions NewClassName - and DeleteClassName can still be used as before so that + SWIG's Java documentation on directors.

    +

    24.4.7.3 Constructor and destructor +

    +

    SWIG creates an additional set of constructor and destructor + functions once the director feature has been enabled for a C++ class. +NewDirectorClassName allows overriding virtual methods on the new + object instance and DeleteDirectorClassName needs to be used + to free a director object instance created with +NewDirectorClassName. More on overriding virtual methods follows + later in this guide under overriding + virtual methods.

    +

    The default constructor and destructor functions NewClassName + and DeleteClassName can still be used as before so that existing code doesn't break just because the director feature has been enabled for a C++ class. The behavior is undefined if the default and director constructor and destructor functions get mixed and so great @@ -27185,42 +27124,43 @@ NewDirectorClassName. More on overriding virtual methods follows functions, the default and the director one, return the same interface type. This makes it potentially hard to know which destructor function, the default or the director one, needs to be called to delete an object - instance.

    -

    In theory the DirectorInterface method could be used - to determine if an object instance was created via -NewDirectorClassName:

    -
    -
    + instance.

    +

    In theory the DirectorInterface method could be used + to determine if an object instance was created via +NewDirectorClassName:

    +
    +
     if o.DirectorInterface() != nil {
       DeleteDirectorClassName(o)
     } else {
       DeleteClassName(o)
     }
    -
    -
    -

    In practice it is strongly recommended to embed a director +

    +
    +

    In practice it is strongly recommended to embed a director object instance in a Go struct so that a director object instance will be represented as a distinct Go type that subclasses a C++ class. For this Go type custom constructor and destructor functions take care of the director constructor and destructor function calls and the resulting Go class will appear to the user as any other SWIG wrapped C++ class. More on properly subclassing a C++ class follows later in - this guide under subclass via embedding -.

    -

    23.4.7.4 Override virtual methods -

    -

    In order to override virtual methods on a C++ class with Go methods - the NewDirectorClassName constructor functions receives a -DirectorInterface argument. The methods in the -DirectorInterface are a subset of the public and protected virtual - methods of the C++ class. If the DirectorInterface contains a - method with a matching signature to a virtual method of the C++ class + this guide under subclass via embedding +.

    +

    24.4.7.4 Override virtual methods +

    +

    In order to override virtual methods on a C++ class with Go methods + the NewDirectorClassName constructor functions receives a +DirectorInterface argument. The methods in the +DirectorInterface are a subset of the public and protected virtual + methods of the C++ class. Virtual methods that have a final specifier + are unsurprisingly excluded. If the DirectorInterface contains + a method with a matching signature to a virtual method of the C++ class then the virtual C++ method will be overwritten with the Go method. As - Go doesn't support protected methods all overriden protected virtual - C++ methods will be public in Go.

    -

    As an example see part of the FooBarGo class:

    -
    -
    + Go doesn't support protected methods all overridden protected virtual
    + C++ methods will be public in Go.

    +

    As an example see part of the FooBarGo class:

    +
    +
     type overwrittenMethodsOnFooBarAbstract struct {
       fb FooBarAbstract
     }
    @@ -27239,67 +27179,67 @@ func NewFooBarGo() FooBarGo {
       om.fb = fb
       ...
     }
    -
    -
    -

    The complete example, including the FooBarGoo class - implementation, can be found in -the end of the guide. In this part of the example the virtual - methods FooBarAbstract::Foo and FooBarAbstract::Bar - have been overwritten with Go methods similarly to how the -FooBarAbstract virtual methods are overwritten by the FooBarCpp - class.

    -

    The DirectorInterface in the example is implemented by the -overwrittenMethodsOnFooBarAbstract Go struct type. A pointer to a -overwrittenMethodsOnFooBarAbstract struct instance will be given to - the NewDirectorFooBarAbstract constructor function. The - constructor return value implements the FooBarAbstract - interface. overwrittenMethodsOnFooBarAbstract could in theory +

    +
    +

    The complete example, including the FooBarGoo class + implementation, can be found in +the end of the guide. In this part of the example the virtual + methods FooBarAbstract::Foo and FooBarAbstract::Bar + have been overwritten with Go methods similarly to how the +FooBarAbstract virtual methods are overwritten by the FooBarCpp + class.

    +

    The DirectorInterface in the example is implemented by the +overwrittenMethodsOnFooBarAbstract Go struct type. A pointer to a +overwrittenMethodsOnFooBarAbstract struct instance will be given to + the NewDirectorFooBarAbstract constructor function. The + constructor return value implements the FooBarAbstract + interface. overwrittenMethodsOnFooBarAbstract could in theory be any Go type but in practice a struct is used as it typically contains at least a value of the C++ class interface so that the - overwritten methods can use the rest of the C++ class. If the -FooBarGo class would receive additional constructor arguments then - these would also typically be stored in the -overwrittenMethodsOnFooBarAbstract struct so that they can be used - by the Go methods.

    -

    23.4.7.5 Call base methods

    -

    Often a virtual method will be overwritten to extend the original + overwritten methods can use the rest of the C++ class. If the +FooBarGo class would receive additional constructor arguments then + these would also typically be stored in the +overwrittenMethodsOnFooBarAbstract struct so that they can be used + by the Go methods.

    +

    24.4.7.5 Call base methods

    +

    Often a virtual method will be overwritten to extend the original behavior of the method in the base class. This is also the case for the - FooBarCpp::Foo method of the example code:

    -
    -
    + FooBarCpp::Foo method of the example code:

    +
    +
     virtual std::string Foo() {
       return "C++ " + FooBarAbstract::Foo();
     }
    -
    -
    -

    To use base methods the DirectorClassNameMethodName wrapper +

    +
    +

    To use base methods the DirectorClassNameMethodName wrapper functions are automatically generated by SWIG for public and protected - virtual methods. The FooBarGo.Foo implementation in the - example looks like this:

    -
    -
    + virtual methods. The FooBarGo.Foo implementation in the
    + example looks like this:

    +
    +
     func (om *overwrittenMethodsOnFooBarAbstract) Foo() string {
       return "Go " + DirectorFooBarAbstractFoo(om.fb)
     }
    -
    -
    -

    The complete example, including the FooBarGoo class - implementation, can be found in -the end of the guide.

    -

    23.4.7.6 Subclass via embedding

    -

    As previously mentioned in this - guide the default and director constructor functions return the +

    +
    +

    The complete example, including the FooBarGoo class + implementation, can be found in +the end of the guide.

    +

    24.4.7.6 Subclass via embedding

    +

    As previously mentioned in this + guide the default and director constructor functions return the same interface type. To properly subclass a C++ class with a Go type - the director object instance returned by the NewDirectorClassName + the director object instance returned by the NewDirectorClassName constructor function should be embedded into a Go struct so that it represents a distinct but compatible type in Go's type system. This Go struct should be private and the constructor and destructor functions should instead work with a public interface type so that the Go class - that subclasses a C++ class can be used as a compatible drop in.

    -

    The subclassing part of the FooBarGo class for an example - looks like this:

    -
    -
    + that subclasses a C++ class can be used as a compatible drop in.

    +

    The subclassing part of the FooBarGo class for an example + looks like this:

    +
    +
     type FooBarGo interface {
       FooBarAbstract
       deleteFooBarAbstract()
    @@ -27327,30 +27267,30 @@ func NewFooBarGo() FooBarGo {
     func DeleteFooBarGo(fbg FooBarGo) {
       fbg.deleteFooBarAbstract()
     }
    -
    -
    -

    The complete example, including the FooBarGoo class - implementation, can be found in -the end of the guide. In this part of the example the private -fooBarGo struct embeds FooBarAbstract which lets the -fooBarGo Go type "inherit" all the methods of the -FooBarAbstract C++ class by means of embedding. The public -FooBarGo interface type includes the FooBarAbstract - interface and hence FooBarGo can be used as a drop in - replacement for FooBarAbstract while the reverse isn't - possible and would raise a compile time error. Furthemore the - constructor and destructor functions NewFooBarGo and -DeleteFooBarGo take care of all the director specifics and to the - user the class appears as any other SWIG wrapped C++ class.

    -

    23.4.7.7 Memory management with - runtime.SetFinalizer

    -

    In general all guidelines for C++ class - memory management apply as well to director classes. One often - overlooked limitation with runtime.SetFinalizer is that a +

    +
    +

    The complete example, including the FooBarGoo class + implementation, can be found in +the end of the guide. In this part of the example the private +fooBarGo struct embeds FooBarAbstract which lets the +fooBarGo Go type "inherit" all the methods of the +FooBarAbstract C++ class by means of embedding. The public +FooBarGo interface type includes the FooBarAbstract + interface and hence FooBarGo can be used as a drop in + replacement for FooBarAbstract while the reverse isn't + possible and would raise a compile time error. Furthermore the + constructor and destructor functions NewFooBarGo and +DeleteFooBarGo take care of all the director specifics and to the + user the class appears as any other SWIG wrapped C++ class.

    +

    24.4.7.7 Memory management with + runtime.SetFinalizer

    +

    In general all guidelines for C++ class + memory management apply as well to director classes. One often + overlooked limitation with runtime.SetFinalizer is that a finalizer doesn't run in case of a cycle and director classes typically - have a cycle. The cycle in the FooBarGo class is here:

    -
    -
    + have a cycle. The cycle in the FooBarGo class is here:

    +
    +
     type overwrittenMethodsOnFooBarAbstract struct {
       fb FooBarAbstract
     }
    @@ -27361,16 +27301,16 @@ func NewFooBarGo() FooBarGo {
       om.fb = fb // Backlink causes cycle as fb.v = om!
       ...
     }
    -
    -
    -

    In order to be able to use runtime.SetFinalizer +

    +
    +

    In order to be able to use runtime.SetFinalizer nevertheless the finalizer needs to be set on something that isn't in a - cycle and that references the director object instance. In the -FooBarGo class example the FooBarAbstract director - instance can be automatically deleted by setting the finalizer on -fooBarGo:

    -
    -
    + cycle and that references the director object instance. In the 
    +FooBarGo class example the FooBarAbstract director
    + instance can be automatically deleted by setting the finalizer on 
    +fooBarGo:

    +
    +
     type fooBarGo struct {
       FooBarAbstract
     }
    @@ -27388,19 +27328,19 @@ func NewFooBarGo() FooBarGo {
       runtime.SetFinalizer(fbgs, FooBarGo.deleteFooBarAbstract)
       return fbgs
     }
    -
    -
    -

    Furthermore if runtime.SetFinalizer is in use either the -DeleteClassName destructor function needs to be removed or the -fooBarGo struct needs additional data to prevent double deletion. - Please read the C++ class memory management - subchapter before using runtime.SetFinalizer to know all of - its gotchas.

    -

    23.4.7.8 Complete FooBarGo - example class

    -

    The complete and annotated FooBarGo class looks like this:

    -
    -
    +
    +
    +

    Furthermore if runtime.SetFinalizer is in use either the +DeleteClassName destructor function needs to be removed or the +fooBarGo struct needs additional data to prevent double deletion. + Please read the C++ class memory management + subchapter before using runtime.SetFinalizer to know all of + its gotchas.

    +

    24.4.7.8 Complete FooBarGo + example class

    +

    The complete and annotated FooBarGo class looks like this:

    +
    +
     // FooBarGo is a superset of FooBarAbstract and hence FooBarGo can be used as a
     // drop in replacement for FooBarAbstract but the reverse causes a compile time
     // error.
    @@ -27433,7 +27373,7 @@ type overwrittenMethodsOnFooBarAbstract struct {
       fb FooBarAbstract
     
       // If additional constructor arguments have been given they are typically
    -  // stored here so that the overriden methods can use them.
    +  // stored here so that the overridden methods can use them.
     }
     
     func (om *overwrittenMethodsOnFooBarAbstract) Foo() string {
    @@ -27460,7 +27400,7 @@ func NewFooBarGo() FooBarGo {
       // The memory of the FooBarAbstract director object instance can be
       // automatically freed once the FooBarGo instance is garbage collected by
       // uncommenting the following line.  Please make sure to understand the
    -  // runtime.SetFinalizer specific gotchas before doing this.  Furthemore
    +  // runtime.SetFinalizer specific gotchas before doing this.  Furthermore
       // DeleteFooBarGo should be deleted if a finalizer is in use or the fooBarGo
       // struct needs additional data to prevent double deletion.
       // runtime.SetFinalizer(fbgs, FooBarGo.deleteFooBarAbstract)
    @@ -27471,17 +27411,17 @@ func NewFooBarGo() FooBarGo {
     func DeleteFooBarGo(fbg FooBarGo) {
       fbg.deleteFooBarAbstract()
     }
    -
    -
    -

    Returned string by the FooBarGo.FooBar method is:

    -
    -
    +
    +
    +

    Returned string by the FooBarGo.FooBar method is:

    +
    +
     Go Foo, Go Bar
    -
    -
    -

    For comparison the FooBarCpp class looks like this:

    -
    -
    +
    +
    +

    For comparison the FooBarCpp class looks like this:

    +
    +
     class FooBarCpp : public FooBarAbstract
     {
     protected:
    @@ -27493,106 +27433,106 @@ protected:
         return "C++ Bar";
       }
     };
    -
    -
    -

    For comparison the returned string by the FooBarCpp::FooBar - method is:

    -
    -
    +
    +
    +

    For comparison the returned string by the FooBarCpp::FooBar + method is:

    +
    +
     C++ Foo, C++ Bar
    -
    -
    -

    The complete source of this example can be found under - SWIG/Examples/go/director/.

    -

    23.4.8 Default Go primitive - type mappings

    -

    The following table lists the default type mapping from C/C++ to Go. +

    +
    +

    The complete source of this example can be found under + SWIG/Examples/go/director/.

    +

    24.4.8 Default Go primitive + type mappings

    +

    The following table lists the default type mapping from C/C++ to Go. This table will tell you which Go type to expect for a function which - uses a given C/C++ type.

    - - - - - - - - - - - - - - - - - -
    C/C++ typeGo type
    boolbool
    charbyte
    signed charint8
    unsigned charbyte
    shortint16
    unsigned shortuint16
    intint
    unsigned intuint
    longint64
    unsigned longuint64
    long longint64
    unsigned long longuint64
    floatfloat32
    doublefloat64
    char * -
    char []
    string
    -

    Note that SWIG wraps the C char type as a character. - Pointers and arrays of this type are wrapped as strings. The signed - char type can be used if you want to treat char as a + uses a given C/C++ type.

    + + + + + + + + + + + + + + + + + +
    C/C++ typeGo type
    boolbool
    charbyte
    signed charint8
    unsigned charbyte
    shortint16
    unsigned shortuint16
    intint
    unsigned intuint
    longint64
    unsigned longuint64
    long longint64
    unsigned long longuint64
    floatfloat32
    doublefloat64
    char * +
    char []
    string
    +

    Note that SWIG wraps the C char type as a character. + Pointers and arrays of this type are wrapped as strings. The signed + char type can be used if you want to treat char as a signed number rather than a character. Also note that all const references to primitive types are treated as if they are passed by - value.

    -

    These type mappings are defined by the "gotype" typemap. You may + value.

    +

    These type mappings are defined by the "gotype" typemap. You may change that typemap, or add new values, to control how C/C++ types are - mapped into Go types.

    -

    23.4.9 Output arguments

    -

    Because of limitations in the way output arguments are processed in + mapped into Go types.

    +

    24.4.9 Output arguments

    +

    Because of limitations in the way output arguments are processed in swig, a function with output arguments will not have multiple return values. Instead, you must pass a pointer into the C++ function to tell it where to store the output value. In go, you supply a slice in the - place of the output argument.

    -

    For example, suppose you were trying to wrap the modf() function in + place of the output argument.

    +

    For example, suppose you were trying to wrap the modf() function in the C math library which splits x into integral and fractional parts - (and returns the integer part in one of its parameters):

    -
    -
    + (and returns the integer part in one of its parameters):

    +
    +
     double modf(double x, double *ip);
    -
    -
    -

    You could wrap it with SWIG as follows:

    -
    -
    +
    +
    +

    You could wrap it with SWIG as follows:

    +
    +
     %include <typemaps.i>
     double modf(double x, double *OUTPUT);
    -
    -
    -

    or you can use the %apply directive:

    -
    -
    +
    +
    +

    or you can use the %apply directive:

    +
    +
     %include <typemaps.i>
     %apply double *OUTPUT { double *ip };
     double modf(double x, double *ip);
    -
    -
    -

    In Go you would use it like this:

    -
    -
    +
    +
    +

    In Go you would use it like this:

    +
    +
     ptr := []float64{0.0}
     fraction := modulename.Modf(5.0, ptr)
    -
    -
    -

    Since this is ugly, you may want to wrap the swig-generated API with - some additional functions written in go - that hide the ugly details.

    -

    There are no char *OUTPUT typemaps. However you can - apply the signed char * typemaps instead:

    -
    -
    +
    +
    +

    Since this is ugly, you may want to wrap the swig-generated API with + some additional functions written + in go that hide the ugly details.

    +

    There are no char *OUTPUT typemaps. However you can + apply the signed char * typemaps instead:

    +
    +
     %include <typemaps.i>
     %apply signed char *OUTPUT {char *output};
     void f(char *output);
    -
    -
    -

    23.4.10 Adding additional go - code

    -

    Often the APIs generated by swig are not very natural in go, +

    +
    +

    24.4.10 Adding additional go + code

    +

    Often the APIs generated by swig are not very natural in go, especially if there are output arguments. You can insert additional go - wrapping code to add new APIs with %insert(go_wrapper), - like this:

    -
    -
    + wrapping code to add new APIs with %insert(go_wrapper),
    + like this:

    +
    +
     %include <typemaps.i>
     // Change name of what swig generates to Wrapped_modf.  This function will
     // have the following signature in go:
    @@ -27614,13 +27554,13 @@ func Modf(x float64) (fracPart float64, intPart float64) {
     }
     
     %}
    -
    -
    -

    For classes, since swig generates an interface, you can add +

    +
    +

    For classes, since swig generates an interface, you can add additional methods by defining another interface that includes the - swig-generated interface. For example,

    -
    -
    + swig-generated interface. For example,

    +
    +
     %rename(Wrapped_MyClass) MyClass;
     %rename(Wrapped_GetAValue) MyClass::GetAValue(int *x);
     %apply int *OUTPUT { int *x };
    @@ -27646,16 +27586,16 @@ func (arg SwigcptrWrapped_MyClass) GetAValue() (int, bool) {
     }
     
     %}
    -
    -
    -

    Of course, if you have to rewrite most of the methods, instead of +

    +
    +

    Of course, if you have to rewrite most of the methods, instead of just a few, then you might as well define your own struct that includes the swig-wrapped object, instead of adding methods to the - swig-generated object.

    -

    If you need to import other go packages, you can do this with -%go_import. For example,

    -
    -
    + swig-generated object.

    +

    If you need to import other go packages, you can do this with +%go_import. For example,

    +
    +
     %go_import("fmt", _ "unusedPackage", rp "renamed/package")
     
     %insert(go_wrapper) %{
    @@ -27675,387 +27615,387 @@ func bar() {
     }
     
     %}
    -
    -
    -

    23.4.11 Go typemaps

    -

    You can use the %typemap directive to modify SWIG's default +

    +
    +

    24.4.11 Go typemaps

    +

    You can use the %typemap directive to modify SWIG's default wrapping behavior for specific C/C++ types. You need to be familiar - with the material in the general "Typemaps" + with the material in the general "Typemaps" chapter. That chapter explains how to define a typemap. This section - describes some specific typemaps used for Go.

    -

    In general type conversion code may be written either in C/C++ or in + describes some specific typemaps used for Go.

    +

    In general type conversion code may be written either in C/C++ or in Go. The choice to make normally depends on where memory should be allocated. To allocate memory controlled by the Go garbage collector, - write Go code. To allocate memory in the C/C++ heap, write C code.

    - - - +
    TypemapDescription
    gotype The Go type to use for a C++ type. This type + write Go code. To allocate memory in the C/C++ heap, write C code.

    + + + - + - + - + - + - + - + - + - + - + - + - + -
    TypemapDescription
    gotype The Go type to use for a C++ type. This type will appear in the generated Go wrapper function. If this is not - defined SWIG will use a default as -described above.
    imtype An intermediate Go type used by the "goin", + defined SWIG will use a default as +described above.
    imtype An intermediate Go type used by the "goin", "goout", "godirectorin", and "godirectorout" typemaps. If this typemap is not defined for a C/C++ type, the gotype typemape will be used. This - is useful when gotype is best converted to C/C++ using Go code.
    goin Go code to convert from gotype to imtype when + is useful when gotype is best converted to C/C++ using Go code.
    goin Go code to convert from gotype to imtype when calling a C/C++ function. SWIG will then internally convert imtype to a C/C++ type and pass it down. If this is not defined, or is the empty - string, no conversion is done.
    in C/C++ code to convert the internally generated C/C++ + string, no conversion is done.
    in C/C++ code to convert the internally generated C/C++ type, based on imtype, into the C/C++ type that a function call expects. If this is not defined the value will simply be cast to the - desired type.
    out C/C++ code to convert the C/C++ type that a + desired type.
    out C/C++ code to convert the C/C++ type that a function call returns into the internally generated C/C++ type, based on imtype, that will be returned to Go. If this is not defined the - value will simply be cast to the desired type.
    goout Go code to convert a value returned from a C/C++ + value will simply be cast to the desired type.
    goout Go code to convert a value returned from a C/C++ function from imtype to gotype. If this is not defined, or is the empty - string, no conversion is done.
    argout C/C++ code to adjust an argument value when + string, no conversion is done.
    argout C/C++ code to adjust an argument value when returning from a function. This is called after the real C/C++ function has run. This uses the internally generated C/C++ type, based on imtype. This is only useful for a pointer type of some sort. If this is - not defined nothing will be done.
    goargout Go code to adjust an argument value when + not defined nothing will be done.
    goargout Go code to adjust an argument value when returning from a function. This is called after the real C/C++ function has run. The value will be in imtype. This is only useful for a pointer type of some sort. If this is not defined, or is the empty string, - nothing will be done.
    directorin C/C++ code to convert the C/C++ type used to + nothing will be done.
    directorin C/C++ code to convert the C/C++ type used to call a director method into the internally generated C/C++ type, based on imtype, that will be passed to Go. If this is not defined the value - will simply be cast to the desired type.
    godirectorin Go code to convert a value used to call a + will simply be cast to the desired type.
    godirectorin Go code to convert a value used to call a director method from imtype to gotype. If this is not defined, or is - the empty string, no conversion is done.
    godirectorout Go code to convert a value returned from + the empty string, no conversion is done.
    godirectorout Go code to convert a value returned from a director method from gotype to imtype. If this is not defined, or is - the empty string, no conversion is done.
    directorout C/C++ code to convert a value returned from + the empty string, no conversion is done.
    directorout C/C++ code to convert a value returned from a director method from the internally generated C/C++ type, based on imtype, into the type that the method should return If this is not - defined the value will simply be cast to the desired type.
    + defined the value will simply be cast to the desired type.

    -

    24 SWIG and Guile

    +

    25 SWIG and Guile

    - + -

    This section details guile-specific support in SWIG.

    -

    24.1 Supported Guile Versions

    -

    SWIG works with Guile versions 1.8.x and 2.0.x. Support for version +

    This section details guile-specific support in SWIG.

    +

    25.1 Supported Guile Versions

    +

    SWIG works with Guile versions 1.8.x and 2.0.x. Support for version 1.6.x has been dropped. The last version of SWIG that still works with - Guile version 1.6.x is SWIG 2.0.9.

    -

    Note that starting with guile 2.0, the guile sources can be compiled + Guile version 1.6.x is SWIG 2.0.9.

    +

    Note that starting with guile 2.0, the guile sources can be compiled for improved performance. This is currently not tested with swig so your mileage may vary. To be safe set environment variable - GUILE_AUTO_COMPILE to 0 when using swig generated guile code.

    -

    24.2 Meaning of "Module"

    -

    There are three different concepts of "module" involved, defined + GUILE_AUTO_COMPILE to 0 when using swig generated guile code.

    +

    25.2 Meaning of "Module"

    +

    There are three different concepts of "module" involved, defined separately for SWIG, Guile, and Libtool. To avoid horrible confusion, - we explicitly prefix the context, e.g., "guile-module".

    -

    24.3 Old GH Guile API

    -

    Guile 1.8 and older could be interfaced using two different api's, + we explicitly prefix the context, e.g., "guile-module".

    +

    25.3 Old GH Guile API

    +

    Guile 1.8 and older could be interfaced using two different api's, the SCM or the GH API. The GH interface to guile is deprecated. Read - more about why in the -Guile manual.

    -

    Support for the guile GH wrapper code generation has been dropped + more about why in the +Guile manual.

    +

    Support for the guile GH wrapper code generation has been dropped from SWIG. The last version of SWIG that can still generate guile GH wrapper code is 2.0.9. Please use that version if you really need the - GH wrapper code.

    -

    24.4 Linkage

    -

    Guile support is complicated by a lack of user community + GH wrapper code.

    +

    25.4 Linkage

    +

    Guile support is complicated by a lack of user community cohesiveness, which manifests in multiple shared-library usage conventions. A set of policies implementing a usage convention is - called a linkage.

    -

    24.4.1 Simple Linkage

    -

    The default linkage is the simplest; nothing special is done. In - this case the function SWIG_init() is exported. Simple - linkage can be used in several ways:

    -
      -
    • Embedded Guile, no modules. You want to embed a Guile + called a linkage.

      +

      25.4.1 Simple Linkage

      +

      The default linkage is the simplest; nothing special is done. In + this case the function SWIG_init() is exported. Simple + linkage can be used in several ways:

      +
        +
      • Embedded Guile, no modules. You want to embed a Guile interpreter into your program; all bindings made by SWIG shall show up - in the root module. Then call SWIG_init() in the -inner_main() function. See the "simple" and "matrix" examples - under Examples/guile.
      • -
      • -

        Dynamic module mix-in. You want to create a Guile module using - define-module, containing both Scheme code and bindings + in the root module. Then call SWIG_init() in the +inner_main() function. See the "simple" and "matrix" examples + under Examples/guile.

      • +
      • +

        Dynamic module mix-in. You want to create a Guile module using + define-module, containing both Scheme code and bindings made by SWIG; you want to load the SWIG modules as shared libraries - into Guile.

        -
        -
        + into Guile.

        +
        +
         (define-module (my module))
         (define my-so (dynamic-link "./libexample.so"))
         (dynamic-call "SWIG_init" my-so) ; make SWIG bindings
         ;; Scheme definitions can go here
        -
        -
        -

        Newer Guile versions provide a shorthand for dynamic-link - and dynamic-call:

        -
        -
        +
        +
        +

        Newer Guile versions provide a shorthand for dynamic-link + and dynamic-call:

        +
        +
         (load-extension "./libexample.so" "SWIG_init")
        -
        -
        -

        A more portable approach would be to drop the shared library - extension:

        -
        -
        +
        +
        +

        A more portable approach would be to drop the shared library + extension:

        +
        +
         (load-extension "./libexample" "SWIG_init")
        -
        -
        -

        You need to explicitly export those bindings made by SWIG that you - want to import into other modules:

        -
        -
        +
        +
        +

        You need to explicitly export those bindings made by SWIG that you + want to import into other modules:

        +
        +
         (export foo bar)
        -
        -
        -

        In this example, the procedures foo and bar +

        +
        +

        In this example, the procedures foo and bar would be exported. Alternatively, you can export all bindings with the - following module-system hack:

        -
        -
        + following module-system hack:

        +
        +
         (module-map (lambda (sym var)
                       (module-export! (current-module) (list sym)))
                     (current-module))
        -
        -
        -

        SWIG can also generate this Scheme stub (from define-module - up to export) semi-automagically if you pass it the - command-line argument -scmstub. The code will be exported - in a file called module.scm in the directory - specified by -outdir or the current directory if --outdir is not specified. Since SWIG doesn't know how to load - your extension module (with dynamic-link or -load-extension), you need to supply this information by including - a directive like this in the interface file:

        -
        -
        +
        +
        +

        SWIG can also generate this Scheme stub (from define-module + up to export) semi-automagically if you pass it the + command-line argument -scmstub. The code will be exported + in a file called module.scm in the directory + specified by -outdir or the current directory if +-outdir is not specified. Since SWIG doesn't know how to load + your extension module (with dynamic-link or +load-extension), you need to supply this information by including + a directive like this in the interface file:

        +
        +
         %scheme %{ (load-extension "./libexample.so" "SWIG_init") %}
        -
        -
        -

        (The %scheme directive allows to insert arbitrary - Scheme code into the generated file module.scm; - it is placed between the define-module form and the -export form.)

        -
      • -
      -

      If you want to include several SWIG modules, you would need to rename - SWIG_init via a preprocessor define to avoid symbol - clashes. For this case, however, passive linkage is available.

      -

      24.4.2 Passive Linkage

      -

      Passive linkage is just like simple linkage, but it generates an + + +

      (The %scheme directive allows to insert arbitrary + Scheme code into the generated file module.scm; + it is placed between the define-module form and the +export form.)

      +
    • +
    +

    If you want to include several SWIG modules, you would need to rename + SWIG_init via a preprocessor define to avoid symbol + clashes. For this case, however, passive linkage is available.

    +

    25.4.2 Passive Linkage

    +

    Passive linkage is just like simple linkage, but it generates an initialization function whose name is derived from the module and - package name (see below).

    -

    You should use passive linkage rather than simple linkage when you - are using multiple modules.

    -

    24.4.3 Native Guile Module Linkage

    -

    SWIG can also generate wrapper code that does all the Guile module - declarations on its own if you pass it the -Linkage module - command-line option.

    -

    The module name is set with the -package and --module command-line options. Suppose you want to define a module - with name (my lib foo); then you would have to pass the - options -package my/lib -module foo -. Note that the last part of the name can also be set via the - SWIG directive %module.

    -

    You can use this linkage in several ways:

    -
      -
    • Embedded Guile with SWIG modules. You want to embed a Guile + package name (see below).

      +

      You should use passive linkage rather than simple linkage when you + are using multiple modules.

      +

      25.4.3 Native Guile Module Linkage

      +

      SWIG can also generate wrapper code that does all the Guile module + declarations on its own if you pass it the -Linkage module + command-line option.

      +

      The module name is set with the -package and +-module command-line options. Suppose you want to define a module + with name (my lib foo); then you would have to pass the + options -package my/lib -module foo +. Note that the last part of the name can also be set via the + SWIG directive %module.

      +

      You can use this linkage in several ways:

      +
        +
      • Embedded Guile with SWIG modules. You want to embed a Guile interpreter into your program; the SWIG bindings shall be put into - different modules. Simply call the function scm_init_my -_modules_foo_module in the -inner_main() function.
      • -
      • Dynamic Guile modules. You want to load the SWIG modules as + different modules. Simply call the function scm_init_my +_modules_foo_module in the +inner_main() function.
      • +
      • Dynamic Guile modules. You want to load the SWIG modules as shared libraries into Guile; all bindings are automatically put in - newly created Guile modules.
        -
        + newly created Guile modules.
        +
         (define my-so (dynamic-link "./libfoo"))
         ;; create new module and put bindings there:
         (dynamic-call "scm_init_my_modules_foo_module" my-so) 
        -
        -
        Newer Guile versions have a shorthand procedure for this:
        -
        +
        +
        Newer Guile versions have a shorthand procedure for this:
        +
         (load-extension "./libfoo.so" "scm_init_my_modules_foo_module")
        -
        -
      • -
      -

      24.4.4 Old Auto-Loading Guile Module Linkage

      -

      Guile used to support an autoloading facility for object-code + +

    • +
    +

    25.4.4 Old Auto-Loading Guile Module Linkage

    +

    Guile used to support an autoloading facility for object-code modules. This support has been marked deprecated in version 1.4.1 and is going to disappear sooner or later. SWIG still supports building - auto-loading modules if you pass it the -Linkage ltdlmod - command-line option.

    -

    Auto-loading worked like this: Suppose a module with name (my - lib foo) is required and not loaded yet. Guile will then search - all directories in its search path for a Scheme file -my/modules/foo.scm or a shared library my/ -modules/libfoo.so (or my/ -modules/libfoo.la; see the GNU libtool - documentation). If a shared library is found that contains the symbol -scm_init_my_modules_foo_module, + auto-loading modules if you pass it the -Linkage ltdlmod + command-line option.

    +

    Auto-loading worked like this: Suppose a module with name (my + lib foo) is required and not loaded yet. Guile will then search + all directories in its search path for a Scheme file +my/modules/foo.scm or a shared library my/ +modules/libfoo.so (or my/ +modules/libfoo.la; see the GNU libtool + documentation). If a shared library is found that contains the symbol +scm_init_my_modules_foo_module, the library is loaded, and the function at that symbol is called with - no arguments in order to initialize the module.

    -

    When invoked with the -Linkage ltdlmod command-line + no arguments in order to initialize the module.

    +

    When invoked with the -Linkage ltdlmod command-line option, SWIG generates an exported module initialization function with - an appropriate name.

    -

    24.4.5 Hobbit4D Linkage

    -

    The only other linkage supported at this time creates shared object - libraries suitable for use by hobbit's (hobbit4d link) + an appropriate name.

    +

    25.4.5 Hobbit4D Linkage

    +

    The only other linkage supported at this time creates shared object + libraries suitable for use by hobbit's (hobbit4d link) guile module. This is called the "hobbit" linkage, and requires also using the "-package" command line option to set the part of the module - name before the last symbol. For example, both command lines:

    -
    -
    + name before the last symbol. For example, both command lines:

    +
    +
     swig -guile -package my/lib foo.i
     swig -guile -package my/lib -module foo foo.i
    -
    -
    -

    would create module (my lib foo) (assuming in the first +

    +
    +

    would create module (my lib foo) (assuming in the first case foo.i declares the module to be "foo"). The installed files are my/lib/libfoo.so.X.Y.Z and friends. This scheme is still very - experimental; the (hobbit4d link) conventions are not well understood.

    -

    24.5 Underscore Folding

    -

    Underscores are converted to dashes in identifiers. Guile support + experimental; the (hobbit4d link) conventions are not well understood.

    +

    25.5 Underscore Folding

    +

    Underscores are converted to dashes in identifiers. Guile support may grow an option to inhibit this folding in the future, but no one - has complained so far.

    -

    You can use the SWIG directives %name and %rename + has complained so far.

    +

    You can use the SWIG directives %name and %rename to specify the Guile name of the wrapped functions and variables (see - CHANGES).

    -

    24.6 Typemaps

    -

    The Guile module handles all types via typemaps. This information is - read from Lib/guile/typemaps.i. Some non-standard typemap - substitutions are supported:

    -
      -
    • $descriptor expands to a type descriptor for use with - the SWIG_NewPointerObj() and SWIG_ConvertPtr - functions.
    • -
    • For pointer types, $*descriptor expands to a descriptor - for the direct base type (i.e., one pointer is stripped), whereas -$basedescriptor expands to a descriptor for the base type (i.e., - all pointers are stripped).
    • -
    -

    A function returning void (more precisely, a function - whose out typemap returns SCM_UNSPECIFIED) is - treated as returning no values. In argout typemaps, one - can use the macro GUILE_APPEND_RESULT in order to append a - value to the list of function return values.

    -

    Multiple values can be passed up to Scheme in one of three ways:

    -
      -
    • -

      Multiple values as lists. By default, if more than one value + CHANGES).

      +

      25.6 Typemaps

      +

      The Guile module handles all types via typemaps. This information is + read from Lib/guile/typemaps.i. Some non-standard typemap + substitutions are supported:

      +
        +
      • $descriptor expands to a type descriptor for use with + the SWIG_NewPointerObj() and SWIG_ConvertPtr + functions.
      • +
      • For pointer types, $*descriptor expands to a descriptor + for the direct base type (i.e., one pointer is stripped), whereas +$basedescriptor expands to a descriptor for the base type (i.e., + all pointers are stripped).
      • +
      +

      A function returning void (more precisely, a function + whose out typemap returns SCM_UNSPECIFIED) is + treated as returning no values. In argout typemaps, one + can use the macro GUILE_APPEND_RESULT in order to append a + value to the list of function return values.

      +

      Multiple values can be passed up to Scheme in one of three ways:

      +
        +
      • +

        Multiple values as lists. By default, if more than one value is to be returned, a list of the values is created and returned; to - switch back to this behavior, use

        -
        -
        -%values_as_list;
        -
      • -
      • -

        Multiple values as vectors. By issuing

        -
        -
        -%values_as_vector;
        -
        -

        vectors instead of lists will be used.

        -
      • -
      • -

        Multiple values for multiple-value continuations. - This is the most elegant way. By issuing

        -
        -
        -%multiple_values;
        -
        -

        multiple values are passed to the multiple-value continuation, as - created by call-with-values or the convenience macro -receive. The latter is available if you issue (use-modules - (srfi srfi-8)). Assuming that your divide function - wants to return two values, a quotient and a remainder, you can write:

        -
        -
        + switch back to this behavior, use

        +
        +
        +%values_as_list;
        +
      • +
      • +

        Multiple values as vectors. By issuing

        +
        +
        +%values_as_vector;
        +
        +

        vectors instead of lists will be used.

        +
      • +
      • +

        Multiple values for multiple-value continuations. + This is the most elegant way. By issuing

        +
        +
        +%multiple_values;
        +
        +

        multiple values are passed to the multiple-value continuation, as + created by call-with-values or the convenience macro +receive. The latter is available if you issue (use-modules + (srfi srfi-8)). Assuming that your divide function + wants to return two values, a quotient and a remainder, you can write:

        +
        +
         (receive (quotient remainder)
             (divide 35 17)
        -  body...)
        -
        -
        -

        In body, the first result of divide - will be bound to the variable quotient, and the second - result to remainder.

        -
      • -
      -

      See also the "multivalue" example.

      -

      Constants are exported as a function that returns the value. The + body...) + + +

      In body, the first result of divide + will be bound to the variable quotient, and the second + result to remainder.

      +
    • +
    +

    See also the "multivalue" example.

    +

    Constants are exported as a function that returns the value. The %feature("constasvar") can be applied to any constant, immutable variable, or enum. Instead of exporting the constant as a function that - must be called, the constant will appear as a scheme variable. See -Features and the %feature directive for info on how to apply the - %feature.

    -

    24.7 Representation of pointers as smobs

    -

    For pointer types, SWIG uses Guile smobs. SWIG smobs print like - this: #<swig struct xyzzy * 0x1234affe> Two of them are -equal? if and only if they have the same type and value.

    -

    To construct a Scheme object from a C pointer, the wrapper code - calls the function SWIG_NewPointerObj(), passing a pointer + must be called, the constant will appear as a scheme variable. See +Features and the %feature directive for info on how to apply the + %feature.

    +

    25.7 Representation of pointers as smobs

    +

    For pointer types, SWIG uses Guile smobs. SWIG smobs print like + this: #<swig struct xyzzy * 0x1234affe> Two of them are +equal? if and only if they have the same type and value.

    +

    To construct a Scheme object from a C pointer, the wrapper code + calls the function SWIG_NewPointerObj(), passing a pointer to a struct representing the pointer type. The type index to store in the upper half of the CAR is read from this struct. To get the pointer - represented by a smob, the wrapper code calls the function -SWIG_ConvertPtr(), passing a pointer to a struct representing the - expected pointer type. See also -The run-time type checker. If the Scheme object passed was not a - SWIG smob representing a compatible pointer, a wrong-type-arg - exception is raised.

    -

    24.7.1 Smobs

    -

    In earlier versions of SWIG, C pointers were represented as Scheme + represented by a smob, the wrapper code calls the function +SWIG_ConvertPtr(), passing a pointer to a struct representing the + expected pointer type. See also +The run-time type checker. If the Scheme object passed was not a + SWIG smob representing a compatible pointer, a wrong-type-arg + exception is raised.

    +

    25.7.1 Smobs

    +

    In earlier versions of SWIG, C pointers were represented as Scheme strings containing a hexadecimal rendering of the pointer value and a mangled type name. As Guile allows registering user types, so-called "smobs" (small objects), a much cleaner representation has been - implemented now. The details will be discussed in the following.

    -

    The whole type system, when it is first initialized, creates two + implemented now. The details will be discussed in the following.

    +

    The whole type system, when it is first initialized, creates two smobs named "swig" and "collected_swig". The swig smob is used for non-garbage collected smobs, while the collected_swig smob is used as described below. Each smob has the same format, which is a double cell created by SCM_NEWSMOB2() The first word of data is the pointer to the object and the second word of data is the swig_type_info * structure describing this type. If a generated GOOPS module has been loaded, - smobs will be wrapped by the corresponding GOOPS class.

    -

    24.7.2 Garbage Collection

    -

    Garbage collection is a feature of Guile since version 1.6. As SWIG + smobs will be wrapped by the corresponding GOOPS class.

    +

    25.7.2 Garbage Collection

    +

    Garbage collection is a feature of Guile since version 1.6. As SWIG now requires Guile > 1.8, it is automatically included. Garbage collection works like this. Every swig_type_info structure stores in its clientdata field a pointer to the destructor for this type. The @@ -28064,19 +28004,19 @@ The run-time type checker. If the Scheme object passed was not a scm_c_define_gsubr() for the wrapped delete function. So the only way to delete an object is from the garbage collector, since the delete function is not available to scripts. How swig determines if a type - should be garbage collected is exactly like described in - Object ownership and %newobject in the SWIG manual. All typemaps + should be garbage collected is exactly like described in + Object ownership and %newobject in the SWIG manual. All typemaps use an $owner var, and the guile module replaces $owner with 0 or 1 - depending on feature:new.

    -

    24.8 Native Guile pointers

    -

    In addition to SWIG smob pointers, -Guile's native pointer type are accepted as arguments to wrapped - SWIG functions. This can be useful for passing -pointers to bytevector data to wrapped functions.

    -

    24.9 Exception Handling

    -

    SWIG code calls scm_error on exception, using the - following mapping:

    -
    + depending on feature:new.

    +

    25.8 Native Guile pointers

    +

    In addition to SWIG smob pointers, +Guile's native pointer type are accepted as arguments to wrapped + SWIG functions. This can be useful for passing +pointers to bytevector data to wrapped functions.

    +

    25.9 Exception Handling

    +

    SWIG code calls scm_error on exception, using the + following mapping:

    +
           MAP(SWIG_MemoryError,     "swig-memory-error");
           MAP(SWIG_IOError,         "swig-io-error");
           MAP(SWIG_RuntimeError,    "swig-runtime-error");
    @@ -28087,78 +28027,78 @@ pointers to bytevector data to wrapped functions.

    MAP(SWIG_SyntaxError, "swig-syntax-error"); MAP(SWIG_ValueError, "swig-value-error"); MAP(SWIG_SystemError, "swig-system-error"); -
    -

    -

    The default when not specified here is to use "swig-error". See - Lib/exception.i for details.

    -

    24.10 Procedure documentation

    -

    If invoked with the command-line option -procdoc file -, SWIG creates documentation strings for the generated wrapper +

    +

    +

    The default when not specified here is to use "swig-error". See + Lib/exception.i for details.

    +

    25.10 Procedure documentation

    +

    If invoked with the command-line option -procdoc file +, SWIG creates documentation strings for the generated wrapper functions, describing the procedure signature and return value, and - writes them to file.

    -

    SWIG can generate documentation strings in three formats, which are - selected via the command-line option -procdocformat format -:

    -
      -
    • guile-1.4 (default): Generates a format suitable for - Guile 1.4.
    • -
    • plain: Generates a format suitable for Guile 1.4.1 and - later.
    • -
    • texinfo: Generates texinfo source, which must be run + writes them to file.

      +

      SWIG can generate documentation strings in three formats, which are + selected via the command-line option -procdocformat format +:

      +
        +
      • guile-1.4 (default): Generates a format suitable for + Guile 1.4.
      • +
      • plain: Generates a format suitable for Guile 1.4.1 and + later.
      • +
      • texinfo: Generates texinfo source, which must be run through texinfo in order to get a format suitable for Guile 1.4.1 and - later.
      • -
      -

      You need to register the generated documentation file with Guile like - this:

      -
      + later.
    • +
    +

    You need to register the generated documentation file with Guile like + this:

    +
     (use-modules (ice-9 documentation))
     (set! documentation-files 
    -      (cons "file" documentation-files))
    -
    -

    -

    Documentation strings can be configured using the Guile-specific - typemap argument doc. See Lib/guile/typemaps.i - for details.

    -

    24.11 Procedures with setters

    -

    For global variables, SWIG creates a single wrapper procedure ( -variable :optional value), which is used for both getting + (cons "file" documentation-files)) + +

    +

    Documentation strings can be configured using the Guile-specific + typemap argument doc. See Lib/guile/typemaps.i + for details.

    +

    25.11 Procedures with setters

    +

    For global variables, SWIG creates a single wrapper procedure ( +variable :optional value), which is used for both getting and setting the value. For struct members, SWIG creates two wrapper - procedures (struct-member-get pointer) - and (struct-member-set pointer value).

    -

    If invoked with the command-line option -emit-setters ( -recommended), SWIG will additionally create procedures with - setters. For global variables, the procedure-with-setter -variable is created, so you can use (variable -) to get the value and (set! (variable) - value) to set it. For struct members, the - procedure-with-setter struct-member - is created, so you can use (struct-member - pointer) to get the value and (set! (struct --member pointer) value) to set - it.

    -

    If invoked with the command-line option -only-setters, - SWIG will only create procedures with setters, i.e., for - struct members, the procedures (struct-member --get pointer) and (struct-member-set pointer - value) are not generated.

    -

    24.12 GOOPS Proxy Classes

    -

    SWIG can also generate classes and generic functions for use with + procedures (struct-member-get pointer) + and (struct-member-set pointer value).

    +

    If invoked with the command-line option -emit-setters ( +recommended), SWIG will additionally create procedures with + setters. For global variables, the procedure-with-setter +variable is created, so you can use (variable +) to get the value and (set! (variable) + value) to set it. For struct members, the + procedure-with-setter struct-member + is created, so you can use (struct-member + pointer) to get the value and (set! (struct +-member pointer) value) to set + it.

    +

    If invoked with the command-line option -only-setters, + SWIG will only create procedures with setters, i.e., for + struct members, the procedures (struct-member +-get pointer) and (struct-member-set pointer + value) are not generated.

    +

    25.12 GOOPS Proxy Classes

    +

    SWIG can also generate classes and generic functions for use with Guile's Object-Oriented Programming System (GOOPS). GOOPS is a sophisticated object system in the spirit of the Common Lisp Object - System (CLOS).

    -

    To enable GOOPS support, pass the -proxy argument to - swig. This will export the GOOPS wrapper definitions into the -module.scm file in the directory specified by -outdir or the + System (CLOS).

    +

    To enable GOOPS support, pass the -proxy argument to + swig. This will export the GOOPS wrapper definitions into the +module.scm file in the directory specified by -outdir or the current directory. GOOPS support requires either passive or module - linkage.

    -

    The generated file will contain definitions of GOOPS classes - mimicking the C++ class hierarchy.

    -

    Enabling GOOPS support implies -emit-setters.

    -

    If -emit-slot-accessors is also passed as an argument, + linkage.

    +

    The generated file will contain definitions of GOOPS classes + mimicking the C++ class hierarchy.

    +

    Enabling GOOPS support implies -emit-setters.

    +

    If -emit-slot-accessors is also passed as an argument, then the generated file will contain accessor methods for all the slots - in the classes and for global variables. The input class

    -
    -
    + in the classes and for global variables. The input class

    +
    +
       class Foo {
         public:
           Foo(int i) : a(i) {}
    @@ -28167,12 +28107,12 @@ module.scm file in the directory specified by -outdir or the
           Foo getFooMultBy(int i) { return Foo(a * i); }
       }; 
       Foo getFooPlus(int i) { return Foo(a + i); }
    -
    -
    -

    will produce (if -emit-slot-accessors is not passed as - a parameter)

    -
    -
    +
    +
    +

    will produce (if -emit-slot-accessors is not passed as + a parameter)

    +
    +
     (define-class <Foo> (<swig>)
       (a #:allocation #:swig-virtual 
          #:slot-ref primitive:Foo-a-get 
    @@ -28189,17 +28129,17 @@ module.scm file in the directory specified by -outdir or the
       (make <Foo> #:init-smob (primitive:getFooPlus i)))
     
     (export <Foo> getMultBy getFooMultBy getFooPlus )
    -
    -
    -

    and will produce (if -emit-slot-accessors is passed as - a parameter)

    -
    -
    +
    +
    +

    and will produce (if -emit-slot-accessors is passed as + a parameter)

    +
    +
     (define-class <Foo> (<swig>)
       (a #:allocation #:swig-virtual 
          #:slot-ref primitive:Foo-a-get 
          #:slot-set! primitive:Foo-a-set 
    -     #:accessor a)
    +     #:accessor a)
       #:metaclass <swig-metaclass>
       #:new-function primitive:new-Foo
     )
    @@ -28211,12 +28151,12 @@ module.scm file in the directory specified by -outdir or the
     (define-method (getFooPlus i)
       (make <Foo> #:init-smob (primitive:getFooPlus i)))
     
    -(export <Foo> a getMultBy getFooMultBy getFooPlus )
    -
    -
    -

    which can then be used by this code

    -
    -
    +(export <Foo> a getMultBy getFooMultBy getFooPlus )
    +
    +
    +

    which can then be used by this code

    +
    +
     ;; not using getters and setters
     (define foo (make <Foo> #:args '(45)))
     (slot-ref foo 'a)
    @@ -28232,15 +28172,15 @@ module.scm file in the directory specified by -outdir or the
     (set! (a foo) 5)
     (getMultBy foo 4)
     (a (getFooMultBy foo 7))
    -
    -
    -

    Notice that constructor arguments are passed as a list after the -#:args keyword. Hopefully in the future the following will be - valid (make <Foo> #:a 5 #:b 4)

    -

    Also note that the order the declarations occur in the .i file make a - difference. For example,

    -
    -
    +
    +
    +

    Notice that constructor arguments are passed as a list after the +#:args keyword. Hopefully in the future the following will be + valid (make <Foo> #:a 5 #:b 4)

    +

    Also note that the order the declarations occur in the .i file make a + difference. For example,

    +
    +
     %module test
     
     %{ #include "foo.h" %}
    @@ -28252,16 +28192,16 @@ module.scm file in the directory specified by -outdir or the
     %}
     
     %include "foo.h"
    -
    -
    -

    This is a valid SWIG file it will work as you think it will for +

    +
    +

    This is a valid SWIG file it will work as you think it will for primitive support, but the generated GOOPS file will be broken. Since - the someFunc definition is parsed by SWIG before all the + the someFunc definition is parsed by SWIG before all the declarations in foo.h, the generated GOOPS file will contain the - definition of someFunc() before the definition of <Foo>. - The generated GOOPS file would look like

    -
    -
    + definition of someFunc() before the definition of <Foo>.
    + The generated GOOPS file would look like

    +
    +
     ;;...
     
     (define-method (someFunc (swig_smob <Foo>))
    @@ -28274,104 +28214,104 @@ module.scm file in the directory specified by -outdir or the
     )
     
     ;;...
    -
    -
    -

    Notice that <Foo> is used before it is defined. The fix is to just - put the %import "foo.h" before the %inline - block.

    -

    24.12.1 Naming Issues

    -

    As you can see in the example above, there are potential naming - conflicts. The default exported accessor for the Foo::a - variable is named a. The name of the wrapper global - function is getFooPlus. If the -useclassprefix +

    +
    +

    Notice that <Foo> is used before it is defined. The fix is to just + put the %import "foo.h" before the %inline + block.

    +

    25.12.1 Naming Issues

    +

    As you can see in the example above, there are potential naming + conflicts. The default exported accessor for the Foo::a + variable is named a. The name of the wrapper global + function is getFooPlus. If the -useclassprefix option is passed to swig, the name of all accessors and member functions will be prepended with the class name. So the accessor will - be called Foo-a and the member functions will be called -Foo-getMultBy. Also, if the -goopsprefix goops: - argument is passed to swig, every identifier will be prefixed by -goops:

    -

    Two guile-modules are created by SWIG. The first module contains the + be called Foo-a and the member functions will be called +Foo-getMultBy. Also, if the -goopsprefix goops: + argument is passed to swig, every identifier will be prefixed by +goops:

    +

    Two guile-modules are created by SWIG. The first module contains the primitive definitions of all the wrapped functions and variables, and - is located either in the _wrap.cxx file (with -Linkage module -) or in the scmstub file (if -Linkage passive -scmstub). + is located either in the _wrap.cxx file (with -Linkage module +) or in the scmstub file (if -Linkage passive -scmstub). The name of this guile-module is the swig-module name (given on the command line with the -module argument or with the %module directive) - concatenated with the string "-primitive". For example, if -%module Test is set in the swig interface file, the name of the - guile-module in the scmstub or -Linkage module will be -Test-primitive. Also, the scmstub file will be named -Test-primitive.scm. The string "primitive" can be changed by the --primsuffix swig argument. So the same interface, with the --primsuffix base will produce a module called Test-base + concatenated with the string "-primitive". For example, if +%module Test is set in the swig interface file, the name of the + guile-module in the scmstub or -Linkage module will be +Test-primitive. Also, the scmstub file will be named +Test-primitive.scm. The string "primitive" can be changed by the +-primsuffix swig argument. So the same interface, with the +-primsuffix base will produce a module called Test-base . The second generated guile-module contains all the GOOPS class - definitions and is located in a file named module.scm in the + definitions and is located in a file named module.scm in the directory specified with -outdir or the current directory. The name of this guile-module is the name of the swig-module (given on the command - line or with the %module directive). In the previous - example, the GOOPS definitions will be in a file named Test.scm.

    -

    Because of the naming conflicts, you can't in general use both the --primitive and the GOOPS guile-modules at the same time. To do + line or with the %module directive). In the previous + example, the GOOPS definitions will be in a file named Test.scm.

    +

    Because of the naming conflicts, you can't in general use both the +-primitive and the GOOPS guile-modules at the same time. To do this, you need to rename the exported symbols from one or both - guile-modules. For example,

    -
    -
    + guile-modules. For example,

    +
    +
     (use-modules ((Test-primitive) #:renamer (symbol-prefix-proc 'primitive:)))
     (use-modules ((Test) #:renamer (symbol-prefix-proc 'goops:)))
    -
    -
    -

    24.12.2 Linking

    -

    The guile-modules generated above all need to be linked together. +

    +
    +

    25.12.2 Linking

    +

    The guile-modules generated above all need to be linked together. GOOPS support requires either passive or module linkage. The exported GOOPS guile-module will be the name of the swig-module and should be - located in a file called Module.scm. This should be installed on - the autoload path for guile, so that (use-modules (Package - Module)) will load everything needed. Thus, the top of the + located in a file called Module.scm. This should be installed on + the autoload path for guile, so that (use-modules (Package + Module)) will load everything needed. Thus, the top of the GOOPS guile-module will contain code to load everything needed by the - interface (the shared library, the scmstub module, etc.). The -%goops directive inserts arbitrary code into the generated GOOPS - guile-module, and should be used to load the dependent libraries.

    -

    This breaks up into three cases

    -
      -
    • Passive Linkage without -scmstub: Note that this linkage + interface (the shared library, the scmstub module, etc.). The +%goops directive inserts arbitrary code into the generated GOOPS + guile-module, and should be used to load the dependent libraries.

      +

      This breaks up into three cases

      +
        +
      • Passive Linkage without -scmstub: Note that this linkage style has the potential for naming conflicts, since the primitive exported function and variable names are not wrapped in a guile-module and might conflict with names from the GOOPS guile-module (see above). - Pass the -goopsprefix argument to solve this problem. If the --exportprimitive option is passed to SWIG the (export ...) + Pass the -goopsprefix argument to solve this problem. If the +-exportprimitive option is passed to SWIG the (export ...) code that would be exported into the scmstub file is exported at the - bottom of the generated GOOPS guile-module. The %goops - directive should contain code to load the shared library.
        -
        + bottom of the generated GOOPS guile-module. The %goops
        + directive should contain code to load the shared library.
        +
         %goops %{ (load-extension "./libfoo.so" "scm_init_my_modules_foo_module") %}
        -
        -
        -

        Produces the following code at the top of the generated GOOPS - guile-module (with the -package my/modules -module foo - command line arguments)

        -
        -
        +
        +
        +

        Produces the following code at the top of the generated GOOPS + guile-module (with the -package my/modules -module foo + command line arguments)

        +
        +
         (define-module (my modules foo))
         
         ;; %goops directive goes here
         (load-extension "./libfoo.so" "scm_init_my_modules_foo_module") 
         
         (use-modules (oop goops) (Swig common))
        -
        -
      • -
      • -

        Passive Linkage with -scmstub: Here, the name of the scmstub - file should be Module-primitive.scm (with primitive - replaced with whatever is given with the -primsuffix - argument. The code to load the shared library should be located in the -%scheme directive, which will then be added to the scmstub file. - SWIG will automatically generate the line (use-modules ( -Package Module-primitive)) into the GOOPS - guile-module. So if Module-primitive.scm is on the autoload path - for guile, the %goops directive can be empty. Otherwise, - the %goops directive should contain whatever code is - needed to load the Module-primitive.scm file into guile.

        -
        -
        +
        +
      • +
      • +

        Passive Linkage with -scmstub: Here, the name of the scmstub + file should be Module-primitive.scm (with primitive + replaced with whatever is given with the -primsuffix + argument. The code to load the shared library should be located in the +%scheme directive, which will then be added to the scmstub file. + SWIG will automatically generate the line (use-modules ( +Package Module-primitive)) into the GOOPS + guile-module. So if Module-primitive.scm is on the autoload path + for guile, the %goops directive can be empty. Otherwise, + the %goops directive should contain whatever code is + needed to load the Module-primitive.scm file into guile.

        +
        +
         %scheme %{ (load-extension "./libfoo.so" "scm_init_my_modules_foo_module") %}
         // only include the following definition if (my modules foo) cannot
         // be loaded automatically
        @@ -28379,12 +28319,12 @@ Package Module-primitive)) into the GOOPS
           (primitive-load "/path/to/foo-primitive.scm") 
           (primitive-load "/path/to/Swig/common.scm")
         %}
        -
        -
        -

        Produces the following code at the top of the generated GOOPS - guile-module

        -
        -
        +
        +
        +

        Produces the following code at the top of the generated GOOPS + guile-module

        +
        +
         (define-module (my modules foo))
         
         ;; %goops directive goes here (if any)
        @@ -28395,23 +28335,23 @@ Package Module-primitive)) into the GOOPS
         (use-modules ((my modules foo-primitive) :renamer (symbol-prefix-proc
                                                                'primitive:)))
         
        -
        -
      • -
      • -

        Module Linkage: This is very similar to passive linkage with a - scmstub file. SWIG will also automatically generate the line -(use-modules (Package Module-primitive)) into the - GOOPS guile-module. Again the %goops directive should - contain whatever code is needed to get that module loaded into guile.

        -
        -
        +
        +
      • +
      • +

        Module Linkage: This is very similar to passive linkage with a + scmstub file. SWIG will also automatically generate the line +(use-modules (Package Module-primitive)) into the + GOOPS guile-module. Again the %goops directive should + contain whatever code is needed to get that module loaded into guile.

        +
        +
         %goops %{ (load-extension "./libfoo.so" "scm_init_my_modules_foo_module") %}
        -
        -
        -

        Produces the following code at the top of the generated GOOPS - guile-module

        -
        -
        +
        +
        +

        Produces the following code at the top of the generated GOOPS + guile-module

        +
        +
         (define-module (my modules foo))
         
         ;; %goops directive goes here (if any)
        @@ -28421,240 +28361,245 @@ Package Module-primitive)) into the GOOPS
         (use-modules ((my modules foo-primitive) :renamer (symbol-prefix-proc
                                                                  'primitive:)))
         
        -
        -
      • -
      -

      (Swig common): The generated GOOPS guile-module also imports + +

    • +
    +

    (Swig common): The generated GOOPS guile-module also imports definitions from the (Swig common) guile-module. This module is included with SWIG and should be installed by SWIG into the autoload path for guile (based on the configure script and whatever arguments - are passed). If it is not, then the %goops directive also - needs to contain code to load the common.scm file into + are passed). If it is not, then the %goops directive also + needs to contain code to load the common.scm file into guile. Also note that if you are trying to install the generated wrappers on a computer without SWIG installed, you will need to include - the common.swg file along with the install.

    -

    Multiple Modules: Type dependencies between modules is - supported. For example, if mod1 includes definitions of - some classes, and mod2 includes some classes derived from - classes in mod1, the generated GOOPS file for mod2 - will declare the correct superclasses. The only problem is that since -mod2 uses symbols from mod1, the mod2 - GOOPS file must include a (use-modules (mod2)). Currently, + the common.swg file along with the install.

    +

    Multiple Modules: Type dependencies between modules is + supported. For example, if mod1 includes definitions of + some classes, and mod2 includes some classes derived from + classes in mod1, the generated GOOPS file for mod2 + will declare the correct superclasses. The only problem is that since +mod2 uses symbols from mod1, the mod2 + GOOPS file must include a (use-modules (mod2)). Currently, SWIG does not automatically export this line; it must be included in - the %goops directive of mod2. Maybe in the + the %goops directive of mod2. Maybe in the future SWIG can detect dependencies and export this line. (how do other - language modules handle this problem?)

    + language modules handle this problem?)


    -

    25 SWIG and Java

    +

    26 SWIG and Java

    -
    - -
    +
    + +
    -

    This chapter describes SWIG's support of Java. It covers most SWIG +

    This chapter describes SWIG's support of Java. It covers most SWIG features, but certain low-level details are covered in less depth than - in earlier chapters.

    -

    25.1 Overview

    -

    The 100% Pure Java effort is a commendable concept, however in the + in earlier chapters.

    +

    26.1 Overview

    +

    The 100% Pure Java effort is a commendable concept, however in the real world programmers often either need to re-use their existing code or in some situations want to take advantage of Java but are forced into using some native (C/C++) code. The Java extension to SWIG makes @@ -28670,20 +28615,20 @@ mod2 uses symbols from mod1, the mod2 to generate any code to call into Java code from C++. However, SWIG now supports full cross language polymorphism and code is generated to call up from C++ to Java when wrapping C++ virtual methods via the director - feature.

    -

    Java is one of the few non-scripting language modules in SWIG. As + feature.

    +

    Java is one of the few non-scripting language modules in SWIG. As SWIG utilizes the type safety that the Java language offers, it takes a somewhat different approach to that used for scripting languages. In particular runtime type checking and the runtime library are not used by Java. This should be borne in mind when reading the rest of the SWIG documentation. This chapter on Java is relatively self contained and will provide you with nearly everything you need for using SWIG and - Java. However, the "SWIG Basics" chapter will be a - useful read in conjunction with this one.

    -

    This chapter starts with a few practicalities on running SWIG and + Java. However, the "SWIG Basics" chapter will be a + useful read in conjunction with this one.

    +

    This chapter starts with a few practicalities on running SWIG and compiling the generated code. If you are looking for the minimum amount - to read, have a look at the sections up to and including the -tour of basic C/C++ wrapping section which explains how to call the + to read, have a look at the sections up to and including the +tour of basic C/C++ wrapping section which explains how to call the various C/C++ code constructs from Java. Following this section are details of the C/C++ code and Java classes that SWIG generates. Due to the complexities of C and C++ there are different ways in which C/C++ @@ -28692,9 +28637,9 @@ tour of basic C/C++ wrapping section which explains how to call the tailored. Various customisation tips and techniques using SWIG directives are covered. The latter sections cover the advanced techniques of using typemaps for complete control of the wrapping - process.

    -

    25.2 Preliminaries

    -

    SWIG 1.1 works with JDKs from JDK 1.1 to JDK1.4 (Java 2 SDK1.4) and + process.

    +

    26.2 Preliminaries

    +

    SWIG 1.1 works with JDKs from JDK 1.1 to JDK1.4 (Java 2 SDK1.4) and should also work with any later versions. Given the choice, you should probably use the latest version of Sun's JDK. The SWIG Java module is known to work using Sun's JVM on Solaris, Linux and the various @@ -28703,131 +28648,131 @@ tour of basic C/C++ wrapping section which explains how to call the fledged JVM with full JNI support. The generated code is also known to work on vxWorks using WindRiver's PJava 3.1. The best way to determine whether your combination of operating system and JDK will work is to - test the examples and test-suite that comes with SWIG. Run make -k - check from the SWIG root directory after installing SWIG on Unix - systems.

    -

    The Java module requires your system to support shared libraries and + test the examples and test-suite that comes with SWIG. Run make -k + check from the SWIG root directory after installing SWIG on Unix + systems.

    +

    The Java module requires your system to support shared libraries and dynamic loading. This is the commonly used method to load JNI code so - your system will more than likely support this.

    -

    Android uses Java JNI and also works with SWIG. Please read the -Android chapter in conjunction with this one if you are targeting - Android.

    -

    25.2.1 Running SWIG

    -

    Suppose that you defined a SWIG module such as the following:

    -
    -
    + your system will more than likely support this.

    +

    Android uses Java JNI and also works with SWIG. Please read the +Android chapter in conjunction with this one if you are targeting + Android.

    +

    26.2.1 Running SWIG

    +

    Suppose that you defined a SWIG module such as the following:

    +
    +
     /* File: example.i */
     %module test
     %{
     #include "stuff.h"
     %}
     int fact(int n);
    -
    -
    -

    To build a Java module, run SWIG using the -java option :

    -
    -
    +
    +
    +

    To build a Java module, run SWIG using the -java option :

    +
    +
     %swig -java example.i
    -
    -
    -

    If building C++, add the -c++ option:

    -
    -
    +
    +
    +

    If building C++, add the -c++ option:

    +
    +
     $ swig -c++ -java example.i
    -
    -
    -

    This creates two different files; a C/C++ source file -example_wrap.c or example_wrap.cxx and numerous Java +

    +
    +

    This creates two different files; a C/C++ source file +example_wrap.c or example_wrap.cxx and numerous Java files. The generated C/C++ source file contains the JNI wrapper code that needs to be compiled and linked with the rest of your C/C++ - application.

    -

    The name of the wrapper file is derived from the name of the input - file. For example, if the input file is example.i, the name of - the wrapper file is example_wrap.c. To change this, you can - use the -o option. It is also possible to change the -output directory that the Java files are generated into using --outdir.

    -

    The module name, specified with %module, determines the - name of various generated classes as discussed -later. Note that the module name does not define a Java package and - by default, the generated Java classes do not have a Java package. The --package option described below can specify a Java package name to - use.

    -

    The following sections have further practical examples and details - on how you might go about compiling and using the generated files.

    -

    25.2.2 Additional Commandline Options

    -

    The following table lists the additional commandline options - available for the Java module. They can also be seen by using:

    -
    -
    + application.

    +

    The name of the wrapper file is derived from the name of the input + file. For example, if the input file is example.i, the name of + the wrapper file is example_wrap.c. To change this, you can + use the -o option. It is also possible to change the +output directory that the Java files are generated into using +-outdir.

    +

    The module name, specified with %module, determines the + name of various generated classes as discussed +later. Note that the module name does not define a Java package and + by default, the generated Java classes do not have a Java package. The +-package option described below can specify a Java package name to + use.

    +

    The following sections have further practical examples and details + on how you might go about compiling and using the generated files.

    +

    26.2.2 Additional Commandline Options

    +

    The following table lists the additional commandline options + available for the Java module. They can also be seen by using:

    +
    +
     swig -java -help 
    -
    -
    - - - - - - -
    Java specific options
    -nopgcppsuppress the premature garbage collection - prevention parameter
    -noproxygenerate the low-level functional interface - instead of proxy classes
    -package <name>set name of the Java package to <name>
    -

    Their use will become clearer by the time you have finished reading - this section on SWIG and Java.

    -

    25.2.3 Getting the right header - files

    -

    In order to compile the C/C++ wrappers, the compiler needs the -jni.h and jni_md.h header files which are part of the JDK. - They are usually in directories like this:

    -
    -
    +
    +
    + + + + + + +
    Java specific options
    -nopgcppsuppress the premature garbage collection + prevention parameter
    -noproxygenerate the low-level functional interface + instead of proxy classes
    -package <name>set name of the Java package to <name>
    +

    Their use will become clearer by the time you have finished reading + this section on SWIG and Java.

    +

    26.2.3 Getting the right header + files

    +

    In order to compile the C/C++ wrappers, the compiler needs the +jni.h and jni_md.h header files which are part of the JDK. + They are usually in directories like this:

    +
    +
     /usr/java/include
     /usr/java/include/<operating_system>
    -
    -
    -

    The exact location may vary on your machine, but the above locations - are typical.

    -

    25.2.4 Compiling a dynamic module -

    -

    The JNI code exists in a dynamic module or shared library (DLL on +

    +
    +

    The exact location may vary on your machine, but the above locations + are typical.

    +

    26.2.4 Compiling a dynamic module +

    +

    The JNI code exists in a dynamic module or shared library (DLL on Windows) and gets loaded by the JVM. Assuming you have code you need to - link to in a file called example.c, in order to build a shared + link to in a file called example.c, in order to build a shared library file, you need to compile your module in a manner similar to - the following (shown for Solaris):

    -
    -
    + the following (shown for Solaris):

    +
    +
     $ swig -java example.i
     $ gcc -fPIC -c example_wrap.c -I/usr/java/include -I/usr/java/include/solaris
     $ gcc -fPIC -c example.c
     $ ld -G example_wrap.o example.o -o libexample.so
    -
    -
    -

    The exact commands for doing this vary from platform to platform. +

    +
    +

    The exact commands for doing this vary from platform to platform. However, SWIG tries to guess the right options when it is installed. - Therefore, you may want to start with one of the examples in the -Examples/java directory. If that doesn't work, you will need to + Therefore, you may want to start with one of the examples in the +Examples/java directory. If that doesn't work, you will need to read the man-pages for your compiler and linker to get the right set of - options. You might also check the -SWIG Wiki for additional information.

    -

    Important -
    If you are going to use optimisations turned on with gcc (for + options. You might also check the +SWIG Wiki for additional information.

    +

    Important +
    If you are going to use optimisations turned on with gcc (for example -O2), ensure you also compile with -fno-strict-aliasing. The GCC optimisations have become more aggressive from gcc-4.0 onwards and will result in code that fails with strict aliasing optimisations - turned on. See the C/C++ to - Java typemaps section for more details.

    -

    The name of the shared library output file is important. If the name - of your SWIG module is "example", the name of the - corresponding shared library file should be "libexample.so" - (or equivalent depending on your machine, see -Dynamic linking problems for more information). The name of the - module is specified using the %module directive or -module - command line option.

    -

    25.2.5 Using your module

    -

    To load your shared native library module in Java, simply use Java's - System.loadLibrary method in a Java class:

    -
    -
    + turned on. See the C/C++ to
    + Java typemaps section for more details.

    +

    The name of the shared library output file is important. If the name + of your SWIG module is "example", the name of the + corresponding shared library file should be "libexample.so" + (or equivalent depending on your machine, see +Dynamic linking problems for more information). The name of the + module is specified using the %module directive or -module + command line option.

    +

    26.2.5 Using your module

    +

    To load your shared native library module in Java, simply use Java's + System.loadLibrary method in a Java class:

    +
    +
     // runme.java
     
     public class runme {
    @@ -28839,61 +28784,61 @@ public class runme {
         System.out.println(example.fact(4));
       }
     }
    -
    -
    -

    Compile all the Java files and run:

    -
    -
    +
    +
    +

    Compile all the Java files and run:

    +
    +
     $ javac *.java
     $ java runme
     24
     $
    -
    -
    -

    If it doesn't work have a look at the following section which - discusses problems loading the shared library.

    -

    25.2.6 Dynamic linking - problems

    -

    As shown in the previous section the code to load a native library - (shared library) is System.loadLibrary("name"). This can fail +

    +
    +

    If it doesn't work have a look at the following section which + discusses problems loading the shared library.

    +

    26.2.6 Dynamic linking + problems

    +

    As shown in the previous section the code to load a native library + (shared library) is System.loadLibrary("name"). This can fail with an UnsatisfiedLinkError exception and can be due to a number of - reasons.

    -

    You may get an exception similar to this:

    -
    -
    + reasons.

    +

    You may get an exception similar to this:

    +
    +
     $ java runme
     Exception in thread "main" java.lang.UnsatisfiedLinkError: no example in java.library.path
             at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1312)
             at java.lang.Runtime.loadLibrary0(Runtime.java:749)
             at java.lang.System.loadLibrary(System.java:820)
             at runme.<clinit>(runme.java:5)
    -
    -
    -

    The most common cause for this is an incorrect naming of the native - library for the name passed to the loadLibrary function. The - string passed to the loadLibrary function must not include the - file extension name in the string, that is .dll or .so. - The string must be name and not libname for all - platforms. On Windows the native library must then be called - name.dll and on most Unix systems it must be called libname.so -.

    -

    Another common reason for the native library not loading is because - it is not in your path. On Windows make sure the path +

    +
    +

    The most common cause for this is an incorrect naming of the native + library for the name passed to the loadLibrary function. The + string passed to the loadLibrary function must not include the + file extension name in the string, that is .dll or .so. + The string must be name and not libname for all + platforms. On Windows the native library must then be called + name.dll and on most Unix systems it must be called libname.so +.

    +

    Another common reason for the native library not loading is because + it is not in your path. On Windows make sure the path environment variable contains the path to the native library. On Unix - make sure that your LD_LIBRARY_PATH contains the path to the - native library. Adding paths to LD_LIBRARY_PATH can slow down + make sure that your LD_LIBRARY_PATH contains the path to the + native library. Adding paths to LD_LIBRARY_PATH can slow down other programs on your system so you may want to consider alternative approaches. For example you could recompile your native library with - extra path information using -rpath if you're using GNU, see - the GNU linker documentation (ld man page). You could use a - command such as ldconfig (Linux) or crle (Solaris) to + extra path information using -rpath if you're using GNU, see + the GNU linker documentation (ld man page). You could use a + command such as ldconfig (Linux) or crle (Solaris) to add additional search paths to the default system configuration (this - requires root access and you will need to read the man pages).

    -

    The native library will also not load if there are any unresolved + requires root access and you will need to read the man pages).

    +

    The native library will also not load if there are any unresolved symbols in the compiled C/C++ code. The following exception is - indicative of this:

    -
    -
    + indicative of this:

    +
    +
     $ java runme
     Exception in thread "main" java.lang.UnsatisfiedLinkError: libexample.so: undefined
     symbol: fact
    @@ -28904,143 +28849,143 @@ symbol: fact
             at java.lang.System.loadLibrary(System.java, Compiled Code)
             at runme.<clinit>(runme.java:5)
     $
    -
    -
    -

    This error usually indicates that you forgot to include some object +

    +
    +

    This error usually indicates that you forgot to include some object files or libraries in the linking of the native library file. Make sure you compile both the SWIG wrapper file and the code you are wrapping into the native library file. If you forget to compile and link in the SWIG wrapper file into your native library file, you will get a message - similar to the following:

    -
    -
    + similar to the following:

    +
    +
     $ java runme
     Exception in thread "main" java.lang.UnsatisfiedLinkError: exampleJNI.gcd(II)I
             at exampleJNI.gcd(Native Method)
             at example.gcd(example.java:12)
             at runme.main(runme.java:18)
    -
    -
    -

    where gcd is the missing JNI function that SWIG generated +

    +
    +

    where gcd is the missing JNI function that SWIG generated into the wrapper file. Also make sure you pass all of the required - libraries to the linker. The java -verbose:jni commandline - switch is also a great way to get more information on unresolved + libraries to the linker. The java -verbose:jni commandline + option is also a great way to get more information on unresolved symbols. One last piece of advice is to beware of the common faux pas - of having more than one native library version in your path.

    -

    In summary, ensure that you are using the correct C/C++ compiler and + of having more than one native library version in your path.

    +

    In summary, ensure that you are using the correct C/C++ compiler and linker combination and options for successful native library loading. If you are using the examples that ship with SWIG, then the Examples/Makefile must have these set up correctly for your system. The SWIG installation package makes a best attempt at getting these correct - but does not get it right 100% of the time. The -SWIG Wiki also has some settings for commonly used compiler and + but does not get it right 100% of the time. The +SWIG Wiki also has some settings for commonly used compiler and operating system combinations. The following section also contains some - C++ specific linking problems and solutions.

    -

    25.2.7 Compilation problems - and compiling with C++

    -

    On most machines, shared library files should be linked using the - C++ compiler. For example:

    -
    -
    + C++ specific linking problems and solutions.

    +

    26.2.7 Compilation problems + and compiling with C++

    +

    On most machines, shared library files should be linked using the + C++ compiler. For example:

    +
    +
     % swig -c++ -java example.i
     % g++ -c -fpic example.cxx
     % g++ -c -fpic example_wrap.cxx -I/usr/java/j2sdk1.4.1/include -I/usr/java/j2sdk1.4.1/include/linux
     % g++ -shared example.o example_wrap.o -o libexample.so
    -
    -
    -

    In addition to this, you may need to include additional library +

    +
    +

    In addition to this, you may need to include additional library files to make it work. For example, if you are using the Sun C++ - compiler on Solaris, you often need to add an extra library -lCrun - like this:

    -
    -
    + compiler on Solaris, you often need to add an extra library -lCrun
    + like this:

    +
    +
     % swig -c++ -java example.i
     % CC -c example.cxx
     % CC -c example_wrap.cxx -I/usr/java/include -I/usr/java/include/solaris
     % CC -G example.o example_wrap.o -L/opt/SUNWspro/lib -o libexample.so -lCrun
    -
    -
    -

    If you aren't entirely sure about the linking for C++, you might - look at an existing C++ program. On many Unix machines, the ldd +

    +
    +

    If you aren't entirely sure about the linking for C++, you might + look at an existing C++ program. On many Unix machines, the ldd command will list library dependencies. This should give you some clues about what you might have to include when you link your shared library. - For example:

    -
    -
    + For example:

    +
    +
     $ ldd swig
             libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x40019000)
             libm.so.6 => /lib/libm.so.6 (0x4005b000)
             libc.so.6 => /lib/libc.so.6 (0x40077000)
             /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
     $
    -
    -
    -

    Finally make sure the version of JDK header files matches the +

    +
    +

    Finally make sure the version of JDK header files matches the version of Java that you are running as incompatibilities could lead to - compilation problems or unpredictable behaviour.

    -

    25.2.8 Building on Windows

    -

    Building on Windows is roughly similar to the process used with + compilation problems or unpredictable behaviour.

    +

    26.2.8 Building on Windows

    +

    Building on Windows is roughly similar to the process used with Unix. You will want to produce a DLL that can be loaded by the Java Virtual Machine. This section covers the process of using SWIG with Microsoft Visual C++ 6 although the procedure may be similar with other compilers. In order for everything to work, you will need to have a JDK - installed on your machine in order to read the JNI header files.

    -

    25.2.8.1 Running SWIG from Visual - Studio

    -

    If you are developing your application within Microsoft Visual + installed on your machine in order to read the JNI header files.

    +

    26.2.8.1 Running SWIG from Visual + Studio

    +

    If you are developing your application within Microsoft Visual studio, SWIG can be invoked as a custom build option. The Examples\java - directory has a few Windows Examples + directory has a few Windows Examples containing Visual Studio project (.dsp) files. The process to re-create - the project files for a C project are roughly:

    -
      -
    • Open up a new workspace and use the AppWizard to select a DLL - project.
    • -
    • Add both the SWIG interface file (the .i file), any supporting C + the project files for a C project are roughly:

      +
        +
      • Open up a new workspace and use the AppWizard to select a DLL + project.
      • +
      • Add both the SWIG interface file (the .i file), any supporting C files, and the name of the wrapper file that will be created by SWIG - (ie. example_wrap.c). Don't worry if the wrapper file doesn't - exist yet--Visual Studio will keep a reference to it.
      • -
      • Select the SWIG interface file and go to the settings menu. Under - settings, select the "Custom Build" option.
      • -
      • Enter "SWIG" in the description field.
      • -
      • Enter "swig -java -o $(ProjDir)\$(InputName)_wrap.c $(InputPath) -" in the "Build command(s) field"
      • -
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output - files(s) field".
      • -
      • Next, select the settings for the entire project and go to C/C++ tab + (ie. example_wrap.c). Don't worry if the wrapper file doesn't + exist yet--Visual Studio will keep a reference to it.
      • +
      • Select the SWIG interface file and go to the settings menu. Under + settings, select the "Custom Build" option.
      • +
      • Enter "SWIG" in the description field.
      • +
      • Enter "swig -java -o $(ProjDir)\$(InputName)_wrap.c $(InputPath) +" in the "Build command(s) field"
      • +
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output + files(s) field".
      • +
      • Next, select the settings for the entire project and go to C/C++ tab and select the Preprocessor category. Add the include directories to the JNI header files under "Additional include directories", eg - "C:\jdk1.3\include, C:\jdk1.3\include\win32".
      • -
      • Next, select the settings for the entire project and go to Link tab + "C:\jdk1.3\include, C:\jdk1.3\include\win32".
      • +
      • Next, select the settings for the entire project and go to Link tab and select the General category. Set the name of the output file to - match the name of your Java module (ie. example.dll).
      • -
      • Next, select the example.c and example_wrap.c files and go to the + match the name of your Java module (ie. example.dll).
      • +
      • Next, select the example.c and example_wrap.c files and go to the C/C++ tab and select the Precompiled Headers tab in the project settings. Disabling precompiled headers for these files will overcome - any precompiled header errors while building.
      • -
      • Finally, add the java compilation as a post build rule in the + any precompiled header errors while building.
      • +
      • Finally, add the java compilation as a post build rule in the Post-build step tab in project settings, eg, "c:\jdk1.3\bin\javac - *.java"
      • -
      • Build your project.
      • -
      -

      Note: If using C++, choose a C++ suffix for the wrapper file, for - example example_wrap.cxx. Use _wrap.cxx instead of -_wrap.c in the instructions above and add -c++ when invoking swig.

      -

      Now, assuming all went well, SWIG will be automatically invoked when + *.java"

    • +
    • Build your project.
    • +
    +

    Note: If using C++, choose a C++ suffix for the wrapper file, for + example example_wrap.cxx. Use _wrap.cxx instead of +_wrap.c in the instructions above and add -c++ when invoking swig.

    +

    Now, assuming all went well, SWIG will be automatically invoked when you build your project. When doing a build, any changes made to the interface file will result in SWIG being automatically invoked to - produce a new version of the wrapper file.

    -

    The Java classes that SWIG output should also be compiled into + produce a new version of the wrapper file.

    +

    The Java classes that SWIG output should also be compiled into .class files. To run the native code in the DLL (example.dll), make sure that it is in your path then run your Java program which uses it, as described in the previous section. If the library fails to load have - a look at Dynamic linking - problems.

    -

    25.2.8.2 Using NMAKE

    -

    Alternatively, a Makefile for use by NMAKE can be written. Make sure + a look at Dynamic linking + problems.

    +

    26.2.8.2 Using NMAKE

    +

    Alternatively, a Makefile for use by NMAKE can be written. Make sure the environment variables for MSVC++ are available and the MSVC++ tools - are in your path. Now, just write a short Makefile like this :

    -
    -
    + are in your path. Now, just write a short Makefile like this :

    +
    +
     # Makefile for using SWIG and Java for C code
     
     SRCS          = example.c
    @@ -29082,89 +29027,89 @@ java::
             set LIB=$(TOOLS)\lib
             $(LINK) $(LOPT) -out:example.dll $(LIBS) example.obj example_wrap.obj
             javac *.java
    -
    -
    -

    To build the DLL and compile the java code, run NMAKE (you may need - to run vcvars32 first). This is a pretty simplistic Makefile, +

    +
    +

    To build the DLL and compile the java code, run NMAKE (you may need + to run vcvars32 first). This is a pretty simplistic Makefile, but hopefully its enough to get you started. Of course you may want to make changes for it to work for C++ by adding in the -c++ command line - switch for swig and replacing .c with .cxx.

    -

    25.3 A tour of basic C/C++ wrapping

    -

    By default, SWIG attempts to build a natural Java interface to your + option for swig and replacing .c with .cxx.

    +

    26.3 A tour of basic C/C++ wrapping

    +

    By default, SWIG attempts to build a natural Java interface to your C/C++ code. Functions are wrapped as functions, classes are wrapped as classes, variables are wrapped with JavaBean type getters and setters and so forth. This section briefly covers the essential aspects of this - wrapping.

    -

    25.3.1 Modules, packages and - generated Java classes

    -

    The SWIG %module directive specifies the name of the Java - module. When you specify `%module example', the module name + wrapping.

    +

    26.3.1 Modules, packages and + generated Java classes

    +

    The SWIG %module directive specifies the name of the Java + module. When you specify `%module example', the module name determines the name of some of the generated files in the module. The - generated code consists of a module class file example.java -, an intermediary JNI class file, exampleJNI.java as - well as numerous other Java proxy class files. Each proxy class + generated code consists of a module class file example.java +, an intermediary JNI class file, exampleJNI.java as + well as numerous other Java proxy class files. Each proxy class is named after the structs, unions and classes you are wrapping. You - may also get a constants interface file if you are wrapping any - unnamed enumerations or constants, for example -exampleConstants.java. When choosing a module name, make sure you + may also get a constants interface file if you are wrapping any + unnamed enumerations or constants, for example +exampleConstants.java. When choosing a module name, make sure you don't use the same name as one of the generated proxy class files nor a Java keyword. Sometimes a C/C++ type cannot be wrapped by a proxy - class, for example a pointer to a primitive type. In these situations a - type wrapper class is generated. Wrapping an enum generates an - enum class, either a proper Java enum or a Java class that + class, for example a pointer to a primitive type. In these situations a + type wrapper class is generated. Wrapping an enum generates an + enum class, either a proper Java enum or a Java class that simulates the enums pattern. Details of all these generated classes - will unfold as you read this section.

    -

    The JNI (C/C++) code is generated into a file which also contains - the module name, for example example_wrap.cxx or -example_wrap.c. These C or C++ files complete the contents of the - module.

    -

    The generated Java classes can be placed into a Java package by - using the -package commandline option. This is often combined - with the -outdir to specify a package directory for generating - the Java files.

    -
    -
    + will unfold as you read this section.

    +

    The JNI (C/C++) code is generated into a file which also contains + the module name, for example example_wrap.cxx or +example_wrap.c. These C or C++ files complete the contents of the + module.

    +

    The generated Java classes can be placed into a Java package by + using the -package commandline option. This is often combined + with the -outdir to specify a package directory for generating + the Java files.

    +
    +
     swig -java -package com.bloggs.swig -outdir com/bloggs/swig example.i
    -
    -
    -

    SWIG won't create the directory, so make sure it exists beforehand.

    -

    25.3.2 Functions

    -

    There is no such thing as a global Java function so global C +

    +
    +

    SWIG won't create the directory, so make sure it exists beforehand.

    +

    26.3.2 Functions

    +

    There is no such thing as a global Java function so global C functions are wrapped as static methods in the module class. For - example,

    -
    -
    + example,

    +
    +
     %module example
     int fact(int n);
     
    -
    -
    -

    creates a static function that works exactly like you think it - might:

    -
    -
    +
    +
    +

    creates a static function that works exactly like you think it + might:

    +
    +
     public class example {
       public static int fact(int n) {
         // makes call using JNI to the C function
       }
     }
    -
    -
    -

    The Java class example is the module class. The - function can be used as follows from Java:

    -
    -
    +
    +
    +

    The Java class example is the module class. The + function can be used as follows from Java:

    +
    +
     System.out.println(example.fact(4));
    -
    -
    -

    25.3.3 Global variables

    -

    C/C++ global variables are fully supported by SWIG. Java does not +

    +
    +

    26.3.3 Global variables

    +

    C/C++ global variables are fully supported by SWIG. Java does not allow the overriding of the dot operator so all variables are accessed through getters and setters. Again because there is no such thing as a Java global variable, access to C/C++ global variables is done through - static getter and setter functions in the module class.

    -
    -
    + static getter and setter functions in the module class.

    +
    +
     // SWIG interface file with global variables
     %module example
     ...
    @@ -29173,98 +29118,98 @@ extern int My_variable;
     extern double density;
     %}
     ...
    -
    -
    -

    Now in Java :

    -
    -
    +
    +
    +

    Now in Java :

    +
    +
     // Print out value of a C global variable
     System.out.println("My_variable = " + example.getMy_variable());
     // Set the value of a C global variable
     example.setDensity(0.8442);
    -
    -
    -

    The value returned by the getter will always be up to date even if +

    +
    +

    The value returned by the getter will always be up to date even if the value is changed in C. Note that the getters and setters produced follow the JavaBean property design pattern. That is the first letter of the variable name is capitalized and preceded with set or get. If you have the misfortune of wrapping two variables that differ only in the capitalization of their first letters, use %rename to change one of - the variable names. For example:

    -
    -
    + the variable names. For example:

    +
    +
     %rename Clash RenamedClash;
     float Clash;
     int clash;
    -
    -
    -

    If a variable is declared as const, it is wrapped as a - read-only variable. That is only a getter is produced.

    -

    To make ordinary variables read-only, you can use the %immutable - directive. For example:

    -
    -
    +
    +
    +

    If a variable is declared as const, it is wrapped as a + read-only variable. That is only a getter is produced.

    +

    To make ordinary variables read-only, you can use the %immutable + directive. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable;
     extern char *path;
     %mutable;
    -
    -
    -

    The %immutable directive stays in effect until it is - explicitly disabled or cleared using %mutable. See the -Creating read-only variables section for further details.

    -

    If you just want to make a specific variable immutable, supply a - declaration name. For example:

    -
    -
    +
    +
    +

    The %immutable directive stays in effect until it is + explicitly disabled or cleared using %mutable. See the +Creating read-only variables section for further details.

    +

    If you just want to make a specific variable immutable, supply a + declaration name. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable path;
     ...
     extern char *path;      // Read-only (due to %immutable)
    -
    -
    -

    25.3.4 Constants

    -

    C/C++ constants are wrapped as Java static final variables. To - create a constant, use #define or the %constant - directive. For example:

    -
    -
    +
    +
    +

    26.3.4 Constants

    +

    C/C++ constants are wrapped as Java static final variables. To + create a constant, use #define or the %constant + directive. For example:

    +
    +
     #define PI 3.14159
     #define VERSION "1.0"
     %constant int FOO = 42;
     %constant const char *path = "/usr/local";
    -
    -
    -

    By default the generated static final variables are initialized by +

    +
    +

    By default the generated static final variables are initialized by making a JNI call to get their value. The constants are generated into - the constants interface and look like this:

    -
    -
    + the constants interface and look like this:

    +
    +
     public interface exampleConstants {
       public final static double PI = exampleJNI.PI_get();
       public final static String VERSION = exampleJNI.VERSION_get();
       public final static int FOO = exampleJNI.FOO_get();
       public final static String path = exampleJNI.path_get();
     }
    -
    -
    -

    Note that SWIG has inferred the C type and used an appropriate Java +

    +
    +

    Note that SWIG has inferred the C type and used an appropriate Java type that will fit the range of all possible values for the C type. By - default SWIG generates runtime constants. They are not - compiler constants that can, for example, be used in a switch - statement. This can be changed by using the %javaconst(flag) - directive. It works like all the other -%feature directives. The default is %javaconst(0). It is + default SWIG generates runtime constants. They are not + compiler constants that can, for example, be used in a switch + statement. This can be changed by using the %javaconst(flag) + directive. It works like all the other +%feature directives. The default is %javaconst(0). It is possible to initialize all wrapped constants from pure Java code by - placing a %javaconst(1) before SWIG parses the + placing a %javaconst(1) before SWIG parses the constants. Putting it at the top of your interface file would ensure - this. Here is an example:

    -
    -
    + this. Here is an example:

    +
    +
     %javaconst(1);
     %javaconst(0) BIG;
     %javaconst(0) LARGE;
    @@ -29272,43 +29217,43 @@ public interface exampleConstants {
     #define EXPRESSION (0x100+5)
     #define BIG 1000LL
     #define LARGE 2000ULL
    -
    -
    -

    generates:

    -
    -
    +
    +
    +

    generates:

    +
    +
     public interface exampleConstants {
       public final static int EXPRESSION = (0x100+5);
       public final static long BIG = exampleJNI.BIG_get();
       public final static java.math.BigInteger LARGE = exampleJNI.LARGE_get();
     }
    -
    -
    -

    Note that SWIG has inferred the C long long type from -BIG and used an appropriate Java type (long) as a Java -long is the smallest sized Java type that will take all possible - values for a C long long. Similarly for LARGE.

    -

    Be careful using the %javaconst(1) directive as not all C - code will compile as Java code. For example neither the 1000LL - value for BIG nor 2000ULL for LARGE above +

    +
    +

    Note that SWIG has inferred the C long long type from +BIG and used an appropriate Java type (long) as a Java +long is the smallest sized Java type that will take all possible + values for a C long long. Similarly for LARGE.

    +

    Be careful using the %javaconst(1) directive as not all C + code will compile as Java code. For example neither the 1000LL + value for BIG nor 2000ULL for LARGE above would generate valid Java code. The example demonstrates how you can - target particular constants (BIG and LARGE) with -%javaconst. SWIG doesn't use %javaconst(1) as the default + target particular constants (BIG and LARGE) with +%javaconst. SWIG doesn't use %javaconst(1) as the default as it tries to generate code that will always compile. However, using a - %javaconst(1) at the top of your interface file is strongly + %javaconst(1) at the top of your interface file is strongly recommended as the preferred compile time constants will be generated and most C constants will compile as Java code and in any case the odd - constant that doesn't can be fixed using %javaconst(0).

    -

    There is an alternative directive which can be used for these rare - constant values that won't compile as Java code. This is the -%javaconstvalue(value) directive, where value is a Java + constant that doesn't can be fixed using %javaconst(0).

    +

    There is an alternative directive which can be used for these rare + constant values that won't compile as Java code. This is the +%javaconstvalue(value) directive, where value is a Java code replacement for the C constant and can be either a string or a number. This is useful if you do not want to use either the parsed C value nor a JNI call, such as when the C parsed value will not compile as Java code and a compile time constant is required. The same example - demonstrates this:

    -
    -
    + demonstrates this:

    +
    +
     %javaconst(1);
     %javaconstvalue("new java.math.BigInteger(\"2000\")") LARGE;
     %javaconstvalue(1000) BIG;
    @@ -29316,49 +29261,49 @@ long is the smallest sized Java type that will take all possible
     #define EXPRESSION (0x100+5)
     #define BIG 1000LL
     #define LARGE 2000ULL
    -
    -
    -

    Note the string quotes for "2000" are escaped. The - following is then generated:

    -
    -
    +
    +
    +

    Note the string quotes for "2000" are escaped. The + following is then generated:

    +
    +
     public interface exampleConstants {
       public final static int EXPRESSION = (0x100+5);
       public final static long BIG = 1000;
       public final static java.math.BigInteger LARGE = new java.math.BigInteger("2000");
     }
    -
    -
    -

    Note: declarations declared as const are wrapped as +

    +
    +

    Note: declarations declared as const are wrapped as read-only variables and will be accessed using a getter as described in the previous section. They are not wrapped as constants. The exception to this rule are static const integral values defined within a - class/struct, where they are wrapped as constants, eg:.

    -
    -
    + class/struct, where they are wrapped as constants, eg:.

    +
    +
     struct Maths {
       static const int FIVE = 5;
     };
    -
    -
    -

    Compatibility Note: In SWIG-1.3.19 and earlier releases, the +

    +
    +

    Compatibility Note: In SWIG-1.3.19 and earlier releases, the constants were generated into the module class and the constants interface didn't exist. Backwards compatibility is maintained as the module class implements the constants interface (even though some - consider this type of interface implementation to be bad practice):

    -
    -
    + consider this type of interface implementation to be bad practice):

    +
    +
     public class example implements exampleConstants {
     }
    -
    -
    -

    You thus have the choice of accessing these constants from either - the module class or the constants interface, for example, -example.EXPRESSION or exampleConstants.EXPRESSION. Or if - you decide this practice isn't so bad and your own class implements -exampleConstants, you can of course just use EXPRESSION.

    -

    25.3.5 Enumerations

    -

    SWIG handles both named and unnamed (anonymous) enumerations. There +

    +
    +

    You thus have the choice of accessing these constants from either + the module class or the constants interface, for example, +example.EXPRESSION or exampleConstants.EXPRESSION. Or if + you decide this practice isn't so bad and your own class implements +exampleConstants, you can of course just use EXPRESSION.

    +

    26.3.5 Enumerations

    +

    SWIG handles both named and unnamed (anonymous) enumerations. There is a choice of approaches to wrapping named C/C++ enums. This is due to historical reasons as SWIG's initial support for enums was limited and Java did not originally have support for enums. Each approach has @@ -29368,19 +29313,19 @@ exampleConstants, you can of course just use EXPRESSION.

    typesafe enum pattern. The second generates proper Java enums. The final two approaches use simple integers for each enum item. Before looking at the various approaches for wrapping named C/C++ enums, - anonymous enums are considered.

    -

    25.3.5.1 Anonymous enums

    -

    There is no name for anonymous enums and so they are handled like - constants. For example:

    -
    -
    + anonymous enums are considered.

    +

    26.3.5.1 Anonymous enums

    +

    There is no name for anonymous enums and so they are handled like + constants. For example:

    +
    +
     enum { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    is wrapped into the constants interface, in a similar manner as - constants (see previous section):

    -
    -
    +
    +
    +

    is wrapped into the constants interface, in a similar manner as + constants (see previous section):

    +
    +
     public interface exampleConstants {
       public final static int ALE = exampleJNI.ALE_get();
       public final static int LAGER = exampleJNI.LAGER_get();
    @@ -29388,28 +29333,28 @@ public interface exampleConstants {
       public final static int PILSNER = exampleJNI.PILSNER_get();
       public final static int PILZ = exampleJNI.PILZ_get();
     }
    -
    -
    -

    The %javaconst(flag) and %javaconstvalue(value) +

    +
    +

    The %javaconst(flag) and %javaconstvalue(value) directive introduced in the previous section on constants can also be - used with enums. As is the case for constants, the default is -%javaconst(0) as not all C values will compile as Java code. - However, it is strongly recommended to add in a %javaconst(1) + used with enums. As is the case for constants, the default is +%javaconst(0) as not all C values will compile as Java code. + However, it is strongly recommended to add in a %javaconst(1) directive at the top of your interface file as it is only on very rare occasions that this will produce code that won't compile under Java. - Using %javaconst(1) will ensure compile time constants are + Using %javaconst(1) will ensure compile time constants are generated, thereby allowing the enum values to be used in Java switch - statements. Example usage:

    -
    -
    + statements. Example usage:

    +
    +
     %javaconst(1);
     %javaconst(0) PILSNER;
     enum { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    generates:

    -
    -
    +
    +
    +

    generates:

    +
    +
     public interface exampleConstants {
       public final static int ALE = 0;
       public final static int LAGER = 10;
    @@ -29417,28 +29362,28 @@ public interface exampleConstants {
       public final static int PILSNER = exampleJNI.PILSNER_get();
       public final static int PILZ = PILSNER;
     }
    -
    -
    -

    As in the case of constants, you can access them through either the - module class or the constants interface, for example, example.ALE - or exampleConstants.ALE.

    -

    25.3.5.2 Typesafe enums

    -

    This is the default approach to wrapping named enums. The typesafe +

    +
    +

    As in the case of constants, you can access them through either the + module class or the constants interface, for example, example.ALE + or exampleConstants.ALE.

    +

    26.3.5.2 Typesafe enums

    +

    This is the default approach to wrapping named enums. The typesafe enum pattern is a relatively well known construct to work around the lack of enums in versions of Java prior to JDK 1.5. It basically defines a class for the enumeration and permits a limited number of final static instances of the class. Each instance equates to an enum item within the enumeration. The implementation is in the - "enumtypesafe.swg" file. Let's look at an example:

    -
    -
    + "enumtypesafe.swg" file. Let's look at an example:

    +
    +
     %include "enumtypesafe.swg" // optional as typesafe enums are the default
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    will generate:

    -
    -
    +
    +
    +

    will generate:

    +
    +
     public final class Beverage {
       public final static Beverage ALE = new Beverage("ALE");
       public final static Beverage LAGER = new Beverage("LAGER", exampleJNI.LAGER_get());
    @@ -29447,24 +29392,24 @@ public final class Beverage {
       public final static Beverage PILZ = new Beverage("PILZ", exampleJNI.PILZ_get());
       [... additional support methods omitted for brevity ...]
     }
    -
    -
    -

    See Typesafe enum classes +

    +
    +

    See Typesafe enum classes to see the omitted support methods. Note that the enum item with an initializer (LAGER) is initialized with the enum value obtained via a - JNI call. However, as with anonymous enums and constants, use of the -%javaconst directive is strongly recommended to change this - behaviour:

    -
    -
    + JNI call. However, as with anonymous enums and constants, use of the 
    +%javaconst directive is strongly recommended to change this
    + behaviour:

    +
    +
     %include "enumtypesafe.swg" // optional as typesafe enums are the default
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    will generate:

    -
    -
    +
    +
    +

    will generate:

    +
    +
     public final class Beverage {
       public final static Beverage ALE = new Beverage("ALE");
       public final static Beverage LAGER = new Beverage("LAGER", 10);
    @@ -29473,39 +29418,37 @@ public final class Beverage {
       public final static Beverage PILZ = new Beverage("PILZ", PILSNER);
       [... additional support methods omitted for brevity ...]
     }
    -
    -
    -

    The generated code is easier to read and more efficient as a true +

    +
    +

    The generated code is easier to read and more efficient as a true constant is used instead of a JNI call. As is the case for constants, - the default is %javaconst(0) as not all C values will compile - as Java code. However, it is recommended to add in a %javaconst(1) + the default is %javaconst(0) as not all C values will compile + as Java code. However, it is recommended to add in a %javaconst(1) directive at the top of your interface file as it is only on very rare occasions that this will produce code that won't compile under Java. - The %javaconstvalue(value) directive can also be used for + The %javaconstvalue(value) directive can also be used for typesafe enums. Note that global enums are generated into a Java class within whatever package you are using. C++ enums defined within a C++ class are generated into a static final inner Java class within the - Java proxy class.

    -

    Typesafe enums have their advantages over using plain integers in + Java proxy class.

    +

    Typesafe enums have their advantages over using plain integers in that they can be used in a typesafe manner. However, there are limitations. For example, they cannot be used in switch statements and serialization is an issue. Please look at the following references for - further information: - http://java.sun.com/developer/Books/shiftintojava/page1.html#replaceenums - -Replace Enums with Classes in Effective Java Programming on - the Sun website, -Create enumerated constants in Java JavaWorld article, -Java Tip 133: More on typesafe enums and -Java Tip 122: Beware of Java typesafe enumerations JavaWorld tips.

    -

    Note that the syntax required for using typesafe enums is the same + further information: +Replace Enums with Classes in Effective Java Programming on + the Sun website, +Create enumerated constants in Java JavaWorld article, +Java Tip 133: More on typesafe enums and +Java Tip 122: Beware of Java typesafe enumerations JavaWorld tips.

    +

    Note that the syntax required for using typesafe enums is the same as that for proper Java enums. This is useful during the period that a project has to support legacy versions of Java. When upgrading to JDK 1.5 or later, proper Java enums could be used instead, without users having to change their code. The following section details proper Java - enum generation.

    -

    25.3.5.3 Proper Java enums

    -

    Proper Java enums were only introduced in JDK 1.5 so this approach + enum generation.

    +

    26.3.5.3 Proper Java enums

    +

    Proper Java enums were only introduced in JDK 1.5 so this approach is only compatible with more recent versions of Java. Java enums have been designed to overcome all the limitations of both typesafe and type unsafe enums and should be the choice solution, provided older versions @@ -29516,17 +29459,17 @@ Java Tip 122: Beware of Java typesafe enumerations JavaWorld tips.

    SWIG takes advantage of this feature to facilitate wrapping C/C++ enums that have initializers. In order to wrap all possible C/C++ enums using proper Java enums, the "enums.swg" file must be used. Let's take a look - at an example.

    -
    -
    + at an example.

    +
    +
     %include "enums.swg"
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    will generate:

    -
    -
    +
    +
    +

    will generate:

    +
    +
     public enum Beverage {
       ALE,
       LAGER(10),
    @@ -29535,38 +29478,38 @@ public enum Beverage {
       PILZ(PILSNER);
       [... additional support methods omitted for brevity ...]
     }
    -
    -
    -

    See Proper Java enum classes +

    +
    +

    See Proper Java enum classes to see the omitted support methods. The generated Java enum has numerous additional methods to support enums with initializers, such as - LAGER above. Note that as with the typesafe enum pattern, enum + LAGER above. Note that as with the typesafe enum pattern, enum items with initializers are by default initialized with the enum value obtained via a JNI call. However, this is not the case above as we have - used the recommended %javaconst(1) to avoid the JNI call. The -%javaconstvalue(value) directive covered in the -Constants section can also be used for proper Java enums.

    -

    The additional support methods need not be generated if none of the - enum items have initializers and this is covered later in the -Simpler Java enums for enums without initializers section.

    -

    25.3.5.4 Type unsafe enums

    -

    In this approach each enum item in a named enumeration is wrapped as + used the recommended %javaconst(1) to avoid the JNI call. The +%javaconstvalue(value) directive covered in the +Constants section can also be used for proper Java enums.

    +

    The additional support methods need not be generated if none of the + enum items have initializers and this is covered later in the +Simpler Java enums for enums without initializers section.

    +

    26.3.5.4 Type unsafe enums

    +

    In this approach each enum item in a named enumeration is wrapped as a static final integer in a class named after the C/C++ enum name. This is a commonly used pattern in Java to simulate C/C++ enums, but it is not typesafe. However, the main advantage over the typesafe enum pattern is enum items can be used in switch statements. In order to use this approach, the "enumtypeunsafe.swg" file must be used. Let's take a - look at an example.

    -
    -
    + look at an example.

    +
    +
     %include "enumtypeunsafe.swg"
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    will generate:

    -
    -
    +
    +
    +

    will generate:

    +
    +
     public final class Beverage {
       public final static int ALE = 0;
       public final static int LAGER = 10;
    @@ -29574,69 +29517,69 @@ public final class Beverage {
       public final static int PILSNER = STOUT + 1;
       public final static int PILZ = PILSNER;
     }
    -
    -
    -

    As is the case previously, the default is %javaconst(0) as +

    +
    +

    As is the case previously, the default is %javaconst(0) as not all C/C++ values will compile as Java code. However, again it is - recommended to add in a %javaconst(1) directive. and the -%javaconstvalue(value) directive covered in the -Constants section can also be used for type unsafe enums. Note that + recommended to add in a %javaconst(1) directive. and the +%javaconstvalue(value) directive covered in the +Constants section can also be used for type unsafe enums. Note that global enums are generated into a Java class within whatever package you are using. C++ enums defined within a C++ class are generated into - a static final inner Java class within the Java proxy class.

    -

    Note that unlike typesafe enums, this approach requires users to + a static final inner Java class within the Java proxy class.

    +

    Note that unlike typesafe enums, this approach requires users to mostly use different syntax compared with proper Java enums. Thus the - upgrade path to proper enums provided in JDK 1.5 is more painful.

    -

    25.3.5.5 Simple enums

    -

    This approach is similar to the type unsafe approach. Each enum item + upgrade path to proper enums provided in JDK 1.5 is more painful.

    +

    26.3.5.5 Simple enums

    +

    This approach is similar to the type unsafe approach. Each enum item is also wrapped as a static final integer. However, these integers are not generated into a class named after the C/C++ enum. Instead, global enums are generated into the constants interface. Also, enums defined in a C++ class have their enum items generated directly into the Java proxy class rather than an inner class within the Java proxy class. In fact, this approach is effectively wrapping the enums as if they were - anonymous enums and the resulting code is as per -anonymous enums. The implementation is in the "enumsimple.swg" file.

    -

    Compatibility Note: SWIG-1.3.21 and earlier versions wrapped + anonymous enums and the resulting code is as per +anonymous enums. The implementation is in the "enumsimple.swg" file.

    +

    Compatibility Note: SWIG-1.3.21 and earlier versions wrapped all enums using this approach. The type unsafe approach is preferable to this one and this simple approach is only included for backwards - compatibility with these earlier versions of SWIG.

    -

    25.3.6 Pointers

    -

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no + compatibility with these earlier versions of SWIG.

    +

    26.3.6 Pointers

    +

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type information. Here is a rather - simple interface:

    -
    -
    + simple interface:

    +
    +
     %module example
     
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    When wrapped, you will be able to use the functions in a natural way - from Java. For example:

    -
    -
    +
    +
    +

    When wrapped, you will be able to use the functions in a natural way + from Java. For example:

    +
    +
     SWIGTYPE_p_FILE f = example.fopen("junk", "w");
     example.fputs("Hello World\n", f);
     example.fclose(f);
    -
    -
    -

    C pointers in the Java module are stored in a Java long and +

    +
    +

    C pointers in the Java module are stored in a Java long and cross the JNI boundary held within this 64 bit number. Many other SWIG language modules use an encoding of the pointer in a string. These scripting languages use the SWIG runtime type checker for dynamic type checking as they do not support static type checking by a compiler. In order to implement static type checking of pointers within Java, they - are wrapped by a simple Java class. In the example above the FILE * - pointer is wrapped with a type wrapper class called -SWIGTYPE_p_FILE.

    -

    Once obtained, a type wrapper object can be freely passed around to + are wrapped by a simple Java class. In the example above the FILE * + pointer is wrapped with a type wrapper class called +SWIGTYPE_p_FILE.

    +

    Once obtained, a type wrapper object can be freely passed around to different C functions that expect to receive an object of that type. The only thing you can't do is dereference the pointer from Java. Of - course, that isn't much of a concern in this example.

    -

    As much as you might be inclined to modify a pointer value directly + course, that isn't much of a concern in this example.

    +

    As much as you might be inclined to modify a pointer value directly from Java, don't. The value is not necessarily the same as the logical memory address of the underlying object. The value will vary depending on the native byte-ordering of the platform (i.e., big-endian vs. @@ -29647,9 +29590,9 @@ SWIGTYPE_p_FILE.

    design it is also not possible to manually cast a pointer to a new type by using Java casts as it is particularly dangerous especially when casting C++ objects. If you need to cast a pointer or change its value, - consider writing some helper functions instead. For example:

    -
    -
    + consider writing some helper functions instead. For example:

    +
    +
     %inline %{
     /* C-style cast */
     Bar *FooToBar(Foo *f) {
    @@ -29665,48 +29608,48 @@ Foo *IncrFoo(Foo *f, int i) {
       return f+i;
     }
     %}
    -
    -
    -

    Also, if working with C++, you should always try to use the new C++ +

    +
    +

    Also, if working with C++, you should always try to use the new C++ style casts. For example, in the above code, the C-style cast may return a bogus result whereas as the C++-style cast will return a NULL - pointer if the conversion can't be performed.

    -

    25.3.7 Structures

    -

    If you wrap a C structure, it is wrapped by a Java class with - getters and setters for access to the member variables. For example,

    -
    -
    + pointer if the conversion can't be performed.

    +

    26.3.7 Structures

    +

    If you wrap a C structure, it is wrapped by a Java class with + getters and setters for access to the member variables. For example,

    +
    +
     struct Vector {
       double x, y, z;
     };
     
    -
    -
    -

    is used as follows:

    -
    -
    +
    +
    +

    is used as follows:

    +
    +
     Vector v = new Vector();
     v.setX(3.5);
     v.setY(7.2);
     double x = v.getX();
     double y = v.getY();
    -
    -
    -

    The variable setters and getters are also based on the JavaBean +

    +
    +

    The variable setters and getters are also based on the JavaBean design pattern already covered under the Global variables section. Similar access is provided for unions and the public data members of - C++ classes.

    -

    This object is actually an instance of a Java class that has been + C++ classes.

    +

    This object is actually an instance of a Java class that has been wrapped around a pointer to the C structure. This instance doesn't actually do anything--it just serves as a proxy. The pointer to the C object is held in the Java proxy class in much the same way as pointers are held by type wrapper classes. Further details about Java proxy - classes are covered a little later.

    -

    const members of a structure are read-only. Data members - can also be forced to be read-only using the %immutable - directive. For example:

    -
    -
    + classes are covered a little later.

    +

    const members of a structure are read-only. Data members + can also be forced to be read-only using the %immutable + directive. For example:

    +
    +
     struct Foo {
       ...
       %immutable;
    @@ -29715,55 +29658,55 @@ struct Foo {
       %mutable;
       ...
     };
    -
    -
    -

    When char * members of a structure are wrapped, the - contents are assumed to be dynamically allocated using malloc - or new (depending on whether or not SWIG is run with the -c++ +

    +
    +

    When char * members of a structure are wrapped, the + contents are assumed to be dynamically allocated using malloc + or new (depending on whether or not SWIG is run with the -c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior you want, - you will have to use a typemap (described later).

    -

    If a structure contains arrays, access to those arrays is managed - through pointers. For example, consider this:

    -
    -
    + you will have to use a typemap (described later).

    +

    If a structure contains arrays, access to those arrays is managed + through pointers. For example, consider this:

    +
    +
     struct Bar {
       int  x[16];
     };
    -
    -
    -

    If accessed in Java, you will see behavior like this:

    -
    -
    +
    +
    +

    If accessed in Java, you will see behavior like this:

    +
    +
     Bar b = new Bar();
     SWIGTYPE_p_int x = b.getX();
    -
    -
    -

    This pointer can be passed around to functions that expect to - receive an int * (just like C). You can also set the value of - an array member using another pointer. For example:

    -
    -
    +
    +
    +

    This pointer can be passed around to functions that expect to + receive an int * (just like C). You can also set the value of + an array member using another pointer. For example:

    +
    +
     Bar b = new Bar();
     SWIGTYPE_p_int x = b.getX();
     Bar c = new Bar();
     c.setX(x);                    // Copy contents of b.x to c.x
    -
    -
    -

    For array assignment (setters not getters), SWIG copies the entire - contents of the array starting with the data pointed to by b.x +

    +
    +

    For array assignment (setters not getters), SWIG copies the entire + contents of the array starting with the data pointed to by b.x . In this example, 16 integers would be copied. Like C, SWIG makes no assumptions about bounds checking---if you pass a bad pointer, you may get a segmentation fault or access violation. The default wrapping makes it hard to set or get just one element of the array and so array access from Java is somewhat limited. This can be changed easily though - by using the approach outlined later in the -Wrapping C arrays with Java arrays and -Unbounded C Arrays sections.

    -

    When a member of a structure is itself a structure, it is handled as - a pointer. For example, suppose you have two structures like this:

    -
    -
    + by using the approach outlined later in the 
    +Wrapping C arrays with Java arrays and 
    +Unbounded C Arrays sections.

    +

    When a member of a structure is itself a structure, it is handled as + a pointer. For example, suppose you have two structures like this:

    +
    +
     struct Foo {
       int a;
     };
    @@ -29771,40 +29714,40 @@ struct Foo {
     struct Bar {
       Foo f;
     };
    -
    -
    -

    Now, suppose that you access the f member of Bar - like this:

    -
    -
    +
    +
    +

    Now, suppose that you access the f member of Bar + like this:

    +
    +
     Bar b = new Bar();
     Foo x = b.getF();
    -
    -
    -

    In this case, x is a pointer that points to the Foo - that is inside b. This is the same value as generated by this - C code:

    -
    -
    +
    +
    +

    In this case, x is a pointer that points to the Foo + that is inside b. This is the same value as generated by this + C code:

    +
    +
     Bar b;
     Foo *x = &b->f;       /* Points inside b */
    -
    -
    -

    Because the pointer points inside the structure, you can modify the - contents and everything works just like you would expect. For example:

    -
    -
    +
    +
    +

    Because the pointer points inside the structure, you can modify the + contents and everything works just like you would expect. For example:

    +
    +
     Bar b = new Bar();
     b.getF().setA(3);   // Modify b.f.a
     Foo x = b.getF();                   
     x.setA(3);          // Modify x.a - this is the same as b.f.a
    -
    -
    -

    25.3.8 C++ classes

    -

    C++ classes are wrapped by Java classes as well. For example, if you - have this class,

    -
    -
    +
    +
    +

    26.3.8 C++ classes

    +

    C++ classes are wrapped by Java classes as well. For example, if you + have this class,

    +
    +
     class List {
     public:
       List();
    @@ -29815,43 +29758,43 @@ public:
       char *get(int n);
       int  length;
     };
    -
    -
    -

    you can use it in Java like this:

    -
    -
    +
    +
    +

    you can use it in Java like this:

    +
    +
     List l = new List();
     l.insert("Ale");
     l.insert("Stout");
     l.insert("Lager");
     String item = l.get(2);
     int length = l.getLength();
    -
    -
    -

    Class data members are accessed in the same manner as C structures.

    -

    Static class members are unsurprisingly wrapped as static members of - the Java class:

    -
    -
    +
    +
    +

    Class data members are accessed in the same manner as C structures.

    +

    Static class members are unsurprisingly wrapped as static members of + the Java class:

    +
    +
     class Spam {
     public:
       static void foo();
       static int bar;
     };
    -
    -
    -

    The static members work like any other Java static member:

    -
    -
    +
    +
    +

    The static members work like any other Java static member:

    +
    +
     Spam.foo();
     int bar = Spam.getBar();
    -
    -
    -

    25.3.9 C++ inheritance

    -

    SWIG is fully aware of issues related to C++ inheritance. Therefore, - if you have classes like this

    -
    -
    +
    +
    +

    26.3.9 C++ inheritance

    +

    SWIG is fully aware of issues related to C++ inheritance. Therefore, + if you have classes like this

    +
    +
     class Foo {
     ...
     };
    @@ -29859,212 +29802,212 @@ class Foo {
     class Bar : public Foo {
     ...
     };
    -
    -
    -

    those classes are wrapped into a hierarchy of Java classes that - reflect the same inheritance structure:

    -
    -
    +
    +
    +

    those classes are wrapped into a hierarchy of Java classes that + reflect the same inheritance structure:

    +
    +
     Bar b = new Bar();
     Class c = b.getClass();
     System.out.println(c.getSuperclass().getName());
    -
    -
    -

    will of course display:

    -
    -
    +
    +
    +

    will of course display:

    +
    +
     Foo
    -
    -
    -

    Furthermore, if you have functions like this

    -
    -
    +
    +
    +

    Furthermore, if you have functions like this

    +
    +
     void spam(Foo *f);
    -
    -
    -

    then the Java function spam() accepts instances of Foo - or instances of any other proxy classes derived from Foo.

    -

    Note that Java does not support multiple inheritance so any multiple +

    +
    +

    then the Java function spam() accepts instances of Foo + or instances of any other proxy classes derived from Foo.

    +

    Note that Java does not support multiple inheritance so any multiple inheritance in the C++ code is not going to work. A warning is given when multiple inheritance is detected and only the first base class is - used.

    -

    25.3.10 Pointers, references, - arrays and pass by value

    -

    In C++, there are many different ways a function might receive and - manipulate objects. For example:

    -
    -
    + used.

    +

    26.3.10 Pointers, references, + arrays and pass by value

    +

    In C++, there are many different ways a function might receive and + manipulate objects. For example:

    +
    +
     void spam1(Foo *x);      // Pass by pointer
     void spam2(Foo &x);      // Pass by reference
     void spam3(Foo x);       // Pass by value
     void spam4(Foo x[]);     // Array of objects
    -
    -
    -

    In Java, there is no detailed distinction like this--specifically, +

    +
    +

    In Java, there is no detailed distinction like this--specifically, there are only instances of classes. There are no pointers nor references. Because of this, SWIG unifies all of these types together in the wrapper code. For instance, if you actually had the above - functions, it is perfectly legal to do this from Java:

    -
    -
    + functions, it is perfectly legal to do this from Java:

    +
    +
     Foo f = new Foo();  // Create a Foo
     example.spam1(f);   // Ok. Pointer
     example.spam2(f);   // Ok. Reference
     example.spam3(f);   // Ok. Value.
     example.spam4(f);   // Ok. Array (1 element)
    -
    -
    -

    Similar behavior occurs for return values. For example, if you had - functions like this,

    -
    -
    +
    +
    +

    Similar behavior occurs for return values. For example, if you had + functions like this,

    +
    +
     Foo *spam5();
     Foo &spam6();
     Foo  spam7();
    -
    -
    -

    then all three functions will return a pointer to some Foo +

    +
    +

    then all three functions will return a pointer to some Foo object. Since the third function (spam7) returns a value, newly allocated memory is used to hold the result and a pointer is returned (Java will release this memory when the returned object's finalizer is - run by the garbage collector).

    -

    25.3.10.1 Null pointers

    -

    Working with null pointers is easy. A Java null can be used + run by the garbage collector).

    +

    26.3.10.1 Null pointers

    +

    Working with null pointers is easy. A Java null can be used whenever a method expects a proxy class or typewrapper class. However, it is not possible to pass null to C/C++ functions that take parameters by value or by reference. If you try you will get a - NullPointerException.

    -
    -
    + NullPointerException.

    +
    +
     example.spam1(null);   // Pointer - ok
     example.spam2(null);   // Reference - NullPointerException
     example.spam3(null);   // Value - NullPointerException
     example.spam4(null);   // Array - ok
    -
    -
    -

    For spam1 and spam4 above the Java null +

    +
    +

    For spam1 and spam4 above the Java null gets translated into a NULL pointer for passing to the C/C++ function. - The converse also occurs, that is, NULL pointers are translated into -null Java objects when returned from a C/C++ function.

    -

    25.3.11 C++ overloaded functions -

    -

    C++ overloaded functions, methods, and constructors are mostly - supported by SWIG. For example, if you have two functions like this:

    -
    -
    + The converse also occurs, that is, NULL pointers are translated into 
    +null Java objects when returned from a C/C++ function.

    +

    26.3.11 C++ overloaded functions +

    +

    C++ overloaded functions, methods, and constructors are mostly + supported by SWIG. For example, if you have two functions like this:

    +
    +
     %module example
     
     void foo(int);
     void foo(char *c);
    -
    -
    -

    You can use them in Java in a straightforward manner:

    -
    -
    +
    +
    +

    You can use them in Java in a straightforward manner:

    +
    +
     example.foo(3);           // foo(int)
     example.foo("Hello");     // foo(char *c)
    -
    -
    -

    Similarly, if you have a class like this,

    -
    -
    +
    +
    +

    Similarly, if you have a class like this,

    +
    +
     class Foo {
     public:
       Foo();
       Foo(const Foo &);
       ...
     };
    -
    -
    -

    you can write Java code like this:

    -
    -
    +
    +
    +

    you can write Java code like this:

    +
    +
     Foo f = new Foo();        // Create a Foo
     Foo g = new Foo(f);       // Copy f
    -
    -
    -

    Overloading support is not quite as flexible as in C++. Sometimes +

    +
    +

    Overloading support is not quite as flexible as in C++. Sometimes there are methods that SWIG cannot disambiguate as there can be more - than one C++ type mapping onto a single Java type. For example:

    -
    -
    + than one C++ type mapping onto a single Java type. For example:

    +
    +
     void spam(int);
     void spam(unsigned short);
    -
    -
    -

    Here both int and unsigned short map onto a Java int. Here is - another example:

    -
    -
    +
    +
    +

    Here both int and unsigned short map onto a Java int. Here is + another example:

    +
    +
     void foo(Bar *b);
     void foo(Bar &b);
    -
    -
    -

    If declarations such as these appear, you will get a warning message - like this:

    -
    -
    +
    +
    +

    If declarations such as these appear, you will get a warning message + like this:

    +
    +
     example.i:12: Warning 515: Overloaded method spam(unsigned short) ignored.
     Method spam(int) at example.i:11 used.
    -
    -
    -

    To fix this, you either need to either -rename or ignore one of the methods. For example:

    -
    -
    +
    +
    +

    To fix this, you either need to either +rename or ignore one of the methods. For example:

    +
    +
     %rename(spam_ushort) spam(unsigned short);
     ...
     void spam(int);    
     void spam(unsigned short);   // Now renamed to spam_ushort
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %ignore spam(unsigned short);
     ...
     void spam(int);    
     void spam(unsigned short);   // Ignored
    -
    -
    -

    25.3.12 C++ default arguments

    -

    Any function with a default argument is wrapped by generating an +

    +
    +

    26.3.12 C++ default arguments

    +

    Any function with a default argument is wrapped by generating an additional function for each argument that is defaulted. For example, - if we have the following C++:

    -
    -
    + if we have the following C++:

    +
    +
     %module example
     
     void defaults(double d=10.0, int i=0);
    -
    -
    -

    The following methods are generated in the Java module class:

    -
    -
    +
    +
    +

    The following methods are generated in the Java module class:

    +
    +
     public class example {
       public static void defaults(double d, int i) { ... }
       public static void defaults(double d) { ... }
       public static void defaults() { ... }
     }
    -
    -
    -

    It is as if SWIG had parsed three separate overloaded methods. The +

    +
    +

    It is as if SWIG had parsed three separate overloaded methods. The same approach is taken for static methods, constructors and member - methods.

    -

    Compatibility note: Versions of SWIG prior to SWIG-1.3.23 + methods.

    +

    Compatibility note: Versions of SWIG prior to SWIG-1.3.23 wrapped these with a single wrapper method and so the default values could not be taken advantage of from Java. Further details on default arguments and how to restore this approach are given in the more - general Default arguments section.

    -

    25.3.13 C++ namespaces

    -

    SWIG is aware of named C++ namespaces and they can be mapped to Java + general Default arguments section.

    +

    26.3.13 C++ namespaces

    +

    SWIG is aware of named C++ namespaces and they can be mapped to Java packages, however, the default wrapping flattens the namespaces, effectively ignoring them. So by default, the namespace names do not appear in the module nor do namespaces result in a module that is broken up into submodules or packages. For example, if you have a file - like this,

    -
    -
    + like this,

    +
    +
     %module example
     
     namespace foo {
    @@ -30073,21 +30016,21 @@ namespace foo {
         double x, y, z;
       };
     };
    -
    -
    -

    it works in Java as follows:

    -
    -
    +
    +
    +

    it works in Java as follows:

    +
    +
     int f = example.fact(3);
     Vector v = new Vector();
     v.setX(3.4);
     double y = v.getY();
    -
    -
    -

    If your program has more than one namespace, name conflicts (if any) - can be resolved using %rename For example:

    -
    -
    +
    +
    +

    If your program has more than one namespace, name conflicts (if any) + can be resolved using %rename For example:

    +
    +
     %rename(Bar_spam) Bar::spam;
     
     namespace Foo {
    @@ -30097,50 +30040,50 @@ namespace Foo {
     namespace Bar {
       int spam();
     }
    -
    -
    -

    If you have more than one namespace and you want to keep their +

    +
    +

    If you have more than one namespace and you want to keep their symbols separate, consider wrapping them as separate SWIG modules. Each - SWIG module can be placed into a separate package.

    -

    The default behaviour described above can be improved via the -nspace feature. Note that it only works for classes, structs, unions + SWIG module can be placed into a separate package.

    +

    The default behaviour described above can be improved via the +nspace feature. Note that it only works for classes, structs, unions and enums declared within a named C++ namespace. When the nspace feature is used, the C++ namespaces are converted into Java packages of the same name. Proxy classes are thus declared within a package and this proxy makes numerous calls to the JNI intermediary class which is declared in the unnamed package by default. As Java does not support types declared in a named package accessing types declared in an - unnamed package, the -package commandline option described + unnamed package, the -package commandline option described earlier generally should be used to provide a parent package. So if - SWIG is run using the -package com.myco option, a wrapped - class, MyWorld::Material::Color, can then be accessed as -com.myco.MyWorld.Material.Color. If you don't specify a package, - you will get the following warning:

    -
    -
    + SWIG is run using the -package com.myco option, a wrapped
    + class, MyWorld::Material::Color, can then be accessed as 
    +com.myco.MyWorld.Material.Color. If you don't specify a package,
    + you will get the following warning:

    +
    +
     example.i:16: Warning 826: The nspace feature is used on 'MyWorld::Material::Color' without -package. The generated code 
     may not compile as Java does not support types declared in a named package accessing types declared in an unnamed package.
    -
    -
    -

    If it is undesirable to have a single top level package, the nspace - feature may be used without the -package commandline option +

    +
    +

    If it is undesirable to have a single top level package, the nspace + feature may be used without the -package commandline option (and the resulting warning ignored) if all of the types exposed using SWIG are placed in a package using the nspace feature and the 'jniclasspackage' pragma is used to specify a package for the JNI - intermediary class.

    -

    If the resulting use of the nspace feature and hence packages + intermediary class.

    +

    If the resulting use of the nspace feature and hence packages results in a proxy class in one package deriving or using a proxy class from another package, you will need to open up the visibility for the - pointer constructor and getCPtr method from the default - 'protected' to 'public' with the SWIG_JAVABODY_PROXY macro. - See Java code typemaps.

    -

    25.3.14 C++ templates

    -

    C++ templates don't present a huge problem for SWIG. However, in + pointer constructor and getCPtr method from the default + 'protected' to 'public' with the SWIG_JAVABODY_PROXY macro. + See Java code typemaps.

    +

    26.3.14 C++ templates

    +

    C++ templates don't present a huge problem for SWIG. However, in order to create wrappers, you have to tell SWIG to create wrappers for - a particular template instantiation. To do this, you use the -%template directive. For example:

    -
    -
    + a particular template instantiation. To do this, you use the 
    +%template directive. For example:

    +
    +
     %module example
     %{
     #include <utility>
    @@ -30158,90 +30101,90 @@ struct pair {
     };
     
     %template(pairii) pair<int, int>;
    -
    -
    -

    In Java:

    -
    -
    +
    +
    +

    In Java:

    +
    +
     pairii p = new pairii(3, 4);
     int first = p.getFirst();
     int second = p.getSecond();
    -
    -
    -

    Obviously, there is more to template wrapping than shown in this - example. More details can be found in the SWIG and - C++ chapter.

    -

    25.3.15 C++ Smart Pointers

    -

    25.3.15.1 The shared_ptr - Smart Pointer

    -

    The C++11 standard provides std::shared_ptr which was - derived from the Boost implementation, boost::shared_ptr. Both +

    +
    +

    Obviously, there is more to template wrapping than shown in this + example. More details can be found in the SWIG and + C++ chapter.

    +

    26.3.15 C++ Smart Pointers

    +

    26.3.15.1 The shared_ptr + Smart Pointer

    +

    The C++11 standard provides std::shared_ptr which was + derived from the Boost implementation, boost::shared_ptr. Both of these are available for Java in the SWIG library and usage is - outlined in the shared_ptr smart - pointer library section.

    -

    25.3.15.2 Generic Smart - Pointers

    -

    In certain C++ programs, it is common to use classes that have been + outlined in the shared_ptr smart + pointer library section.

    +

    26.3.15.2 Generic Smart + Pointers

    +

    In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use - of a template class that implements operator->() like this:

    -
    -
    + of a template class that implements operator->() like this:

    +
    +
     template<class T> class SmartPtr {
       ...
       T *operator->();
       ...
     }
    -
    -
    -

    Then, if you have a class like this,

    -
    -
    +
    +
    +

    Then, if you have a class like this,

    +
    +
     class Foo {
     public:
       int x;
       int bar();
     };
    -
    -
    -

    A smart pointer would be used in C++ as follows:

    -
    -
    +
    +
    +

    A smart pointer would be used in C++ as follows:

    +
    +
     SmartPtr<Foo> p = CreateFoo();   // Created somehow (not shown)
     ...
     p->x = 3;                        // Foo::x
     int y = p->bar();                // Foo::bar
    -
    -
    -

    To wrap this in Java, simply tell SWIG about the SmartPtr - class and the low-level Foo object. Make sure you instantiate -SmartPtr using %template if necessary. For example:

    -
    -
    +
    +
    +

    To wrap this in Java, simply tell SWIG about the SmartPtr + class and the low-level Foo object. Make sure you instantiate +SmartPtr using %template if necessary. For example:

    +
    +
     %module example
     ...
     %template(SmartPtrFoo) SmartPtr<Foo>;
     ...
    -
    -
    -

    Now, in Java, everything should just "work":

    -
    -
    +
    +
    +

    Now, in Java, everything should just "work":

    +
    +
     SmartPtrFoo p = example.CreateFoo(); // Create a smart-pointer somehow
     p.setX(3);                           // Foo::x
     int y = p.bar();                     // Foo::bar
    -
    -
    -

    If you ever need to access the underlying pointer returned by -operator->() itself, simply use the __deref__() method. - For example:

    -
    -
    +
    +
    +

    If you ever need to access the underlying pointer returned by +operator->() itself, simply use the __deref__() method. + For example:

    +
    +
     Foo f = p.__deref__();               // Returns underlying Foo *
    -
    -
    -

    25.4 Further details on the generated - Java classes

    -

    In the previous section, a high-level view of Java wrapping was +

    +
    +

    26.4 Further details on the generated + Java classes

    +

    In the previous section, a high-level view of Java wrapping was presented. A key component of this wrapping is that structures and classes are wrapped by Java proxy classes and type wrapper classes are used in situations where no proxies are generated. This provides a very @@ -30250,27 +30193,27 @@ Foo f = p.__deref__(); // Returns underlying Foo * were omitted. This section provides a brief overview of how the proxy classes work and then covers the type wrapper classes. Finally enum classes are covered. First, the crucial intermediary JNI class is - considered.

    -

    25.4.1 The intermediary JNI class

    -

    In the "SWIG basics" and -"SWIG and C++" chapters, details of low-level structure and class + considered.

    +

    26.4.1 The intermediary JNI class

    +

    In the "SWIG basics" and +"SWIG and C++" chapters, details of low-level structure and class wrapping are described. To summarize those chapters, if you have a - global function and class like this

    -
    -
    + global function and class like this

    +
    +
     class Foo {
     public:
       int x;
       int spam(int num, Foo* foo);
     };
     void egg(Foo* chips);
    -
    -
    -

    then SWIG transforms the class into a set of low-level procedural +

    +
    +

    then SWIG transforms the class into a set of low-level procedural wrappers. These procedural wrappers essentially perform the equivalent - of this C++ code:

    -
    -
    + of this C++ code:

    +
    +
     Foo *new_Foo() {
       return new Foo();
     }
    @@ -30286,14 +30229,14 @@ void Foo_x_set(Foo *f, int value) {
     int Foo_spam(Foo *f, int num, Foo* foo) {
       return f->spam(num, foo);
     }
    -
    -
    -

    These procedural function names don't actually exist, but their +

    +
    +

    These procedural function names don't actually exist, but their functionality appears inside the generated JNI functions. The JNI functions have to follow a particular naming convention so the function - names are actually:

    -
    -
    + names are actually:

    +
    +
     SWIGEXPORT jlong JNICALL Java_exampleJNI_new_1Foo(JNIEnv *jenv, jclass jcls);
     SWIGEXPORT void JNICALL Java_exampleJNI_delete_1Foo(JNIEnv *jenv, jclass jcls,
                                                         jlong jarg1);
    @@ -30306,12 +30249,12 @@ SWIGEXPORT jint JNICALL Java_exampleJNI_Foo_1spam(JNIEnv *jenv, jclass jcls,
                                                       jlong jarg3, jobject jarg3_);
     SWIGEXPORT void JNICALL Java_exampleJNI_egg(JNIEnv *jenv, jclass jcls,
                                                 jlong jarg1, jobject jarg1_);
    -
    -
    -

    For every JNI C function there has to be a static native Java - function. These appear in the intermediary JNI class:

    -
    -
    +
    +
    +

    For every JNI C function there has to be a static native Java + function. These appear in the intermediary JNI class:

    +
    +
     class exampleJNI {
       public final static native long new_Foo();
       public final static native void delete_Foo(long jarg1);
    @@ -30321,15 +30264,15 @@ class exampleJNI {
                                               long jarg3, Foo jarg3_);
       public final static native void egg(long jarg1, Foo jarg1_);
     }
    -
    -
    -

    This class contains the complete Java - C/C++ interface so all +

    +
    +

    This class contains the complete Java - C/C++ interface so all function calls go via this class. As this class acts as a go-between - for all JNI calls to C/C++ code from the Java -proxy classes, type wrapper - classes and module class, it is - known as the intermediary JNI class.

    -

    You may notice that SWIG uses a Java long wherever a pointer or + for all JNI calls to C/C++ code from the Java +proxy classes, type wrapper + classes and module class, it is + known as the intermediary JNI class.

    +

    You may notice that SWIG uses a Java long wherever a pointer or class object needs to be marshalled across the Java-C/C++ boundary. This approach leads to minimal JNI code which makes for better performance as JNI code involves a lot of string manipulation. SWIG @@ -30338,60 +30281,60 @@ proxy classes, type wrapper code. This approach has a downside though as the proxy class might get collected before the native method has completed. You might notice above that there is an additional parameters with a underscore postfix, - eg jarg1_. These are added in order to prevent -premature garbage collection when marshalling proxy classes.

    -

    The functions in the intermediary JNI class cannot be accessed + eg jarg1_. These are added in order to prevent +premature garbage collection when marshalling proxy classes.

    +

    The functions in the intermediary JNI class cannot be accessed outside of its package. Access to them is gained through the module - class for globals otherwise the appropriate proxy class.

    - -

    The name of the intermediary JNI class can be changed from its + class for globals otherwise the appropriate proxy class.

    + +

    The name of the intermediary JNI class can be changed from its default, that is, the module name with JNI appended after it. The - module directive attribute jniclassname is used to achieve - this:

    -
    -
    + module directive attribute jniclassname is used to achieve
    + this:

    +
    +
     %module (jniclassname="name") modulename
    -
    -
    -

    If name is the same as modulename then the module - class name gets changed from modulename to -modulenameModule.

    -

    25.4.1.1 The intermediary JNI class - pragmas

    -

    The intermediary JNI class can be tailored through the use of - pragmas, but is not commonly done. The pragmas for this class are:

    - - - - - - - - - -
    PragmaDescription
    jniclassbaseBase class for the intermediary JNI class
    jniclasspackagePackage in which to place the - intermediary JNI class
    jniclassclassmodifiersClass modifiers and class type - for the intermediary JNI class
    jniclasscodeJava code is copied verbatim into the - intermediary JNI class
    jniclassimportsJava code, usually one or more import - statements, placed before the intermediary JNI class definition
    jniclassinterfacesComma separated interface classes for - the intermediary JNI class
    -

    The pragma code appears in the generated intermediary JNI class - where you would expect:

    -
    -
    +
    +
    +

    If name is the same as modulename then the module + class name gets changed from modulename to +modulenameModule.

    +

    26.4.1.1 The intermediary JNI class + pragmas

    +

    The intermediary JNI class can be tailored through the use of + pragmas, but is not commonly done. The pragmas for this class are:

    + + + + + + + + + +
    PragmaDescription
    jniclassbaseBase class for the intermediary JNI class
    jniclasspackagePackage in which to place the + intermediary JNI class
    jniclassclassmodifiersClass modifiers and class type + for the intermediary JNI class
    jniclasscodeJava code is copied verbatim into the + intermediary JNI class
    jniclassimportsJava code, usually one or more import + statements, placed before the intermediary JNI class definition
    jniclassinterfacesComma separated interface classes for + the intermediary JNI class
    +

    The pragma code appears in the generated intermediary JNI class + where you would expect:

    +
    +
     [ jniclassimports pragma ]
     [ jniclassclassmodifiers pragma ] jniclassname extends [ jniclassbase pragma ]
                                               implements [ jniclassinterfaces pragma ] {
     [ jniclasscode pragma ]
     ... SWIG generated native methods ...
     }
    -
    -
    -

    The jniclasscode pragma is quite useful for adding in a +

    +
    +

    The jniclasscode pragma is quite useful for adding in a static block for loading the shared library / dynamic link library and - demonstrates how pragmas work:

    -
    -
    + demonstrates how pragmas work:

    +
    +
     %pragma(java) jniclasscode=%{
       static {
         try {
    @@ -30402,83 +30345,83 @@ modulenameModule.

    } } %} -
    -
    -

    Pragmas will take either "" or %{ %} as +

    +
    +

    Pragmas will take either "" or %{ %} as delimiters. For example, let's change the intermediary JNI class access - to just the default package-private access.

    -
    -
    + to just the default package-private access.

    +
    +
     %pragma(java) jniclassclassmodifiers="class"
    -
    -
    -

    All the methods in the intermediary JNI class will then not be +

    +
    +

    All the methods in the intermediary JNI class will then not be callable outside of the package as the method modifiers have been changed from public access to default access. This is useful if you - want to prevent users calling these low level functions.

    -

    25.4.2 The Java module class

    -

    All global functions and variable getters/setters appear in the - module class. For our example, there is just one function:

    -
    -
    + want to prevent users calling these low level functions.

    +

    26.4.2 The Java module class

    +

    All global functions and variable getters/setters appear in the + module class. For our example, there is just one function:

    +
    +
     public class example {
       public static void egg(Foo chips) {
         exampleJNI.egg(Foo.getCPtr(chips), chips);
       }
     }
    -
    -
    -

    The module class is necessary as there is no such thing as a global +

    +
    +

    The module class is necessary as there is no such thing as a global in Java so all the C globals are put into this class. They are generated as static functions and so must be accessed as such by using - the module name in the static function call:

    -
    -
    + the module name in the static function call:

    +
    +
     example.egg(new Foo());
    -
    -
    -

    The primary reason for having the module class wrapping the calls in +

    +
    +

    The primary reason for having the module class wrapping the calls in the intermediary JNI class is to implement static type checking. In - this case only a Foo can be passed to the egg - function, whereas any long can be passed to the egg - function in the intermediary JNI class.

    -

    25.4.2.1 The Java module class - pragmas

    -

    The module class can be tailored through the use of pragmas, in the + this case only a Foo can be passed to the egg + function, whereas any long can be passed to the egg + function in the intermediary JNI class.

    +

    26.4.2.1 The Java module class + pragmas

    +

    The module class can be tailored through the use of pragmas, in the same manner as the intermediary JNI class. The pragmas are similarly - named and are used in the same way. The complete list follows:

    - - - - - - - -
    PragmaDescription
    modulebaseBase class for the module class
    moduleclassmodifiersClass modifiers and class type for - the module class
    modulecodeJava code is copied verbatim into the module - class
    moduleimportsJava code, usually one or more import - statements, placed before the module class definition
    moduleinterfacesComma separated interface classes for - the module class
    -

    The pragma code appears in the generated module class like this:

    -
    -
    + named and are used in the same way. The complete list follows:

    + + + + + + + +
    PragmaDescription
    modulebaseBase class for the module class
    moduleclassmodifiersClass modifiers and class type for + the module class
    modulecodeJava code is copied verbatim into the module + class
    moduleimportsJava code, usually one or more import + statements, placed before the module class definition
    moduleinterfacesComma separated interface classes for + the module class
    +

    The pragma code appears in the generated module class like this:

    +
    +
     [ moduleimports pragma ]
     [ modulemodifiers pragma ] modulename extends [ modulebase pragma ]
                                           implements [ moduleinterfaces pragma ] {
     [ modulecode pragma ]
     ... SWIG generated wrapper functions ...
     }
    -
    -
    -

    See The intermediary JNI class - pragmas section for further details on using pragmas.

    -

    25.4.3 Java proxy classes

    -

    A Java proxy class is generated for each structure, union or C++ - class that is wrapped. Proxy classes have also been called -peer classes. The default proxy class for our previous example looks - like this:

    -
    -
    +
    +
    +

    See The intermediary JNI class + pragmas section for further details on using pragmas.

    +

    26.4.3 Java proxy classes

    +

    A Java proxy class is generated for each structure, union or C++ + class that is wrapped. Proxy classes have also been called +peer classes. The default proxy class for our previous example looks + like this:

    +
    +
     public class Foo {
       private transient long swigCPtr;
       protected transient boolean swigCMemOwn;
    @@ -30521,40 +30464,40 @@ public class Foo {
       }
     
     }
    -
    -
    -

    This class merely holds a pointer to the underlying C++ object ( -swigCPtr). It also contains all the methods in the C++ class it is +

    +
    +

    This class merely holds a pointer to the underlying C++ object ( +swigCPtr). It also contains all the methods in the C++ class it is proxying plus getters and setters for public member variables. These functions call the native methods in the intermediary JNI class. The advantage of having this extra layer is the type safety that the proxy class functions offer. It adds static type checking which leads to fewer surprises at runtime. For example, you can see that if you - attempt to use the spam() function it will only compile when - the parameters passed are an int and a Foo. From a + attempt to use the spam() function it will only compile when + the parameters passed are an int and a Foo. From a user's point of view, it makes the class work as if it were a Java - class:

    -
    -
    + class:

    +
    +
     Foo f = new Foo();
     f.setX(3);
     int y = f.spam(5, new Foo());
    -
    -
    -

    25.4.3.1 Memory management

    -

    Each proxy class has an ownership flag swigCMemOwn. The +

    +
    +

    26.4.3.1 Memory management

    +

    Each proxy class has an ownership flag swigCMemOwn. The value of this flag determines who is responsible for deleting the - underlying C++ object. If set to true, the proxy class's + underlying C++ object. If set to true, the proxy class's finalizer will destroy the C++ object when the proxy class is garbage collected. If set to false, then the destruction of the proxy class has - no effect on the C++ object.

    -

    When an object is created by a constructor or returned by value, + no effect on the C++ object.

    +

    When an object is created by a constructor or returned by value, Java automatically takes ownership of the result. On the other hand, when pointers or references are returned to Java, there is often no way to know where they came from. Therefore, the ownership is set to false. - For example:

    -
    -
    + For example:

    +
    +
     class Foo {
     public:
       Foo();
    @@ -30562,83 +30505,83 @@ public:
       Foo &bar2();
       Foo *bar2();
     };
    -
    -
    -

    In Java:

    -
    -
    +
    +
    +

    In Java:

    +
    +
     Foo f = new Foo();   //  f.swigCMemOwn = true
     Foo f1 = f.bar1();   // f1.swigCMemOwn = true
     Foo f2 = f.bar2();   // f2.swigCMemOwn = false
     Foo f3 = f.bar3();   // f3.swigCMemOwn = false
    -
    -
    -

    This behavior for pointers and references is especially important +

    +
    +

    This behavior for pointers and references is especially important for classes that act as containers. For example, if a method returns a pointer to an object that is contained inside another object, you - definitely don't want Java to assume ownership and destroy it!

    -

    For the most part, memory management issues remain hidden. However, + definitely don't want Java to assume ownership and destroy it!

    +

    For the most part, memory management issues remain hidden. However, there are situations where you might have to manually change the - ownership of an object. For instance, consider code like this:

    -
    -
    + ownership of an object. For instance, consider code like this:

    +
    +
     class Obj {};
     class Node {
       Obj *value;
     public:
       void set_value(Obj *v) { value = v; }
     };
    -
    -
    -

    Now, consider the following Java code:

    -
    -
    +
    +
    +

    Now, consider the following Java code:

    +
    +
     Node n = new Node();    // Create a node
     {
       Obj o = new Obj();    // Create an object
       n.set_value(o);       // Set value
     }                       // o goes out of scope
    -
    -
    -

    In this case, the Node n is holding a reference to o +

    +
    +

    In this case, the Node n is holding a reference to o internally. However, SWIG has no way to know that this has occurred. - The Java proxy class still thinks that it has ownership of o. - As o has gone out of scope, it could be garbage collected in - which case the C++ destructor will be invoked and n will then - be holding a stale-pointer to o. If you're lucky, you will - only get a segmentation fault.

    -

    To work around this, the ownership flag of o needs changing - to false. The ownership flag is a private member variable of + The Java proxy class still thinks that it has ownership of o. + As o has gone out of scope, it could be garbage collected in + which case the C++ destructor will be invoked and n will then + be holding a stale-pointer to o. If you're lucky, you will + only get a segmentation fault.

    +

    To work around this, the ownership flag of o needs changing + to false. The ownership flag is a private member variable of the proxy class so this is not possible without some customization of the proxy class. This can be achieved by using a typemap to customise the proxy class with pure Java code as detailed later in the section on - Java typemaps.

    -

    Sometimes a function will create memory and return a pointer to a + Java typemaps.

    +

    Sometimes a function will create memory and return a pointer to a newly allocated object. SWIG has no way of knowing this so by default the proxy class does not manage the returned object. However, you can - tell the proxy class to manage the memory if you specify the -%newobject directive. Consider:

    -
    -
    + tell the proxy class to manage the memory if you specify the 
    +%newobject directive. Consider:

    +
    +
     class Obj {...};
     class Factory {
     public:
       static Obj *createObj() { return new Obj(); }
     };
    -
    -
    -

    If we call the factory function, then we have to manually delete the - memory:

    -
    -
    +
    +
    +

    If we call the factory function, then we have to manually delete the + memory:

    +
    +
     Obj obj = Factory.createObj();   // obj.swigCMemOwn = false
     ...
     obj.delete();
    -
    -
    -

    Now add in the %newobject directive:

    -
    -
    +
    +
    +

    Now add in the %newobject directive:

    +
    +
     %newobject Factory::createObj();
     
     class Obj {...};
    @@ -30646,30 +30589,30 @@ class Factory {
     public:
       static Obj *createObj() { return new Obj(); }
     };
    -
    -
    -

    A call to delete() is no longer necessary as the garbage - collector will make the C++ destructor call because swigCMemOwn - is now true.

    -
    -
    +
    +
    +

    A call to delete() is no longer necessary as the garbage + collector will make the C++ destructor call because swigCMemOwn + is now true.

    +
    +
     Obj obj = Factory.createObj();   // obj.swigCMemOwn = true;
     ...
    -
    -
    -

    Some memory management issues are quite tricky to fix and may only +

    +
    +

    Some memory management issues are quite tricky to fix and may only be noticeable after using for a long time. One such issue is premature garbage collection of an object created from Java and resultant usage from C++ code. The section on typemap examples cover two such - scenarios, Memory management - for objects passed to the C++ layer and -Memory management when returning references to member variables

    -

    25.4.3.2 Inheritance

    -

    Java proxy classes will mirror C++ inheritance chains. For example, - given the base class Base and its derived class Derived -:

    -
    -
    + scenarios, Memory management
    + for objects passed to the C++ layer and 
    +Memory management when returning references to member variables

    +

    26.4.3.2 Inheritance

    +

    Java proxy classes will mirror C++ inheritance chains. For example, + given the base class Base and its derived class Derived +:

    +
    +
     class Base {
     public:
       virtual double foo();
    @@ -30679,12 +30622,12 @@ class Derived : public Base {
     public:
       virtual double foo();
     };
    -
    -
    -

    The base class is generated much like any other proxy class seen so - far:

    -
    -
    +
    +
    +

    The base class is generated much like any other proxy class seen so + far:

    +
    +
     public class Base {
       private transient long swigCPtr;
       protected transient boolean swigCMemOwn;
    @@ -30719,12 +30662,12 @@ public class Base {
       }
     
     }
    -
    -
    -

    The Derived class extends Base mirroring the C++ - class inheritance hierarchy.

    -
    -
    +
    +
    +

    The Derived class extends Base mirroring the C++ + class inheritance hierarchy.

    +
    +
     public class Derived extends Base {
       private transient long swigCPtr;
     
    @@ -30759,36 +30702,36 @@ public class Derived extends Base {
       }
     
     }
    -
    -
    -

    Note the memory ownership is controlled by the base class. However +

    +
    +

    Note the memory ownership is controlled by the base class. However each class in the inheritance hierarchy has its own pointer value which - is obtained during construction. The SWIGDerivedUpcast() call - converts the pointer from a Derived * to a Base *. + is obtained during construction. The SWIGDerivedUpcast() call + converts the pointer from a Derived * to a Base *. This is a necessity as C++ compilers are free to implement pointers in - the inheritance hierarchy with different values.

    -

    It is of course possible to extend Base using your own Java - classes. If Derived is provided by the C++ code, you could for - example add in a pure Java class Extended derived from -Base. There is a caveat and that is any C++ code will not know - about your pure Java class Extended so this type of derivation + the inheritance hierarchy with different values.

    +

    It is of course possible to extend Base using your own Java + classes. If Derived is provided by the C++ code, you could for + example add in a pure Java class Extended derived from +Base. There is a caveat and that is any C++ code will not know + about your pure Java class Extended so this type of derivation is restricted. However, true cross language polymorphism can be - achieved using the directors feature.

    -

    25.4.3.3 Proxy classes and garbage - collection

    -

    By default each proxy class has a delete() and a -finalize() method. The finalize() method calls -delete() which frees any malloc'd memory for wrapped C structs or - calls the C++ class destructors. The idea is for delete() to + achieved using the directors feature.

    +

    26.4.3.3 Proxy classes and garbage + collection

    +

    By default each proxy class has a delete() and a +finalize() method. The finalize() method calls +delete() which frees any malloc'd memory for wrapped C structs or + calls the C++ class destructors. The idea is for delete() to be called when you have finished with the C/C++ object. Ideally you - need not call delete(), but rather leave it to the garbage + need not call delete(), but rather leave it to the garbage collector to call it from the finalizer. When a program exits, the garbage collector does not guarantee to call all finalizers. An insight - into the reasoning behind this can be obtained from -Hans Boehm's Destructors, Finalizers, and Synchronization paper. + into the reasoning behind this can be obtained from +Hans Boehm's Destructors, Finalizers, and Synchronization paper. Depending on what the finalizers do and which operating system you use, - this may or may not be a problem.

    -

    If the delete() call into JNI code is just for memory + this may or may not be a problem.

    +

    If the delete() call into JNI code is just for memory handling, there is not a problem when run on most operating systems, for example Windows and Unix. Say your JNI code creates memory on the heap which your finalizers should clean up, the finalizers may or may @@ -30799,30 +30742,30 @@ Hans Boehm's Destructors, Finalizers, and Synchronization paper. destructor which in turn releases a TCP/IP socket for example, there is no guarantee that it will be released. Note that with long running programs the garbage collector will eventually run, thereby calling any - unreferenced object's finalizers.

    -

    Some not so ideal solutions are:

    -
      -
    1. -

      Call the System.runFinalizersOnExit(true) or -Runtime.getRuntime().runFinalizersOnExit(true) to ensure the + unreferenced object's finalizers.

      +

      Some not so ideal solutions are:

      +
        +
      1. +

        Call the System.runFinalizersOnExit(true) or +Runtime.getRuntime().runFinalizersOnExit(true) to ensure the finalizers are called before the program exits. The catch is that this - is a deprecated function call as the documentation says:

        -
        This method is inherently unsafe. It may result in + is a deprecated function call as the documentation says:

        +
        This method is inherently unsafe. It may result in finalizers being called on live objects while other threads are concurrently manipulating those objects, resulting in erratic behavior - or deadlock.
        -

        In many cases you will be lucky and find that it works, but it is not - to be advocated. Have a look at -Java web site and search for runFinalizersOnExit.

        -
      2. -
      3. -

        From jdk1.3 onwards a new function, addShutdownHook(), was + or deadlock. +

        In many cases you will be lucky and find that it works, but it is not + to be advocated. Have a look at +Java web site and search for runFinalizersOnExit.

        +
      4. +
      5. +

        From jdk1.3 onwards a new function, addShutdownHook(), was introduced which is guaranteed to be called when your program exits. You can encourage the garbage collector to call the finalizers, for - example, add this static block to the class that has the main() - function:

        -
        -
        + example, add this static block to the class that has the main()
        + function:

        +
        +
           static {
             Runtime.getRuntime().addShutdownHook( 
               new Thread() {
        @@ -30830,179 +30773,179 @@ Java web site and search for runFinalizersOnExit.

        } ); } -
        -
        -

        Although this usually works, the documentation doesn't guarantee that - runFinalization() will actually call the finalizers. As the +

        +
        +

        Although this usually works, the documentation doesn't guarantee that + runFinalization() will actually call the finalizers. As the shutdown hook is guaranteed you could also make a JNI call to clean up - any resources that are being tracked by the C/C++ code.

        -
      6. -
      7. -

        Call the delete() function manually which will immediately + any resources that are being tracked by the C/C++ code.

        +
      8. +
      9. +

        Call the delete() function manually which will immediately invoke the C++ destructor. As a suggestion it may be a good idea to set the object to null so that should the object be inadvertently used again a Java null pointer exception is thrown, the alternative would crash the JVM by using a null C pointer. For example given a SWIG - generated class A:

        -
        -
        + generated class A:

        +
        +
         A myA = new A();
         // use myA ...
         myA.delete();
         // any use of myA here would crash the JVM 
         myA=null;
         // any use of myA here would cause a Java null pointer exception to be thrown
        -
        -
        -

        The SWIG generated code ensures that the memory is not deleted +

        +
        +

        The SWIG generated code ensures that the memory is not deleted twice, in the event the finalizers get called in addition to the manual - delete() call.

        -
      10. -
      11. -

        Write your own object manager in Java. You could derive all SWIG + delete() call.

        +
      12. +
      13. +

        Write your own object manager in Java. You could derive all SWIG classes from a single base class which could track which objects have had their finalizers run, then call the rest of them on program - termination. The section on Java typemaps - details how to specify a pure Java base class.

        -
      14. -
      -

      See the How to - Handle Java Finalization's Memory-Retention Issues article for + termination. The section on Java typemaps + details how to specify a pure Java base class.

      +
    2. +
    +

    See the How to + Handle Java Finalization's Memory-Retention Issues article for alternative approaches to managing memory by avoiding finalizers - altogether.

    -

    25.4.3.4 The premature garbage collection - prevention parameter for proxy class marshalling

    -

    As covered earlier, the C/C++ struct/class pointer is stored in the + altogether.

    +

    26.4.3.4 The premature garbage collection + prevention parameter for proxy class marshalling

    +

    As covered earlier, the C/C++ struct/class pointer is stored in the proxy class as a Java long and when needed is passed into the native method where it is cast into the appropriate type. This approach provides very fast marshalling but could be susceptible to premature - garbage collection. Consider the following C++ code:

    -
    -
    + garbage collection. Consider the following C++ code:

    +
    +
     class Wibble {
     };
     void wobble(Wibble &w);
    -
    -
    -

    The module class contains the Java wrapper for the global wobble - method:

    -
    -
    +
    +
    +

    The module class contains the Java wrapper for the global wobble + method:

    +
    +
     public class example {
       ...
       public static void wobble(Wibble w) {
         exampleJNI.wobble(Wibble.getCPtr(w), w);
       }
     }
    -
    -
    -

    where example is the name of the module. All native methods +

    +
    +

    where example is the name of the module. All native methods go through the intermediary class which has the native method declared - as such:

    -
    -
    + as such:

    +
    +
     public class exampleJNI {
       ...
       public final static native void wobble(long jarg1, Wibble jarg1_);
     }
    -
    -
    -

    The second parameter, jarg1_, is the premature garbage +

    +
    +

    The second parameter, jarg1_, is the premature garbage collection prevention parameter and is added to the native method parameter list whenever a C/C++ struct or class is marshalled as a Java long. In order to understand why, consider the alternative where the - intermediary class method is declared without the additional parameter:

    -
    -
    + intermediary class method is declared without the additional parameter:

    +
    +
     public class exampleJNI {
       ...
       public final static native void wobble(long jarg1);
     }
    -
    -
    -

    and the following simple call to wobble:

    -
    -
    +
    +
    +

    and the following simple call to wobble:

    +
    +
     {
       Wibble w = new Wibble();
       example.wobble(w);
     }
    -
    -
    -

    The hotspot compiler effectively sees something like:

    -
    -
    +
    +
    +

    The hotspot compiler effectively sees something like:

    +
    +
     {
       Wibble w = new Wibble();
       long w_ptr = Wibble.getCPtr(w);
       // w is no longer reachable
       exampleJNI.wobble(w_ptr);
     }
    -
    -
    -

    The Wibble object is no longer reachable after the point - shown as in this bit of code, the Wibble object is not +

    +
    +

    The Wibble object is no longer reachable after the point + shown as in this bit of code, the Wibble object is not referenced again after this point. This means that it is a candidate - for garbage collection. Should wobble be a long running - method, it is quite likely that the finalizer for the Wibble + for garbage collection. Should wobble be a long running + method, it is quite likely that the finalizer for the Wibble instance will be called. This in turn will call its underlying C++ - destructor which is obviously disastrous while the method wobble - is running using this object. Even if wobble is not a long - running method, it is possible for the Wibble instance to be - finalized. By passing the Wibble instance into the native + destructor which is obviously disastrous while the method wobble + is running using this object. Even if wobble is not a long + running method, it is possible for the Wibble instance to be + finalized. By passing the Wibble instance into the native method, it will not be finalized as the JVM guarantees not to finalize any objects until the native method returns. Effectively, the code then - becomes

    -
    -
    + becomes

    +
    +
     {
       Wibble w = new Wibble();
       long w_ptr = Wibble.getCPtr(w);
       exampleJNI.wobble(w_ptr, w);
       // w is no longer reachable
     }
    -
    -
    -

    and therefore there is no possibility of premature garbage +

    +
    +

    and therefore there is no possibility of premature garbage collection. In practice, this premature garbage collection was only ever observed in Sun's server JVM from jdk-1.3 onwards and in Sun's - client JVM from jdk-1.6 onwards.

    -

    The premature garbage collection prevention parameter for proxy + client JVM from jdk-1.6 onwards.

    +

    The premature garbage collection prevention parameter for proxy classes is generated by default whenever proxy classes are passed by value, reference or with a pointer. The implementation for this extra - parameter generation requires the "jtype" typemap to contain long - and the "jstype" typemap to contain the name of a proxy class.

    -

    The additional parameter does impose a slight performance overhead - and the parameter generation can be suppressed globally with the --nopgcpp commandline option. More selective suppression is possible - with the 'nopgcpp' attribute in the "jtype" -Java typemap. The attribute is a flag and so should be set to "1" to + parameter generation requires the "jtype" typemap to contain long + and the "jstype" typemap to contain the name of a proxy class.

    +

    The additional parameter does impose a slight performance overhead + and the parameter generation can be suppressed globally with the +-nopgcpp commandline option. More selective suppression is possible + with the 'nopgcpp' attribute in the "jtype" +Java typemap. The attribute is a flag and so should be set to "1" to enable the suppression, or it can be omitted or set to "0" to disable. - For example:

    -
    -
    + For example:

    +
    +
     %typemap(jtype, nopgcpp="1") Wibble & "long"
    -
    -
    -

    Compatibility note: The generation of this additional - parameter did not occur in versions prior to SWIG-1.3.30.

    -

    25.4.3.5 Single threaded - applications and thread safety

    -

    Single threaded Java applications using JNI need to consider thread +

    +
    +

    Compatibility note: The generation of this additional + parameter did not occur in versions prior to SWIG-1.3.30.

    +

    26.4.3.5 Single threaded + applications and thread safety

    +

    Single threaded Java applications using JNI need to consider thread safety. The same applies for the C# module where the .NET wrappers use - PInvoke. Consider the C++ class:

    -
    -
    + PInvoke. Consider the C++ class:

    +
    +
     class Test {
       string str;
     public:
       Test() : str("initial") {}
     };
    -
    -
    -

    and the Java proxy class generated by SWIG:

    -
    -
    +
    +
    +

    and the Java proxy class generated by SWIG:

    +
    +
     public class Test {
       private transient long swigCPtr;
       protected transient boolean swigCMemOwn;
    @@ -31035,36 +30978,36 @@ public class Test {
       }
     
     }
    -
    -
    -

    It has two methods that call JNI methods, namely, -exampleJNI.new_Test() for the C++ constructor and -exampleJNI.delete_Test() for the C++ destructor. If the garbage - collector collects an instance of this class, ie delete() is +

    +
    +

    It has two methods that call JNI methods, namely, +exampleJNI.new_Test() for the C++ constructor and +exampleJNI.delete_Test() for the C++ destructor. If the garbage + collector collects an instance of this class, ie delete() is not explicitly called, then the C++ destructor will be run in a different thread to the main thread. This is because when an object is marked for garbage collection, any objects with finalizers are added to a finalization queue and the objects in the finalization queue have - their finalize() methods run in a separate finalization + their finalize() methods run in a separate finalization thread. Therefore, if the C memory allocator is not thread safe, then the heap will get corrupted sooner or later, when a concurrent C++ delete and new are executed. It is thus essential, even in single threaded usage, to link to the C multi-thread runtime libraries, for example, use the /MD option for Visual C++ on Windows. Alternatively, lock all access to C++ functions that have heap - allocation/deallocation.

    -

    Note that some of the STL in Visual C++ 6 is not thread safe, so + allocation/deallocation.

    +

    Note that some of the STL in Visual C++ 6 is not thread safe, so although code might be linked to the multithread runtime libraries, undefined behaviour might still occur in a single threaded Java program. Similarly some older versions of Sun Studio have bugs in the multi-threaded implementation of the std::string class and so will lead to undefined behaviour in these supposedly single threaded Java - applications.

    -

    The following innocuous Java usage of Test is an example that will + applications.

    +

    The following innocuous Java usage of Test is an example that will crash very quickly on a multiprocessor machine if the JNI compiled code - is linked against the single thread C runtime libraries.

    -
    -
    + is linked against the single thread C runtime libraries.

    +
    +
     for (int i=0; i<100000; i++) {
       System.out.println("Iteration " + i);
       for (int k=0; k<10; k++) {
    @@ -31072,13 +31015,13 @@ for (int i=0; i<100000; i++) {
       }
       System.gc();
     }
    -
    -
    -

    25.4.4 Type wrapper classes

    -

    The generated type wrapper class, for say an int *, looks - like this:

    -
    -
    +
    +
    +

    26.4.4 Type wrapper classes

    +

    The generated type wrapper class, for say an int *, looks + like this:

    +
    +
     public class SWIGTYPE_p_int {
       private transient long swigCPtr;
     
    @@ -31094,80 +31037,80 @@ public class SWIGTYPE_p_int {
         return obj.swigCPtr;
       }
     }
    -
    -
    -

    The methods do not have public access, so by default it is +

    +
    +

    The methods do not have public access, so by default it is impossible to do anything with objects of this class other than pass them around. The methods in the class are part of the inner workings of SWIG. If you need to mess around with pointers you will have to use some typemaps specific to the Java module to achieve this. The section - on Java typemaps details how to modify the - generated code.

    -

    Note that if you use a pointer or reference to a proxy class in a + on Java typemaps details how to modify the + generated code.

    +

    Note that if you use a pointer or reference to a proxy class in a function then no type wrapper class is generated because the proxy class can be used as the function parameter. If however, you need anything more complicated like a pointer to a pointer to a proxy class - then a typewrapper class is generated for your use.

    -

    Note that SWIG generates a type wrapper class and not a proxy class + then a typewrapper class is generated for your use.

    +

    Note that SWIG generates a type wrapper class and not a proxy class when it has not parsed the definition of a type that gets used. For - example, say SWIG has not parsed the definition of class Snazzy - because it is in a header file that you may have forgotten to use the -%include directive on. Should SWIG parse Snazzy * being + example, say SWIG has not parsed the definition of class Snazzy + because it is in a header file that you may have forgotten to use the +%include directive on. Should SWIG parse Snazzy * being used in a function parameter, it will then generates a type wrapper - class around a Snazzy pointer. Also recall from earlier that + class around a Snazzy pointer. Also recall from earlier that SWIG will use a pointer when a class is passed by value or by - reference:

    -
    -
    + reference:

    +
    +
     void spam(Snazzy *x, Snazzy &y, Snazzy z);
    -
    -
    -

    Should SWIG not know anything about Snazzy then a -SWIGTYPE_p_Snazzy must be used for all 3 parameters in the spam - function. The Java function generated is:

    -
    -
    +
    +
    +

    Should SWIG not know anything about Snazzy then a +SWIGTYPE_p_Snazzy must be used for all 3 parameters in the spam + function. The Java function generated is:

    +
    +
     public static void spam(SWIGTYPE_p_Snazzy x, SWIGTYPE_p_Snazzy y, SWIGTYPE_p_Snazzy z) {
      ...
     }
    -
    -
    -

    Note that typedefs are tracked by SWIG and the typedef name is used +

    +
    +

    Note that typedefs are tracked by SWIG and the typedef name is used to construct the type wrapper class name. For example, consider the - case where Snazzy is a typedef to an int which SWIG - does parse:

    -
    -
    + case where Snazzy is a typedef to an int which SWIG
    + does parse:

    +
    +
     typedef int Snazzy;
     void spam(Snazzy *x, Snazzy &y, Snazzy z);
    -
    -
    -

    Because the typedefs have been tracked the Java function generated - is:

    -
    -
    +
    +
    +

    Because the typedefs have been tracked the Java function generated + is:

    +
    +
     public static void spam(SWIGTYPE_p_int x, SWIGTYPE_p_int y, int z) { ... }
    -
    -
    -

    25.4.5 Enum classes

    -

    SWIG can generate three types of enum classes. The -Enumerations section discussed these but omitted all the details. +

    +
    +

    26.4.5 Enum classes

    +

    SWIG can generate three types of enum classes. The +Enumerations section discussed these but omitted all the details. The following sub-sections detail the various types of enum classes - that can be generated.

    -

    25.4.5.1 Typesafe enum classes -

    -

    The following example demonstrates the typesafe enum classes which - SWIG generates:

    -
    -
    + that can be generated.

    +

    26.4.5.1 Typesafe enum classes +

    +

    The following example demonstrates the typesafe enum classes which + SWIG generates:

    +
    +
     %include "enumtypesafe.swg"
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    The following is the code that SWIG generates:

    -
    -
    +
    +
    +

    The following is the code that SWIG generates:

    +
    +
     public final class Beverage {
       public final static Beverage ALE = new Beverage("ALE");
       public final static Beverage LAGER = new Beverage("LAGER", 10);
    @@ -31216,35 +31159,35 @@ public final class Beverage {
       private final int swigValue;
       private final String swigName;
     }
    -
    -
    -

    As can be seen, there are a fair number of support methods for the +

    +
    +

    As can be seen, there are a fair number of support methods for the typesafe enum pattern. The typesafe enum pattern involves creating a fixed number of static instances of the enum class. The constructors are private to enforce this. Three constructors are available - two for C/C++ enums with an initializer and one for those without an - initializer. Note that the two enums with initializers, LAGER - and PILZ, each call one the two different initializer - constructors. In order to use one of these typesafe enums, the -swigToEnum static method must be called to return a reference to + initializer. Note that the two enums with initializers, LAGER + and PILZ, each call one the two different initializer + constructors. In order to use one of these typesafe enums, the +swigToEnum static method must be called to return a reference to one of the static instances. The JNI layer returns the enum value from the C/C++ world as an integer and this method is used to find the - appropriate Java enum static instance. The swigValue method is - used for marshalling in the other direction. The toString - method is overridden so that the enum name is available.

    -

    25.4.5.2 Proper Java enum - classes

    -

    The following example demonstrates the Java enums approach:

    -
    -
    + appropriate Java enum static instance. The swigValue method is
    + used for marshalling in the other direction. The toString
    + method is overridden so that the enum name is available.

    +

    26.4.5.2 Proper Java enum + classes

    +

    The following example demonstrates the Java enums approach:

    +
    +
     %include "enums.swg"
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    SWIG will generate the following Java enum:

    -
    -
    +
    +
    +

    SWIG will generate the following Java enum:

    +
    +
     public enum Beverage {
       ALE,
       LAGER(10),
    @@ -31288,33 +31231,33 @@ public enum Beverage {
         private static int next = 0;
       }
     }
    -
    -
    -

    The enum items appear first. Like the typesafe enum pattern, the +

    +
    +

    The enum items appear first. Like the typesafe enum pattern, the constructors are private. The constructors are required to handle C/C++ - enums with initializers. The next variable is in the -SwigNext inner class rather than in the enum class as static + enums with initializers. The next variable is in the +SwigNext inner class rather than in the enum class as static primitive variables cannot be modified from within enum constructors. Marshalling between Java enums and the C/C++ enum integer value is - handled via the swigToEnum and swigValue methods. All + handled via the swigToEnum and swigValue methods. All the constructors and methods in the Java enum are required just to handle C/C++ enums with initializers. These needn't be generated if the - enum being wrapped does not have any initializers and the -Simpler Java enums for enums without initializers section describes - how typemaps can be used to achieve this.

    -

    25.4.5.3 Type unsafe enum - classes

    -

    The following example demonstrates type unsafe enums:

    -
    -
    + enum being wrapped does not have any initializers and the 
    +Simpler Java enums for enums without initializers section describes
    + how typemaps can be used to achieve this.

    +

    26.4.5.3 Type unsafe enum + classes

    +

    The following example demonstrates type unsafe enums:

    +
    +
     %include "enumtypeunsafe.swg"
     %javaconst(1);
     enum Beverage { ALE, LAGER=10, STOUT, PILSNER, PILZ=PILSNER };
    -
    -
    -

    SWIG will generate the following simple class:

    -
    -
    +
    +
    +

    SWIG will generate the following simple class:

    +
    +
     public final class Beverage {
       public final static int ALE = 0;
       public final static int LAGER = 10;
    @@ -31322,66 +31265,66 @@ public final class Beverage {
       public final static int PILSNER = STOUT + 1;
       public final static int PILZ = PILSNER;
     }
    -
    -
    -

    25.4.6 Interfaces

    -

    By default SWIG wraps all C++ classes as Java classes. As Java only +

    +
    +

    26.4.6 Interfaces

    +

    By default SWIG wraps all C++ classes as Java classes. As Java only supports derivation from a single base class, SWIG has to ignore all bases except the first when a C++ class inherits from more than one base class. However, there is a family of SWIG macros that change the default wrapping and allows a C++ class to be wrapped as a Java interface instead of a Java class. These macros provide a way to support some sort of multiple inheritance as there is no limit to the - number of interfaces that a Java class can inherit from.

    -

    When a C++ class is wrapped as a Java interface, a Java proxy class - is still needed. The swiginterface.i library file provides + number of interfaces that a Java class can inherit from.

    +

    When a C++ class is wrapped as a Java interface, a Java proxy class + is still needed. The swiginterface.i library file provides three macros for marking a C++ class to be wrapped as a Java interface. There is more than one macro in order to provide a choice for choosing - the Java interface and Java proxy names.

    - - - + + +
    Interface Macro NameDescription -
    %interface(CTYPE)For C++ class CTYPE, + the Java interface and Java proxy names.

    + + + - - -
    Interface Macro NameDescription +
    %interface(CTYPE)For C++ class CTYPE, proxy class name is unchanged without any suffix added, interface name - has SwigInterface added as a suffix.
    %interface_impl(CTYPE)For C++ class CTYPE -, proxy class name has SwigImpl added as a suffix, interface - name has no added suffix.
    %interface_custom("PROXY", "INTERFACE", CTYPE) -For C++ class CTYPE, proxy class name is given by the string -PROXY, interface name is given by the string INTERFACE. - The PROXY and INTERFACE names can use the -string formatting functions used in %rename.
    -

    The table below has a few examples showing the resulting proxy and - interface names for a C++ class called Base.

    - - - - - - - - - -
    Example UsageProxy Class Name -Interface Class Name
    %interface(Base)Base -BaseSwigInterface
    %interface_impl(Base)BaseSwigImpl -Base
    %interface_custom("BaseProxy", "IBase", Base) -BaseProxyIBase
    %interface_custom("%sProxy", "IBase", Base) -BaseProxyIBase
    %interface_custom("%sProxy", "%sInterface", Base) -BaseProxyBaseProxyInterface
    %interface_custom("%sProxy", "%(rstrip:[Proxy])sInterface", - Base)BaseProxyBaseInterface
    -

    The 2nd last example shows the names used in the string formatting - functions. The input for PROXY that "%s" expands to - is the proxy name, that is, Base. The input for INTERFACE that - "%s" expands to is the proxy name, that is, BaseProxy -.

    -

    The last example shows rstrip and in this case strips the -Proxy suffix and then adds on Interface.

    -

    Consider the following C++ code:

    -
    -
    + has SwigInterface added as a suffix.
    %interface_impl(CTYPE)For C++ class CTYPE +, proxy class name has SwigImpl added as a suffix, interface + name has no added suffix.
    %interface_custom("PROXY", "INTERFACE", CTYPE) +For C++ class CTYPE, proxy class name is given by the string +PROXY, interface name is given by the string INTERFACE. + The PROXY and INTERFACE names can use the +string formatting functions used in %rename.
    +

    The table below has a few examples showing the resulting proxy and + interface names for a C++ class called Base.

    + + + + + + + + + +
    Example UsageProxy Class Name +Interface Class Name
    %interface(Base)Base +BaseSwigInterface
    %interface_impl(Base)BaseSwigImpl +Base
    %interface_custom("BaseProxy", "IBase", Base) +BaseProxyIBase
    %interface_custom("%sProxy", "IBase", Base) +BaseProxyIBase
    %interface_custom("%sProxy", "%sInterface", Base) +BaseProxyBaseProxyInterface
    %interface_custom("%sProxy", "%(rstrip:[Proxy])sInterface", + Base)BaseProxyBaseInterface
    +

    The 2nd last example shows the names used in the string formatting + functions. The input for PROXY that "%s" expands to + is the proxy name, that is, Base. The input for INTERFACE that + "%s" expands to is the proxy name, that is, BaseProxy +.

    +

    The last example shows rstrip and in this case strips the +Proxy suffix and then adds on Interface.

    +

    Consider the following C++ code:

    +
    +
     namespace Space {
       struct Base1 {
         virtual void Method1();
    @@ -31393,43 +31336,43 @@ namespace Space {
       };
       void UseBases(const Base1 &b1, const Base2 &b2);
     }
    -
    -
    -

    By default all classes are wrapped and are available in Java, but, -Derived has all bases ignored except the first. SWIG generates a - warning for the above code:

    -
    -
    +
    +
    +

    By default all classes are wrapped and are available in Java, but, +Derived has all bases ignored except the first. SWIG generates a + warning for the above code:

    +
    +
     example.i:10: Warning 813: Warning for Derived, base Base2 ignored. 
     Multiple inheritance is not supported in Java.
    -
    -
    -

    If we decide to wrap the two base classes as interfaces and add the - following before SWIG parses the above example code:

    -
    -
    +
    +
    +

    If we decide to wrap the two base classes as interfaces and add the + following before SWIG parses the above example code:

    +
    +
     %include <swiginterface.i>
     %interface_impl(Space::Base1);
     %interface_impl(Space::Base2);
    -
    -
    -

    then two interface files are generated, Base1.java and Base2.java in + + +

    then two interface files are generated, Base1.java and Base2.java in addition to proxy class files, Base1SwigImpl.java and - Base2SwigImpl.java. The contents of interface file Base1.java for -Base1 is shown below:

    -
    -
    + Base2SwigImpl.java. The contents of interface file Base1.java for 
    +Base1 is shown below:

    +
    +
     public interface Base1 {
       long Base1_GetInterfaceCPtr();
       void Method1();
     }
    -
    -
    -

    The proxy class in Base1SwigImpl.java for Base1 is as it would have - been if %interface was not used, except the name has changed - to Base1SwigImpl and it implements the appropriate base:

    -
    -
    +
    +
    +

    The proxy class in Base1SwigImpl.java for Base1 is as it would have + been if %interface was not used, except the name has changed + to Base1SwigImpl and it implements the appropriate base:

    +
    +
     public class Base1SwigImpl implements Base1 {
     ...
       public long Base1_GetInterfaceCPtr() {
    @@ -31441,14 +31384,14 @@ public class Base1SwigImpl implements Base1 {
       }
     ...
     }
    -
    -
    -

    In fact any class deriving from Base will now implement the +

    +
    +

    In fact any class deriving from Base will now implement the interface instead of deriving from it (or ignoring the base in the case - of multiple base classes). Hence the Derived proxy class will - now implement both bases:

    -
    -
    + of multiple base classes). Hence the Derived proxy class will
    + now implement both bases:

    +
    +
     public class Derived implements Base1, Base2 {
     ...
       public long Base1_GetInterfaceCPtr() {
    @@ -31468,57 +31411,57 @@ public class Derived implements Base1, Base2 {
       }
     ...
     }
    -
    -
    -

    Wherever a class marked as an interface is used, such as the -UseBases method in the example, the interface name is used as the - type in the Java layer:

    -
    -
    +
    +
    +

    Wherever a class marked as an interface is used, such as the +UseBases method in the example, the interface name is used as the + type in the Java layer:

    +
    +
       public static void UseBases(Base1 b1, Base2 b2) {
         exampleJNI.UseBases(b1.Base1_GetInterfaceCPtr(), b1, b2.Base2_GetInterfaceCPtr(), b2);
       }
    -
    -
    -

    Note that each Java interface has a method added to obtain the - correct C++ pointer for passing to the native function - -Base1_GetInterfaceCPtr for Base1. This method is similar - to the getCPtr method in the proxy classes. In fact, as shown - above in the Derived class, the proxy classes implement this - generated interface by calling a native method ( -Derived_Base1_GetInterfaceCPtr) which calls an appropriate C++ cast - of the pointer up the inheritance chain.

    -

    The interface macros are implemented using the interface - feature and typemaps. For example:

    -
    -
    +
    +
    +

    Note that each Java interface has a method added to obtain the + correct C++ pointer for passing to the native function - +Base1_GetInterfaceCPtr for Base1. This method is similar + to the getCPtr method in the proxy classes. In fact, as shown + above in the Derived class, the proxy classes implement this + generated interface by calling a native method ( +Derived_Base1_GetInterfaceCPtr) which calls an appropriate C++ cast + of the pointer up the inheritance chain.

    +

    The interface macros are implemented using the interface + feature and typemaps. For example:

    +
    +
     %define %interface(CTYPE...)
     %feature("interface", name="%sSwigInterface") CTYPE;
     INTERFACE_TYPEMAPS(CTYPE)
     %enddef
    -
    -
    -

    The feature accepts one attribute called name, which is the - name of the Java interface mentioned earlier. The -INTERFACE_TYPEMAPS macro implements the typemaps and can be viewed - in the swiginterface.i file and contain the usual Java - typemaps for generating code plus the javainterfacecode - typemap which is only used when a class is marked with the -interface feature. See Java code - typemaps for details.

    -

    25.5 Cross language polymorphism using - directors

    -

    Proxy classes provide a natural, object-oriented way to wrap C++ +

    +
    +

    The feature accepts one attribute called name, which is the + name of the Java interface mentioned earlier. The +INTERFACE_TYPEMAPS macro implements the typemaps and can be viewed + in the swiginterface.i file and contain the usual Java + typemaps for generating code plus the javainterfacecode + typemap which is only used when a class is marked with the +interface feature. See Java code + typemaps for details.

    +

    26.5 Cross language polymorphism using + directors

    +

    Proxy classes provide a natural, object-oriented way to wrap C++ classes. as described earlier, each proxy instance has an associated C++ instance, and method calls from Java to the proxy are passed to the - C++ instance transparently via C wrapper functions.

    -

    This arrangement is asymmetric in the sense that no corresponding + C++ instance transparently via C wrapper functions.

    +

    This arrangement is asymmetric in the sense that no corresponding mechanism exists to pass method calls down the inheritance chain from C++ to Java. In particular, if a C++ class has been extended in Java (by deriving from the proxy class), these classes will not be visible from C++ code. Virtual method calls from C++ are thus not able to - access the lowest implementation in the inheritance chain.

    -

    SWIG can address this problem and make the relationship between C++ + access the lowest implementation in the inheritance chain.

    +

    SWIG can address this problem and make the relationship between C++ classes and proxy classes more symmetric. To achieve this goal, new classes called directors are introduced at the bottom of the C++ inheritance chain. The job of the directors is to route method calls @@ -31528,44 +31471,44 @@ interface feature. See Java code extensions look exactly like native C++ classes. Neither C++ code nor Java code needs to know where a particular method is implemented: the combination of proxy classes, director classes, and C wrapper functions - transparently takes care of all the cross-language method routing.

    -

    25.5.1 Enabling directors

    -

    The director feature is disabled by default. To use directors you + transparently takes care of all the cross-language method routing.

    +

    26.5.1 Enabling directors

    +

    The director feature is disabled by default. To use directors you must make two changes to the interface file. First, add the "directors" - option to the %module directive, like this:

    -
    -
    + option to the %module directive, like this:

    +
    +
     %module(directors="1") modulename
    -
    -
    -

    Without this option no director code will be generated. Second, you +

    +
    +

    Without this option no director code will be generated. Second, you must use the %feature("director") directive to tell SWIG which classes and methods should get directors. The %feature directive can be applied - globally, to specific classes, and to specific methods, like this:

    -
    -
    + globally, to specific classes, and to specific methods, like this:

    +
    +
     // generate directors for all classes that have virtual methods
     %feature("director");         
     
    -// generate directors for all virtual methods in class Foo
    +// generate directors for the virtual methods in class Foo
     %feature("director") Foo;      
    -
    -
    -

    You can use the %feature("nodirector") directive to turn off - directors for specific classes or methods. So for example,

    -
    -
    +
    +
    +

    You can use the %feature("nodirector") directive to turn off + directors for specific classes or methods. So for example,

    +
    +
     %feature("director") Foo;
     %feature("nodirector") Foo::bar;
    -
    -
    -

    will generate directors for all virtual methods of class Foo except - bar().

    -

    Directors can also be generated implicitly through inheritance. In +

    +
    +

    will generate directors for the virtual methods of class Foo except + bar().

    +

    Directors can also be generated implicitly through inheritance. In the following, class Bar will get a director class that handles the - methods one() and two() (but not three()):

    -
    -
    + methods one() and two() (but not three()):

    +
    +
     %feature("director") Foo;
     class Foo {
     public:
    @@ -31577,56 +31520,57 @@ class Bar: public Foo {
     public:
       virtual void three();
     };
    -
    -
    -

    25.5.2 Director classes

    -

    For each class that has directors enabled, SWIG generates a new - class that derives from both the class in question and a special -Swig::Director class. These new classes, referred to as director +

    +
    +

    26.5.2 Director classes

    +

    For each class that has directors enabled, SWIG generates a new + class that derives from both the class in question and a special +Swig::Director class. These new classes, referred to as director classes, can be loosely thought of as the C++ equivalent of the Java proxy classes. The director classes store a pointer to their underlying - Java proxy classes.

    -

    For simplicity let's ignore the Swig::Director class and + Java proxy classes.

    +

    For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how - to modify this behavior). Thus all virtual method calls, whether they - originate in C++ or in Java via proxy classes, eventually end up in at - the implementation in the director class. The job of the director + to modify this behavior). Virtual methods that have a final specifier + are unsurprisingly excluded. Thus the virtual method calls, whether + they originate in C++ or in Java via proxy classes, eventually end up + in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate place" we mean the method that would have been called if the C++ base class and its Java derived classes were seamlessly integrated. That seamless integration is exactly what the director classes provide, transparently skipping over all the messy - JNI glue code that binds the two languages together.

    -

    In reality, the "appropriate place" is one of only two + JNI glue code that binds the two languages together.

    +

    In reality, the "appropriate place" is one of only two possibilities: C++ or Java. Once this decision is made, the rest is fairly easy. If the correct implementation is in C++, then the lowest implementation of the method in the C++ inheritance chain is called explicitly. If the correct implementation is in Java, the Java API is used to call the method of the underlying Java object (after which the usual virtual method resolution in Java automatically finds the right - implementation).

    -

    25.5.3 Overhead and code bloat

    -

    Enabling directors for a class will generate a new director method + implementation).

    +

    26.5.3 Overhead and code bloat

    +

    Enabling directors for a class will generate a new director method for every virtual method in the class' inheritance chain. This alone can generate a lot of code bloat for large hierarchies. Method arguments that require complex conversions to and from Java types can result in large director methods. For this reason it is recommended that directors are selectively enabled only for specific classes that - are likely to be extended in Java and used in C++.

    -

    Although directors make it natural to mix native C++ objects with + are likely to be extended in Java and used in C++.

    +

    Although directors make it natural to mix native C++ objects with Java objects (as director objects), one should be aware of the obvious fact that method calls to Java objects from C++ will be much slower than calls to C++ objects. Additionally, compared to classes that do not use directors, the call routing in the director methods adds a small overhead. This situation can be optimized by selectively enabling director methods (using the %feature directive) for only those methods - that are likely to be extended in Java.

    -

    25.5.4 Simple directors example

    -

    Consider the following SWIG interface file:

    -
    -
    + that are likely to be extended in Java.

    +

    26.5.4 Simple directors example

    +

    Consider the following SWIG interface file:

    +
    +
     %module(directors="1") example;
     
     %feature("director") DirectorBase;
    @@ -31640,371 +31584,674 @@ public:
     void callup(DirectorBase *director) {
       director->upcall_method();
     }
    -
    -
    -

    The following DirectorDerived Java class is derived - from the Java proxy class DirectorBase and overrides -upcall_method(). When C++ code invokes upcall_method() -, the SWIG-generated C++ code redirects the call via JNI to the Java -DirectorDerived subclass. Naturally, the SWIG generated C++ code +

    +
    +

    The following DirectorDerived Java class is derived + from the Java proxy class DirectorBase and overrides +upcall_method(). When C++ code invokes upcall_method() +, the SWIG-generated C++ code redirects the call via JNI to the Java +DirectorDerived subclass. Naturally, the SWIG generated C++ code and the generated Java intermediary class marshal and convert arguments - between C++ and Java when needed.

    -
    -
    -public class DirectorDerived extends DirectorBase {
    -  public DirectorDerived() {
    -  }
    -
    + between C++ and Java when needed.

    +
    +
    +class DirectorDerived extends DirectorBase {
    +  @Override
       public void upcall_method() {
    -    System.out.println("DirectorDerived::upcall_method() invoked.");
    +    System.out.println("DirectorDerived.upcall_method() invoked.");
       }
     }
    -
    -
    -

    Running the following Java code

    -
    -
    +
    +
    +

    Running the following Java code

    +
    +
     DirectorDerived director = new DirectorDerived();
     example.callup(director);
    -
    -
    -

    will result in the following being output:

    -
    -
    -DirectorDerived::upcall_method() invoked.
    -
    -
    -

    25.5.5 Director threading issues -

    -

    Depending on your operating system and version of Java and how you +

    +
    +

    will result in the following being output:

    +
    +
    +DirectorDerived.upcall_method() invoked.
    +
    +
    +

    26.5.5 Director threading issues +

    +

    Depending on your operating system and version of Java and how you are using threads, you might find the JVM hangs on exit. There are a couple of solutions to try out. The preferred solution requires jdk-1.4 - and later and uses AttachCurrentThreadAsDaemon instead of -AttachCurrentThread whenever a call into the JVM is required. This + and later and uses AttachCurrentThreadAsDaemon instead of +AttachCurrentThread whenever a call into the JVM is required. This can be enabled by defining the SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON macro when compiling the C++ wrapper code. For older JVMs define SWIG_JAVA_NO_DETACH_CURRENT_THREAD - instead, to avoid the DetachCurrentThread call but this will + instead, to avoid the DetachCurrentThread call but this will result in a memory leak instead. For further details inspect the source - code in the java/director.swg library file.

    -

    Macros can be defined on the commandline when compiling your C++ - code, or alternatively added to the C++ wrapper file as shown below:

    -
    -
    + code in the java/director.swg library file.

    +

    Macros can be defined on the commandline when compiling your C++ + code, or alternatively added to the C++ wrapper file as shown below:

    +
    +
     %insert("runtime") %{
     #define SWIG_JAVA_NO_DETACH_CURRENT_THREAD
     %}
    -
    -
    -

    25.5.6 Director performance - tuning

    -

    When a new instance of a director (or subclass) is created in Java, +

    +
    +

    26.5.6 Director performance + tuning

    +

    When a new instance of a director (or subclass) is created in Java, the C++ side of the director performs a runtime check per director method to determine if that particular method is overridden in Java or if it should invoke the C++ base implementation directly. Although this makes initialization slightly more expensive, it is generally a good - overall tradeoff.

    -

    However, if all director methods are expected to usually be + overall tradeoff.

    +

    However, if all director methods are expected to usually be overridden by Java subclasses, then initialization can be made faster - by avoiding these checks via the assumeoverride attribute. For - example:

    -
    -
    + by avoiding these checks via the assumeoverride attribute. For
    + example:

    +
    +
     %feature("director", assumeoverride=1) Foo;
    -
    -
    -

    The disadvantage is that invocation of director methods from C++ +

    +
    +

    The disadvantage is that invocation of director methods from C++ when Java doesn't actually override the method will require an additional call up into Java and back to C++. As such, this option is only useful when overrides are extremely common and instantiation is - frequent enough that its performance is critical.

    -

    25.5.7 Java exceptions from - directors

    -

    With directors routing method calls to Java, and proxies routing + frequent enough that its performance is critical.

    +

    26.5.7 Java exceptions from + directors

    +

    With directors routing method calls to Java, and proxies routing them to C++, the handling of exceptions is an important concern. The - default behavior from SWIG 3.0 onwards is to convert the thrown Java - exception into a SWIG defined DirectorException C++ - exception. SWIG 2.0 and earlier versions didn't provide any mechanism - to handle the Java director method exceptions in C++.

    -

    Converting Java exceptions into C++ exceptions can be done in two - different ways using the director:except -feature. In the simplest approach, a code block is attached to each - director method to handle the mapping of Java exceptions into C++ - exceptions.

    -
    -
    -%feature("director:except") MyClass::method(int x) {
    + default behavior for Java exceptions thrown in a director method
    + overridden in Java is to store the thrown Java exception into a SWIG
    + defined Swig::DirectorException C++ class exception in the
    + C++ layer and then throw this C++ exception.

    +

    Of course, should this exception be thrown, your C++ code must catch + it and handle it before returning back to Java. The default generated + code does not attempt to handle the C++ exception, but there is + a simple way to make this all work by catching the C++ exception and + extracting the original Java exception by using %catches for +Swig::DirectorException. Consider the example shown earlier with a + modification to the upcall_method Java method to throw a Java + exception:

    +
    +
    +class DirectorDerived extends DirectorBase {
    +  @Override
    +  public void upcall_method() {
    +    System.out.println("DirectorDerived.upcall_method() invoked.");
    +    throw new RuntimeException("There was a problem!");
    +  }
    +}
    +
    +
    +

    Now, by default, the JVM will abort when +example.callup(director) is called as the C++ +Swig::DirectorException (storing the Java exception) is thrown and + not handled by the callup method. Needless to say this is not + very user friendly and so the recommendation is to add the following + simple %catches directive before SWIG parses the callup + function:

    +
    +
    +%catches(Swig::DirectorException) callup;
    +
    +
    +

    Or target all wrapped methods using:

    +
    +
    +%catches(Swig::DirectorException);
    +
    +
    +

    This tells SWIG to generate a C++ catch handler using some code from + the throws typemap for +Swig::DirectorException that SWIG supplies by default, see +Exception handling with %catches. This typemap code is written to + simply catch the C++ Swig::DirectorException class and + immediately return to Java throwing the original Java exception that it + has stored. The net result is a stack trace containing the original + Java exception including the location that the exception was thrown + from.

    +
    +
    +DirectorDerived.upcall_method() invoked.
    +Exception in thread "main" java.lang.RuntimeException: There was a problem!
    +    at DirectorDerived.upcall_method(runme.java:4)
    +    at exampleJNI.SwigDirector_DirectorBase_upcall_method(exampleJNI.java:20)
    +    at exampleJNI.callup(Native Method)
    +    at example.callup(example.java:12)
    +    at runme.main(runme.java:21)
    +
    +
    +

    More on the Swig::DirectorException class can be found in + the next section which details how to customize the handling of + director exceptions.

    +

    26.5.7.1 Customizing + director exceptions

    +

    This section is for advanced customization of director exceptions. + The recommendation for most users is to use the simple %catches + directive described above as it should be sufficient for most users + needs.

    +

    The conversion of Java exceptions into C++ exceptions can be + customized in two different ways using the director:except + feature. In the first approach, a + code block is attached to each director method to handle the mapping of + Java exceptions into C++ exceptions. The code block is generated just + after the call up from the C++ director method into the overloaded + method in Java. Its primary function is to check if a Java exception + has been thrown and then handle it in C++. The example below converts a + java.lang.IndexOutOfBoundsException into a C++ +std::out_of_range exception and converts a user's Java +MyJavaException into a C++ MyCppException exception. If + the Java exception doesn't match either of these, a fallback +std::runtime_error C++ exception is thrown.

    +
    +
    +%feature("director:except") MyClass::dirmethod(int x) {
       jthrowable $error = jenv->ExceptionOccurred();
       if ($error) {
    -    jenv->ExceptionClear();
         if (Swig::ExceptionMatches(jenv, $error, "java/lang/IndexOutOfBoundsException"))
           throw std::out_of_range(Swig::JavaExceptionMessage(jenv, $error).message());
         if (Swig::ExceptionMatches(jenv, $error, "$packagepath/MyJavaException"))
           throw MyCppException(Swig::JavaExceptionMessage(jenv, $error).message());
    -    throw std::runtime_error("Unexpected exception thrown in MyClass::method");
    +    throw std::runtime_error("Unexpected exception thrown in MyClass::dirmethod");
       }
     }
     
     class MyClass {
    +public:
       /** Throws either a std::out_of_range or MyCppException on error */
    -  void method(int x);
    +  virtual void dirmethod(int x);
    +  virtual ~MyClass();
    +};
    +
    +
    +

    A few special variables are expanded within the director:except + feature.

    +
      +
    • The special variable $error is expanded into a unique + variable name (swigerror) and should be used for the assignment of the + jthrowable exception that occurred.
    • +
    • The special variable $packagepath is replaced by the outer + package provided for SWIG generation by the -package option.
    • +
    • The special variable $directorthrowshandlers is not shown + above, but is replaced by applicable "directorthrows" typemap contents + (covered later in this section).
    • +
    • The special variable $null is not shown above, but is + replaced by a suitable default constructed object for returning from + the director method (or nothing if the director method has a void + return).
    • +
    +

    Utility functions/classes in director.swg are provided to aid the + exception conversion as follows:

    +
    +
    +namespace Swig {
    +
    +  // Helper method to determine if a Java throwable matches a particular Java class type
    +  // Note side effect of clearing any pending exceptions
    +  bool ExceptionMatches(JNIEnv *jenv, jthrowable throwable, const char *classname);
    +
    +  // Helper class to extract the exception message from a Java throwable
    +  class JavaExceptionMessage {
    +  public:
    +    JavaExceptionMessage(JNIEnv *jenv, jthrowable throwable);
    +
    +    // Return a C string of the exception message in the jthrowable passed in the constructor
    +    // If no message is available, null_string is return instead
    +    const char *message(const char *null_string = 
    +                        "Could not get exception message in JavaExceptionMessage") const;
    +  };
    +
    +  // C++ Exception class for handling Java exceptions thrown during a director method Java upcall
    +  class DirectorException : public std::exception {
    +  public:
    +
    +    // Construct exception from a Java throwable
    +    DirectorException(JNIEnv *jenv, jthrowable throwable);
    +
    +    // More general constructor for handling as a java.lang.RuntimeException
    +    DirectorException(const char *msg);
    +
    +    // Return exception message extracted from the Java throwable
    +    const char *what() const throw();
    +
    +    // Reconstruct and raise/throw the Java Exception that caused the DirectorException
    +    // Note that any error in the JNI exception handling results in a Java RuntimeException
    +    void throwException(JNIEnv *jenv) const;
    +
    +    // Create and throw the DirectorException
    +    static void raise(JNIEnv *jenv, jthrowable throwable) {
    +      throw DirectorException(jenv, throwable);
    +    }
    +  };
    +
     }
    -
    -
    -

    This approach allows a flexible mapping of Java exceptions thrown by - director methods into C++ exceptions expected by a C++ caller. There - need not be any C++ exception specifications on the C++ - method. The utility function Swig::ExceptionMatches and - class Swig::JavaExceptionMessage are provided to simplify - writing code for wrappers that use the director:except - feature. The function Swig::ExceptionMatches matches the - type of the jthrowable thrown against a fully qualified - JNI style class name, such as "java/lang/IOError". If the - throwable class is the same type, or derives from the given type, -Swig::ExceptionMatches will return true. Care must be taken to +

    +
    +

    The utility function Swig::ExceptionMatches and class +Swig::JavaExceptionMessage are provided to simplify writing code + for wrappers that use the director:except feature. The + function Swig::ExceptionMatches matches the type of the +jthrowable thrown against a fully qualified JNI style + class name, such as "java/lang/IOError". If the throwable + class is the same type, or derives from the given type, +Swig::ExceptionMatches will return true. Care must be taken to provide the correct fully qualified name, since for wrapped exceptions - the generated proxy class will have additional package qualification, - depending on the '-package' argument and use of the -nspace feature. The special variable $error is expanded - by SWIG into a unique variable name and should be used for the - assignment of the exception that occurred. The special variable -$packagepath is replaced by the outer package provided for SWIG - generation by the -package option. The utility class -Swig::JavaExceptionMessage is a holder providing access to the - message from the thrown Java exception. The message() - method returns the exception message as a const char *, - which is only valid during the lifetime of the holder. Any code using - this message needs to copy it, for example into a std::string or a - newly constructed C++ exception.

    -

    Using the above approach to write handlers for a large number of - methods will require repetitive duplication of the -director:except feature code. To mitigate this, an alternative - approach is provided via typemaps in a fashion analagous to the -"throws" typemap. The "throws" typemap provides an approach to - automatically map all the C++ exceptions listed in a method's defined - exceptions (either from a C++ exception specification or a -%catches feature) into Java exceptions. The "directorthrows" - typemap provides the inverse mapping and should contain code to convert - a suitably matching Java exception into a C++ exception. The example - below converts a Java java.lang.IndexOutOfBoundsException - exception to the typemap's type, that is std::out_of_range -:

    -
    + the generated proxy class will have an additional package
    + qualification, depending on the '-package' argument and use of the 
    +nspace feature. The utility class Swig::JavaExceptionMessage
    + is a holder providing access to the message from the thrown Java
    + exception. The message() method returns the exception
    + message as a const char *, which is only valid during the
    + lifetime of the holder. Any code using this message needs to copy it,
    + for example into a std::string or a newly constructed C++ exception.

    +

    Using the first approach above to write handlers for a large number + of methods will require repetitive duplication of the +director:except feature code for each director method. To + mitigate this, a second approach is provided via typemaps in a fashion + analogous to the "throws" + typemap. The "throws" typemap provides a way to map all the C++ + exceptions listed in a method's defined exceptions (either from a C++ + exception specification or a %catches feature) into + Java exceptions. The "directorthrows" typemap provides the inverse + mapping and should contain code to convert a suitably matching Java + exception into a C++ exception. Only use this typemap if you wish to + write custom conversions of Java exceptions into C++ exceptions and + apply them to many different methods. The default handling which uses + the Swig::DirectorException class should otherwise meet + your needs.

    +

    The example below converts a Java +java.lang.IndexOutOfBoundsException exception to the typemap's + type, that is a std::out_of_range C++ exception:

    +
     %typemap(directorthrows) std::out_of_range %{
       if (Swig::ExceptionMatches(jenv, $error, "java/lang/IndexOutOfBoundsException")) {
         throw std::out_of_range(Swig::JavaExceptionMessage(jenv, $error).message());
       }
     %}
    -
    -

    -

    The "directorthrows" typemap is then used in conjunction with the -director:except feature if the $directorthrowshandlers - special variable is used in the feature code. Consider the following, - which also happens to be the default:

    -
    -
    +
    +

    +

    The "directorthrows" typemap is then used in conjunction with the +director:except feature if the $directorthrowshandlers + special variable is used in the code block. Consider the following, + which also happens to be the default:

    +
    +
     %feature("director:except") %{
       jthrowable $error = jenv->ExceptionOccurred();
       if ($error) {
    -    jenv->ExceptionClear();
         $directorthrowshandlers
    -    throw Swig::DirectorException(jenv, $error);
    +    Swig::DirectorException::raise(jenv, $error);
       }
     %}
    -
    -
    -

    The code generated using the director:except feature - replaces the $directorthrowshandlers special variable with - the code in the "directorthrows" typemaps, for each and every exception - defined for the method. The possible exceptions can be defined either - with a C++ exception specification or %catches as - described for the "throws" typemap.

    -

    Consider the following director method:

    -
    -
    -  ...
    +
    +
    +

    where Swig::DirectorException::raise is the helper method + to throw a C++ Swig::DirectorException, see above. The code + generated from the director:except feature has the +$directorthrowshandlers special variable replaced with the code + in the relevant "directorthrows" typemaps, for each and every exception + defined for the method. The relevant exceptions can be defined either + with a C++ exception specification or %catches as + described for the "throws" + typemap.

    +

    Let's try and put all this together by considering the following + director method:

    +
    +
    +struct X {
       virtual void doSomething(int index) throw (std::out_of_range);
       ...
    -
    -
    -

    When combined with the default director:except feature +}; + +OR + +%catches(std::out_of_range) X::doSomething; +struct X { + virtual void doSomething(int index); + ... +}; +

    +
    +

    When combined with the default director:except feature and the "directorthrows" typemap above, the resulting code generated in - the director method after calling up to Java will be:

    -
    -
    + the director method after calling up to Java will be:

    +
    +
     jthrowable swigerror = jenv->ExceptionOccurred();
     if (swigerror) {
    -  jenv->ExceptionClear();
       if (Swig::ExceptionMatches(jenv, swigerror, "java/lang/IndexOutOfBoundsException")) {
         throw std::out_of_range(Swig::JavaExceptionMessage(jenv, swigerror).message());
       }
    -  
    -  throw Swig::DirectorException(jenv, swigerror);
    +  Swig::DirectorException::raise(jenv, swigerror);
     }
    -
    -
    -

    Note: Beware of using exception specifications as the SWIG +

    +
    +

    Note: Beware of using exception specifications as the SWIG director methods will be generated with the same exception specifications and if the director method throws an exception that is - not specified it is likely to terminate your program. See the C++ - standard for more details. Using the %catches feature instead to define - the handled exceptions does not suffer this potential fate.

    -

    Because the default code generation maps any unhandled Java - exceptions to Swig::DirectorException, any director + not specified in the exception specifications list it is likely to + terminate your program. See the C++ standard for more details. Using + the %catches feature instead to define the handled exceptions does not + suffer this potential fate.

    +

    Because the default code generation maps any unhandled Java + exceptions to Swig::DirectorException, any director methods that have exception specifications may cause program - termination. To simply ignore unexpected exceptions, the default - handling can be changed with:

    -
    -
    + termination as this exception class won't be in the exception
    + specifications list. You can avoid throwing Swig::DirectorException
    + by changing the default handling for all methods by adding a 
    +director:except feature without any method name. For example, you
    + can just ignore them:

    +
    +
     %feature("director:except") %{
       jthrowable $error = jenv->ExceptionOccurred();
       if ($error) {
    -    jenv->ExceptionClear();
         $directorthrowshandlers
    +    jenv->ExceptionClear();
         return $null; // exception is ignored
       }
     %}
    -
    -
    -

    Alternatively an exception compatible with the existing director +

    +
    +

    Alternatively an exception compatible with the existing director method exception specifications can be thrown. Assuming that all - methods allow std::runtime_error to be thrown, the return $null; - could be changed to:

    -
    -
    + methods allow std::runtime_error to be thrown, the return $null
    + line above could be changed to:

    +
    +
       throw std::runtime_error(Swig::JavaExceptionMessage(jenv, $error).message());
    -
    -
    -

    In more complex situations, a separate director:except - feature may need to be attached to specific methods.

    -

    Below is a complete example demonstrating the use of the - "directorthrows" typemaps. In this example, a generic "directorthrows" - typemap is appropriate for all three exceptions - all take single - string constructors. If the exceptions had different constructors, it - would be necessary to have separate typemaps for each exception type. - -

    -
    +
    +
    +

    In more complex situations, a separate director:except + feature may need to be attached to specific methods by providing a + method name to the director:except feature.

    +

    This is all no doubt quite hard to follow without seeing a full + example and some code. Below is a complete example demonstrating the + use of most of the exception customizations one can use, that is, + "directorthrows" and "throws" typemaps, %exception and %catches. See + the Exception handling with + %exception and %javaexception section for more on converting C++ + exceptions to Java exceptions. The example also has a user defined C++ + exception class called MyNS::MyException and this is wrapped + as a Java exception. The director class being wrapped is MyClass + and the director method is called MyClass::dirmethod. A number + of std::cout calls have been added to help understand code + flow. You can copy the code below into an interface file and run SWIG + on it and examine the generated code.

    +
     %module(directors="1") example
     
     %{
    -  #include <string>
       #include <stdexcept>
    +  #include <iostream>
     %}
     
    -// Define exceptions in header section using std::runtime_error
    -%define DEFINE_EXCEPTION(NAME)
    -%{
    -  namespace MyNS {
    -    struct NAME : public std::runtime_error { NAME(const std::string &what) : runtime_error(what) {} };
    -  }
    -%}
    -%enddef
    -
    -// Expose C++ exceptions as Java Exceptions by changing the Java base class and providing a getMessage()
    -%define DECLARE_EXCEPTION(NAME)
    -%typemap(javabase) MyNS::NAME "java.lang.Exception";
    -%rename(getMessage) MyNS::NAME::what;
    -namespace MyNS {
    -  struct NAME {
    -    NAME(const std::string& what);
    -    const char * what();
    -  };
    -}
    -%enddef
    -
    -DEFINE_EXCEPTION(ExceptionA)
    -DEFINE_EXCEPTION(ExceptionB)
    -DEFINE_EXCEPTION(Unexpected)
    -
    -// Mark three methods to map director thrown exceptions.
    -%feature("director:except") MyClass::meth1(int);
    -%feature("director:except") MyClass::meth2;
    -%feature("director:except") meth3;
    -
    -%typemap(directorthrows) MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected %{
    -  if (Swig::ExceptionMatches(jenv, $error, "$packagepath/$javaclassname"))
    -    throw $1_type(Swig::JavaExceptionMessage(jenv, $error).message());
    -%}
    -
    -DECLARE_EXCEPTION(ExceptionA)
    -DECLARE_EXCEPTION(ExceptionB)
    -DECLARE_EXCEPTION(Unexpected)
    -
    -%catches(MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected) MyClass::meth2();
    -
    -%inline {
    -  class MyClass {
    -  public:
    -    virtual void meth1(int x) throw(MyNS::ExceptionA, MyNS::ExceptionB) = 0;
    -    virtual void meth2() = 0;   /* throws MyNS::ExceptionA, MyNS::ExceptionB, MyNS::Unexpected */
    -    virtual void meth3(float x) throw(MyNS::Unexpected) = 0;
    -    virtual ~MyClass() {}
    -  };
    -}
    -
    -

    -

    In this case the three different "directorthrows" typemaps will be - used to generate the three different exception handlers for meth1 -, meth2 and meth3. The generated handlers will - have "if" blocks for each exception type specified, in the exception - specification or %catches feature.

    -

    Note that the "directorthrows" typemaps are important only if it is - important for the the exceptions passed through the C++ layer to be - mapped to distinct C++ exceptions. If director methods are being called - by C++ code that is itself wrapped in a SWIG generated Java wrapper and - access is always through this wrapper, the default -Swig::DirectorException class provides enough information to - reconstruct the original exception. In this case removing the -$directorthrowshandlers special variable from the default -director:except feature and simply always throwing a -Swig::DirectorException will achieve the desired result. Along - with this a generic exception feature is added to convert any caught -Swig::DirectorExceptions back into the underlying Java exceptions - via the Swig::DirectorException::raiseJavaException - method, as demonstrated with %javaexception below:

    -
    -
    -%javaexception("Exception") MyClass::myMethod %{
    +// Generic catch handler for all wrapped methods
    +%exception %{
       try {
         $action
    -  } catch (Swig::DirectorException &e) {
    -    // raise/throw the Java exception that originally caused the DirectorException
    -    e.raiseJavaException(jenv);
    +  } catch (const std::exception &e) {
    +    std::cout << "Generic std::exception catch handler" << std::endl;
    +    jclass clazz = jenv->FindClass("java/lang/RuntimeException");
    +    jenv->ThrowNew(clazz, e.what()); 
         return $null;
       }
     %}
    -
    -
    -

    See the Exception handling with - %exception and %javaexception section for more on converting C++ - exceptions to Java exceptions.

    -

    25.6 Accessing protected members

    -

    When using directors, the protected virtual methods are also + +// Expose C++ exception as a Java Exception by changing the Java base class and providing a getMessage() +%typemap(javabase) MyNS::MyException "java.lang.RuntimeException"; +%rename(getMessage) MyNS::MyException::whatsup; + +%inline %{ +namespace MyNS { + class MyException { + std::string msg; + public: + MyException(const char *msg) : msg(msg) {} + const char * whatsup() const { return msg.c_str(); } + }; +} +%} + +%typemap(directorthrows) MyNS::MyException %{ + if (Swig::ExceptionMatches(jenv, $error, "$packagepath/MyException")) { + std::cout << "$1_type exception matched (directorthrows typemap)" << std::endl; + throw $1_type(Swig::JavaExceptionMessage(jenv, $error).message()); + } +%} + +%typemap(throws) MyNS::MyException %{ + std::cout << "$1_type caught (throws typemap)" << std::endl; + jclass excep = jenv->FindClass("MyException"); + if (excep) { + std::cout << "$1_type class found (throws typemap)" << std::endl; + jenv->ThrowNew(excep, $1.whatsup()); + } + return $null; +%} + +// These are the exceptions that the director method MyClass::dirmethod will have catch handlers for. +// Note that this is also a virtual method / director method and the C++ exceptions listed can be +// thrown after converting them from Java exceptions. +%catches(MyNS::MyException, Swig::DirectorException) MyClass::dirmethod; + +// These are the exceptions that call_dirmethod C++ wrapper will have catch handlers for. +// Note that this is not a virtual method, hence not a director method. +%catches(MyNS::MyException, Swig::DirectorException) call_dirmethod; + +%feature("director") MyClass; + +%feature("director:except") MyClass::dirmethod(int x) { + jthrowable $error = jenv->ExceptionOccurred(); + if ($error) { + std::cout << "Upcall finished, an exception was thrown in Java" << std::endl; + $directorthrowshandlers + std::cout << "Upcall finished, no exception conversion, throwing DirectorException" << std::endl; + Swig::DirectorException::raise(jenv, $error); + } +} + +%inline %{ +class MyClass { +public: + /** Throws either a std::out_of_range or MyException on error */ + virtual void dirmethod(int x) { + if (x <= 0) + throw std::out_of_range("MyClass::dirmethod index is out of range"); + else if (x == 1) + throw MyNS::MyException("MyClass::dirmethod some problem!"); + } + virtual ~MyClass() {} + static void call_dirmethod(MyClass& c, int x) { + return c.dirmethod(x); + } +}; +%} +

    +

    +

    The generated code for the call_dirmethod wrapper contains + the various exception handlers. The outer exception handler is from the + %exception directive and the others are from the "throws" + typemaps.

    +
    +
    +SWIGEXPORT void JNICALL Java_exampleJNI_MyClass_1call_1dirmethod(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
    +  ...
    +  try {
    +    try {
    +      MyClass::call_dirmethod(*arg1,arg2);
    +    } catch(MyNS::MyException &_e) {
    +      std::cout << "MyNS::MyException caught (throws typemap)" << std::endl;
    +      jclass excep = jenv->FindClass("MyException");
    +      if (excep) {
    +        std::cout << "MyNS::MyException class found (throws typemap)" << std::endl;
    +        jenv->ThrowNew(excep, (&_e)->whatsup());
    +      }
    +      return ;
    +      
    +    } catch(Swig::DirectorException &_e) {
    +      (&_e)->throwException(jenv);
    +      return ; 
    +    }
    +  } catch (const std::exception &e) {
    +    std::cout << "Generic std::exception catch handler" << std::endl;
    +    jclass clazz = jenv->FindClass("java/lang/RuntimeException");
    +    jenv->ThrowNew(clazz, e.what()); 
    +    return ;
    +  }
    +
    +
    +

    The director method calling up to Java contains the exception + handling code from the "directorthrows" typemaps and +director:except feature.

    +
    +
    +void SwigDirector_MyClass::dirmethod(int x) {
    +      ... [call up to Java using CallStaticVoidMethod]
    +      jthrowable swigerror = jenv->ExceptionOccurred();
    +      if (swigerror) {
    +        std::cout << "Upcall finished, an exception was thrown in Java" << std::endl;
    +        
    +        if (Swig::ExceptionMatches(jenv, swigerror, "MyException")) {
    +          std::cout << "MyNS::MyException exception matched (directorthrows typemap)" << std::endl;
    +          throw MyNS::MyException(Swig::JavaExceptionMessage(jenv, swigerror).message());
    +        }
    +        
    +        std::cout << "Upcall finished, no exception conversion, throwing DirectorException" << std::endl;
    +        Swig::DirectorException::raise(jenv, swigerror);
    +      }
    +
    +
    +

    Let's use the following Java class to override the director method.

    +
    +
    +class DerivedClass extends MyClass {
    +  @Override
    +  public void dirmethod(int x) {
    +    if (x < 0)
    +      throw new IndexOutOfBoundsException("Index is negative");
    +    else if (x == 0)
    +      throw new MyException("MyException: bad dirmethod");
    +  }
    +}
    +public class runme {
    +  public static void main(String argv[]) {
    +    System.loadLibrary("example");
    +    ... code snippets shown below ...
    +  }
    +}
    +
    +
    +

    Consider the output using the Java code in the four slightly + different scenarios below.

    +

    1. Non-director C++ class is used, thus, no upcall to a Java + director method is made. A std::out_of_range exception is + thrown, which is derived from std::exception, and hence caught + by the generic exception handler in the call_dirmethod + wrapper. The Java code snippet and resulting output is:

    +
    +
    +MyClass.call_dirmethod(new MyClass(), 0);
    +
    +
    +
    +Generic std::exception catch handler
    +Exception in thread "main" java.lang.RuntimeException: MyClass::dirmethod index is out of range
    +        at exampleJNI.MyClass_call_dirmethod(Native Method)
    +        at MyClass.call_dirmethod(MyClass.java:57)
    +        at runme.main(runme.java:14)
    +
    +
    +

    2. Non-director C++ class again but this time the +MyNS::MyException class is thrown and caught:

    +
    +
    +MyClass.call_dirmethod(new MyClass(), 1);
    +
    +
    +
    +MyNS::MyException caught (throws typemap)
    +MyNS::MyException class found (throws typemap)
    +Exception in thread "main" MyException: MyClass::dirmethod some problem!
    +        at exampleJNI.MyClass_call_dirmethod(Native Method)
    +        at MyClass.call_dirmethod(MyClass.java:57)
    +        at runme.main(runme.java:15)
    +
    +
    +

    3. The DerivedClass director class is used so the upcall to + Java occurs, but it throws a Java MyException, which gets + converted into a C++ MyNS::MyException, then caught and + converted back into a Java MyException:

    +
    +
    +MyClass.call_dirmethod(new DerivedClass(), 0);
    +
    +
    +
    +Upcall finished, an exception was thrown in Java
    +MyNS::MyException exception matched (directorthrows typemap)
    +MyNS::MyException caught (throws typemap)
    +MyNS::MyException class found (throws typemap)
    +Exception in thread "main" MyException: MyException: bad dirmethod
    +        at exampleJNI.MyClass_call_dirmethod(Native Method)
    +        at MyClass.call_dirmethod(MyClass.java:57)
    +        at runme.main(runme.java:16)
    +
    +
    +

    4. The director class is used again, but this time the director + method throws a Java IndexOutOfBoundsException exception which + is converted into a C++ Swig::DirectorException, thrown and + caught again. This time the original Java exception is extracted from + the Swig::DirectorException and rethrown. Note that this + approach keeps the stack trace information of the original exception, + so it has the exact location of where the IndexOutOfBoundsException + exception was thrown. This is arguably an improvement over the approach + above that converts from a Java excepton to C++ exception and then back + to a new Java exception, losing the location of the original exception.

    +
    +
    +MyClass.call_dirmethod(new DerivedClass(), -1);
    +
    +
    +
    +Upcall finished, an exception was thrown in Java
    +Upcall finished, no exception conversion, throwing DirectorException
    +Exception in thread "main" java.lang.IndexOutOfBoundsException: Index is negative
    +        at DerivedClass.dirmethod(runme.java:5)
    +        at exampleJNI.SwigDirector_MyClass_dirmethod(exampleJNI.java:23)
    +        at exampleJNI.MyClass_call_dirmethod(Native Method)
    +        at MyClass.call_dirmethod(MyClass.java:57)
    +        at runme.main(runme.java:17)
    +
    +
    +

    26.6 Accessing protected members

    +

    When using directors, the protected virtual methods are also wrapped. These methods are wrapped with a protected Java proxy method, so the only way that Java code can access these is from within a Java - class derived from the director class.

    -

    Members which are protected and non-virtual can also be accessed + class derived from the director class.

    +

    Members which are protected and non-virtual can also be accessed when using the 'allprotected' mode. The allprotected mode requires - directors and is turned on by setting the allprotected option - in addition to the directors option in the %module directive, - like this:

    -
    -
    + directors and is turned on by setting the allprotected option
    + in addition to the directors option in the %module directive,
    + like this:

    +
    +
     %module(directors="1", allprotected="1") modulename
    -
    -
    -

    Protected member variables and methods (both static and non-static) - will then be wrapped with protected access in the Java proxy class.

    -

    Note: Neither the directors option nor the allprotected mode +

    +
    +

    Protected member variables and methods (both static and non-static) + will then be wrapped with protected access in the Java proxy class.

    +

    Note: Neither the directors option nor the allprotected mode support types defined with protected scope. This includes any enums or - typedefs declared in the protected section of the C++ class.

    -

    The following simple example is a class with numerous protected - members, including the constructor and destructor:

    -
    -
    + typedefs declared in the protected section of the C++ class.

    +

    The following simple example is a class with numerous protected + members, including the constructor and destructor:

    +
    +
     %module(directors="1", allprotected="1") example
     
     %feature("director") ProtectedBase;
    @@ -32032,15 +32279,15 @@ int ProtectedBase::staticMemberVariable = 10;
     
     %}
     
    -
    -
    -

    Note that the IntegerType has protected scope and the - members which use this type must be ignored as they cannot be wrapped.

    -

    The proxy methods are protected, so the only way the protected +

    +
    +

    Note that the IntegerType has protected scope and the + members which use this type must be ignored as they cannot be wrapped.

    +

    The proxy methods are protected, so the only way the protected members can be accessed is within a class that derives from the - director class, such as the following:

    -
    -
    + director class, such as the following:

    +
    +
     class MyProtectedBase extends ProtectedBase
     {
       public MyProtectedBase() {
    @@ -32058,34 +32305,34 @@ class MyProtectedBase extends ProtectedBase
         i = getStaticMemberVariable();
       }
     }
    -
    -
    -

    25.7 Common customization - features

    -

    An earlier section presented the absolute basics of C/C++ wrapping. +

    +
    +

    26.7 Common customization + features

    +

    An earlier section presented the absolute basics of C/C++ wrapping. If you do nothing but feed SWIG a header file, you will get an interface that mimics the behavior described. However, sometimes this isn't enough to produce a nice module. Certain types of functionality might be missing or the interface to certain functions might be awkward. This section describes some common SWIG features that are used - to improve the interface to existing C/C++ code.

    -

    25.7.1 C/C++ helper functions

    -

    Sometimes when you create a module, it is missing certain bits of - functionality. For example, if you had a function like this

    -
    -
    + to improve the interface to existing C/C++ code.

    +

    26.7.1 C/C++ helper functions

    +

    Sometimes when you create a module, it is missing certain bits of + functionality. For example, if you had a function like this

    +
    +
     typedef struct Image {...};
     void set_transform(Image *im, double m[4][4]);
    -
    -
    -

    it would be accessible from Java, but there may be no easy way to +

    +
    +

    it would be accessible from Java, but there may be no easy way to call it. The problem here is that a type wrapper class is generated for the two dimensional array parameter so there is no easy way to - construct and manipulate a suitable double [4][4] value. To - fix this, you can write some extra C helper functions. Just use the -%inline directive. For example:

    -
    -
    + construct and manipulate a suitable double [4][4] value. To
    + fix this, you can write some extra C helper functions. Just use the 
    +%inline directive. For example:

    +
    +
     %inline %{
     /* Note: double[4][4] is equivalent to a pointer to an array double (*)[4] */
     double (*new_mat44())[4] {
    @@ -32101,11 +32348,11 @@ double mat44_get(double x[4][4], int i, int j) {
       return x[i][j];
     }
     %}
    -
    -
    -

    From Java, you could then write code like this:

    -
    -
    +
    +
    +

    From Java, you could then write code like this:

    +
    +
     Image im = new Image();
     SWIGTYPE_p_a_4__double a = example.new_mat44();
     example.mat44_set(a, 0, 0, 1.0);
    @@ -32114,20 +32361,20 @@ example.mat44_set(a, 2, 2, 1.0);
     ...
     example.set_transform(im, a);
     example.free_mat44(a);
    -
    -
    -

    Admittedly, this is not the most elegant looking approach. However, +

    +
    +

    Admittedly, this is not the most elegant looking approach. However, it works and it wasn't too hard to implement. It is possible to improve on this using Java code, typemaps, and other customization features as covered in later sections, but sometimes helper functions are a quick - and easy solution to difficult cases.

    -

    25.7.2 Class extension with %extend -

    -

    One of the more interesting features of SWIG is that it can extend + and easy solution to difficult cases.

    +

    26.7.2 Class extension with %extend +

    +

    One of the more interesting features of SWIG is that it can extend structures and classes with new methods or constructors. Here is a - simple example:

    -
    -
    + simple example:

    +
    +
     %module example
     %{
     #include "someheader.h"
    @@ -32139,52 +32386,52 @@ struct Vector {
     
     %extend Vector {
       char *toString() {
    -      static char tmp[1024];
    -      sprintf(tmp, "Vector(%g, %g, %g)", $self->x, $self->y, $self->z);
    -      return tmp;
    +    static char tmp[1024];
    +    sprintf(tmp, "Vector(%g, %g, %g)", $self->x, $self->y, $self->z);
    +    return tmp;
       }
       Vector(double x, double y, double z) {
    -      Vector *v = (Vector *) malloc(sizeof(Vector));
    -      v->x = x;
    -      v->y = y;
    -      v->z = z;
    -      return v;
    +    Vector *v = (Vector *) malloc(sizeof(Vector));
    +    v->x = x;
    +    v->y = y;
    +    v->z = z;
    +    return v;
       }
     };
    -
    -
    -

    Now, in Java

    -
    -
    +
    +
    +

    Now, in Java

    +
    +
     Vector v = new Vector(2, 3, 4);
     System.out.println(v);
    -
    -
    -

    will display

    -
    -
    +
    +
    +

    will display

    +
    +
     Vector(2, 3, 4)
    -
    -
    -

    %extend works with both C and C++ code. It does not modify +

    +
    +

    %extend works with both C and C++ code. It does not modify the underlying object in any way---the extensions only show up in the - Java interface.

    -

    25.7.3 Class extension with %proxycode

    -

    The previous section described how to extend a wrapped class with C + Java interface.

    +

    26.7.3 Class extension with %proxycode

    +

    The previous section described how to extend a wrapped class with C or C++ code. This section describes how to extend a wrapped class with - Java code instead of C/C++ code. The %proxycode directive is - used and is just a macro for %insert("proxycode"). The -Code insertion block section describes the %insert + Java code instead of C/C++ code. The %proxycode directive is + used and is just a macro for %insert("proxycode"). The +Code insertion block section describes the %insert directive. The section of code for insertion is "proxycode", that is, the Java proxy class. This directive must hence only be used within the scope of a class, otherwise it is silently ignored. There are two - common ways to get the scope correct.

    -

    The first is to use %proxycode inside a class that SWIG - parses, for example a toString() method can be added to a C++ + common ways to get the scope correct.

    +

    The first is to use %proxycode inside a class that SWIG + parses, for example a toString() method can be added to a C++ class using pure Java code. A C++ header file can mix C++ and Java code - inside the C++ class as follows:

    -
    -
    + inside the C++ class as follows:

    +
    +
     // flag.h header file
     class Flag {
       bool flag;
    @@ -32200,22 +32447,22 @@ public:
     %}
     #endif
     };
    -
    -
    -

    and wrapped using:

    -
    -
    +
    +
    +

    and wrapped using:

    +
    +
     %{
     #include "flag.h"
     %}
     %include "flag.h"
    -
    -
    -

    The second is to use %proxycode within %extend as - everything within a %extend block is effectively within the - scope of the class, for example:

    -
    -
    +
    +
    +

    The second is to use %proxycode within %extend as + everything within a %extend block is effectively within the + scope of the class, for example:

    +
    +
     // flag.h header file
     class Flag {
       bool flag;
    @@ -32223,11 +32470,11 @@ public:
       Flag(bool flag) : flag(flag) {}
       bool FetchFlag() { return flag; }
     };
    -
    -
    -

    and wrapped using:

    -
    -
    +
    +
    +

    and wrapped using:

    +
    +
     %{
     #include "flag.h"
     %}
    @@ -32243,15 +32490,15 @@ public:
     %}
     #endif
     }
    -
    -
    -

    There is some very limited support of typemaps within a -%proxycode block. A useful trick is to obtain the Java type for a - given C/C++ type using the -$typemap special macro. The following C++ template demonstrates - this:

    -
    -
    +
    +
    +

    There is some very limited support of typemaps within a +%proxycode block. A useful trick is to obtain the Java type for a + given C/C++ type using the +$typemap special macro. The following C++ template demonstrates + this:

    +
    +
     %inline %{
     template<typename T> struct Value {
       T value;
    @@ -32270,12 +32517,12 @@ template<typename T> struct Value {
     %}
     }
     %template(ValueUnsignedInt) Value<unsigned int>;
    -
    -
    -

    The generated Java contains the expanded special variable and macro - resulting in Java proxy code:

    -
    -
    +
    +
    +

    The generated Java contains the expanded special variable and macro + resulting in Java proxy code:

    +
    +
     public class ValueUnsignedInt {
       ...
       public String toString() {
    @@ -32284,21 +32531,21 @@ public class ValueUnsignedInt {
       }
     
     }
    -
    -
    -

    25.7.4 Exception handling with - %exception and %javaexception

    -

    If a C or C++ function throws an error, you may want to convert that - error into a Java exception. To do this, you can use the %exception - directive. The %exception directive simply lets you rewrite +

    +
    +

    26.7.4 Exception handling with + %exception and %javaexception

    +

    If a C or C++ function throws an error, you may want to convert that + error into a Java exception. To do this, you can use the %exception + directive. The %exception directive simply lets you rewrite part of the generated wrapper code to include an error check. It is - detailed in full in the Exception - handling with %exception section.

    -

    In C, a function often indicates an error by returning a status code + detailed in full in the Exception + handling with %exception section.

    +

    In C, a function often indicates an error by returning a status code (a negative number or a NULL pointer perhaps). Here is a simple example - of how you might handle that:

    -
    -
    + of how you might handle that:

    +
    +
     %exception malloc {
       $action
       if (!result) {
    @@ -32308,27 +32555,27 @@ public class ValueUnsignedInt {
       }
     }
     void *malloc(size_t nbytes);
    -
    -
    -

    In Java,

    -
    -
    +
    +
    +

    In Java,

    +
    +
     SWIGTYPE_p_void a = example.malloc(2000000000);
    -
    -
    -

    will produce a familiar looking Java exception:

    -
    -
    +
    +
    +

    will produce a familiar looking Java exception:

    +
    +
     Exception in thread "main" java.lang.OutOfMemoryError: Not enough memory
             at exampleJNI.malloc(Native Method)
             at example.malloc(example.java:16)
             at runme.main(runme.java:112)
    -
    -
    -

    If a library provides some kind of general error handling framework, - you can also use that. For example:

    -
    -
    +
    +
    +

    If a library provides some kind of general error handling framework, + you can also use that. For example:

    +
    +
     %exception malloc {
       $action
       if (err_occurred()) {
    @@ -32338,20 +32585,20 @@ Exception in thread "main" java.lang.OutOfMemoryError: Not enough memo
       }
     }
     void *malloc(size_t nbytes);
    -
    -
    -

    If no declaration name is given to %exception, it is - applied to all wrapper functions. The $action is a SWIG +

    +
    +

    If no declaration name is given to %exception, it is + applied to all wrapper functions. The $action is a SWIG special variable and is replaced by the C/C++ function call being - wrapped. The return $null; handles all native method return + wrapped. The return $null; handles all native method return types, namely those that have a void return and those that do not. This is useful for typemaps that will be used in native method returning all - return types. See the section on Java - special variables for further explanation.

    -

    C++ exceptions are also easy to handle. We can catch the C++ - exception and rethrow it as a Java exception like this:

    -
    -
    + return types. See the section on Java
    + special variables for further explanation.

    +

    C++ exceptions are also easy to handle. We can catch the C++ + exception and rethrow it as a Java exception like this:

    +
    +
     %exception getitem {
       try {
         $action
    @@ -32367,21 +32614,21 @@ class FooClass {
         FooClass *getitem(int index);      // Might throw std::out_of_range exception
         ...
     };
    -
    -
    -

    In the example above, java.lang.Exception is a checked - exception class and so ought to be declared in the throws clause of -getitem. Classes can be specified for adding to the throws clause - using %javaexception(classes) instead of %exception, - where classes is a string containing one or more comma - separated Java classes. The %clearjavaexception feature is the - equivalent to %clearexception and clears previously declared - exception handlers. The %nojavaexception feature is the - equivalent to %noexception and disables the exception handler. - See Clearing features - for the difference on disabling and clearing features.

    -
    -
    +
    +
    +

    In the example above, java.lang.Exception is a checked + exception class and so ought to be declared in the throws clause of +getitem. Classes can be specified for adding to the throws clause + using %javaexception(classes) instead of %exception, + where classes is a string containing one or more comma + separated Java classes. The %clearjavaexception feature is the + equivalent to %clearexception and clears previously declared + exception handlers. The %nojavaexception feature is the + equivalent to %noexception and disables the exception handler. + See Clearing features + for the difference on disabling and clearing features.

    +
    +
     %javaexception("java.lang.Exception") getitem {
       try {
         $action
    @@ -32397,108 +32644,108 @@ public:
       FooClass *getitem(int index);      // Might throw std::out_of_range exception
       ...
     };
    -
    -
    -

    The generated proxy method now generates a throws clause containing -java.lang.Exception:

    -
    -
    +
    +
    +

    The generated proxy method now generates a throws clause containing +java.lang.Exception:

    +
    +
     public class FooClass {
       ...
       public FooClass getitem(int index) throws java.lang.Exception { ... }
       ...
     }
    -
    -
    -

    The examples above first use the C JNI calling syntax then the C++ +

    +
    +

    The examples above first use the C JNI calling syntax then the C++ JNI calling syntax. The C++ calling syntax will not compile as C and also vice versa. It is however possible to write JNI calls which will - compile under both C and C++ and is covered in the -Typemaps for both C and C++ compilation section.

    -

    The language-independent exception.i library file can also - be used to raise exceptions. See the SWIG Library - chapter. The typemap example Handling - C++ exception specifications as Java exceptions provides further - exception handling capabilities.

    -

    25.7.5 Method access with - %javamethodmodifiers

    -

    A Java feature called %javamethodmodifiers can be used to - change the method modifiers from the default public. It + compile under both C and C++ and is covered in the +Typemaps for both C and C++ compilation section.

    +

    The language-independent exception.i library file can also + be used to raise exceptions. See the SWIG Library + chapter. The typemap example Handling + C++ exception specifications as Java exceptions provides further + exception handling capabilities.

    +

    26.7.5 Method access with + %javamethodmodifiers

    +

    A Java feature called %javamethodmodifiers can be used to + change the method modifiers from the default public. It applies to both module class methods and proxy class methods. For - example:

    -
    -
    + example:

    +
    +
     %javamethodmodifiers protect_me() "protected";
     void protect_me();
    -
    -
    -

    Will produce the method in the module class with protected access.

    -
    -
    +
    +
    +

    Will produce the method in the module class with protected access.

    +
    +
     protected static void protect_me() {
       exampleJNI.protect_me();
     }
    -
    -
    -

    25.8 Tips and techniques

    -

    Although SWIG is largely automatic, there are certain types of +

    +
    +

    26.8 Tips and techniques

    +

    Although SWIG is largely automatic, there are certain types of wrapping problems that require additional user input. Examples include dealing with output parameters, strings and arrays. This chapter - discusses the common techniques for solving these problems.

    -

    25.8.1 Input and output - parameters using primitive pointers and references

    -

    A common problem in some C programs is handling parameters passed as - simple pointers or references. For example:

    -
    -
    + discusses the common techniques for solving these problems.

    +

    26.8.1 Input and output + parameters using primitive pointers and references

    +

    A common problem in some C programs is handling parameters passed as + simple pointers or references. For example:

    +
    +
     void add(int x, int y, int *result) {
       *result = x + y;
     }
    -
    -
    -

    or perhaps

    -
    -
    +
    +
    +

    or perhaps

    +
    +
     int sub(int *x, int *y) {
       return *x-*y;
     }
    -
    -
    -

    The typemaps.i library file will help in these situations. - For example:

    -
    -
    +
    +
    +

    The typemaps.i library file will help in these situations. + For example:

    +
    +
     %module example
     %include "typemaps.i"
     
     void add(int, int, int *OUTPUT);
     int  sub(int *INPUT, int *INPUT);
    -
    -
    -

    In Java, this allows you to pass simple values. For example:

    -
    -
    +
    +
    +

    In Java, this allows you to pass simple values. For example:

    +
    +
     int result = example.sub(7, 4);
     System.out.println("7 - 4 = " + result);
     int[] sum = {0};
     example.add(3, 4, sum);
     System.out.println("3 + 4 = " + sum[0]);
    -
    -
    -

    Which will display:

    -
    -
    +
    +
    +

    Which will display:

    +
    +
     7 - 4 = 3
     3 + 4 = 7
    -
    -
    -

    Notice how the INPUT parameters allow integer values to be - passed instead of pointers and how the OUTPUT parameter will - return the result in the first element of the integer array.

    -

    If you don't want to use the names INPUT or OUTPUT -, use the %apply directive. For example:

    -
    -
    +
    +
    +

    Notice how the INPUT parameters allow integer values to be + passed instead of pointers and how the OUTPUT parameter will + return the result in the first element of the integer array.

    +

    If you don't want to use the names INPUT or OUTPUT +, use the %apply directive. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
    @@ -32507,72 +32754,72 @@ System.out.println("3 + 4 = " + sum[0]);
     
     void add(int x, int y, int *result);
     int  sub(int *x, int *y);
    -
    -
    -

    If a function mutates one of its parameters like this,

    -
    -
    +
    +
    +

    If a function mutates one of its parameters like this,

    +
    +
     void negate(int *x) {
       *x = -(*x);
     }
    -
    -
    -

    you can use INOUT like this:

    -
    -
    +
    +
    +

    you can use INOUT like this:

    +
    +
     %include "typemaps.i"
     ...
     void negate(int *INOUT);
    -
    -
    -

    In Java, the input parameter is the first element in a 1 element - array and is replaced by the output of the function. For example:

    -
    -
    +
    +
    +

    In Java, the input parameter is the first element in a 1 element + array and is replaced by the output of the function. For example:

    +
    +
     int[] neg = {3};
     example.negate(neg);
     System.out.println("Negative of 3 = " + neg[0]);
    -
    -
    -

    And no prizes for guessing the output:

    -
    -
    +
    +
    +

    And no prizes for guessing the output:

    +
    +
     Negative of 3 = -3
    -
    -
    -

    These typemaps can also be applied to C++ references. The above +

    +
    +

    These typemaps can also be applied to C++ references. The above examples would work the same if they had been defined using references - instead of pointers. For example, the Java code to use the negate - function would be the same if it were defined either as it is above:

    -
    -
    + instead of pointers. For example, the Java code to use the negate
    + function would be the same if it were defined either as it is above:

    +
    +
     void negate(int *INOUT);
    -
    -
    -

    or using a reference:

    -
    -
    +
    +
    +

    or using a reference:

    +
    +
     void negate(int &INOUT);
    -
    -
    -

    Note: Since most Java primitive types are immutable and are passed +

    +
    +

    Note: Since most Java primitive types are immutable and are passed by value, it is not possible to perform in-place modification of a type - passed as a parameter.

    -

    Be aware that the primary purpose of the typemaps.i file is - to support primitive datatypes. Writing a function like this

    -
    -
    + passed as a parameter.

    +

    Be aware that the primary purpose of the typemaps.i file is + to support primitive datatypes. Writing a function like this

    +
    +
     void foo(Bar *OUTPUT);
    -
    -
    -

    will not have the intended effect since typemaps.i does not - define an OUTPUT rule for Bar.

    -

    25.8.2 Simple pointers

    -

    If you must work with simple pointers such as int * or -double * another approach to using typemaps.i is to use - the cpointer.i pointer library file. For example:

    -
    -
    +
    +
    +

    will not have the intended effect since typemaps.i does not + define an OUTPUT rule for Bar.

    +

    26.8.2 Simple pointers

    +

    If you must work with simple pointers such as int * or +double * another approach to using typemaps.i is to use + the cpointer.i pointer library file. For example:

    +
    +
     %module example
     %include "cpointer.i"
     
    @@ -32581,48 +32828,48 @@ extern void add(int x, int y, int *result);
     %}
     
     %pointer_functions(int, intp);
    -
    -
    -

    The %pointer_functions(type, name) macro generates five +

    +
    +

    The %pointer_functions(type, name) macro generates five helper functions that can be used to create, destroy, copy, assign, and - dereference a pointer. In this case, the functions are as follows:

    -
    -
    + dereference a pointer. In this case, the functions are as follows:

    +
    +
     int  *new_intp();
     int  *copy_intp(int *x);
     void  delete_intp(int *x);
     void  intp_assign(int *x, int value);
     int   intp_value(int *x);
    -
    -
    -

    In Java, you would use the functions like this:

    -
    -
    +
    +
    +

    In Java, you would use the functions like this:

    +
    +
     SWIGTYPE_p_int intPtr = example.new_intp();
     example.add(3, 4, intPtr);
     int result = example.intp_value(intPtr);
     System.out.println("3 + 4 = " + result);
    -
    -
    -

    If you replace %pointer_functions(int, intp) by -%pointer_class(int, intp), the interface is more class-like.

    -
    -
    +
    +
    +

    If you replace %pointer_functions(int, intp) by +%pointer_class(int, intp), the interface is more class-like.

    +
    +
     intp intPtr = new intp();
     example.add(3, 4, intPtr.cast());
     int result = intPtr.value();
     System.out.println("3 + 4 = " + result);
    -
    -
    -

    See the SWIG Library chapter for further - details.

    -

    25.8.3 Wrapping C arrays with Java arrays -

    -

    SWIG can wrap arrays in a more natural Java manner than the default - by using the arrays_java.i library file. Let's consider an - example:

    -
    -
    +
    +
    +

    See the SWIG Library chapter for further + details.

    +

    26.8.3 Wrapping C arrays with Java arrays +

    +

    SWIG can wrap arrays in a more natural Java manner than the default + by using the arrays_java.i library file. Let's consider an + example:

    +
    +
     %include "arrays_java.i";
     int array[4];
     void populate(int x[]) {
    @@ -32630,12 +32877,12 @@ void populate(int x[]) {
       for (i=0; i<4; i++)
         x[i] = 100 + i;
     }
    -
    -
    -

    These one dimensional arrays can then be used as if they were Java - arrays:

    -
    -
    +
    +
    +

    These one dimensional arrays can then be used as if they were Java + arrays:

    +
    +
     int[] array = new int[4];
     example.populate(array);
     
    @@ -32650,35 +32897,35 @@ int[] global_array = example.getArray();
     System.out.print("\nglobal_array: ");
     for (int i=0; i<array.length; i++)
       System.out.print(global_array[i] + " ");
    -
    -
    -

    Java arrays are always passed by reference, so any changes a +

    +
    +

    Java arrays are always passed by reference, so any changes a function makes to the array will be seen by the calling function. Here - is the output after running this code:

    -
    -
    + is the output after running this code:

    +
    +
     array: 100 101 102 103
     global_array: 100 101 102 103
    -
    -
    -

    Note that for assigning array variables the length of the C variable +

    +
    +

    Note that for assigning array variables the length of the C variable is used, so it is possible to use a Java array that is bigger than the C code will cope with. Only the number of elements in the C array will be used. However, if the Java array is not large enough then you are likely to get a segmentation fault or access violation, just like you - would in C. When arrays are used in functions like populate, + would in C. When arrays are used in functions like populate, the size of the C array passed to the function is determined by the - size of the Java array.

    -

    Please be aware that the typemaps in this library are not efficient + size of the Java array.

    +

    Please be aware that the typemaps in this library are not efficient as all the elements are copied from the Java array to a C array whenever the array is passed to and from JNI code. There is an alternative approach using the SWIG array library and this is covered - in the next section.

    -

    25.8.4 Unbounded C Arrays

    -

    Sometimes a C function expects an array to be passed as a pointer. - For example,

    -
    -
    + in the next section.

    +

    26.8.4 Unbounded C Arrays

    +

    Sometimes a C function expects an array to be passed as a pointer. + For example,

    +
    +
     int sumitems(int *first, int nitems) {
       int i, sum = 0;
       for (i = 0; i < nitems; i++) {
    @@ -32686,96 +32933,96 @@ int sumitems(int *first, int nitems) {
       }
       return sum;
     }
    -
    -
    -

    One of the ways to wrap this is to apply the Java array typemaps - that come in the arrays_java.i library file:

    -
    -
    +
    +
    +

    One of the ways to wrap this is to apply the Java array typemaps + that come in the arrays_java.i library file:

    +
    +
     %include "arrays_java.i"
     %apply int[] {int *};
    -
    -
    -

    The ANY size will ensure the typemap is applied to arrays +

    +
    +

    The ANY size will ensure the typemap is applied to arrays of all sizes. You could narrow the typemap matching rules by specifying a particular array size. Now you can use a pure Java array and pass it - to the C code:

    -
    -
    + to the C code:

    +
    +
     int[] array = new int[10000000];          // Array of 10-million integers
     for (int i=0; i<array.length; i++) {      // Set some values
       array[i] = i;
     }
     int sum = example.sumitems(array, 10000);
     System.out.println("Sum = " + sum);
    -
    -
    -

    and the sum would be displayed:

    -
    -
    +
    +
    +

    and the sum would be displayed:

    +
    +
     Sum = 49995000
    -
    -
    -

    This approach is probably the most natural way to use arrays. +

    +
    +

    This approach is probably the most natural way to use arrays. However, it suffers from performance problems when using large arrays as a lot of copying of the elements occurs in transferring the array from the Java world to the C++ world. An alternative approach to using - Java arrays for C arrays is to use an alternative SWIG library file -carrays.i. This approach can be more efficient for large arrays as - the array is accessed one element at a time. For example:

    -
    -
    + Java arrays for C arrays is to use an alternative SWIG library file 
    +carrays.i. This approach can be more efficient for large arrays as
    + the array is accessed one element at a time. For example:

    +
    +
     %include "carrays.i"
     %array_functions(int, intArray);
    -
    -
    -

    The %array_functions(type, name) macro generates four +

    +
    +

    The %array_functions(type, name) macro generates four helper functions that can be used to create and destroy arrays and - operate on elements. In this case, the functions are as follows:

    -
    -
    + operate on elements. In this case, the functions are as follows:

    +
    +
     int *new_intArray(int nelements);
     void delete_intArray(int *x);
     int intArray_getitem(int *x, int index);
     void intArray_setitem(int *x, int index, int value);
    -
    -
    -

    In Java, you would use the functions like this:

    -
    -
    +
    +
    +

    In Java, you would use the functions like this:

    +
    +
     SWIGTYPE_p_int array = example.new_intArray(10000000);  // Array of 10-million integers
     for (int i=0; i<10000; i++) {                           // Set some values
       example.intArray_setitem(array, i, i);
     }
     int sum = example.sumitems(array, 10000);
     System.out.println("Sum = " + sum);
    -
    -
    -

    If you replace %array_functions(int, intp) by -%array_class(int, intp), the interface is more class-like and a +

    +
    +

    If you replace %array_functions(int, intp) by +%array_class(int, intp), the interface is more class-like and a couple more helper functions are available for casting between the - array and the type wrapper class.

    -
    -
    + array and the type wrapper class.

    +
    +
     %include "carrays.i"
     %array_class(int, intArray);
    -
    -
    -

    The %array_class(type, name) macro creates wrappers for an +

    +
    +

    The %array_class(type, name) macro creates wrappers for an unbounded array object that can be passed around as a simple pointer - like int * or double *. For instance, you will be - able to do this in Java:

    -
    -
    + like int * or double *. For instance, you will be
    + able to do this in Java:

    +
    +
     intArray array = new intArray(10000000);  // Array of 10-million integers
     for (int i=0; i<10000; i++) {             // Set some values
       array.setitem(i, i);
     }
     int sum = example.sumitems(array.cast(), 10000);
     System.out.println("Sum = " + sum);
    -
    -
    -

    The array "object" created by %array_class() does not +

    +
    +

    The array "object" created by %array_class() does not encapsulate pointers inside a special array object. In fact, there is no bounds checking or safety of any kind (just like in C). Because of this, the arrays created by this library are extremely low-level @@ -32785,15 +33032,15 @@ System.out.println("Sum = " + sum); to say, this approach is not going to suit all applications. On the other hand, this low-level approach is extremely efficient and well suited for applications in which you need to create buffers, package - binary data, etc.

    -

    25.8.5 Binary data vs Strings

    -

    By default SWIG handles char * as a string but there is a - handy multi-argument typemap available as mentioned in -Passing binary data. The following simple example demonstrates using + binary data, etc.

    +

    26.8.5 Binary data vs Strings

    +

    By default SWIG handles char * as a string but there is a + handy multi-argument typemap available as mentioned in +Passing binary data. The following simple example demonstrates using a byte array instead of passing the default string type and length to - the wrapped function.

    -
    -
    + the wrapped function.

    +
    +
     %apply (char *STRING, size_t LENGTH) { (const char data[], size_t len) }
     %inline %{
     void binaryChar1(const char data[], size_t len) {
    @@ -32803,38 +33050,38 @@ void binaryChar1(const char data[], size_t len) {
       printf("\n");
     }
     %}
    -
    -
    -

    Calling from Java requires just the byte array to be passed in as +

    +
    +

    Calling from Java requires just the byte array to be passed in as the multi-argument typemap being applied reduces the number of - arguments in the target language to one, from the original two:

    -
    -
    + arguments in the target language to one, from the original two:

    +
    +
     byte[] data = "hi\0jk".getBytes();
     example.binaryChar1(data);     
    -
    -
    -

    resulting in the output

    -
    -
    +
    +
    +

    resulting in the output

    +
    +
     $ java runme
     len: 5 data: 68 69 0 6a 6b
    -
    -
    -

    25.8.6 Overriding new and delete to - allocate from Java heap

    -

    Unlike some languages supported by SWIG, Java has a true garbage +

    +
    +

    26.8.6 Overriding new and delete to + allocate from Java heap

    +

    Unlike some languages supported by SWIG, Java has a true garbage collection subsystem. Other languages will free SWIG wrapped objects when their reference count reaches zero. Java only schedules these objects for finalization, which may not occur for some time. Because SWIG objects are allocated on the C heap, Java users may find the JVM memory use quickly exceeds the assigned limits, as memory fills with unfinalized proxy objects. Forcing garbage collection is clearly an - undesirable solution.

    -

    An elegant fix for C++ users is to override new and delete using the - following code (here shown included in a SWIG interface file)

    -
    -
    + undesirable solution.

    +

    An elegant fix for C++ users is to override new and delete using the + following code (here shown included in a SWIG interface file)

    +
    +
     /* File: java_heap.i */
     %module test
     %{
    @@ -32889,7 +33136,7 @@ void * operator new(size_t t) {
           throw bad_alloc();
         pJalloc->ref = 0;
         return static_cast<void *>(
    -        static_cast<char *>(static_cast<void *>(pJalloc)) + sizeof(Jalloc));
    +      static_cast<char *>(static_cast<void *>(pJalloc)) + sizeof(Jalloc));
       }
     }
     
    @@ -32909,9 +33156,9 @@ void operator delete(void *v) {
     }
     %}
     ...
    -
    -
    -

    This code caches the Java environment during initialization, and +

    +
    +

    This code caches the Java environment during initialization, and when new is called, a Java ByteArray is allocated to provide the SWIG objects with space in the Java heap. This has the combined effect of re-asserting the Java virtual machine's limit on memory allocation, and @@ -32919,124 +33166,124 @@ void operator delete(void *v) { frequently. This code is made slightly more complicated because allowances must be made if new is called before the JNI_OnLoad is executed. This can happen during static class initialization, for - example.

    -

    Unfortunately, because most Java implementations call malloc and + example.

    +

    Unfortunately, because most Java implementations call malloc and free, this solution will not work for C wrapped structures. However, you are free to make functions that allocate and free memory from the Java heap using this model and use these functions in place of malloc - and free in your own code.

    -

    25.9 Java typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap - directive. You are advised to be familiar with the material in the " -Typemaps" chapter. While not absolutely essential knowledge, this + and free in your own code.

    +

    26.9 Java typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap + directive. You are advised to be familiar with the material in the " +Typemaps" chapter. While not absolutely essential knowledge, this section assumes some familiarity with the Java Native Interface (JNI). - JNI documentation can be consulted either online at -Sun's Java web site or from a good JNI book. The following two books - are recommended:

    -
      -
    • Title: 'Essential JNI: Java Native Interface.' Author: Rob Gordon. - Publisher: Prentice Hall. ISBN: 0-13-679895-0.
    • -
    • Title: 'The Java Native Interface: Programmer's Guide and + JNI documentation can be consulted either online at +the Java web site or from a good JNI book. The following two books + are recommended:

      +
        +
      • Title: 'Essential JNI: Java Native Interface.' Author: Rob Gordon. + Publisher: Prentice Hall. ISBN: 0-13-679895-0.
      • +
      • Title: 'The Java Native Interface: Programmer's Guide and Specification.' Author: Sheng Liang. Publisher: Addison-Wesley. ISBN: - 0-201-32577-2. Also available -online at the Sun Developer Network.
      • -
      -

      Before proceeding, it should be stressed that typemaps are not a + 0-201-32577-2. Also available +online at the Sun Developer Network.

    • +
    +

    Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect - of the generated code.

    -

    25.9.1 Default - primitive type mappings

    -

    The following table lists the default type mapping from Java to - C/C++.

    - - - - - - - - - - - - - - - - - -
    C/C++ typeJava typeJNI type -
    bool -
    const bool &
    booleanjboolean
    char -
    const char &
    charjchar
    signed char -
    const signed char &
    bytejbyte
    unsigned char -
    const unsigned char &
    shortjshort
    short -
    const short &
    shortjshort
    unsigned short -
    const unsigned short &
    intjint
    int -
    const int &
    intjint
    unsigned int -
    const unsigned int &
    longjlong
    long -
    const long &
    intjint
    unsigned long -
    const unsigned long &
    longjlong
    long long -
    const long long &
    longjlong
    unsigned long long -
    const unsigned long long &
    java.math.BigInteger -jobject
    float -
    const float &
    floatjfloat
    double -
    const double &
    doublejdouble
    char * -
    char []
    Stringjstring
    -

    Note that SWIG wraps the C char type as a character. - Pointers and arrays of this type are wrapped as strings. The signed - char type can be used if you want to treat char as a + of the generated code.

    +

    26.9.1 Default + primitive type mappings

    +

    The following table lists the default type mapping from Java to + C/C++.

    + + + + + + + + + + + + + + + + + +
    C/C++ typeJava typeJNI type +
    bool +
    const bool &
    booleanjboolean
    char +
    const char &
    charjchar
    signed char +
    const signed char &
    bytejbyte
    unsigned char +
    const unsigned char &
    shortjshort
    short +
    const short &
    shortjshort
    unsigned short +
    const unsigned short &
    intjint
    int +
    const int &
    intjint
    unsigned int +
    const unsigned int &
    longjlong
    long +
    const long &
    intjint
    unsigned long +
    const unsigned long &
    longjlong
    long long +
    const long long &
    longjlong
    unsigned long long +
    const unsigned long long &
    java.math.BigInteger +jobject
    float +
    const float &
    floatjfloat
    double +
    const double &
    doublejdouble
    char * +
    char []
    Stringjstring
    +

    Note that SWIG wraps the C char type as a character. + Pointers and arrays of this type are wrapped as strings. The signed + char type can be used if you want to treat char as a signed number rather than a character. Also note that all const references to primitive types are treated as if they are passed by - value.

    -

    Given the following C function:

    -
    -
    + value.

    +

    Given the following C function:

    +
    +
     void func(unsigned short a, char *b, const long &c, unsigned long long d);
    -
    -
    -

    The module class method would be:

    -
    -
    +
    +
    +

    The module class method would be:

    +
    +
     public static void func(int a, String b, int c, java.math.BigInteger d) {...}
    -
    -
    -

    The intermediary JNI class would use the same types:

    -
    -
    +
    +
    +

    The intermediary JNI class would use the same types:

    +
    +
     public final static native void func(int jarg1, String jarg2, int jarg3,
                                          java.math.BigInteger jarg4);
    -
    -
    -

    and the JNI function would look like this:

    -
    -
    +
    +
    +

    and the JNI function would look like this:

    +
    +
     SWIGEXPORT void JNICALL Java_exampleJNI_func(JNIEnv *jenv, jclass jcls,
                     jint jarg1, jstring jarg2, jint jarg3, jobject jarg4) {...}
    -
    -
    -

    The mappings for C int and C long are appropriate +

    +
    +

    The mappings for C int and C long are appropriate for 32 bit applications which are used in the 32 bit JVMs. There is no perfect mapping between Java and C as Java doesn't support all the unsigned C data types. However, the mappings allow the full range of - values for each C type from Java.

    -

    25.9.2 Default - typemaps for non-primitive types

    -

    The previous section covered the primitive type mappings. + values for each C type from Java.

    +

    26.9.2 Default + typemaps for non-primitive types

    +

    The previous section covered the primitive type mappings. Non-primitive types such as classes and structs are mapped using - pointers on the C/C++ side and storing the pointer into a Java long + pointers on the C/C++ side and storing the pointer into a Java long variable which is held by the proxy class or type wrapper class. This applies whether the type is marshalled as a pointer, by reference or by value. It also applies for any unknown/incomplete types which use type - wrapper classes.

    -

    So in summary, the C/C++ pointer to non-primitive types is cast into - the 64 bit Java long type and therefore the JNI type is a -jlong. The Java type is either the proxy class or type wrapper - class.

    -

    25.9.3 Sixty four bit JVMs

    -

    If you are using a 64 bit JVM you may have to override the C long, + wrapper classes.

    +

    So in summary, the C/C++ pointer to non-primitive types is cast into + the 64 bit Java long type and therefore the JNI type is a +jlong. The Java type is either the proxy class or type wrapper + class.

    +

    26.9.3 Sixty four bit JVMs

    +

    If you are using a 64 bit JVM you may have to override the C long, but probably not C int default mappings. Mappings will be system dependent, for example long will need remapping on Unix LP64 systems (long, pointer 64 bits, int 32 bits), but not on Microsoft 64 bit @@ -33044,13 +33291,13 @@ jlong. The Java type is either the proxy class or type wrapper 32 bits) model. This may be automated in a future version of SWIG. Note that the Java write once run anywhere philosophy holds true for all pure Java code when moving to a 64 bit JVM. Unfortunately it won't of - course hold true for JNI code.

    -

    25.9.4 What is a typemap?

    -

    A typemap is nothing more than a code generation rule that is + course hold true for JNI code.

    +

    26.9.4 What is a typemap?

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers - from Java to C, you might define a typemap like this:

    -
    -
    + from Java to C, you might define a typemap like this:

    +
    +
     %module example
     
     %typemap(in) int {
    @@ -33060,35 +33307,35 @@ jlong. The Java type is either the proxy class or type wrapper
     %inline %{
     extern int fact(int nonnegative);
     %}
    -
    -
    -

    Typemaps are always associated with some specific aspect of code +

    +
    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of - input arguments to C/C++. The datatype int is the datatype to + input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variables prefaced by - a $ are used. The $1 variable is a placeholder for a - local variable of type int. The $input variable - contains the Java data, the JNI jint in this case.

    -

    When this example is compiled into a Java module, it can be used as - follows:

    -
    -
    + a $ are used. The $1 variable is a placeholder for a
    + local variable of type int. The $input variable
    + contains the Java data, the JNI jint in this case.

    +

    When this example is compiled into a Java module, it can be used as + follows:

    +
    +
     System.out.println(example.fact(6));
    -
    -
    -

    and the output will be:

    -
    -
    +
    +
    +

    and the output will be:

    +
    +
     Received an integer : 6
     720
    -
    -
    -

    In this example, the typemap is applied to all occurrences of the -int datatype. You can refine this by supplying an optional - parameter name. For example:

    -
    -
    +
    +
    +

    In this example, the typemap is applied to all occurrences of the +int datatype. You can refine this by supplying an optional + parameter name. For example:

    +
    +
     %module example
     
     %typemap(in) int nonnegative {
    @@ -33099,18 +33346,18 @@ int datatype. You can refine this by supplying an optional
     %inline %{
     extern int fact(int nonnegative);
     %}
    -
    -
    -

    In this case, the typemap code is only attached to arguments that - exactly match int nonnegative.

    -

    The application of a typemap to specific datatypes and argument +

    +
    +

    In this case, the typemap code is only attached to arguments that + exactly match int nonnegative.

    +

    The application of a typemap to specific datatypes and argument names involves more than simple text-matching--typemaps are fully integrated into the SWIG C++ type-system. When you define a typemap for - int, that typemap applies to int and qualified - variations such as const int. In addition, the typemap system - follows typedef declarations. For example:

    -
    -
    + int, that typemap applies to int and qualified
    + variations such as const int. In addition, the typemap system
    + follows typedef declarations. For example:

    +
    +
     %typemap(in) int nonnegative {
       $1 = $input;
       printf("Received an integer : %d\n",  $1);
    @@ -33119,95 +33366,103 @@ extern int fact(int nonnegative);
     typedef int Integer;
     extern int fact(Integer nonnegative);    // Above typemap is applied
     %}
    -
    -
    -

    However, the matching of typedef only occurs in one - direction. If you defined a typemap for Integer, it is not - applied to arguments of type int.

    -

    Typemaps can also be defined for groups of consecutive arguments. - For example:

    -
    -
    +
    +
    +

    However, the matching of typedef only occurs in one + direction. If you defined a typemap for Integer, it is not + applied to arguments of type int.

    +

    Typemaps can also be defined for groups of consecutive arguments. + For example:

    +
    +
     %typemap(in) (char *str, int len) {
     ...
     };
     
     int count(char c, char *str, int len);
    -
    -
    -

    When a multi-argument typemap is defined, the arguments are always +

    +
    +

    When a multi-argument typemap is defined, the arguments are always handled as a single Java parameter. This allows the function to be used - like this (notice how the length parameter is omitted):

    -
    -
    + like this (notice how the length parameter is omitted):

    +
    +
     int c = example.count('e', "Hello World");
    -
    -
    -

    25.9.5 Typemaps for mapping - C/C++ types to Java types

    -

    The typemaps available to the Java module include the common +

    +
    +

    26.9.5 Typemaps for mapping + C/C++ types to Java types

    +

    The typemaps available to the Java module include the common typemaps listed in the main typemaps section. There are a number of additional typemaps which are necessary for using SWIG with Java. The most important of these implement the mapping of C/C++ types to Java - types:

    -
      - - - - +
    TypemapDescription
    jniJNI C types. These provide the default mapping of - types from C/C++ to JNI for use in the JNI (C/C++) code.
    jtypeJava intermediary types. These provide the default + types:

    +
      + + + + - + - + - + - + + - + - + - + -
    TypemapDescription
    jniJNI C types. These provide the default mapping of + types from C/C++ to JNI for use in the JNI (C/C++) code.
    jtypeJava intermediary types. These provide the default mapping of types from C/C++ to Java for use in the native functions in the intermediary JNI class. The type must be the equivalent Java type - for the JNI C type specified in the "jni" typemap.
    jstypeJava types. These provide the default mapping of + for the JNI C type specified in the "jni" typemap.
    jstypeJava types. These provide the default mapping of types from C/C++ to Java for use in the Java module class, proxy - classes and type wrapper classes.
    javainConversion from jstype to jtype. These are Java + classes and type wrapper classes.
    javainConversion from jstype to jtype. These are Java code typemaps which transform the type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap) to the type used in the Java intermediary JNI class (as specified in the "jtype" typemap). In other words the typemap provides - the conversion to the native method call parameter types.
    javaoutConversion from jtype to jstype. These are Java + the conversion to the native method call parameter types.
    javaoutConversion from jtype to jstype. These are Java code typemaps which transform the type used in the Java intermediary JNI class (as specified in the "jtype" typemap) to the Java type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap). In other words the typemap provides - the conversion from the native method call return type.
    javadirectorinConversion from jtype to jstype for + the conversion from the native method call return type.
    jboxtypeJava boxed type. These are Java code typemaps + to provide the Java boxed type, such as, Integer for C type +int. As autoboxing is only relevant to the Java primitive types, + these are only provided for the C types that map to Java primitive + types. This typemap is usually only used by C++ STL container wrappers + that are wrapped by Java generic types as the boxed type must be used + instead of the unboxed/primitive type when declaring a Java generic + type.
    javadirectorinConversion from jtype to jstype for director methods. These are Java code typemaps which transform the type used in the Java intermediary JNI class (as specified in the "jtype" typemap) to the Java type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap). This typemap provides the conversion for the parameters in the director - methods when calling up from C++ to Java. See -Director typemaps.
    javadirectoroutConversion from jstype to jtype for + methods when calling up from C++ to Java. See +Director typemaps.
    javadirectoroutConversion from jstype to jtype for director methods. These are Java code typemaps which transform the type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap) to the type used in the Java intermediary JNI class (as specified in the "jtype" typemap). This typemap provides the conversion for the return type in the director - methods when returning from the C++ to Java upcall. See -Director typemaps.
    directorinConversion from C++ type to jni type for + methods when returning from the C++ to Java upcall. See +Director typemaps.
    directorinConversion from C++ type to jni type for director methods. These are C++ typemaps which convert the parameters used in the C++ director method to the appropriate JNI intermediary type. The conversion is done in JNI code prior to calling the Java - function from the JNI code. See -Director typemaps.
    directoroutConversion from jni type to C++ type for + function from the JNI code. See +Director typemaps.
    directoroutConversion from jni type to C++ type for director methods. These are C++ typemaps which convert the JNI return type used in the C++ director method to the appropriate C++ return type. The conversion is done in JNI code after calling the Java - function from the JNI code. See -Director typemaps.
    -

    If you are writing your own typemaps to handle a particular type, + function from the JNI code. See +Director typemaps.

    +

    If you are writing your own typemaps to handle a particular type, you will normally have to write a collection of them. The default - typemaps are in "java.swg" and so might be a good place for - finding typemaps to base any new ones on.

    -

    The "jni", "jtype" and "jstype" typemaps are usually defined + typemaps are in "java.swg" and so might be a good place for + finding typemaps to base any new ones on.

    +

    The "jni", "jtype" and "jstype" typemaps are usually defined together to handle the Java to C/C++ type mapping. An "in" typemap should be accompanied by a "javain" typemap and likewise an "out" typemap by a "javaout" typemap. If an "in" typemap is written, a @@ -33215,35 +33470,35 @@ Director typemaps. types have a default "freearg" and/or "argout" typemap which may need overriding. The "freearg" typemap sometimes releases memory allocated by the "in" typemap. The "argout" typemap sometimes sets values in - function parameters which are passed by reference in Java.

    -

    Note that the "in" typemap marshals the JNI type held in the "jni" + function parameters which are passed by reference in Java.

    +

    Note that the "in" typemap marshals the JNI type held in the "jni" typemap to the real C/C++ type and for the opposite direction, the "out" typemap marshals the real C/C++ type to the JNI type held in the - "jni" typemap. For -non-primitive types the "in" and "out" typemaps are responsible for - casting between the C/C++ pointer and the 64 bit jlong type. + "jni" typemap. For +non-primitive types the "in" and "out" typemaps are responsible for + casting between the C/C++ pointer and the 64 bit jlong type. There is no portable way to cast a pointer into a 64 bit integer type and the approach taken by SWIG is mostly portable, but breaks C/C++ aliasing rules. In summary, these rules state that a pointer to any type must never be dereferenced by a pointer to any other incompatible type. The following code snippet might aid in understand aliasing rules - better:

    -
    -
    + better:

    +
    +
     short a;
     short* pa = 0;
     int i = 0x1234;
     
     a = (short)i;    /* okay */
     a = *(short*)&i; /* breaks aliasing rules */
    -
    -
    -

    An email posting, -Aliasing, pointer casts and gcc 3.3 elaborates further on the +

    +
    +

    An email posting, +Aliasing, pointer casts and gcc 3.3 elaborates further on the subject. In SWIG, the "in" and "out" typemaps for pointers are - typically

    -
    -
    + typically

    +
    +
     %typemap(in) struct Foo * %{
       $1 = *(struct Foo **)&$input; /* cast jlong into C ptr */
     %}
    @@ -33253,11 +33508,11 @@ Aliasing, pointer casts and gcc 3.3 elaborates further on the
     struct Bar {...};
     struct Foo {...};
     struct Bar * FooBar(struct Foo *f);
    -
    -
    -

    resulting in the following code which breaks the aliasing rules:

    -
    -
    +
    +
    +

    resulting in the following code which breaks the aliasing rules:

    +
    +
     SWIGEXPORT jlong JNICALL Java_exampleJNI_FooBar(JNIEnv *jenv, jclass jcls,
                                                     jlong jarg1, jobject jarg1_) {
       jlong jresult = 0 ;
    @@ -33272,159 +33527,162 @@ SWIGEXPORT jlong JNICALL Java_exampleJNI_FooBar(JNIEnv *jenv, jclass jcls,
       *(struct Bar **)&jresult = result; 
       return jresult;
     }
    -
    -
    -

    If you are using gcc as your C compiler, you might get a +

    +
    +

    If you are using gcc as your C compiler, you might get a "dereferencing type-punned pointer will break strict-aliasing rules" - warning about this. Please see -Compiling a dynamic module to avoid runtime problems with these - strict aliasing rules.

    -

    The default code generated by SWIG for the Java module comes from - the typemaps in the "java.swg" library file which implements - the Default primitive - type mappings and -Default typemaps for non-primitive types covered earlier. There are + warning about this. Please see +Compiling a dynamic module to avoid runtime problems with these + strict aliasing rules.

    +

    The default code generated by SWIG for the Java module comes from + the typemaps in the "java.swg" library file which implements + the Default primitive + type mappings and +Default typemaps for non-primitive types covered earlier. There are other type mapping typemaps in the Java library. These are listed - below:

    -
      - - - - + + + +
    C TypeTypemap -FileKindJava Type -Function
    primitive pointers and referencesINPUT -typemaps.iinputJava basic typesAllows values - to be used for C functions taking pointers for data input.
    primitive pointers and referencesOUTPUT -typemaps.ioutputJava basic type arraysAllows + below:

    +
      + + + - - - - - + + + - - - - + + + + -
    C TypeTypemap +FileKindJava Type +Function
    primitive pointers and referencesINPUT +typemaps.iinputJava basic typesAllows values + to be used for C functions taking pointers for data input. +
    primitive pointers and referencesOUTPUT +typemaps.ioutputJava basic type arraysAllows values held within an array to be used for C functions taking pointers - for data output.
    primitive pointers and referencesINOUT -typemaps.iinput -
    output
    Java basic type arraysAllows values held + for data output. +
    primitive pointers and referencesINOUT +typemaps.iinput +
    output
    Java basic type arraysAllows values held within an array to be used for C functions taking pointers for data - input and output.
    string -
    wstring
    [unnamed]std_string.iinput -
    output
    StringUse for std::string mapping to Java - String.
    arrays of primitive types[unnamed] -arrays_java.iinput -
    output
    arrays of primitive Java typesUse for - mapping C arrays to Java arrays.
    arrays of classes/structs/unionsJAVA_ARRAYSOFCLASSES - macroarrays_java.iinput -
    output
    arrays of proxy classesUse for mapping C - arrays to Java arrays.
    arrays of enumsARRAYSOFENUMSarrays_java.i + input and output. +
    string +
    wstring
    [unnamed]std_string.iinput +
    output
    StringUse for std::string mapping to Java + String.
    arrays of primitive types[unnamed] +arrays_java.iinput +
    output
    arrays of primitive Java typesUse for + mapping C arrays to Java arrays.
    arrays of classes/structs/unionsJAVA_ARRAYSOFCLASSES + macroarrays_java.iinput +
    output
    arrays of proxy classesUse for mapping C + arrays to Java arrays.
    arrays of enumsARRAYSOFENUMSarrays_java.i input -
    output
    int[]Use for mapping C arrays to Java - arrays (typeunsafe and simple enum wrapping approaches only).
    char *BYTEvarious.iinput -byte[]Java byte array is converted to char array
    char **STRING_ARRAYvarious.iinput -
    output
    String[]Use for mapping NULL terminated - arrays of C strings to Java String arrays
    unsigned char *NIOBUFFERvarious.i +
    output
    int[]Use for mapping C arrays to Java + arrays (typeunsafe and simple enum wrapping approaches only).
    char *BYTEvarious.iinput +byte[]Java byte array is converted to char array
    char **STRING_ARRAYvarious.iinput +
    output
    String[]Use for mapping NULL terminated + arrays of C strings to Java String arrays
    unsigned char *NIOBUFFERvarious.i input -
    output
    java.nio.BufferUse for mapping directly +
    output
    java.nio.BufferUse for mapping directly allocated buffers to c/c++. useful with directors and long lived memory - objects
    -

    25.9.6 Java typemap attributes

    -

    There are a few additional typemap attributes that the Java module - supports.

    -

    The first of these is the 'throws' attribute. The throws attribute + objects

    +

    26.9.6 Java typemap attributes

    +

    There are a few additional typemap attributes that the Java module + supports.

    +

    The first of these is the 'throws' attribute. The throws attribute is optional and specified after the typemap name and contains one or more comma separated classes for adding to the throws clause for any - methods that use that typemap. It is analogous to the -%javaexception feature's throws attribute.

    -
    -
    + methods that use that typemap. It is analogous to the 
    +%javaexception feature's throws attribute.

    +
    +
     %typemap(typemapname, throws="ExceptionClass1, ExceptionClass2") type { ... }
    -
    -
    -

    The attribute is necessary for supporting Java checked exceptions +

    +
    +

    The attribute is necessary for supporting Java checked exceptions and can be added to just about any typemap. The list of typemaps - include all the C/C++ (JNI) typemaps in the " -Typemaps" chapter and the Java specific typemaps listed in -the previous section, barring the "jni", "jtype" and "jstype" - typemaps as they could never contain code to throw an exception.

    -

    The throws clause is generated for the proxy method as well as the + include all the C/C++ (JNI) typemaps in the " +Typemaps" chapter and the Java specific typemaps listed in +the previous section, barring the "jni", "jtype" and "jstype" + typemaps as they could never contain code to throw an exception.

    +

    The throws clause is generated for the proxy method as well as the JNI method in the JNI intermediary class. If a method uses more than one typemap and each of those typemaps have classes specified in the throws clause, the union of the exception classes is added to the - throws clause ensuring there are no duplicate classes. See the -NaN exception example for further usage.

    -

    The "jtype" typemap has the optional 'nopgcpp' attribute which can - be used to suppress the generation of the -premature garbage collection prevention parameter.

    -

    The "javain" typemap has the optional 'pre', 'post' and 'pgcppname' + throws clause ensuring there are no duplicate classes. See the +NaN exception example for further usage.

    +

    The "jtype" typemap has the optional 'nopgcpp' attribute which can + be used to suppress the generation of the +premature garbage collection prevention parameter.

    +

    The "javain" typemap has the optional 'pre', 'post' and 'pgcppname' attributes. These are used for generating code before and after the JNI call in the proxy class or module class. The 'pre' attribute contains code that is generated before the JNI call and the 'post' attribute contains code generated after the JNI call. The 'pgcppname' attribute - is used to change the premature garbage - collection prevention parameter name passed to the JNI function. + is used to change the premature garbage + collection prevention parameter name passed to the JNI function. This is sometimes needed when the 'pre' typemap creates a temporary - variable which is then passed to the JNI function.

    -

    Note that when the + variable which is then passed to the JNI function.

    +

    Note that when the 'pre' or 'post' attributes are specified and the associated type is used in a constructor, a constructor helper function is generated. This is necessary as the Java proxy constructor wrapper makes a call to a - support constructor using a this call. In Java the this + support constructor using a this call. In Java the this call must be the first statement in the constructor body. The constructor body thus calls the helper function and the helper function instead makes the JNI call, ensuring the 'pre' code is called before - the JNI call is made. There is a Date - marshalling example showing 'pre', 'post' and 'pgcppname' - attributes in action.

    -

    25.9.7 Java special variables

    -

    The standard SWIG special variables are available for use within - typemaps as described in the Typemaps documentation -, for example $1, $input, $result etc.

    -

    The Java module uses a few additional special variables:

    -

    $javaclassname -
    This special variable works like the other -special variables and $javaclassname is similar to -$1_type. It expands to the class name for use in Java given a + the JNI call is made. There is a Date + marshalling example showing 'pre', 'post' and 'pgcppname' + attributes in action.

    +

    26.9.7 Java special variables

    +

    The standard SWIG special variables are available for use within + typemaps as described in the Typemaps documentation +, for example $1, $input, $result etc.

    +

    The Java module uses a few additional special variables:

    +

    $javaclassname +
    This special variable works like the other +special variables and $javaclassname is similar to +$1_type. It expands to the class name for use in Java given a pointer. SWIG wraps unions, structs and classes using pointers and in - this case it expands to the Java proxy class name. For example, -$javaclassname is replaced by the proxy classname Foo when - wrapping a Foo * and $&javaclassname expands to the - proxy classname when wrapping the C/C++ type Foo and -$*javaclassname expands to the proxy classname when wrapping -Foo *&. If the type does not have an associated proxy class, it - expands to the type wrapper class name, for example, -SWIGTYPE_p_unsigned_short is generated when wrapping unsigned - short *. The class name is fully qualified with the package name - when using the nspace feature.

    -

    $javaclazzname -
    This special variable works like $javaclassname, but + this case it expands to the Java proxy class name. For example, +$javaclassname is replaced by the proxy classname Foo when + wrapping a Foo * and $&javaclassname expands to the + proxy classname when wrapping the C/C++ type Foo and +$*javaclassname expands to the proxy classname when wrapping +Foo *&. If the type does not have an associated proxy class, it + expands to the type wrapper class name, for example, +SWIGTYPE_p_unsigned_short is generated when wrapping unsigned + short *. The class name is fully qualified with the package name + when using the nspace feature.

    +

    $javaclazzname +
    This special variable works like $javaclassname, but expands the fully qualified C++ class into the package name, if used by - the nspace feature, and the proxy class - name, mangled for use as a function name. For example, -Namespace1::Namespace2::Klass is expanded into -Namespace1_Namespace2_Klass_. This special variable is usually used + the nspace feature, and the proxy class + name, mangled for use as a function name. For example, +Namespace1::Namespace2::Klass is expanded into +Namespace1_Namespace2_Klass_. This special variable is usually used for making calls to a function in the intermediary JNI class, as they - are mangled with this prefix.

    -

    $null -
    Used in input typemaps to return early from JNI functions that have - either void or a non-void return type. Example:

    -
    -
    + are mangled with this prefix.

    +

    $null +
    Used in input typemaps to return early from JNI functions that have + either void or a non-void return type. Example:

    +
    +
     %typemap(check) int * %{ 
       if (error) {
         SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array element error");
         return $null;
       }
     %}
    -
    -
    -

    If the typemap gets put into a function with void as return, $null - will expand to nothing:

    -
    -
    +
    +
    +

    If the typemap gets put into a function with void as return, $null + will expand to nothing:

    +
    +
     SWIGEXPORT void JNICALL Java_jnifn(...) {
       if (error) {
         SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array element error");
    @@ -33432,11 +33690,11 @@ SWIGEXPORT void JNICALL Java_jnifn(...) {
       }
       ...
     }
    -
    -
    -

    otherwise $null expands to NULL

    -
    -
    +
    +
    +

    otherwise $null expands to NULL

    +
    +
     SWIGEXPORT jobject JNICALL Java_jnifn(...) {
       if (error) {
         SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array element error");
    @@ -33444,19 +33702,19 @@ SWIGEXPORT jobject JNICALL Java_jnifn(...) {
       }
       ...
     }
    -
    -
    -

    $javainput, $jnicall and $owner -
    The $javainput special variable is used in "javain" typemaps and +

    +
    +

    $javainput, $jnicall and $owner +
    The $javainput special variable is used in "javain" typemaps and $jnicall and $owner are used in "javaout" typemaps. $jnicall is analogous to $action in %exception. It is replaced by the call to the native method in the intermediary JNI class. $owner is replaced by - either true if %newobject has been used, otherwise false + either true if %newobject has been used, otherwise false . $javainput is analogous to the $input special variable. It is replaced - by the parameter name.

    -

    Here is an example:

    -
    -
    + by the parameter name.

    +

    Here is an example:

    +
    +
     %typemap(javain) Class "Class.getCPtr($javainput)"
     %typemap(javain) unsigned short "$javainput"
     %typemap(javaout) Class * {
    @@ -33467,204 +33725,212 @@ SWIGEXPORT jobject JNICALL Java_jnifn(...) {
       class Class {...};
       Class * bar(Class cls, unsigned short ush) { return new Class(); };
     %}
    -
    -
    -

    The generated proxy code is then:

    -
    -
    +
    +
    +

    The generated proxy code is then:

    +
    +
     public static Class bar(Class cls, int ush) {
       return new Class(exampleJNI.bar(Class.getCPtr(cls), cls, ush), false);
     }
    -
    -
    -

    Here $javainput has been replaced by cls and ush. - $jnicall has been replaced by the native method call, -exampleJNI.bar(...) and $owner has been replaced by false. +

    +
    +

    Here $javainput has been replaced by cls and ush. + $jnicall has been replaced by the native method call, +exampleJNI.bar(...) and $owner has been replaced by false. If %newobject is used by adding the following at the beginning of our - example:

    -
    -
    + example:

    +
    +
     %newobject bar(Class cls, unsigned short ush);
    -
    -
    -

    The generated code constructs the return type using true - indicating the proxy class Class is responsible for destroying - the C++ memory allocated for it in bar:

    -
    -
    +
    +
    +

    The generated code constructs the return type using true + indicating the proxy class Class is responsible for destroying + the C++ memory allocated for it in bar:

    +
    +
     public static Class bar(Class cls, int ush) {
       return new Class(exampleJNI.bar(Class.getCPtr(cls), cls, ush), true);
     }
    -
    -
    -

    $static -
    This special variable expands to either static or nothing +

    +
    +

    $static +
    This special variable expands to either static or nothing depending on whether the class is an inner Java class or not. It is used in the "javaclassmodifiers" typemap so that global classes can be wrapped as Java proxy classes and nested C++ classes/enums can be - wrapped with the Java equivalent, that is, static inner proxy classes.

    -

    $error, $jniinput, $javacall and $packagepath -
    These special variables are used in the directors typemaps. See -Director specific typemaps for details.

    -

    $module -
    This special variable expands to the module name, as specified by -%module or the -module commandline option.

    -

    $imclassname -
    This special variable expands to the intermediary class name. + wrapped with the Java equivalent, that is, static inner proxy classes.

    +

    $error, $jniinput, $javacall and $packagepath +
    These special variables are used in the directors typemaps. See +Director specific typemaps for details.

    +

    $module +
    This special variable expands to the module name, as specified by +%module or the -module commandline option.

    +

    $imclassname +
    This special variable expands to the intermediary class name. Usually this is the same as '$moduleJNI', unless the jniclassname - attribute is specified in the %module - directive.

    -

    $javainterfacename -
    This special variable is only expanded when the interface - feature is applied to a class. It works much like $javaclassname + attribute is specified in the %module + directive.

    +

    $javainterfacename +
    This special variable is only expanded when the interface + feature is applied to a class. It works much like $javaclassname , but instead of expanding to the proxy classname, it expands to the - value in the name attribute in the interface feature. - For example:

    -
    -
    + value in the name attribute in the interface feature.
    + For example:

    +
    +
     %feature("interface", name="MyInterface") MyClass;
     %typemap(jstype) MyClass  "$&javainterfacename"
     %typemap(jstype) MyClass * "$javainterfacename"
    -
    -
    -

    will result in the jstype typemap expanding to -MyInterface for both MyClass and MyClass *. The - interface name is fully qualified with the package name when using the nspace feature.

    -

    $interfacename -
    This special variable is only expanded when the interface +

    +
    +

    will result in the jstype typemap expanding to +MyInterface for both MyClass and MyClass *. The + interface name is fully qualified with the package name when using the nspace feature.

    +

    $interfacename +
    This special variable is only expanded when the interface feature is applied to a class. It expands to just the interface name - and is thus different to $javainterfacename in that it is not - fully qualified with the package name when using the -nspace feature.

    -

    25.9.8 Typemaps for both C and - C++ compilation

    -

    JNI calls must be written differently depending on whether the code + and is thus different to $javainterfacename in that it is not + fully qualified with the package name when using the +nspace feature.

    +

    26.9.8 Typemaps for both C and + C++ compilation

    +

    JNI calls must be written differently depending on whether the code is being compiled as C or C++. For example C compilation requires the - pointer to a function pointer struct member syntax like

    -
    -
    + pointer to a function pointer struct member syntax like

    +
    +
     const jclass clazz = (*jenv)->FindClass(jenv, "java/lang/String");
    -
    -
    -

    whereas C++ code compilation of the same function call is a member - function call using a class pointer like

    -
    -
    +
    +
    +

    whereas C++ code compilation of the same function call is a member + function call using a class pointer like

    +
    +
     const jclass clazz = jenv->FindClass("java/lang/String");
    -
    -
    -

    To enable typemaps to be used for either C or C++ compilation, a set +

    +
    +

    To enable typemaps to be used for either C or C++ compilation, a set of JCALLx macros have been defined in Lib/java/javahead.swg, where x is the number of arguments in the C++ version of the JNI call. The above - JNI calls would be written in a typemap like this

    -
    -
    + JNI calls would be written in a typemap like this

    +
    +
     const jclass clazz = JCALL1(FindClass, jenv, "java/lang/String");
    -
    -
    -

    Note that the SWIG preprocessor expands these into the appropriate C +

    +
    +

    Note that the SWIG preprocessor expands these into the appropriate C or C++ JNI calling convention. The C calling convention is emitted by default and the C++ calling convention is emitted when using the -c++ SWIG commandline option. If you do not intend your code to be targeting both C and C++ then your typemaps can use the appropriate JNI calling - convention and need not use the JCALLx macros.

    -

    25.9.9 Java code typemaps

    -

    Most of SWIG's typemaps are used for the generation of C/C++ code. + convention and need not use the JCALLx macros.

    +

    26.9.9 Java code typemaps

    +

    Most of SWIG's typemaps are used for the generation of C/C++ code. The typemaps in this section are used solely for the generation of Java code. Elements of proxy classes and type wrapper classes come from the - following typemaps (the defaults).

    -

    %typemap(javabase)

    -
    base (extends) for Java class: empty default -
    Note that this typemap accepts a replace attribute as an + following typemaps (the defaults).

    +

    %typemap(javabase)

    +
    base (extends) for Java class: empty default +
    Note that this typemap accepts a replace attribute as an optional flag. When set to "1", it will replace/override any C++ base classes that might have been parsed. If this flag is not specified and there are C++ base classes, then a multiple inheritance warning is issued and the code in the typemap is ignored. The typemap also accepts - a notderived attribute as an optional flag. When set to "1", + a notderived attribute as an optional flag. When set to "1", it will not apply to classes that are derived from a C++ base. When used with the SWIGTYPE type, it is useful for giving a common base for all proxy classes, that is, providing a base class that sits in between - all proxy classes and the Java base class Object for example: -%typemap(javabase, notderived="1") SWIGTYPE "CommonBase".
    -

    %typemap(javabody)

    -
    the essential support body for proxy classes (proxy + all proxy classes and the Java base class Object for example: +%typemap(javabase, notderived="1") SWIGTYPE "CommonBase".
    +

    %typemap(javabody)

    +
    the essential support body for proxy classes (proxy base classes only), typewrapper classes and enum classes. Default contains extra constructors, memory ownership control member variables - (swigCMemOwn, swigCPtr), the getCPtr method - etc.
    -

    %typemap(javabody_derived)

    -
    the essential support body for proxy classes + (swigCMemOwn, swigCPtr), the getCPtr method + etc.
    +

    %typemap(javabody_derived)

    +
    the essential support body for proxy classes (derived classes only). Same as "javabody" typemap, but only used for - proxy derived classes.
    -

    %typemap(javaclassmodifiers)

    -
    class modifiers for the Java class: default is - "public class"
    -

    %typemap(javacode)

    -
    Java code is copied verbatim to the Java class: + proxy derived classes.
    +

    %typemap(javaclassmodifiers)

    +
    class modifiers for the Java class: default is + "public class"
    +

    %typemap(javacode)

    +
    Java code is copied verbatim to the Java class: empty default As there can only be one "javacode" typemap per class, - also consider using the %proxycode + also consider using the %proxycode directive which can be used multiple times per class and offers nearly - identical functionality.
    -

    %typemap(javadestruct, methodname="delete", - methodmodifiers="public synchronized") -

    -
    destructor wrapper - the delete() method + identical functionality.
    +

    %typemap(javadestruct, methodname="delete", + methodmodifiers="public synchronized", parameters="") +

    +
    destructor wrapper - the delete() method (proxy classes only), used for all proxy classes except those which have a base class : default calls C++ destructor (or frees C memory) - and resets swigCPtr and swigCMemOwn flags -
    -
    Note that the delete() method name is configurable and is - specified by the methodname attribute. The method modifiers - are also configurable via the methodmodifiers attribute.
    -

    %typemap(javadestruct_derived, methodname="delete", - methodmodifiers="public synchronized")

    -
    destructor wrapper - the delete() method + and resets swigCPtr and swigCMemOwn flags +
    +
    Note that the delete() method name is configurable and is + specified by the methodname attribute. The method modifiers + are also configurable via the methodmodifiers attribute. If a +%javamethodmodifiers is attached to the class' destructor, it will + be used in preference to the methodmodifiers typemap attribute + for the class. The delete method's parameters declaration can + be provided in the optional parameters typemap attribute.
    +

    %typemap(javadestruct_derived, methodname="delete", + methodmodifiers="public synchronized", parameters="")

    +
    destructor wrapper - the delete() method (proxy classes only), same as "javadestruct" but only used for derived proxy classes : default calls C++ destructor (or frees C memory) and - resets swigCPtr and swigCMemOwn flags -
    -
    Note that the delete() method name is configurable and is - specified by the methodname attribute. The method modifiers - are also configurable via the methodmodifiers attribute.
    -

    %typemap(javaimports)

    -
    import statements for Java class: empty default
    -

    %typemap(javainterfaces)

    -
    interfaces (implements) for Java class: empty - default
    -

    %typemap(javafinalize)

    -
    the finalize() method (proxy classes - only): default calls the delete() method -

    Note that the default javafinalize typemap must contain the full + resets swigCPtr and swigCMemOwn flags +
    +
    Note that the delete() method name is configurable and is + specified by the methodname attribute. The method modifiers + are also configurable via the methodmodifiers attribute. If a +%javamethodmodifiers is attached to the class' destructor, it will + be used in preference to the methodmodifiers typemap attribute + for the class. The delete method's parameters declaration can + be provided in the optional parameters typemap attribute.

    +

    %typemap(javaimports)

    +
    import statements for Java class: empty default
    +

    %typemap(javainterfaces)

    +
    interfaces (implements) for Java class: empty + default
    +

    %typemap(javafinalize)

    +
    the finalize() method (proxy classes + only): default calls the delete() method +

    Note that the default javafinalize typemap must contain the full implementation of the finalize method. Any customization to this typemap must still declare a java finalize method with the correct signature. Note also that the name of the generated "delete" method may - be affected by javadestruct and javadestruct_derived - typemaps. Below shows an example modifying the finalizer, assuming the -delete method has been renamed to swig_delete.

    -
    -
    + be affected by javadestruct and javadestruct_derived
    + typemaps. Below shows an example modifying the finalizer, assuming the 
    +delete method has been renamed to swig_delete.

    +
    +
     %typemap(javafinalize) SWIGTYPE %{
       protected void finalize() {
         swig_delete();  // renamed to prevent conflict with existing delete method
       }
     ]%
    -
    -
    -

    %typemap(javainterfacecode, declaration="...", cptrmethod="...") -

    -
    -

    The code in this typemap is added to the body of a Java proxy class - but only when a class is marked with the interface feature. + +

    +

    %typemap(javainterfacecode, declaration="...", cptrmethod="...") +

    +
    +

    The code in this typemap is added to the body of a Java proxy class + but only when a class is marked with the interface feature. The typemap is used in the proxy class marked with the interface feature as well as all proxy classes derived from the marked C++ class, as they are all generated as implementing the Java interface. The - default typemap used in the %interface family of macros - mentioned in the Java interfaces - section, where CTYPE is the C++ class macro argument, is as - follows:

    -
    -
    + default typemap used in the %interface family of macros
    + mentioned in the Java interfaces
    + section, where CTYPE is the C++ class macro argument, is as
    + follows:

    +
    +
     %typemap(javainterfacecode,
              declaration="  long $interfacename_GetInterfaceCPtr();\n",
              cptrmethod="$interfacename_GetInterfaceCPtr") CTYPE %{
    @@ -33672,51 +33938,51 @@ delete method has been renamed to swig_delete.

    return $imclassname.$javaclazzname$interfacename_GetInterfaceCPtr(swigCPtr); } %} -
    -
    -

    The special variable $interfacename is expanded into the - name specified in the interface feature.

    -

    Compatibility Note: In SWIG-1.3.21 and earlier releases, + +

    +

    The special variable $interfacename is expanded into the + name specified in the interface feature.

    +

    Compatibility Note: In SWIG-1.3.21 and earlier releases, typemaps called "javagetcptr" and "javaptrconstructormodifiers" were available. These are deprecated and the "javabody" typemap can be used - instead. The javainterfacecode typemap and interface feature - was introduced in SWIG-3.0.9.

    -

    In summary the contents of the typemaps make up a proxy class like - this:

    -
    -
    + instead. The javainterfacecode typemap and interface feature
    + was introduced in SWIG-3.0.9.

    +

    In summary the contents of the typemaps make up a proxy class like + this:

    +
    +
     [ javaimports typemap ]
     [ javaclassmodifiers typemap ] javaclassname extends [ javabase typemap ]
                                                  implements [ javainterfaces typemap ] {
     [ javabody or javabody_derived typemap ]
     [ javafinalize typemap ]
    -public synchronized void delete() [ javadestruct OR javadestruct_derived typemap ]
    +public synchronized void delete() [ javadestruct OR javadestruct_derived typemap ]
     [ javacode typemap ]
     [ javainterfacecode typemap]
     ... proxy functions ...
     }
    -
    -
    -

    Note the delete() methodname and method modifiers +

    +
    +

    Note the delete() methodname and method modifiers are configurable, see "javadestruct" and "javadestruct_derived" - typemaps above.

    -

    The javainterfacecode typemap is only used when bases are - marked by the interface feature and the implements - list will also then be expanded to include these Java interfaces.

    -

    The type wrapper class is similar in construction:

    -
    -
    + typemaps above.

    +

    The javainterfacecode typemap is only used when bases are + marked by the interface feature and the implements + list will also then be expanded to include these Java interfaces.

    +

    The type wrapper class is similar in construction:

    +
    +
     [ javaimports typemap ]
     [ javaclassmodifiers typemap ] javaclassname extends [ javabase typemap ]
                                                  implements [ javainterfaces typemap ] {
     [ javabody typemap ]
     [ javacode typemap ]
     }
    -
    -
    -

    The enum class is also similar in construction:

    -
    -
    +
    +
    +

    The enum class is also similar in construction:

    +
    +
     [ javaimports typemap ]
     [ javaclassmodifiers typemap ] javaclassname extends [ javabase typemap ]
                                                  implements [ javainterfaces typemap ] {
    @@ -33724,35 +33990,35 @@ public synchronized void delete() [ javadestruct OR javadestruct_derived
     [ javabody typemap ]
     [ javacode typemap ]
     }
    -
    -
    -

    The "javaimports" typemap is ignored if the enum class is wrapped by +

    +
    +

    The "javaimports" typemap is ignored if the enum class is wrapped by an inner Java class, that is when wrapping an enum declared within a - C++ class.

    -

    The Java interface turned on by the interface feature is - fairly simple:

    -
    -
    + C++ class.

    +

    The Java interface turned on by the interface feature is + fairly simple:

    +
    +
     [ javaimports typemap ]
     public interface [ javainterfacename ] {
     [ javainterfacecode:cptrmethod typemap attribute ]
     ... interface declarations ...
     }
    -
    -
    -

    where javainterfacename is the name attribute in - the interface feature.

    -

    The defaults can be overridden to tailor the generated classes. Here - is an example which will change the getCPtr method and +

    +
    +

    where javainterfacename is the name attribute in + the interface feature.

    +

    The defaults can be overridden to tailor the generated classes. Here + is an example which will change the getCPtr method and constructor from the default public access to protected access. If the classes in one package are not using the classes in another package, then these methods need not be public and removing access to these low level implementation details, is a good thing. If you are invoking SWIG more than once and generating the wrapped classes into different packages in each invocation, then you cannot do this as you will then - have different packages.

    -
    -
    + have different packages.

    +
    +
     %typemap(javabody) SWIGTYPE %{
       private transient long swigCPtr;
       protected transient boolean swigCMemOwn;
    @@ -33766,19 +34032,19 @@ public interface [ javainterfacename ] {
         return (obj == null) ? 0 : obj.swigCPtr;
       }
     %}
    -
    -
    -

    The typemap code is the same that is in "java.swg", barring - the last two method modifiers. Note that SWIGTYPE will target +

    +
    +

    The typemap code is the same that is in "java.swg", barring + the last two method modifiers. Note that SWIGTYPE will target all proxy classes, but not the type wrapper classes. Also the above typemap is only used for proxy classes that are potential base classes. To target proxy classes that are derived from a wrapped class as well, - the "javabody_derived" typemap should also be overridden.

    -

    For the typemap to be used in all type wrapper classes, all the + the "javabody_derived" typemap should also be overridden.

    +

    For the typemap to be used in all type wrapper classes, all the different types that type wrapper classes could be used for should be - targeted:

    -
    -
    + targeted:

    +
    +
     %typemap(javabody) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) %{
       private transient long swigCPtr;
     
    @@ -33794,59 +34060,59 @@ public interface [ javainterfacename ] {
         return (obj == null) ? 0 : obj.swigCPtr;
       }
     %}
    -
    -
    -

    Again this is the same that is in "java.swg", barring the - method modifier for getCPtr.

    -

    When using multiple modules or the -nspace feature it is common to invoke SWIG with a different --package command line option for each module. However, by default +

    +
    +

    Again this is the same that is in "java.swg", barring the + method modifier for getCPtr.

    +

    When using multiple modules or the +nspace feature it is common to invoke SWIG with a different +-package command line option for each module. However, by default the generated code may not compile if generated classes in one package - use generated classes in another package. The visibility of the -getCPtr() and pointer constructor generated from the javabody - typemaps needs changing. The default visibility is protected - but it needs to be public for access from a different package. + use generated classes in another package. The visibility of the +getCPtr() and pointer constructor generated from the javabody + typemaps needs changing. The default visibility is protected + but it needs to be public for access from a different package. Just changing 'protected' to 'public' in the typemap achieves this. Two - macros are available in java.swg to make this easier and using + macros are available in java.swg to make this easier and using them is the preferred approach over simply copying the typemaps and - modifying as this is forward compatible with any changes in the -javabody typemap in future versions of SWIG. The macros are for the + modifying as this is forward compatible with any changes in the +javabody typemap in future versions of SWIG. The macros are for the proxy and typewrapper classes and can respectively be used to to make - the method and constructor public:

    -
    -
    + the method and constructor public:

    +
    +
       SWIG_JAVABODY_PROXY(public, public, SWIGTYPE)
       SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE)
    -
    -
    -

    25.9.10 Director specific typemaps -

    -

    The Java directors feature requires the "javadirectorin", +

    +
    +

    26.9.10 Director specific typemaps +

    +

    The Java directors feature requires the "javadirectorin", "javadirectorout", "directorin" and the "directorout" typemaps in order to work properly. The "javapackage" typemap is an optional typemap used to identify the Java package path for individual SWIG generated proxy - classes used in director methods.

    -

    %typemap(directorin)

    -
    -

    The "directorin" typemap is used for converting arguments in the C++ + classes used in director methods.

    +

    %typemap(directorin)

    +
    +

    The "directorin" typemap is used for converting arguments in the C++ director class to the appropriate JNI type before the upcall to Java. This typemap also specifies the JNI field descriptor for the type in the "descriptor" attribute. For example, integers are converted as - follows:

    -
    -
    + follows:

    +
    +
     %typemap(directorin, descriptor="I") int "$input = (jint) $1;"
    -
    -
    -

    $input is the SWIG name of the JNI temporary variable - passed to Java in the upcall. The descriptor="I" will put - an I into the JNI field descriptor that identifies the +

    +
    +

    $input is the SWIG name of the JNI temporary variable + passed to Java in the upcall. The descriptor="I" will put + an I into the JNI field descriptor that identifies the Java method that will be called from C++. For more about JNI field - descriptors and their importance, refer to the -JNI documentation mentioned earlier. A typemap for C character - strings is:

    -
    -
    + descriptors and their importance, refer to the 
    +JNI documentation mentioned earlier. A typemap for C character
    + strings is:

    +
    +
     %typemap(directorin, descriptor="Ljava/lang/String;", noblock=1) char * {
       $input = 0;
       if ($1) {
    @@ -33855,45 +34121,45 @@ JNI documentation mentioned earlier. A typemap for C character
       }
       Swig::LocalRefGuard $1_refguard(jenv, $input);
     }
    -
    -
    -

    The Swig::LocalRefGuard class should be used in directorin +

    +
    +

    The Swig::LocalRefGuard class should be used in directorin typemaps for newly allocated objects. It is used to control local reference counts ensuring the count is decremented after the call up - into Java has completed. Its destructor simply calls -jenv->DeleteLocalRef(obj) on the obj passed in during - construction.

    -

    User-defined types have the default "descriptor" attribute " -L$packagepath/$javaclassname;" where $packagepath is - the package name passed from the SWIG command line and -$javaclassname is the Java proxy class' name. If the -package + into Java has completed. Its destructor simply calls +jenv->DeleteLocalRef(obj) on the obj passed in during + construction.

    +

    User-defined types have the default "descriptor" attribute " +L$packagepath/$javaclassname;" where $packagepath is + the package name passed from the SWIG command line and +$javaclassname is the Java proxy class' name. If the -package commandline option is not used to specify the package, then '$packagepath/' will be removed from the resulting output JNI field - descriptor. Do not forget the terminating ';' for JNI field - descriptors starting with 'L'. If the ';' is left out, Java will - generate a "method not found" runtime error. Note that the -$packagepath substitution always uses the path separator '/' when - expanded. The $javaclassname expansion can be confusing as - it is normally expanded using the '.' separator. However, -$javaclassname is expanded using the path separator '/' in + descriptor. Do not forget the terminating ';' for JNI field + descriptors starting with 'L'. If the ';' is left out, Java will + generate a "method not found" runtime error. Note that the +$packagepath substitution always uses the path separator '/' when + expanded. The $javaclassname expansion can be confusing as + it is normally expanded using the '.' separator. However, +$javaclassname is expanded using the path separator '/' in typemap's "descriptor" attribute as well as in the "directorthrows" - typemap.

    -
    -

    %typemap(directorout)

    -
    -

    The "directorout" typemap is used for converting the JNI return type + typemap.

    +
    +

    %typemap(directorout)

    +
    +

    The "directorout" typemap is used for converting the JNI return type in the C++ director class to the appropriate C++ type after the upcall - to Java. For example, integers are converted as follows:

    -
    -
    + to Java. For example, integers are converted as follows:

    +
    +
     %typemap(directorout) int %{ $result = (int)$input; %}
    -
    -
    -

    $input is the SWIG name of the JNI temporary variable - returned from Java after the upcall. $result is the - resulting output. A typemap for C character strings is:

    -
    -
    +
    +
    +

    $input is the SWIG name of the JNI temporary variable + returned from Java after the upcall. $result is the + resulting output. A typemap for C character strings is:

    +
    +
     %typemap(directorout) char * {
       $1 = 0;
       if ($input) {
    @@ -33901,81 +34167,81 @@ $javaclassname is expanded using the path separator '/' in
         if (!$1) return $null;
       }
     }
    -
    -
    -

    %typemap(javadirectorin)

    -
    -

    Conversion from jtype to jstype for director methods. These are Java + +

    +

    %typemap(javadirectorin)

    +
    +

    Conversion from jtype to jstype for director methods. These are Java code typemaps which transform the type used in the Java intermediary JNI class (as specified in the "jtype" typemap) to the Java type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap). This typemap provides the conversion for the parameters in the director methods when calling up - from C++ to Java.

    -

    For primitive types, this typemap is usually specified as:

    -
    -
    + from C++ to Java.

    +

    For primitive types, this typemap is usually specified as:

    +
    +
     %typemap(javadirectorin) int "$jniinput"
    -
    -
    -

    The $jniinput special variable is analogous to -$javainput special variable. It is replaced by the input - parameter name.

    -
    -

    %typemap(javadirectorout)

    -
    -

    Conversion from jstype to jtype for director methods. These are Java + +

    +

    The $jniinput special variable is analogous to +$javainput special variable. It is replaced by the input + parameter name.

    +
    +

    %typemap(javadirectorout)

    +
    +

    Conversion from jstype to jtype for director methods. These are Java code typemaps which transform the type used in the Java module class, proxy classes and type wrapper classes (as specified in the "jstype" typemap) to the type used in the Java intermediary JNI class (as specified in the "jtype" typemap). This typemap provides the conversion for the return type in the director methods when returning from the C++ - to Java upcall.

    -

    For primitive types, this typemap is usually specified as:

    -
    -
    + to Java upcall.

    +

    For primitive types, this typemap is usually specified as:

    +
    +
     %typemap(javadirectorout) int "$javacall"
    -
    -
    -

    The $javacall special variable is analogous to the -$jnicall special variable. It is replaced by the call to the +

    +
    +

    The $javacall special variable is analogous to the +$jnicall special variable. It is replaced by the call to the target Java method. The target method is the method in the Java proxy - class which overrides the virtual C++ method in the C++ base class.

    -
    -

    %typemap(directorthrows)

    -
    -

    Conversion of Java exceptions to C++ exceptions in director method's - exception handling. This typemap is expected to test the $error + class which overrides the virtual C++ method in the C++ base class.

    +
    +

    %typemap(directorthrows)

    +
    +

    Conversion of Java exceptions to C++ exceptions in director method's + exception handling. This typemap is expected to test the $error special variable for a matching Java exception and if successful convert and throw it into a C++ exception given by the typemap's type. - The $error special variable is of type jthrowable - and is substituted with a unique variable name in the generated code.

    -

    The example below converts a Java -java.lang.IndexOutOfBoundsException exception to the typemap's - type, that is std::out_of_range:

    -
    -
    + The $error special variable is of type jthrowable
    + and is substituted with a unique variable name in the generated code.

    +

    The example below converts a Java +java.lang.IndexOutOfBoundsException exception to the typemap's + type, that is std::out_of_range:

    +
    +
     %typemap(directorthrows) std::out_of_range %{
       if (Swig::ExceptionMatches(jenv, $error, "java/lang/IndexOutOfBoundsException")) {
         throw std::out_of_range(Swig::JavaExceptionMessage(jenv, $error).message());
       }
     %}
    -
    -
    -

    The utility function Swig::ExceptionMatches and class -Swig::JavaExceptionMessage are helpers available when using - directors and are described in the -Java Exceptions from Directors section.

    -
    -

    %typemap(javapackage)

    -
    -

    The "javapackage" typemap is optional; it serves to identify a + +

    +

    The utility function Swig::ExceptionMatches and class +Swig::JavaExceptionMessage are helpers available when using + directors and are described in the +Java Exceptions from Directors section.

    +
    +

    %typemap(javapackage)

    +
    +

    The "javapackage" typemap is optional; it serves to identify a class's Java package. This typemap should be used in conjunction with classes that are defined outside of the current SWIG interface file. The typemap is only used if the type is used in a director method, that - is, in a virtual method in a director class. For example:

    -
    -
    + is, in a virtual method in a director class. For example:

    +
    +
     // class Foo is handled in a different interface file:
     %import "Foo.i"
     
    @@ -33990,15 +34256,15 @@ Java Exceptions from Directors section.

    virtual void ping(Foo *arg1, Bar *arg2); }; } -
    -
    -

    Assume that the Foo class is part of the Java package - com.wombat.foo but the above interface file is part of the Java - package com.wombat.example. Without the "javapackage" typemap, - SWIG will assume that the Foo class belongs to com.wombat.example - class. The corrected interface file looks like:

    -
    -
    +
    +
    +

    Assume that the Foo class is part of the Java package + com.wombat.foo but the above interface file is part of the Java + package com.wombat.example. Without the "javapackage" typemap, + SWIG will assume that the Foo class belongs to com.wombat.example + class. The corrected interface file looks like:

    +
    +
     // class Foo is handled in a different interface file:
     %import "Foo.i"
     %typemap("javapackage") Foo, Foo *, Foo & "com.wombat.foo";
    @@ -34013,20 +34279,20 @@ Java Exceptions from Directors section.

    virtual void ping(Foo *arg1, Bar *arg2); }; } -
    -
    -

    SWIG looks up the package based on the actual type (plain +

    +
    +

    SWIG looks up the package based on the actual type (plain Foo, Foo pointer and Foo reference), so it is important to associate all three types with the desired package. Practically speaking, you should create a separate SWIG interface file, which is %import-ed into each SWIG interface file, when you have multiple Java packages. Note - the helper macros below, OTHER_PACKAGE_SPEC and -ANOTHER_PACKAGE_SPEC, which reduce the amount of extra typing. " -TYPE..." is useful when passing templated types to the macro, + the helper macros below, OTHER_PACKAGE_SPEC and +ANOTHER_PACKAGE_SPEC, which reduce the amount of extra typing. " +TYPE..." is useful when passing templated types to the macro, since multiargument template types appear to the SWIG preprocessor as - multiple macro arguments.

    -
    -
    + multiple macro arguments.

    +
    +
     %typemap("javapackage") SWIGTYPE, SWIGTYPE *, SWIGTYPE &
                                                 "package.for.most.classes";
     
    @@ -34041,32 +34307,32 @@ TYPE..." is useful when passing templated types to the macro,
     OTHER_PACKAGE_SPEC(Package_2_class_one)
     ANOTHER_PACKAGE_SPEC(Package_3_class_two)
     /* etc */
    -
    -
    -

    The basic strategy here is to provide a default package typemap for +

    +
    +

    The basic strategy here is to provide a default package typemap for the majority of the classes, only providing "javapackage" typemaps for - the exceptions.

    -
    -

    25.10 Typemap Examples

    -

    This section includes a few examples of typemaps. For more examples, - you might look at the files "java.swg" and "typemaps.i -" in the SWIG library.

    -

    25.10.1 Simpler Java enums for - enums without initializers

    -

    The default Proper Java enums + the exceptions.

    +
    +

    26.10 Typemap Examples

    +

    This section includes a few examples of typemaps. For more examples, + you might look at the files "java.swg" and "typemaps.i +" in the SWIG library.

    +

    26.10.1 Simpler Java enums for + enums without initializers

    +

    The default Proper Java enums approach to wrapping enums is somewhat verbose. This is to handle all possible C/C++ enums, in particular enums with initializers. The generated code can be simplified if the enum being wrapped does not - have any initializers.

    -

    The following shows how to remove the support methods that are + have any initializers.

    +

    The following shows how to remove the support methods that are generated by default and instead use the methods in the Java enum base - class java.lang.Enum and java.lang.Class for + class java.lang.Enum and java.lang.Class for marshalling enums between C/C++ and Java. The type used for the - typemaps below is enum SWIGTYPE which is the default type used + typemaps below is enum SWIGTYPE which is the default type used for all enums. The "enums.swg" file should be examined in order to see - the original overridden versions of the typemaps.

    -
    -
    + the original overridden versions of the typemaps.

    +
    +
     %include "enums.swg"
     
     %typemap(javain) enum SWIGTYPE "$javainput.ordinal()"
    @@ -34080,22 +34346,22 @@ ANOTHER_PACKAGE_SPEC(Package_3_class_two)
       void setHair(HairType h);
       HairType getHair();
     %}
    -
    -
    -

    SWIG will generate the following Java enum, which is somewhat - simpler than the default:

    -
    -
    +
    +
    +

    SWIG will generate the following Java enum, which is somewhat + simpler than the default:

    +
    +
     public enum HairType {
       blonde,
       ginger,
       brunette;
     }
    -
    -
    -

    and the two Java proxy methods will be:

    -
    -
    +
    +
    +

    and the two Java proxy methods will be:

    +
    +
     public static void setHair(HairType h) {
       exampleJNI.setHair(h.ordinal());
     }
    @@ -34103,29 +34369,29 @@ public static void setHair(HairType h) {
     public static HairType getHair() {
       return HairType.class.getEnumConstants()[exampleJNI.getHair()];
     }
    -
    -
    -

    For marshalling Java enums to C/C++ enums, the ordinal +

    +
    +

    For marshalling Java enums to C/C++ enums, the ordinal method is used to convert the Java enum into an integer value for passing to the JNI layer, see the "javain" typemap. For marshalling C/C++ enums to Java enums, the C/C++ enum value is cast to an integer in the C/C++ typemaps (not shown). This integer value is then used to index into the array of enum constants that the Java language provides. - See the getEnumConstants method in the "javaout" typemap.

    -

    These typemaps can often be used as the default for wrapping enums + See the getEnumConstants method in the "javaout" typemap.

    +

    These typemaps can often be used as the default for wrapping enums as in many cases there won't be any enum initializers. In fact a good strategy is to always use these typemaps and to specifically handle enums with initializers using %apply. This would be done by using the original versions of these typemaps in "enums.swg" under another - typemap name for applying using %apply.

    -

    25.10.2 Handling C++ exception - specifications as Java exceptions

    -

    This example demonstrates various ways in which C++ exceptions can + typemap name for applying using %apply.

    +

    26.10.2 Handling C++ exception + specifications as Java exceptions

    +

    This example demonstrates various ways in which C++ exceptions can be tailored and converted into Java exceptions. Let's consider a simple - file class SimpleFile and an exception class FileException - which it may throw on error:

    -
    -
    + file class SimpleFile and an exception class FileException
    + which it may throw on error:

    +
    +
     %include "std_string.i" // for std::string typemaps
     #include <string>
     
    @@ -34146,70 +34412,70 @@ public:
       ...
       }
     };
    -
    -
    -

    As the open method has a C++ exception specification, SWIG - will parse this and know that the method can throw an exception. The -"throws" typemap is then used when SWIG encounters an exception - specification. The default generic "throws" typemap looks like this:

    -
    -
    +
    +
    +

    As the open method has a C++ exception specification, SWIG + will parse this and know that the method can throw an exception. The +"throws" typemap is then used when SWIG encounters an exception + specification. The default generic "throws" typemap looks like this:

    +
    +
     %typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [ANY] %{
       SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException,
                               "C++ $1_type exception thrown");
       return $null;
     %}
    -
    -
    -

    Basically SWIG will generate a C++ try catch block and the body of +

    +
    +

    Basically SWIG will generate a C++ try catch block and the body of the "throws" typemap constitutes the catch block. The above typemap - calls a SWIG supplied method which throws a -java.lang.RuntimeException. This exception class is a runtime + calls a SWIG supplied method which throws a +java.lang.RuntimeException. This exception class is a runtime exception and therefore not a checked exception. If, however, we wanted - to throw a checked exception, say java.io.IOException, then we - could use the following typemap:

    -
    -
    + to throw a checked exception, say java.io.IOException, then we
    + could use the following typemap:

    +
    +
     %typemap(throws, throws="java.io.IOException") FileException {
       jclass excep = jenv->FindClass("java/io/IOException");
       if (excep)
         jenv->ThrowNew(excep, $1.what().c_str());
       return $null;
     }
    -
    -
    -

    Note that this typemap uses the 'throws' -typemap attribute to ensure a throws clause is generated. The +

    +
    +

    Note that this typemap uses the 'throws' +typemap attribute to ensure a throws clause is generated. The generated proxy method then specifies the checked exception by - containing java.io.IOException in the throws clause:

    -
    -
    + containing java.io.IOException in the throws clause:

    +
    +
     public class SimpleFile {
       ...
       public void open() throws java.io.IOException { ... }
     }
    -
    -
    -

    Lastly, if you don't want to map your C++ exception into one of the +

    +
    +

    Lastly, if you don't want to map your C++ exception into one of the standard Java exceptions, the C++ class can be wrapped and turned into a custom Java exception class. If we go back to our example, the first - thing we must do is get SWIG to wrap FileException and ensure - that it derives from java.lang.Exception. Additionally, we - might want to override the java.lang.Exception.getMessage() - method. The typemaps to use then are as follows:

    -
    -
    + thing we must do is get SWIG to wrap FileException and ensure
    + that it derives from java.lang.Exception. Additionally, we
    + might want to override the java.lang.Exception.getMessage()
    + method. The typemaps to use then are as follows:

    +
    +
     %typemap(javabase) FileException "java.lang.Exception";
     %typemap(javacode) FileException %{
       public String getMessage() {
         return what();
       }
     %}
    -
    -
    -

    This generates:

    -
    -
    +
    +
    +

    This generates:

    +
    +
     public class FileException extends java.lang.Exception {
       ...
       public String getMessage() {
    @@ -34222,28 +34488,28 @@ public class FileException extends java.lang.Exception {
         return exampleJNI.FileException_what(swigCPtr, this);
       }
     }
    -
    -
    -

    We could alternatively have used %rename to rename -what() into getMessage().

    -

    25.10.3 NaN Exception - - exception handling for a particular type

    -

    A Java exception can be thrown from any Java or JNI code. Therefore, +

    +
    +

    We could alternatively have used %rename to rename +what() into getMessage().

    +

    26.10.3 NaN Exception - + exception handling for a particular type

    +

    A Java exception can be thrown from any Java or JNI code. Therefore, as most typemaps contain either Java or JNI code, just about any typemap could throw an exception. The following example demonstrates exception handling on a type by type basis by checking for 'Not a - number' (NaN) whenever a parameter of type float is wrapped.

    -

    Consider the following C++ code:

    -
    -
    + number' (NaN) whenever a parameter of type float is wrapped.

    +

    Consider the following C++ code:

    +
    +
     bool calculate(float first, float second);
    -
    -
    -

    To validate every float being passed to C++, we could +

    +
    +

    To validate every float being passed to C++, we could precede the code being wrapped by the following typemap which throws a - runtime exception whenever the float is 'Not a Number':

    -
    -
    + runtime exception whenever the float is 'Not a Number':

    +
    +
     %module example
     %typemap(javain) float "$module.CheckForNaN($javainput)"
     %pragma(java) modulecode=%{
    @@ -34255,13 +34521,13 @@ bool calculate(float first, float second);
         return num;
       }
     %}
    -
    -
    -

    Note that the CheckForNaN support method has been added to - the module class using the modulecode pragma. The following - shows the generated code of interest:

    -
    -
    +
    +
    +

    Note that the CheckForNaN support method has been added to + the module class using the modulecode pragma. The following + shows the generated code of interest:

    +
    +
     public class example {
       ...
     
    @@ -34277,24 +34543,24 @@ public class example {
         return exampleJNI.calculate(example.CheckForNaN(first), example.CheckForNaN(second));
       }
     }
    -
    -
    -

    Note that the "javain" typemap is used for every occurrence of a -float being used as an input. Of course, we could have targeted the - typemap at a particular parameter by using float first, say, - instead of just float.

    -

    The exception checking could alternatively have been placed into the +

    +
    +

    Note that the "javain" typemap is used for every occurrence of a +float being used as an input. Of course, we could have targeted the + typemap at a particular parameter by using float first, say, + instead of just float.

    +

    The exception checking could alternatively have been placed into the 'pre' attribute that the "javain" typemap supports. The "javain" - typemap above could be replaced with the following:

    -
    -
    + typemap above could be replaced with the following:

    +
    +
     %typemap(javain, pre="    $module.CheckForNaN($javainput);") float "$javainput"
    -
    -
    -

    which would modify the calculate function to instead be - generated as:

    -
    -
    +
    +
    +

    which would modify the calculate function to instead be + generated as:

    +
    +
     public class example {
       ...
       public static boolean calculate(float first, float second) {
    @@ -34305,19 +34571,19 @@ public class example {
         }
       }
     }
    -
    -
    -

    See the Date marshalling example - for an example using further "javain" typemap attributes.

    -

    If we decide that what we actually want is a checked exception +

    +
    +

    See the Date marshalling example + for an example using further "javain" typemap attributes.

    +

    If we decide that what we actually want is a checked exception instead of a runtime exception, we can change this easily enough. The - proxy method that uses float as an input, must then add the + proxy method that uses float as an input, must then add the exception class to the throws clause. SWIG can handle this as it - supports the 'throws' typemap - attribute for specifying classes for the throws clause. Thus we can - modify the pragma and the typemap for the throws clause:

    -
    -
    + supports the 'throws' typemap
    + attribute for specifying classes for the throws clause. Thus we can
    + modify the pragma and the typemap for the throws clause:

    +
    +
     %typemap(javain, throws="java.lang.Exception") float "$module.CheckForNaN($javainput)"
     %pragma(java) modulecode=%{
       /** Simply returns the input value unless it is not a number,
    @@ -34328,14 +34594,14 @@ public class example {
         return num;
       }
     %}
    -
    -
    -

    The calculate method now has a throws clause and even - though the typemap is used twice for both float first and -float second, the throws clause contains a single instance of -java.lang.Exception:

    -
    -
    +
    +
    +

    The calculate method now has a throws clause and even + though the typemap is used twice for both float first and +float second, the throws clause contains a single instance of +java.lang.Exception:

    +
    +
     public class example {
       ...
     
    @@ -34351,20 +34617,20 @@ public class example {
         return exampleJNI.calculate(example.CheckForNaN(first), example.CheckForNaN(second));
       }
     }
    -
    -
    -

    If we were a martyr to the JNI cause, we could replace the succinct +

    +
    +

    If we were a martyr to the JNI cause, we could replace the succinct code within the "javain" typemap with a few pages of JNI code. If we had, we would have put it in the "in" typemap which, like all JNI and - Java typemaps, also supports the 'throws' attribute.

    -

    25.10.4 Converting Java - String arrays to char **

    -

    A common problem in many C programs is the processing of command + Java typemaps, also supports the 'throws' attribute.

    +

    26.10.4 Converting Java + String arrays to char **

    +

    A common problem in many C programs is the processing of command line arguments, which are usually passed in an array of NULL terminated strings. The following SWIG interface file allows a Java String array - to be used as a char ** object.

    -
    -
    + to be used as a char ** object.

    +
    +
     %module example
     
     /* This tells SWIG to treat char ** as a special case when used as a parameter
    @@ -34441,14 +34707,14 @@ char **get_args() {
     }
     
     %}
    -
    -
    -

    Note that the 'C' JNI calling convention is used. Checking for any +

    +
    +

    Note that the 'C' JNI calling convention is used. Checking for any thrown exceptions after JNI function calls has been omitted. When this module is compiled, our wrapped C functions can be used by the - following Java program:

    -
    -
    + following Java program:

    +
    +
     // File runme.java
     
     public class runme {
    @@ -34467,14 +34733,14 @@ public class runme {
         example.print_args(animals);
         String args[] = example.get_args();
         for (int i=0; i<args.length; i++)
    -        System.out.println(i + ":" + args[i]);
    +      System.out.println(i + ":" + args[i]);
       }
     }
    -
    -
    -

    When compiled and run we get:

    -
    -
    +
    +
    +

    When compiled and run we get:

    +
    +
     $ java runme
     argv[0] = Cat
     argv[1] = Dog
    @@ -34485,38 +34751,38 @@ argv[3] = Goat
     2:Susan
     3:John
     4:Michelle
    -
    -
    -

    In the example, a few different typemaps are used. The "in" typemap +

    +
    +

    In the example, a few different typemaps are used. The "in" typemap is used to receive an input argument and convert it to a C array. Since dynamic memory allocation is used to allocate memory for the array, the "freearg" typemap is used to later release this memory after the execution of the C function. The "out" typemap is used for function return values. Lastly the "jni", "jtype" and "jstype" typemaps are also - required to specify what Java types to use.

    -

    25.10.5 Expanding a Java object - to multiple arguments

    -

    Suppose that you had a collection of C functions with arguments such - as the following:

    -
    -
    + required to specify what Java types to use.

    +

    26.10.5 Expanding a Java object + to multiple arguments

    +

    Suppose that you had a collection of C functions with arguments such + as the following:

    +
    +
     int foo(int argc, char **argv);
    -
    -
    -

    In the previous example, a typemap was written to pass a Java String - array as the char **argv. This allows the function to be used - from Java as follows:

    -
    -
    +
    +
    +

    In the previous example, a typemap was written to pass a Java String + array as the char **argv. This allows the function to be used + from Java as follows:

    +
    +
     example.foo(4, new String[]{"red", "green", "blue", "white"});
    -
    -
    -

    Although this works, it's a little awkward to specify the argument +

    +
    +

    Although this works, it's a little awkward to specify the argument count. To fix this, a multi-argument typemap can be defined. This is not very difficult--you only have to make slight modifications to the - previous example's typemaps:

    -
    -
    + previous example's typemaps:

    +
    +
     %typemap(in) (int argc, char **argv) {
       int i = 0;
       $1 = (*jenv)->GetArrayLength(jenv, $input);
    @@ -34545,46 +34811,46 @@ example.foo(4, new String[]{"red", "green", "blue"
     %typemap(jstype) (int argc, char **argv) "String[]"
     
     %typemap(javain) (int argc, char **argv) "$javainput"
    -
    -
    -

    When writing a multiple-argument typemap, each of the types is - referenced by a variable such as $1 or $2. The +

    +
    +

    When writing a multiple-argument typemap, each of the types is + referenced by a variable such as $1 or $2. The typemap code simply fills in the appropriate values from the supplied - Java parameter.

    -

    With the above typemap in place, you will find it no longer + Java parameter.

    +

    With the above typemap in place, you will find it no longer necessary to supply the argument count. This is automatically set by - the typemap code. For example:

    -
    -
    + the typemap code. For example:

    +
    +
     example.foo(new String[]{"red", "green", "blue", "white"});
    -
    -
    -

    25.10.6 Using - typemaps to return arguments

    -

    A common problem in some C programs is that values may be returned +

    +
    +

    26.10.6 Using + typemaps to return arguments

    +

    A common problem in some C programs is that values may be returned in function parameters rather than in the return value of a function. - The typemaps.i file defines INPUT, OUTPUT and INOUT typemaps + The typemaps.i file defines INPUT, OUTPUT and INOUT typemaps which can be used to solve some instances of this problem. This library file uses an array as a means of moving data to and from Java when wrapping a C function that takes non const pointers or non const - references as parameters.

    -

    Now we are going to outline an alternative approach to using arrays - for C pointers. The INOUT typemap uses a double[] array for - receiving and returning the double* parameters. In this - approach we are able to use a Java class myDouble instead of -double[] arrays where the C pointer double* is required.

    -

    Here is our example function:

    -
    -
    + references as parameters.

    +

    Now we are going to outline an alternative approach to using arrays + for C pointers. The INOUT typemap uses a double[] array for + receiving and returning the double* parameters. In this + approach we are able to use a Java class myDouble instead of +double[] arrays where the C pointer double* is required.

    +

    Here is our example function:

    +
    +
     /* Returns a status value and two values in out1 and out2 */
     int spam(double a, double b, double *out1, double *out2);
    -
    -
    -

    If we define a structure MyDouble containing a double +

    +
    +

    If we define a structure MyDouble containing a double member variable and use some typemaps we can solve this problem. For - example we could put the following through SWIG:

    -
    -
    + example we could put the following through SWIG:

    +
    +
     %module example
     
     /* Define a new structure to use instead of double * */
    @@ -34606,7 +34872,7 @@ int spam(double a, double b, double *out1, double *out2) {
     %}
     
     /* 
    -This typemap will make any double * function parameters with name OUTVALUE take an
    +This typemap will make any double * function parameters with name OUTVALUE take an
     argument of MyDouble instead of double *. This will 
     allow the calling function to read the double * value after returning from the function.
     */
    @@ -34628,20 +34894,20 @@ allow the calling function to read the double * value after returning from the f
     /* Now we apply the typemap to the named variables */
     %apply double *OUTVALUE { double *out1, double *out2 };
     int spam(double a, double b, double *out1, double *out2);
    -
    -
    -

    Note that the C++ JNI calling convention has been used this time and +

    +
    +

    Note that the C++ JNI calling convention has been used this time and so must be compiled as C++ and the -c++ commandline must be passed to - SWIG. JNI error checking has been omitted for clarity.

    -

    What the typemaps do are make the named double* function - parameters use our new MyDouble wrapper structure. The "in" - typemap takes this structure, gets the C++ pointer to it, takes the -double value member variable and passes it to the C++ spam - function. In Java, when the function returns, we use the SWIG created -getValue() function to get the output value. The following Java - program demonstrates this:

    -
    -
    + SWIG. JNI error checking has been omitted for clarity.

    +

    What the typemaps do are make the named double* function + parameters use our new MyDouble wrapper structure. The "in" + typemap takes this structure, gets the C++ pointer to it, takes the +double value member variable and passes it to the C++ spam + function. In Java, when the function returns, we use the SWIG created +getValue() function to get the output value. The following Java + program demonstrates this:

    +
    +
     // File: runme.java
     
     public class runme {
    @@ -34662,22 +34928,22 @@ public class runme {
         System.out.println(ret + "  " + out1.getValue() + "  " + out2.getValue());
       }
     }
    -
    -
    -

    When compiled and run we get:

    -
    -
    +
    +
    +

    When compiled and run we get:

    +
    +
     $ java runme
     1 12.0  340.0
    -
    -
    -

    25.10.7 Adding Java downcasts to - polymorphic return types

    -

    SWIG support for polymorphism works in that the appropriate virtual +

    +
    +

    26.10.7 Adding Java downcasts to + polymorphic return types

    +

    SWIG support for polymorphism works in that the appropriate virtual function is called. However, the default generated code does not allow - for downcasting. Let's examine this with the following code:

    -
    -
    + for downcasting. Let's examine this with the following code:

    +
    +
     %include "std_string.i"
     
     #include <iostream>
    @@ -34704,38 +34970,38 @@ public:
     Vehicle *vehicle_factory() {
       return new Ambulance("Very loud");
     }
    -
    -
    -

    If we execute the following Java code:

    -
    -
    +
    +
    +

    If we execute the following Java code:

    +
    +
     Vehicle vehicle = example.vehicle_factory();
     vehicle.start();
     
     Ambulance ambulance = (Ambulance)vehicle;
     ambulance.sound_siren();
    -
    -
    -

    We get:

    -
    -
    +
    +
    +

    We get:

    +
    +
     Ambulance started
     java.lang.ClassCastException
             at runme.main(runme.java:16)
    -
    -
    -

    Even though we know from examination of the C++ code that -vehicle_factory returns an object of type Ambulance, we +

    +
    +

    Even though we know from examination of the C++ code that +vehicle_factory returns an object of type Ambulance, we are not able to use this knowledge to perform the downcast in Java. This occurs because the runtime type information is not completely - passed from C++ to Java when returning the type from -vehicle_factory(). Usually this is not a problem as virtual - functions do work by default, such as in the case of start(). - There are a few solutions to getting downcasts to work.

    -

    The first is not to use a Java cast but a call to C++ to make the - cast. Add this to your code:

    -
    -
    + passed from C++ to Java when returning the type from 
    +vehicle_factory(). Usually this is not a problem as virtual
    + functions do work by default, such as in the case of start().
    + There are a few solutions to getting downcasts to work.

    +

    The first is not to use a Java cast but a call to C++ to make the + cast. Add this to your code:

    +
    +
     %exception Ambulance::dynamic_cast(Vehicle *vehicle) {
       $action
         if (!result) {
    @@ -34750,21 +35016,21 @@ vehicle_factory(). Usually this is not a problem as virtual
         return dynamic_cast<Ambulance *>(vehicle);
       }
     };
    -
    -
    -

    It would then be used from Java like this

    -
    -
    +
    +
    +

    It would then be used from Java like this

    +
    +
     Ambulance ambulance = Ambulance.dynamic_cast(vehicle);
     ambulance.sound_siren();
    -
    -
    -

    Should vehicle not be of type ambulance then a - Java ClassCastException is thrown. The next solution is a +

    +
    +

    Should vehicle not be of type ambulance then a + Java ClassCastException is thrown. The next solution is a purer solution in that Java downcasts can be performed on the types. - Add the following before the definition of vehicle_factory:

    -
    -
    + Add the following before the definition of vehicle_factory:

    +
    +
     %typemap(out) Vehicle * {
       Ambulance *downcast = dynamic_cast<Ambulance *>($1);
       *(Ambulance **)&$result = downcast;
    @@ -34773,17 +35039,17 @@ ambulance.sound_siren();
     %typemap(javaout) Vehicle * {
         return new Ambulance($jnicall, $owner);
       }
    -
    -
    -

    Here we are using our knowledge that vehicle_factory always - returns type Ambulance so that the Java proxy is created as a - type Ambulance. If vehicle_factory can manufacture - any type of Vehicle and we want to be able to downcast using +

    +
    +

    Here we are using our knowledge that vehicle_factory always + returns type Ambulance so that the Java proxy is created as a + type Ambulance. If vehicle_factory can manufacture + any type of Vehicle and we want to be able to downcast using Java casts for any of these types, then a different approach is needed. Consider expanding our example with a new Vehicle type and a more - flexible factory function:

    -
    -
    + flexible factory function:

    +
    +
     class FireEngine : public Vehicle {
     public:
       FireEngine() {}
    @@ -34801,23 +35067,23 @@ Vehicle *vehicle_factory(int vehicle_number) {
       else
         return new FireEngine();
     }
    -
    -
    -

    To be able to downcast with this sort of Java code:

    -
    -
    +
    +
    +

    To be able to downcast with this sort of Java code:

    +
    +
     FireEngine fireengine = (FireEngine)example.vehicle_factory(1);
     fireengine.roll_out_hose();
     Ambulance ambulance = (Ambulance)example.vehicle_factory(0);
     ambulance.sound_siren();
    -
    -
    -

    the following typemaps targeted at the vehicle_factory +

    +
    +

    the following typemaps targeted at the vehicle_factory function will achieve this. Note that in this case, the Java class is constructed using JNI code rather than passing a pointer across the JNI - boundary in a Java long for construction in Java code.

    -
    -
    + boundary in a Java long for construction in Java code.

    +
    +
     %typemap(jni) Vehicle *vehicle_factory "jobject"
     %typemap(jtype) Vehicle *vehicle_factory "Vehicle"
     %typemap(jstype) Vehicle *vehicle_factory "Vehicle"
    @@ -34858,28 +35124,28 @@ ambulance.sound_siren();
       if (!$result)
         cout << "Failed to create new java object" << endl;
     }
    -
    -
    -

    Better error handling would need to be added into this code. There +

    +
    +

    Better error handling would need to be added into this code. There are other solutions to this problem, but this last example demonstrates some more involved JNI code. SWIG usually generates code which constructs the proxy classes using Java code as it is easier to handle error conditions and is faster. Note that the JNI code above uses a number of string lookups to call a constructor, whereas this would not - occur using byte compiled Java code.

    -

    25.10.8 Adding an equals method - to the Java classes

    -

    When a pointer is returned from a JNI function, it is wrapped using + occur using byte compiled Java code.

    +

    26.10.8 Adding an equals method + to the Java classes

    +

    When a pointer is returned from a JNI function, it is wrapped using a new Java proxy class or type wrapper class. Even when the pointers are the same, it will not be possible to know that the two Java classes containing those pointers are actually the same object. It is common in - Java to use the equals() method to check whether two objects - are equivalent. The equals() method is usually accompanied by - a hashCode() method in order to fulfill the requirement that + Java to use the equals() method to check whether two objects + are equivalent. The equals() method is usually accompanied by + a hashCode() method in order to fulfill the requirement that the hash code is equal for equal objects. Pure Java code methods like - these can be easily added:

    -
    -
    + these can be easily added:

    +
    +
     %typemap(javacode) SWIGTYPE %{
       public boolean equals(Object obj) {
         boolean equal = false;
    @@ -34894,35 +35160,35 @@ ambulance.sound_siren();
     
     class Foo { };
     Foo* returnFoo(Foo *foo) { return foo; }
    -
    -
    -

    The following would display false without the javacode - typemap above. With the typemap defining the equals method the - result is true.

    -
    -
    +
    +
    +

    The following would display false without the javacode + typemap above. With the typemap defining the equals method the + result is true.

    +
    +
     Foo foo1 = new Foo();
     Foo foo2 = example.returnFoo(foo1);
     System.out.println("foo1? " + foo1.equals(foo2));
    -
    -
    -

    25.10.9 Void pointers and a common Java - base class

    -

    One might wonder why the common code that SWIG emits for the proxy +

    +
    +

    26.10.9 Void pointers and a common Java + base class

    +

    One might wonder why the common code that SWIG emits for the proxy and type wrapper classes is not pushed into a base class. The reason is - that although swigCPtr could be put into a common base class + that although swigCPtr could be put into a common base class for all classes wrapping C structures, it would not work for C++ classes involved in an inheritance chain. Each class derived from a - base needs a separate swigCPtr because C++ compilers sometimes + base needs a separate swigCPtr because C++ compilers sometimes use a different pointer value when casting a derived class to a base. Additionally as Java only supports single inheritance, it would not be possible to derive wrapped classes from your own pure Java classes if the base class has been 'used up' by SWIG. However, you may want to move some of the common code into a base class. Here is an example which uses a common base class for all proxy classes and type wrapper - classes:

    -
    -
    + classes:

    +
    +
     %typemap(javabase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], 
                                                              SWIGTYPE (CLASS::*) "SWIG"
     
    @@ -34932,11 +35198,11 @@ System.out.println("foo1? " + foo1.equals(foo2));
         return swigCPtr;
       }
     %}
    -
    -
    -

    Define new base class called SWIG:

    -
    -
    +
    +
    +

    Define new base class called SWIG:

    +
    +
     public abstract class SWIG {
       protected abstract long getPointer();
     
    @@ -34951,25 +35217,25 @@ public abstract class SWIG {
         return new SWIGTYPE_p_void(getPointer(), false);
       }
     }
    -
    -
    -

    This example contains some useful functionality which you may want - in your code.

    -
      -
    • It has an equals() method. Unlike the previous example, - the method code isn't replicated in all classes.
    • -
    • It also has a function which effectively implements a cast from the +
    +
    +

    This example contains some useful functionality which you may want + in your code.

    +
      +
    • It has an equals() method. Unlike the previous example, + the method code isn't replicated in all classes.
    • +
    • It also has a function which effectively implements a cast from the type of the proxy/type wrapper class to a void pointer. This is necessary for passing a proxy class or a type wrapper class to a - function that takes a void pointer.
    • -
    -

    25.10.10 Struct pointer to - pointer

    -

    Pointers to pointers are often used as output parameters in C + function that takes a void pointer. + +

    26.10.10 Struct pointer to + pointer

    +

    Pointers to pointers are often used as output parameters in C factory type functions. These are a bit more tricky to handle. Consider - the following situation where a Butler can be hired and fired:

    -
    -
    + the following situation where a Butler can be hired and fired:

    +
    +
     typedef struct {
       int hoursAvailable;
       char *greeting;
    @@ -34979,11 +35245,11 @@ typedef struct {
     // The caller must free the memory by calling FireButler()!!
     extern int HireButler(Butler **ppButler);
     extern void FireButler(Butler *pButler);
    -
    -
    -

    C code implementation:

    -
    -
    +
    +
    +

    C code implementation:

    +
    +
     int HireButler(Butler **ppButler) {
       Butler *pButler = (Butler *)malloc(sizeof(Butler));
       pButler->hoursAvailable = 24;
    @@ -34996,36 +35262,36 @@ void FireButler(Butler *pButler) {
       free(pButler->greeting);
       free(pButler);
     }
    -
    -
    -

    Let's take two approaches to wrapping this code. The first is to +

    +
    +

    Let's take two approaches to wrapping this code. The first is to provide a functional interface, much like the original C interface. The - following Java code shows how we intend the code to be used:

    -
    -
    + following Java code shows how we intend the code to be used:

    +
    +
     Butler jeeves = new Butler();
     example.HireButler(jeeves);
     System.out.println("Greeting:     " + jeeves.getGreeting());
     System.out.println("Availability: " + jeeves.getHoursAvailable() + " hours per day");
     example.FireButler(jeeves);
    -
    -
    -

    Resulting in the following output when run:

    -
    -
    +
    +
    +

    Resulting in the following output when run:

    +
    +
     Greeting:     At your service Sir
     Availability: 24 hours per day
    -
    -
    -

    Note the usage is very much like it would be used if we were writing +

    +
    +

    Note the usage is very much like it would be used if we were writing C code, that is, explicit memory management is needed. No C memory is - allocated in the construction of the Butler proxy class and + allocated in the construction of the Butler proxy class and the proxy class will not destroy the underlying C memory when it is collected. A number of typemaps and features are needed to implement this approach. The following interface file code should be placed - before SWIG parses the above C code.

    -
    -
    + before SWIG parses the above C code.

    +
    +
     %module example
     
     // Do not generate the default proxy constructor or destructor
    @@ -35058,40 +35324,40 @@ Availability: 24 hours per day
       (*jenv)->SetLongField(jenv, $input, fid, cPtr);
     }
     %typemap(javain) Butler ** "$javainput"
    -
    -
    -

    Note that the JNI code sets the proxy's swigCPtr member - variable to point to the newly created object. The swigCMemOwn +

    +
    +

    Note that the JNI code sets the proxy's swigCPtr member + variable to point to the newly created object. The swigCMemOwn remains unchanged (at false), so that the proxy does not own the - memory.

    -

    Note: The old %nodefault directive disabled the default constructor + memory.

    +

    Note: The old %nodefault directive disabled the default constructor and destructor at the same time. This is unsafe in most of the cases, and you can use the explicit %nodefaultctor and %nodefaultdtor - directives to achieve the same result if needed.

    -

    The second approach offers a more object oriented interface to the + directives to achieve the same result if needed.

    +

    The second approach offers a more object oriented interface to the Java user. We do this by making the Java proxy class's constructor call - the HireButler() method to create the underlying C object. + the HireButler() method to create the underlying C object. Additionally we get the proxy to take ownership of the memory so that - the finalizer will call the FireButler() function. The proxy + the finalizer will call the FireButler() function. The proxy class will thus take ownership of the memory and clean it up when no longer needed. We will also prevent the user from being able to - explicitly call the HireButler() and FireButler() - functions. Usage from Java will simply be:

    -
    -
    + explicitly call the HireButler() and FireButler()
    + functions. Usage from Java will simply be:

    +
    +
     Butler jeeves = new Butler();
     System.out.println("Greeting:     " + jeeves.getGreeting());
     System.out.println("Availability: " + jeeves.getHoursAvailable() + " hours per day");
    -
    -
    -

    Note that the Butler class is used just like any other Java class +

    +
    +

    Note that the Butler class is used just like any other Java class and no extra coding by the user needs to be written to clear up the underlying C memory as the finalizer will be called by the garbage - collector which in turn will call the FireButler() function. - To implement this, we use the above interface file code but remove the -javacode typemap and add the following:

    -
    -
    + collector which in turn will call the FireButler() function.
    + To implement this, we use the above interface file code but remove the 
    +javacode typemap and add the following:

    +
    +
     // Don't expose the memory allocation/de-allocation functions
     %ignore FireButler(Butler *pButler);
     %ignore HireButler(Butler **ppButler);
    @@ -35107,26 +35373,26 @@ javacode typemap and add the following:

    FireButler($self); } } -
    -
    -

    Note that the code in %extend is using a C++ type +

    +
    +

    Note that the code in %extend is using a C++ type constructor and destructor, yet the generated code will still compile - as C code, see Adding member - functions to C structures. The C functional interface has been + as C code, see Adding member + functions to C structures. The C functional interface has been completely morphed into an object-oriented interface and the Butler class would behave much like any pure Java class and feel more natural - to Java users.

    -

    25.10.11 Memory - management when returning references to member variables

    -

    This example shows how to prevent premature garbage collection of + to Java users.

    +

    26.10.11 Memory + management when returning references to member variables

    +

    This example shows how to prevent premature garbage collection of objects when the underlying C++ class returns a pointer or reference to - a member variable.

    -

    Consider the following C++ code:

    -
    -
    + a member variable.

    +

    Consider the following C++ code:

    +
    +
     struct Wheel {
       int size;
    -  Wheel(int sz) : size(sz) {}
    +  Wheel(int sz = 0) : size(sz) {}
     };
     
     class Bike {
    @@ -35135,38 +35401,38 @@ public:
       Bike(int val) : wheel(val) {}
       Wheel& getWheel() { return wheel; }
     };
    -
    -
    -

    and the following usage from Java after running the code through - SWIG:

    -
    -
    +
    +
    +

    and the following usage from Java after running the code through + SWIG:

    +
    +
     Wheel wheel = new Bike(10).getWheel();
     System.out.println("wheel size: " + wheel.getSize());
     // Simulate a garbage collection
     System.gc();
     System.runFinalization();
     System.out.println("wheel size: " + wheel.getSize());
    -
    -
    -

    Don't be surprised that if the resulting output gives strange - results such as...

    -
    -
    +
    +
    +

    Don't be surprised that if the resulting output gives strange + results such as...

    +
    +
     wheel size: 10
     wheel size: 135019664
    -
    -
    -

    What has happened here is the garbage collector has collected the -Bike instance as it doesn't think it is needed any more. The proxy - instance, wheel, contains a reference to memory that was - deleted when the Bike instance was collected. In order to - prevent the garbage collector from collecting the Bike - instance a reference to the Bike must be added to the -wheel instance. You can do this by adding the reference when the -getWheel() method is called using the following typemaps.

    -
    -
    +
    +
    +

    What has happened here is the garbage collector has collected the +Bike instance as it doesn't think it is needed any more. The proxy + instance, wheel, contains a reference to memory that was + deleted when the Bike instance was collected. In order to + prevent the garbage collector from collecting the Bike + instance a reference to the Bike must be added to the +wheel instance. You can do this by adding the reference when the +getWheel() method is called using the following typemaps.

    +
    +
     %typemap(javacode) Wheel %{
       // Ensure that the GC doesn't collect any Bike instance set from Java
       private Bike bikeReference;
    @@ -35187,13 +35453,13 @@ getWheel() method is called using the following typemaps.

    } return ret; } -
    -
    -

    The code in the first typemap gets added to the Wheel proxy +

    +
    +

    The code in the first typemap gets added to the Wheel proxy class. The code in the second typemap constitutes the bulk of the code - in the generated getWheel() function:

    -
    -
    + in the generated getWheel() function:

    +
    +
     public class Wheel {
       ...
       // Ensure that the GC doesn't collect any bike set from Java 
    @@ -35215,18 +35481,18 @@ public class Bike {
         return ret;
       }
     }
    -
    -
    -

    Note the addReference call.

    -

    25.10.12 Memory management - for objects passed to the C++ layer

    -

    Managing memory can be tricky when using C++ and Java proxy classes. +

    +
    +

    Note the addReference call.

    +

    26.10.12 Memory management + for objects passed to the C++ layer

    +

    Managing memory can be tricky when using C++ and Java proxy classes. The previous example shows one such case and this example looks at memory management for a class passed to a C++ method which expects the object to remain in scope after the function has returned. Consider the - following two C++ classes:

    -
    -
    + following two C++ classes:

    +
    +
     struct Element {
       int value;
       Element(int val) : value(val) {}
    @@ -35238,45 +35504,45 @@ public:
       void setElement(Element* e) { element = e; }
       Element* getElement() { return element; }
     };
    -
    -
    -

    and usage from C++

    -
    -
    +
    +
    +

    and usage from C++

    +
    +
     Container container;
     Element element(20);
     container.setElement(&element);
     cout << "element.value: " << container.getElement()->value << endl;
    -
    -
    -

    and more or less equivalent usage from Java

    -
    -
    +
    +
    +

    and more or less equivalent usage from Java

    +
    +
     Container container = new Container();
     container.setElement(new Element(20));
     System.out.println("element value: " + container.getElement().getValue());
    -
    -
    -

    The C++ code will always print out 20, but the value printed out may +

    +
    +

    The C++ code will always print out 20, but the value printed out may not be this in the Java equivalent code. In order to understand why, - consider a garbage collection occuring...

    -
    -
    + consider a garbage collection occurring...

    +
    +
     Container container = new Container();
     container.setElement(new Element(20));
     // Simulate a garbage collection
     System.gc();
     System.runFinalization();
     System.out.println("element value: " + container.getElement().getValue());
    -
    -
    -

    The temporary element created with new Element(20) could - get garbage collected which ultimately means the container +

    +
    +

    The temporary element created with new Element(20) could + get garbage collected which ultimately means the container variable is holding a dangling pointer, thereby printing out any old random value instead of the expected value of 20. One solution is to - add in the appropriate references in the Java layer...

    -
    -
    + add in the appropriate references in the Java layer...

    +
    +
     public class Container {
     
       ...
    @@ -35284,48 +35550,57 @@ public class Container {
       // Ensure that the GC doesn't collect any Element set from Java
       // as the underlying C++ class stores a shallow copy
       private Element elementReference;
    -  private long getCPtrAndAddReference(Element element) {
    -    elementReference = element;
    -    return Element.getCPtr(element);
    -  }
     
       public void setElement(Element e) {
    -    exampleJNI.Container_setElement(swigCPtr, this, getCPtrAndAddReference(e), e);
    +    exampleJNI.Container_setElement(swigCPtr, this, Element.getCPtr(e), e);
    +    elementReference = e;
       }
     }
    -
    -
    -

    The following typemaps will generate the desired code. The 'javain' - typemap matches the input parameter type for the setElement - method. The 'javacode' typemap simply adds in the specified code into - the Java proxy class.

    -
    -
    -%typemap(javain) Element *e "getCPtrAndAddReference($javainput)"
    -
    +
    +
    +

    The following typemaps can be used to generate this code:

    +
    +
     %typemap(javacode) Container %{
       // Ensure that the GC doesn't collect any element set from Java
       // as the underlying C++ class stores a shallow copy
       private Element elementReference;
    -  private long getCPtrAndAddReference(Element element) {
    -    elementReference = element;
    -    return Element.getCPtr(element);
    -  }
     %}
    -
    -
    -

    25.10.13 Date marshalling using the - javain typemap and associated attributes

    -

    The NaN Exception example + +%typemap(javain, + post=" elementReference = $javainput;" + ) Element *e "Element.getCPtr($javainput)" +

    +
    +

    The 'javacode' typemap simply adds in the specified code into the + Java proxy class. The 'javain' typemap matches the input parameter type + and name for the setElement method and the 'post' typemap + attribute allows adding code after the JNI call. The 'post' code is + generated into a finally block after the JNI call so the resulting code + isn't quite as mentioned earlier, setElement is actually:

    +
    +
    +  public void setElement(Element e) {
    +    try {
    +      exampleJNI.Container_setElement(swigCPtr, this, Element.getCPtr(e), e);
    +    } finally {
    +      elementReference = e;
    +    }
    +  }
    +
    +
    +

    26.10.13 Date marshalling using the + javain typemap and associated attributes

    +

    The NaN Exception example is a simple example of the "javain" typemap and its 'pre' attribute. - This example demonstrates how a C++ date class, say CDate, can - be mapped onto the standard Java date class, -java.util.GregorianCalendar by using the 'pre', 'post' and - 'pgcppname' attributes of the "javain" typemap. The idea is that the -GregorianCalendar is used wherever the C++ API uses a CDate -. Let's assume the code being wrapped is as follows:

    -
    -
    + This example demonstrates how a C++ date class, say CDate, can
    + be mapped onto the standard Java date class, 
    +java.util.GregorianCalendar by using the 'pre', 'post' and
    + 'pgcppname' attributes of the "javain" typemap. The idea is that the 
    +GregorianCalendar is used wherever the C++ API uses a CDate
    +. Let's assume the code being wrapped is as follows:

    +
    +
     class CDate {
     public:
       CDate(int year, int month, int day);
    @@ -35338,14 +35613,14 @@ struct Action {
       static int doSomething(const CDate &dateIn, CDate &dateOut);
       Action(const CDate &date, CDate &dateOut);
     };
    -
    -
    -

    Note that dateIn is const and therefore read only and -dateOut is a non-const output type.

    -

    First let's look at the code that is generated by default, where the - Java proxy class CDate is used in the proxy interface:

    -
    -
    +
    +
    +

    Note that dateIn is const and therefore read only and +dateOut is a non-const output type.

    +

    First let's look at the code that is generated by default, where the + Java proxy class CDate is used in the proxy interface:

    +
    +
     public class Action {
       ...
       public static int doSomething(CDate dateIn, CDate dateOut) {
    @@ -35358,22 +35633,22 @@ public class Action {
                                    CDate.getCPtr(dateOut), dateOut), true);
       }
     }
    -
    -
    -

    The CDate & and const CDate & Java code is - generated from the following two default typemaps:

    -
    -
    +
    +
    +

    The CDate & and const CDate & Java code is + generated from the following two default typemaps:

    +
    +
     %typemap(jstype) SWIGTYPE & "$javaclassname"
     %typemap(javain) SWIGTYPE & "$javaclassname.getCPtr($javainput)"
    -
    -
    -

    where '$javaclassname' is translated into the proxy class name, -CDate and '$javainput' is translated into the name of the - parameter, eg dateIn. From Java, the intention is then to call - into a modifed API with something like:

    -
    -
    +
    +
    +

    where '$javaclassname' is translated into the proxy class name, +CDate and '$javainput' is translated into the name of the + parameter, eg dateIn. From Java, the intention is then to call + into a modified API with something like:

    +
    +
     java.util.GregorianCalendar calendarIn = 
       new java.util.GregorianCalendar(2011, java.util.Calendar.APRIL, 13, 0, 0, 0);
     java.util.GregorianCalendar calendarOut = new java.util.GregorianCalendar();
    @@ -35382,15 +35657,15 @@ java.util.GregorianCalendar calendarOut = new java.util.GregorianCalendar();
     // is set to a new value by the C++ call
     Action.doSomething(calendarIn, calendarOut);
     Action action = new Action(calendarIn, calendarOut);
    -
    -
    -

    To achieve this mapping, we need to alter the default code - generation slightly so that at the Java layer, a GregorianCalendar - is converted into a CDate. The JNI intermediary layer will - still take a pointer to the underlying CDate class. The - typemaps to achieve this are shown below.

    -
    -
    +
    +
    +

    To achieve this mapping, we need to alter the default code + generation slightly so that at the Java layer, a GregorianCalendar + is converted into a CDate. The JNI intermediary layer will + still take a pointer to the underlying CDate class. The + typemaps to achieve this are shown below.

    +
    +
     %typemap(jstype) const CDate& "java.util.GregorianCalendar"
     %typemap(javain, 
              pre="    CDate temp$javainput = new CDate($javainput.get(java.util.Calendar.YEAR), "
    @@ -35406,12 +35681,12 @@ Action action = new Action(calendarIn, calendarOut);
                   "temp$javainput.getDay(), 0, 0, 0);", 
              pgcppname="temp$javainput") CDate &
              "$javaclassname.getCPtr(temp$javainput)"
    -
    -
    -

    The resulting generated proxy code in the Action class - follows:

    -
    -
    +
    +
    +

    The resulting generated proxy code in the Action class + follows:

    +
    +
     public class Action {
       ...
       public static int doSomething(java.util.GregorianCalendar dateIn, 
    @@ -35450,85 +35725,85 @@ public class Action {
         this(Action.SwigConstructAction(date, dateOut), true);
       }
     }
    -
    -
    -

    A few things to note:

    -
      -
    • The "javatype" typemap has changed the parameter type to -java.util.GregorianCalendar or java.util.Calendar instead - of the default generated CDate proxy.
    • -
    • The code in the 'pre' attribute appears before the JNI call ( -exampleJNI.new_Action / exampleJNI.Action_doSomething).
    • -
    • The code in the 'post' attribute appears after the JNI call.
    • -
    • A try .. finally block is generated with the JNI call in the try +
    +
    +

    A few things to note:

    +
      +
    • The "javatype" typemap has changed the parameter type to +java.util.GregorianCalendar or java.util.Calendar instead + of the default generated CDate proxy.
    • +
    • The code in the 'pre' attribute appears before the JNI call ( +exampleJNI.new_Action / exampleJNI.Action_doSomething).
    • +
    • The code in the 'post' attribute appears after the JNI call.
    • +
    • A try .. finally block is generated with the JNI call in the try block and 'post' code in the finally block. The alternative of just using a temporary variable for the return value from the JNI call and the 'post' code being generated before the return statement is not possible given that the JNI call is in one line and comes from the - "javaout" typemap.
    • -
    • The temporary variables in the "javain" typemaps are called -temp$javain, where "$javain" is replaced with the parameter name. - "$javain" is used to mangle the variable name so that more than one -CDate & type can be used as a parameter in a method, otherwise two - or more local variables with the same name would be generated.
    • -
    • The use of the "javain" typemap causes a constructor helper - function (SwigConstructAction) to be generated. This allows + "javaout" typemap.
    • +
    • The temporary variables in the "javain" typemaps are called +temp$javain, where "$javain" is replaced with the parameter name. + "$javain" is used to mangle the variable name so that more than one +CDate & type can be used as a parameter in a method, otherwise two + or more local variables with the same name would be generated.
    • +
    • The use of the "javain" typemap causes a constructor helper + function (SwigConstructAction) to be generated. This allows Java code to be called before the JNI call and is required as the Java - compiler won't compile code inserted before the 'this' call.
    • -
    • The 'pgcppname' attribute is used to modify the object being passed - as the premature garbage collection prevention - parameter (the 2nd and 4th parameters in the JNI calls).
    • -
    -

    25.11 Living with Java Directors

    -

    This section is intended to address frequently asked questions and - frequently encountered problems when using Java directors.

    -
      -
    1. When my program starts up, it complains that method_foo - cannot be found in a Java method called swig_module_init. How do - I fix this? -

      Open up the C++ wrapper source code file and look for -"method_foo" (include the double quotes, they are important!) + compiler won't compile code inserted before the 'this' call.

    2. +
    3. The 'pgcppname' attribute is used to modify the object being passed + as the premature garbage collection prevention + parameter (the 2nd and 4th parameters in the JNI calls).
    4. + +

      26.11 Living with Java Directors

      +

      This section is intended to address frequently asked questions and + frequently encountered problems when using Java directors.

      +
        +
      1. When my program starts up, it complains that method_foo + cannot be found in a Java method called swig_module_init. How do + I fix this? +

        Open up the C++ wrapper source code file and look for +"method_foo" (include the double quotes, they are important!) Look at the JNI field descriptor and make sure that each class that occurs in the descriptor has the correct package name in front of it. If the package name is incorrect, put a "javapackage" typemap in your - SWIG interface file.

        -
      2. -
      3. I'm compiling my code and I'm using templates. I provided a + SWIG interface file.

        +
      4. +
      5. I'm compiling my code and I'm using templates. I provided a javapackage typemap, but SWIG doesn't generate the right JNI field - descriptor. -

        Use the template's renamed name as the argument to the "javapackage" - typemap:

        -
        -
        + descriptor.
        +

        Use the template's renamed name as the argument to the "javapackage" + typemap:

        +
        +
         %typemap(javapackage)  std::vector<int>  "your.package.here"
         %template(VectorOfInt) std::vector<int>;
        -
        -
      6. -
      7. -

        When I pass class pointers or references through a C++ upcall and + +

      8. +
      9. +

        When I pass class pointers or references through a C++ upcall and I try to type cast them, Java complains with a ClassCastException. What - am I doing wrong?

        -

        Normally, a non-director generated Java proxy class creates - temporary Java objects as follows:

        -
        -
        + am I doing wrong?

        +

        Normally, a non-director generated Java proxy class creates + temporary Java objects as follows:

        +
        +
         public static void MyClass_method_upcall(MyClass self, long jarg1)
         {
           Foo darg1 = new Foo(jarg1, false);
         
           self.method_upcall(darg1);
         }
        -
        -
        -

        Unfortunately, this loses the Java type information that is part of +

        +
        +

        Unfortunately, this loses the Java type information that is part of the underlying Foo director proxy class's Java object pointer causing the type cast to fail. The SWIG Java module's director code attempts to - correct the problem, but only for director-enabled classes, + correct the problem, but only for director-enabled classes, since the director class retains a global reference to its Java object. - Thus, for director-enabled classes and only for director-enabled - classes, the generated proxy Java code looks something like:

        -
        -
        + Thus, for director-enabled classes and only for director-enabled
        + classes, the generated proxy Java code looks something like:

        +
        +
         public static void MyClass_method_upcall(MyClass self, long jarg1,
                                                  Foo jarg1_object)
         {
        @@ -35536,32 +35811,32 @@ public static void MyClass_method_upcall(MyClass self, long jarg1,
         
           self.method_upcall(darg1);
         }
        -
        -
        -

        When you import a SWIG interface file containing class definitions, - the classes you want to be director-enabled must be have the -feature("director") enabled for type symmetry to work. This +

        +
        +

        When you import a SWIG interface file containing class definitions, + the classes you want to be director-enabled must be have the +feature("director") enabled for type symmetry to work. This applies even when the class being wrapped isn't a director-enabled - class but takes parameters that are director-enabled classes.

        -

        The current "type symmetry" design will work for simple C++ + class but takes parameters that are director-enabled classes.

        +

        The current "type symmetry" design will work for simple C++ inheritance, but will most likely fail for anything more complicated such as tree or diamond C++ inheritance hierarchies. Those who are - interested in challenging problems are more than welcome to hack the -Java::Java_director_declaration method in -Source/Modules/java.cxx.

        -

        If all else fails, you can use the downcastXXXXX() method to attempt + interested in challenging problems are more than welcome to hack the +Java::Java_director_declaration method in +Source/Modules/java.cxx.

        +

        If all else fails, you can use the downcastXXXXX() method to attempt to recover the director class's Java object pointer. For the Java Foo proxy class, the Foo director class's java object pointer can be accessed through the javaObjectFoo() method. The generated method's - signature is:

        -
        -
        + signature is:

        +
        +
           public static Foo javaObjectFoo(Foo obj);
        -
        -
        -

        From your code, this method is invoked as follows:

        -
        -
        +
        +
        +

        From your code, this method is invoked as follows:

        +
        +
         public class MyClassDerived {
           public void method_upcall(Foo foo_object)
           {
        @@ -35570,13 +35845,13 @@ public class MyClassDerived {
             /* rest of your code here */
           }
         }
        -
        -
        -

        An good approach for managing downcasting is placing a static method +

        +
        +

        An good approach for managing downcasting is placing a static method in each derived class that performs the downcast from the superclass, - e.g.,

        -
        -
        + e.g.,

        +
        +
         public class FooDerived extends Foo {
           /* ... */
           public static FooDerived downcastFooDerived(Foo foo_object)
        @@ -35591,11 +35866,11 @@ public class FooDerived extends Foo {
             }
           }
         }
        -
        -
        -

        Then change the code in MyClassDerived as follows:

        -
        -
        +
        +
        +

        Then change the code in MyClassDerived as follows:

        +
        +
         public class MyClassDerived extends MyClass {
           /* ... */
           public void method_upcall(Foo foo_object)
        @@ -35604,17 +35879,17 @@ public class MyClassDerived extends MyClass {
             /* rest of your code here */
           }
         }
        -
        -
      10. -
      11. -

        Why isn't the proxy class declared abstract? Why aren't the - director upcall methods in the proxy class declared abstract?

        -

        Declaring the proxy class and its methods abstract would break the + +

      12. +
      13. +

        Why isn't the proxy class declared abstract? Why aren't the + director upcall methods in the proxy class declared abstract?

        +

        Declaring the proxy class and its methods abstract would break the JNI argument marshalling and SWIG's downcall functionality (going from Java to C++.) Create an abstract Java subclass that inherits from the - director-enabled class instead. Using the previous Foo class example:

        -
        -
        + director-enabled class instead. Using the previous Foo class example:

        +
        +
         public abstract class UserVisibleFoo extends Foo {
           /** Make sure user overrides this method, it's where the upcall
            * happens.
        @@ -35632,28 +35907,28 @@ public abstract class UserVisibleFoo extends Foo {
             }
           }
         }
        -
        -
        -

        This doesn't prevent the user from creating subclasses derived from +

        +
        +

        This doesn't prevent the user from creating subclasses derived from Foo, however, UserVisibleFoo provides the safety net that reminds the - user to override the method_upcall() method.

        -
      14. -
      -

      25.12 Odds and ends

      -

      25.12.1 JavaDoc comments

      -

      The SWIG documentation system is currently deprecated. When it is + user to override the method_upcall() method.

      + +
    +

    26.12 Odds and ends

    +

    26.12.1 JavaDoc comments

    +

    The SWIG documentation system is currently deprecated. When it is resurrected JavaDoc comments will be fully supported. If you can't wait for the full documentation system a couple of workarounds are - available. The %javamethodmodifiers feature can be used for + available. The %javamethodmodifiers feature can be used for adding proxy class method comments and module class method comments. The "javaimports" typemap can be hijacked for adding in proxy class - JavaDoc comments. The jniclassimports or -jniclassclassmodifiers pragmas can also be used for adding - intermediary JNI class comments and likewise the moduleimports - or moduleclassmodifiers pragmas for the module class. Here is - an example adding in a proxy class and method comment:

    -
    -
    + JavaDoc comments. The jniclassimports or 
    +jniclassclassmodifiers pragmas can also be used for adding
    + intermediary JNI class comments and likewise the moduleimports
    + or moduleclassmodifiers pragmas for the module class. Here is
    + an example adding in a proxy class and method comment:

    +
    +
     %javamethodmodifiers Barmy::lose_marbles() "
       /**
         * Calling this method will make you mad.
    @@ -35668,13 +35943,13 @@ class Barmy {
     public:
       void lose_marbles() {}
     };
    -
    -
    -

    Note the "public" added at the end of the %javamethodmodifiers +

    +
    +

    Note the "public" added at the end of the %javamethodmodifiers as this is the default for this feature. The generated proxy class with - JavaDoc comments is then as follows:

    -
    -
    + JavaDoc comments is then as follows:

    +
    +
     /** The crazy class. Use as a last resort. */
     public class Barmy {
     ...
    @@ -35687,33 +35962,33 @@ public class Barmy {
       }
     ...
     }
    -
    -
    -

    25.12.2 Functional interface - without proxy classes

    -

    It is possible to run SWIG in a mode that does not produce proxy +

    +
    +

    26.12.2 Functional interface + without proxy classes

    +

    It is possible to run SWIG in a mode that does not produce proxy classes by using the -noproxy commandline option. The interface is rather primitive when wrapping structures or classes and is accessed through function calls to the module class. All the functions in the module class are wrapped by functions with identical names as those in - the intermediary JNI class.

    -

    Consider the example we looked at when examining proxy classes:

    -
    -
    + the intermediary JNI class.

    +

    Consider the example we looked at when examining proxy classes:

    +
    +
     class Foo {
     public:
       int x;
       int spam(int num, Foo* foo);
     };
    -
    -
    -

    When using -noproxy, type wrapper classes are generated +

    +
    +

    When using -noproxy, type wrapper classes are generated instead of proxy classes. Access to all the functions and variables is through a C like set of functions where the first parameter passed is the pointer to the class, that is an instance of a type wrapper class. - Here is what the module class looks like:

    -
    -
    + Here is what the module class looks like:

    +
    +
     public class example {
       public static void Foo_x_get(SWIGTYPE_p_Foo self, int x) {...}
       public static int Foo_x_get(SWIGTYPE_p_Foo self) {...}
    @@ -35721,358 +35996,358 @@ public class example {
       public static SWIGTYPE_p_Foo new_Foo() {...}
       public static void delete_Foo(SWIGTYPE_p_Foo self) {...}
     }
    -
    -
    -

    This approach is not nearly as natural as using proxy classes as the - functions need to be used like this:

    -
    -
    +
    +
    +

    This approach is not nearly as natural as using proxy classes as the + functions need to be used like this:

    +
    +
     SWIGTYPE_p_Foo foo = example.new_Foo();
     example.Foo_x_set(foo, 10);
     int var = example.Foo_x_get(foo);
     example.Foo_spam(foo, 20, foo);
     example.delete_Foo(foo);
    -
    -
    -

    Unlike proxy classes, there is no attempt at tracking memory. All - destructors have to be called manually for example the -delete_Foo(foo) call above.

    -

    25.12.3 Using your own JNI - functions

    -

    You may have some hand written JNI functions that you want to use in +

    +
    +

    Unlike proxy classes, there is no attempt at tracking memory. All + destructors have to be called manually for example the +delete_Foo(foo) call above.

    +

    26.12.3 Using your own JNI + functions

    +

    You may have some hand written JNI functions that you want to use in addition to the SWIG generated JNI functions. Adding these to your SWIG - generated package is possible using the %native directive. If + generated package is possible using the %native directive. If you don't want SWIG to wrap your JNI function then of course you can - simply use the %ignore directive. However, if you want SWIG to - generate just the Java code for a JNI function then use the %native + simply use the %ignore directive. However, if you want SWIG to + generate just the Java code for a JNI function then use the %native directive. The C types for the parameters and return type must be specified in place of the JNI types and the function name must be the - native method name. For example:

    -
    -
    + native method name. For example:

    +
    +
     %native (HandRolled) void HandRolled(int, char *);
     %{
     JNIEXPORT void JNICALL Java_packageName_moduleName_HandRolled(JNIEnv *, jclass,
                                                                   jlong, jstring);
     %}
    -
    -
    -

    No C JNI function will be generated and the -Java_packageName_moduleName_HandRolled function will be accessible +

    +
    +

    No C JNI function will be generated and the +Java_packageName_moduleName_HandRolled function will be accessible using the SWIG generated Java native method call in the intermediary - JNI class which will look like this:

    -
    -
    + JNI class which will look like this:

    +
    +
       public final static native void HandRolled(int jarg1, String jarg2);
    -
    -
    -

    and as usual this function is wrapped by another which for a global - C function would appear in the module class:

    -
    -
    +
    +
    +

    and as usual this function is wrapped by another which for a global + C function would appear in the module class:

    +
    +
       public static void HandRolled(int arg0, String arg1) {
         exampleJNI.HandRolled(arg0, arg1);
       }
    -
    -
    -

    The packageName and moduleName must of course be +

    +
    +

    The packageName and moduleName must of course be correct else you will get linker errors when the JVM dynamically loads the JNI function. You may have to add in some "jtype", "jstype", "javain" and "javaout" typemaps when wrapping some JNI types. Here the - default typemaps work for int and char *.

    -

    In summary the %native directive is telling SWIG to + default typemaps work for int and char *.

    +

    In summary the %native directive is telling SWIG to generate the Java code to access the JNI C code, but not the JNI C function itself. This directive is only really useful if you want to mix your own hand crafted JNI code and the SWIG generated code into one - Java class or package.

    -

    25.12.4 Performance concerns and hints -

    -

    If you're directly manipulating huge arrays of complex objects from - Java, performance may suffer greatly when using the array functions in -arrays_java.i. Try and minimise the expensive JNI calls to C/C++ + Java class or package.

    +

    26.12.4 Performance concerns and hints +

    +

    If you're directly manipulating huge arrays of complex objects from + Java, performance may suffer greatly when using the array functions in +arrays_java.i. Try and minimise the expensive JNI calls to C/C++ functions, perhaps by using temporary Java variables instead of - accessing the information directly from the C/C++ object.

    -

    Java classes without any finalizers generally speed up code + accessing the information directly from the C/C++ object.

    +

    Java classes without any finalizers generally speed up code execution as there is less for the garbage collector to do. Finalizer - generation can be stopped by using an empty javafinalize - typemap:

    -
    -
    + generation can be stopped by using an empty javafinalize
    + typemap:

    +
    +
     %typemap(javafinalize) SWIGTYPE ""
    -
    -
    -

    However, you will have to be careful about memory management and - make sure that you code in a call to the delete() member - function. This method normally calls the C++ destructor or free() - for C code.

    -

    25.12.5 Debugging

    -

    The generated code can be debugged using both a Java debugger and a +

    +
    +

    However, you will have to be careful about memory management and + make sure that you code in a call to the delete() member + function. This method normally calls the C++ destructor or free() + for C code.

    +

    26.12.5 Debugging

    +

    The generated code can be debugged using both a Java debugger and a C++ debugger using the usual debugging techniques. Breakpoints can be set in either Java or C++ code and so both can be debugged simultaneously. Most debuggers do not understand both Java and C++, with one noteable exception of Sun Studio, where it is possible to step - from Java code into a JNI method within one environment.

    -

    Alternatively, debugging can involve placing debug printout - statements in the JNI layer using the %exception directive. - See the special - variables for %exception section. Many of the default typemaps can + from Java code into a JNI method within one environment.

    +

    Alternatively, debugging can involve placing debug printout + statements in the JNI layer using the %exception directive. + See the special + variables for %exception section. Many of the default typemaps can also be overridden and modified for adding in extra logging/debug - display information.

    -

    The -Xcheck:jni and -Xcheck:nabounds Java + display information.

    +

    The -Xcheck:jni and -Xcheck:nabounds Java executable options are useful for debugging to make sure the JNI code is behaving. The -verbose:jni and -verbose:gc are also useful options - for monitoring code behaviour.

    -

    25.13 Java Examples

    -

    The directory Examples/java has a number of further examples. Take a + for monitoring code behaviour.

    +

    26.13 Java Examples

    +

    The directory Examples/java has a number of further examples. Take a look at these if you want to see some of the techniques described in action. The Examples/index.html file in the parent directory contains the SWIG Examples Documentation and is a useful starting point. If your - SWIG installation went well Unix users should be able to type make - in each example directory, then java main to see them running. + SWIG installation went well Unix users should be able to type make + in each example directory, then java main to see them running. For the benefit of Windows users, there are also Visual C++ project - files in a couple of the Windows Examples + files in a couple of the Windows Examples . There are also many regression tests in the Examples/test-suite - directory. Many of these have runtime tests in the java subdirectory.

    + directory. Many of these have runtime tests in the java subdirectory.


    -

    26 SWIG and Javascript

    +

    27 SWIG and Javascript

    - + -

    This chapter describes SWIG's support of Javascript. It does not +

    This chapter describes SWIG's support of Javascript. It does not cover SWIG basics, but only information that is specific to this - module.

    -

    26.1 Overview

    -

    Javascript is a prototype-based scripting language that is dynamic, + module.

    +

    27.1 Overview

    +

    Javascript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. Its arguably the most popular language for web development. Javascript has gone beyond being - a browser-based scripting language and with -node.js, it is also used as a backend development language.

    -

    Native Javascript extensions can be used for applications that embed - a web-browser view or that embed a Javascript engine (such as - node.js). Extending a general purpose web-browser is not possible - as this would be a severe security issue.

    -

    SWIG Javascript currently supports JavascriptCore, - the Javascript engine used by Safari/Webkit, and -v8, which is used by Chromium and -node.js.

    -

    WebKit is a modern browser + a browser-based scripting language and with +node.js, it is also used as a backend development language.

    +

    Native Javascript extensions can be used for applications that embed + a web-browser view or that embed a Javascript engine (such as + node.js). Extending a general purpose web-browser is not possible + as this would be a severe security issue.

    +

    SWIG Javascript currently supports JavascriptCore, + the Javascript engine used by Safari/Webkit, and +v8, which is used by Chromium and +node.js.

    +

    WebKit is a modern browser implementation available as open-source which can be embedded into an - application. With -node-webkit there is a platform which uses Google's Chromium - as Web-Browser widget and node.js for javascript - extensions.

    -

    26.2 Preliminaries

    -

    26.2.1 Running SWIG

    -

    Suppose that you defined a SWIG module such as the following:

    -
    -
    + application. With 
    +node-webkit there is a platform which uses Google's Chromium
    + as Web-Browser widget and node.js for javascript
    + extensions.

    +

    27.2 Preliminaries

    +

    27.2.1 Running SWIG

    +

    Suppose that you defined a SWIG module such as the following:

    +
    +
     %module example
     %{
     #include "example.h"
     %}
     int gcd(int x, int y);
    -extern double Foo;
    -
    -

    To build a Javascript module, run SWIG using the -javascript - option and a desired target engine -jsc, -v8, - or -node. The generator for node is - essentially delegating to the v8 generator and adds some - necessary preprocessor definitions.

    -
    -
    -$ swig -javascript -jsc example.i
    -
    -

    If building a C++ extension, add the -c++ option:

    -
    -
    -$ swig -c++ -javascript -jsc example.i
    -
    -

    The V8 code that SWIG generates should work with most versions from - 3.11.10 up to 3.29.14 and later.

    -

    The API headers for V8 >= 4.3.0 define constants which SWIG can use +extern double Foo;

    +
    +

    To build a Javascript module, run SWIG using the -javascript + option and a desired target engine -jsc, -v8, + or -node. The generator for node is + essentially delegating to the v8 generator and adds some + necessary preprocessor definitions.

    +
    +
    +$ swig -javascript -jsc example.i
    +
    +

    If building a C++ extension, add the -c++ option:

    +
    +
    +$ swig -c++ -javascript -jsc example.i
    +
    +

    The V8 code that SWIG generates should work with most versions from + 3.11.10 up to 3.29.14 and later.

    +

    The API headers for V8 >= 4.3.0 define constants which SWIG can use to determine the V8 version it is compiling for. For versions < 4.3.0, you need to specify the V8 version when running SWIG. This is specified as a hex constant, but the constant is read as pairs of decimal digits, so for V8 3.25.30 use constant 0x032530. This scheme can't represent components > 99, but this constant is only useful for V8 < 4.3.0, and - no V8 versions from that era had a component > 99. For example:

    -
    -
    -$ swig -c++ -javascript -v8 -DV8_VERSION=0x032530 example.i
    -
    -

    If you're targetting V8 >= 4.3.0, you would just run swig like so:

    -
    -
    -$ swig -c++ -javascript -v8 example.i
    -
    -

    This creates a C/C++ source file example_wrap.c or -example_wrap.cxx. The generated C source file contains the + no V8 versions from that era had a component > 99. For example:

    +
    +
    +$ swig -c++ -javascript -v8 -DV8_VERSION=0x032530 example.i
    +
    +

    If you're targeting V8 >= 4.3.0, you would just run swig like so:

    +
    +
    +$ swig -c++ -javascript -v8 example.i
    +
    +

    This creates a C/C++ source file example_wrap.c or +example_wrap.cxx. The generated C source file contains the low-level wrappers that need to be compiled and linked with the rest of - your C/C++ application to create an extension module.

    -

    The name of the wrapper file is derived from the name of the input - file. For example, if the input file is example.i, the - name of the wrapper file is example_wrap.c. To change + your C/C++ application to create an extension module.

    +

    The name of the wrapper file is derived from the name of the input + file. For example, if the input file is example.i, the + name of the wrapper file is example_wrap.c. To change this, you can use the -o option. The wrapped module will export one function which must be called to register the module with the - Javascript interpreter. For example, if your module is named -example the corresponding initializer for JavascriptCore would be

    -
    -
    -bool example_initialize(JSGlobalContextRef context, JSObjectRef *exports)
    -
    -

    and for v8:

    -
    -
    -void example_initialize(v8::Handle<v8::Object> exports)
    -
    -

    Note: be aware that v8 has a C++ API, and thus, - the generated modules must be compiled as C++.

    -

    26.2.2 Running Tests and - Examples

    -

    The configuration for tests and examples currently supports Linux and - Mac only and not MinGW (Windows) yet.

    -

    The default interpreter is node.js as it is available on - all platforms and convenient to use.

    -

    Running the examples with JavascriptCore requires -libjavascriptcoregtk-1.0 to be installed, e.g., under Ubuntu with

    -
    -
    -$ sudo apt-get install libjavascriptcoregtk-1.0-dev
    -
    -

    Running with V8 requires libv8:

    -
    -
    -$ sudo apt-get install libv8-dev
    -
    -

    Examples can be run using

    -
    -
    -$ make check-javascript-examples ENGINE=jsc
    -
    -

    ENGINE can be node, jsc, or -v8.

    -

    The test-suite can be run using

    -
    -
    -$ make check-javascript-test-suite ENGINE=jsc
    -
    -

    You can specify a specific V8 version for running the - examples and tests

    -
    -
    -$ make check-javascript-examples V8_VERSION=0x032530 ENGINE=v8
    -
    -

    26.2.3 Known Issues

    -

    At the moment, the Javascript generators pass all tests + Javascript interpreter. For example, if your module is named +example the corresponding initializer for JavascriptCore would be

    +
    +
    +bool example_initialize(JSGlobalContextRef context, JSObjectRef *exports)
    +
    +

    and for v8:

    +
    +
    +void example_initialize(v8::Handle<v8::Object> exports)
    +
    +

    Note: be aware that v8 has a C++ API, and thus, + the generated modules must be compiled as C++.

    +

    27.2.2 Running Tests and + Examples

    +

    The configuration for tests and examples currently supports Linux and + Mac only and not MinGW (Windows) yet.

    +

    The default interpreter is node.js as it is available on + all platforms and convenient to use.

    +

    Running the examples with JavascriptCore requires +libjavascriptcoregtk-1.0 to be installed, e.g., under Ubuntu with

    +
    +
    +$ sudo apt-get install libjavascriptcoregtk-1.0-dev
    +
    +

    Running with V8 requires libv8:

    +
    +
    +$ sudo apt-get install libv8-dev
    +
    +

    Examples can be run using

    +
    +
    +$ make check-javascript-examples ENGINE=jsc
    +
    +

    ENGINE can be node, jsc, or +v8.

    +

    The test-suite can be run using

    +
    +
    +$ make check-javascript-test-suite ENGINE=jsc
    +
    +

    You can specify a specific V8 version for running the + examples and tests

    +
    +
    +$ make check-javascript-examples V8_VERSION=0x032530 ENGINE=v8
    +
    +

    27.2.3 Known Issues

    +

    At the moment, the Javascript generators pass all tests syntactically, i.e., the generated source code compiles. However, there - are still remaining runtime issues.

    -
      -
    • -

      Default optional arguments do not work for all targeted interpreters

      -
    • -
    • -

      Multiple output arguments do not work for JSC

      -
    • -
    • -

      C89 incompatibily: the JSC generator might still generate C89 - violating code

      -
    • -
    • -

      long long is not supported

      -
    • -
    • -

      %native is not supported

      -
    • -
    • -

      Javascript callbacks are not supported

      -
    • -
    • -

      instanceOf does not work under JSC

      -
    • -
    -

    The primary development environment has been Linux (Ubuntu 12.04). + are still remaining runtime issues.

    +
      +
    • +

      Default optional arguments do not work for all targeted interpreters

      +
    • +
    • +

      Multiple output arguments do not work for JSC

      +
    • +
    • +

      C89 incompatibility: the JSC generator might still generate C89 + violating code

      +
    • +
    • +

      long long is not supported

      +
    • +
    • +

      %native is not supported

      +
    • +
    • +

      Javascript callbacks are not supported

      +
    • +
    • +

      instanceOf does not work under JSC

      +
    • +
    +

    The primary development environment has been Linux (Ubuntu 12.04). Windows and Mac OS X have been tested sporadically. Therefore, the generators might have more issues on those platforms. Please report - back any problem you observe to help us improving this module quickly.

    -

    26.3 Integration

    -

    This chapter gives a short introduction how to use a native - Javascript extension: as a node.js module, and as an - extension for an embedded Webkit.

    -

    26.3.1 Creating node.js - Extensions

    -

    To install node.js you can download an installer from - their -web-site for Mac OS X and Windows. For Linux you can either build - the source yourself and run sudo checkinstall or keep to - the (probably stone-age) packaged version. For Ubuntu there is a -PPA available.

    -
    -
    + back any problem you observe to help us improving this module quickly.

    +

    27.3 Integration

    +

    This chapter gives a short introduction how to use a native + Javascript extension: as a node.js module, and as an + extension for an embedded Webkit.

    +

    27.3.1 Creating node.js + Extensions

    +

    To install node.js you can download an installer from + their +web-site for Mac OS X and Windows. For Linux you can either build + the source yourself and run sudo checkinstall or keep to + the (probably stone-age) packaged version. For Ubuntu there is a +PPA available.

    +
    +
     $ sudo add-apt-repository ppa:chris-lea/node.js
     $ sudo apt-get update
    -$ sudo apt-get install nodejs
    -
    -

    As v8 is written in C++ and comes as a C++ library it is +$ sudo apt-get install nodejs

    +
    +

    As v8 is written in C++ and comes as a C++ library it is crucial to compile your module using the same compiler flags as used - for building v8. To make things easier, node.js provides a - build tool called node-gyp.

    -

    You have to install it using npm:

    -
    -
    -$ sudo npm install -g node-gyp
    -
    -

    node-gyp expects a configuration file named -binding.gyp which is basically in JSON format and conforms to the - same format that is used with Google's build-tool gyp.

    -

    binding.gyp:

    -
    -
    + for building v8. To make things easier, node.js provides a
    + build tool called node-gyp.

    +

    You have to install it using npm:

    +
    +
    +$ sudo npm install -g node-gyp
    +
    +

    node-gyp expects a configuration file named +binding.gyp which is basically in JSON format and conforms to the + same format that is used with Google's build-tool gyp.

    +

    binding.gyp:

    +
    +
     {
       "targets": [
         {
    @@ -36080,48 +36355,48 @@ binding.gyp which is basically in JSON format and conforms to the
           "sources": [ "example.cxx", "example_wrap.cxx" ]
         }
       ]
    -}
    -
    -

    First create the wrapper using SWIG:

    -
    -
    -$ swig -javascript -node -c++ example.i
    -
    -

    Then run node-gyp build to actually create the module:

    -
    -
    -$ node-gyp build
    -
    -

    This will create a build folder containing the native +}

    +
    +

    First create the wrapper using SWIG:

    +
    +
    +$ swig -javascript -node -c++ example.i
    +
    +

    Then run node-gyp build to actually create the module:

    +
    +
    +$ node-gyp build
    +
    +

    This will create a build folder containing the native module. To use the extension you need to 'require' it in your - Javascript source file:

    -
    -
    -require("./build/Release/example")
    -
    -

    A more detailed explanation is given in the -Examples section.

    -

    26.3.1.1 Troubleshooting

    -
      -
    • 'module' object has no attribute 'script_main'
    • -
    -

    This error happens when gyp is installed as a + Javascript source file:

    +
    +
    +require("./build/Release/example")
    +
    +

    A more detailed explanation is given in the +Examples section.

    +

    27.3.1.1 Troubleshooting

    +
      +
    • 'module' object has no attribute 'script_main'
    • +
    +

    This error happens when gyp is installed as a distribution package. It seems to be outdated. Removing it resolves the - problem.

    -
    -
    -$ sudo apt-get remove gyp
    -
    -

    26.3.2 Embedded Webkit

    -

    Webkit is pre-installed on Mac OS X and available as a library for - GTK.

    -

    26.3.2.1 Mac OS X

    -

    There is general information about programming with WebKit on -Apple Developer Documentation. Details about Cocoa - programming are not covered here.

    -

    An integration of a native extension 'example' would look like this:

    -
    -
    + problem.

    +
    +
    +$ sudo apt-get remove gyp
    +
    +

    27.3.2 Embedded Webkit

    +

    Webkit is pre-installed on Mac OS X and available as a library for + GTK.

    +

    27.3.2.1 Mac OS X

    +

    There is general information about programming with WebKit on +Apple Developer Documentation. Details about Cocoa + programming are not covered here.

    +

    An integration of a native extension 'example' would look like this:

    +
    +
     #import "appDelegate.h"
     
     extern bool example_initialize(JSGlobalContextRef context, JSObjectRef* exports);
    @@ -36160,16 +36435,16 @@ extern bool example_initialize(JSGlobalContextRef context, JSObjectRef* exports)
       ];
     }
     
    -@end
    -
    -

    26.3.2.2 GTK

    -

    There is general information about programming GTK at -GTK documentation and in the -GTK tutorial, and for Webkit there is a -Webkit GTK+ API Reference.

    -

    An integration of a native extension 'example' would look like this:

    -
    -
    +@end
    +
    +

    27.3.2.2 GTK

    +

    There is general information about programming GTK at +GTK documentation and in the +GTK tutorial, and for Webkit there is a +Webkit GTK+ API Reference.

    +

    An integration of a native extension 'example' would look like this:

    +
    +
     #include <gtk/gtk.h>
     #include <webkit/webkit.h>
     
    @@ -36205,36 +36480,36 @@ int main(int argc, char* argv[])
       gtk_main();
     
       return 0;
    -}
    -
    -

    26.3.3 Creating - Applications with node-webkit

    -

    To get started with node-webkit there is a very - informative set of -wiki pages.

    -

    Similar to node.js, node-webkit is started - from command line within a node.js project directory. - Native extensions are created in the very same way as for node.js -, except that a customized gyp derivate has to be used: -nw-gyp.

    -

    A simple example would have the following structure:

    -
    -
    +}
    +
    +

    27.3.3 Creating + Applications with node-webkit

    +

    To get started with node-webkit there is a very + informative set of +wiki pages.

    +

    Similar to node.js, node-webkit is started + from command line within a node.js project directory. + Native extensions are created in the very same way as for node.js +, except that a customized gyp derivate has to be used: +nw-gyp.

    +

    A simple example would have the following structure:

    +
    +
     - package.json
     - app.html
     - app.js
     - node_modules
       / example
       ... (as known from node.js)
    -
    -
    -

    The configuration file essentially conforms to node.js - syntax. It has some extras to configure node-webkit. See - the -Manifest specification for more details.

    -

    package.json:

    -
    -
    +
    +
    +

    The configuration file essentially conforms to node.js + syntax. It has some extras to configure node-webkit. See + the +Manifest specification for more details.

    +

    package.json:

    +
    +
     {
       "name": "example",
       "main": "app.html",
    @@ -36243,13 +36518,13 @@ Manifest specification for more details.

    "width": 800, "height": 600 } -}
    -
    -

    The 'main' property of package.json - specifies a web-page to be rendered in the main window.

    -

    app.html:

    -
    -
    +}
    +
    +

    The 'main' property of package.json + specifies a web-page to be rendered in the main window.

    +

    app.html:

    +
    +
     <html>
       <head>
         <script src="app.js"></script>
    @@ -36262,15 +36537,15 @@ Manifest specification for more details.

    <span id="z"></span>. </div> </body> -</html>
    -
    -

    As known from node.js one can use require - to load javascript modules. Additionally, node-webkit +</html>

    +
    +

    As known from node.js one can use require + to load javascript modules. Additionally, node-webkit provides an API that allows to manipulate the window's menu, open new - windows, and many more things.

    -

    app.js:

    -
    -
    window.onload = function() {
    + windows, and many more things.

    +

    app.js:

    +
    +
    window.onload = function() {
       var example = require("example");
       var x = 18;
       var y = 24;
    @@ -36278,26 +36553,26 @@ Manifest specification for more details.

    document.querySelector('#x').innerHTML = x; document.querySelector('#y').innerHTML = y; document.querySelector('#z').innerHTML = z; -};
    -
    -

    26.4 Examples

    -

    Some basic examples are shown here in more detail.

    -

    26.4.1 Simple

    -

    The common example simple looks like this:

    -
    -
    +};
    +
    +

    27.4 Examples

    +

    Some basic examples are shown here in more detail.

    +

    27.4.1 Simple

    +

    The common example simple looks like this:

    +
    +
     /* File : example.i */
     %module example
     
     %inline %{
     extern int    gcd(int x, int y);
     extern double Foo;
    -%}
    -
    -

    To make this available as a node extension a binding.gyp - has to be created:

    -
    -
    +%}
    +
    +

    To make this available as a node extension a binding.gyp + has to be created:

    +
    +
     {
       "targets": [
         {
    @@ -36305,16 +36580,16 @@ extern double Foo;
           "sources": [ "example.cxx", "example_wrap.cxx" ]
         }
       ]
    -}
    -
    -

    Then node-gyp is used to build the extension:

    -
    -
    -$ node-gyp configure build
    -
    -

    From a 'nodejs` application the extension would be used like this:

    -
    -
    +}
    +
    +

    Then node-gyp is used to build the extension:

    +
    +
    +$ node-gyp configure build
    +
    +

    From a 'nodejs` application the extension would be used like this:

    +
    +
     // import the extension via require
     var example = require("./build/Release/example");
     
    @@ -36325,21 +36600,21 @@ var g = example.gcd(x, y);
     
     // Accessing the global variable
     var f = example.Foo;
    -example.Foo = 3.1415926;
    -
    -

    First the module example is loaded from the previously +example.Foo = 3.1415926;

    +
    +

    First the module example is loaded from the previously built extension. Global methods and variables are available in the - scope of the module.

    -

    Note: ECMAScript 5, the currently implemented Javascript - standard, does not have modules. node.js and other - implementations provide this mechanism defined by the -CommonJS group. For browsers this is provided by -Browserify, for instance.

    -

    26.4.2 Class

    -

    The common example class defines three classes, -Shape, Circle, and Square:

    -
    -
    + scope of the module.

    +

    Note: ECMAScript 5, the currently implemented Javascript + standard, does not have modules. node.js and other + implementations provide this mechanism defined by the +CommonJS group. For browsers this is provided by +Browserify, for instance.

    +

    27.4.2 Class

    +

    The common example class defines three classes, +Shape, Circle, and Square:

    +
    +
     class Shape {
     public:
       Shape() {
    @@ -36371,18 +36646,18 @@ public:
       Square(double w) : width(w) { }
       virtual double area(void);
       virtual double perimeter(void);
    -};
    -
    -

    Circle and Square inherit from Shape -. Shape has a static variable nshapes, a - function move that can't be overridden (non-virtual), and - two abstract functions area and perimeter - (pure virtual) that must be overridden by the sub-classes.

    -

    A nodejs extension is built the same way as for the -simple example.

    -

    In Javascript it can be used as follows:

    -
    -
    +};
    +
    +

    Circle and Square inherit from Shape +. Shape has a static variable nshapes, a + function move that can't be overridden (non-virtual), and + two abstract functions area and perimeter + (pure virtual) that must be overridden by the sub-classes.

    +

    A nodejs extension is built the same way as for the +simple example.

    +

    In Javascript it can be used as follows:

    +
    +
     var example = require("./build/Release/example");
     
     // local aliases for convenience
    @@ -36410,12 +36685,12 @@ s.area();
     s.perimeter();
     
     // instantiation of Shape is not permitted
    -new Shape();
    -
    -

    Running these commands in an interactive node shell results in the - following output:

    -
    -
    +new Shape();
    +
    +

    Running these commands in an interactive node shell results in the + following output:

    +
    +
     $ node -i
     & var example = require("./build/Release/example");
     undefined
    @@ -36464,32 +36739,32 @@ at Interface._line (readline.js:531:8)
     at Interface._ttyWrite (readline.js:760:14)
     at ReadStream.onkeypress (readline.js:99:10)
     at ReadStream.EventEmitter.emit (events.js:98:17)
    -at emitKey (readline.js:1095:12)
    -
    -

    Note: In ECMAScript 5 there is no concept for classes. +at emitKey (readline.js:1095:12)

    +
    +

    Note: In ECMAScript 5 there is no concept for classes. Instead each function can be used as a constructor function which is executed by the 'new' operator. Furthermore, during construction the - key property prototype of the constructor function is used + key property prototype of the constructor function is used to attach a prototype instance to the created object. A prototype is essentially an object itself that is the first-class delegate of a class used whenever the access to a property of an object fails. The very same prototype instance is shared among all instances of one type. - Prototypal inheritance is explained in more detail on in -Inheritance and the prototype chain, for instance.

    -

    26.5 Implementation

    -

    The Javascript Module implementation has taken a very different + Prototypal inheritance is explained in more detail on in +Inheritance and the prototype chain, for instance.

    +

    27.5 Implementation

    +

    The Javascript Module implementation has taken a very different approach compared to other language modules in order to support - different Javascript interpreters.

    -

    26.5.1 Source Code

    -

    The Javascript module is implemented in -Source/Modules/javascript.cxx. It dispatches the code generation - to a JSEmitter instance, V8Emitter or -JSCEmitter. Additionally there are some helpers: Template -, for templated code generation, and JSEmitterState, which + different Javascript interpreters.

    +

    27.5.1 Source Code

    +

    The Javascript module is implemented in +Source/Modules/javascript.cxx. It dispatches the code generation + to a JSEmitter instance, V8Emitter or +JSCEmitter. Additionally there are some helpers: Template +, for templated code generation, and JSEmitterState, which is used to manage state information during AST traversal. This rough - map shall make it easier to find a way through this huge source file:

    -
    -
    + map shall make it easier to find a way through this huge source file:

    +
    +
     // module wide defines
     
     #define NAME "name"
    @@ -36582,58 +36857,58 @@ JSEmitterState::JSEmitterState() { ... }
     ...
     
     Template::Template(const String *code_) { ... }
    -...
    -
    -

    26.5.2 Code Templates

    -

    All generated code is created on the basis of code templates. The - templates for JavascriptCore can be found in -Lib/javascript/jsc/javascriptcode.swg, for v8 in -Lib/javascript/v8/javascriptcode.swg.

    -

    To track the originating code template for generated code you can run

    -
    -
    -$ swig -javascript -jsc -debug-codetemplates
    -
    -

    which wraps generated code with a descriptive comment

    -
    -
    +...
    +
    +

    27.5.2 Code Templates

    +

    All generated code is created on the basis of code templates. The + templates for JavascriptCore can be found in +Lib/javascript/jsc/javascriptcode.swg, for v8 in +Lib/javascript/v8/javascriptcode.swg.

    +

    To track the originating code template for generated code you can run

    +
    +
    +$ swig -javascript -jsc -debug-codetemplates
    +
    +

    which wraps generated code with a descriptive comment

    +
    +
     /* begin fragment("template_name") */
     
     ...generated code ...
     
    -/* end fragment("template_name") */
    -
    -

    The Template class is used like this:

    -
    -
    +/* end fragment("template_name") */
    +
    +

    The Template class is used like this:

    +
    +
     Template t_register = getTemplate("jsv8_register_static_variable");
     t_register.replace("$jsparent", state.clazz(NAME_MANGLED))
         .replace("$jsname", state.variable(NAME))
         .replace("$jsgetter", state.variable(GETTER))
         .replace("$jssetter", state.variable(SETTER))
         .trim().
    -    print(f_init_static_wrappers);
    -
    -

    A code template is registered with the JSEmitter via -fragment(name, "template"), e.g.,

    -
    -
    +    print(f_init_static_wrappers);
    +
    +

    A code template is registered with the JSEmitter via +fragment(name, "template"), e.g.,

    +
    +
     %fragment ("jsc_variable_declaration", "templates")
     %{
       {"$jsname", $jsgetter, $jssetter, kJSPropertyAttributeNone},
    -%}
    -
    -

    Template creates a copy of that string and -Template::replace uses Swig's Replaceall to replace - variables in the template. Template::trim can be used to - eliminate leading and trailing whitespaces. Template::print - is used to write the final template string to a Swig DOH - (based on Printv). All methods allow chaining.

    -

    26.5.3 Emitter

    -

    The Javascript module delegates code generation to a JSEmitter - instance. The following extract shows the essential interface:

    -
    -
    +%}
    +
    +

    Template creates a copy of that string and +Template::replace uses Swig's Replaceall to replace + variables in the template. Template::trim can be used to + eliminate leading and trailing whitespaces. Template::print + is used to write the final template string to a Swig DOH + (based on Printv). All methods allow chaining.

    +

    27.5.3 Emitter

    +

    The Javascript module delegates code generation to a JSEmitter + instance. The following extract shows the essential interface:

    +
    +
     class JSEmitter {
       ...
     
    @@ -36717,12 +36992,12 @@ class JSEmitter {
     
       ...
     
    -}
    -
    -

    The module calls initialize, dump, and -close from within the top method:

    -
    -
    +}
    +
    +

    The module calls initialize, dump, and +close from within the top method:

    +
    +
     int JAVASCRIPT::top(Node *n) {
       emitter->initialize(n);
     
    @@ -36732,12 +37007,12 @@ int JAVASCRIPT::top(Node *n) {
       emitter->close();
     
       return SWIG_OK;
    -}
    -
    -

    The methods enterClass and exitClass are - called from within the classHandler method:

    -
    -
    +}
    +
    +

    The methods enterClass and exitClass are + called from within the classHandler method:

    +
    +
     int JAVASCRIPT::classHandler(Node *n) {
     
       emitter->enterClass(n);
    @@ -36745,17 +37020,17 @@ int JAVASCRIPT::classHandler(Node *n) {
       emitter->exitClass(n);
     
       return SWIG_OK;
    -}
    -
    -

    In enterClass the emitter stores state information that - is necessary when processing class members. In exitClass - the wrapper code for the whole class is generated.

    -

    26.5.4 Emitter states

    -

    For storing information during the AST traversal the emitter provides - a JSEmitterState with different slots to store data - representing the scopes global, class, function, and variable.

    -
    -
    +}
    +
    +

    In enterClass the emitter stores state information that + is necessary when processing class members. In exitClass + the wrapper code for the whole class is generated.

    +

    27.5.4 Emitter states

    +

    For storing information during the AST traversal the emitter provides + a JSEmitterState with different slots to store data + representing the scopes global, class, function, and variable.

    +
    +
     class JSEmitterState {
     
     public:
    @@ -36783,26 +37058,26 @@ public:
       static int IsSet(DOH *val);
     
       ...
    -};
    -
    -

    When entering a scope, such as in enterClass, the - corresponding state is reset and new data is stored:

    -
    -
    +};
    +
    +

    When entering a scope, such as in enterClass, the + corresponding state is reset and new data is stored:

    +
    +
     state.clazz(RESET);
    -state.clazz(NAME, Getattr(n, "sym:name"));
    -
    -

    State information can be retrieved using state.clazz(NAME) - or with Getattr on state.clazz() which - actually returns a Hash instance.

    -

    26.5.5 Handling Exceptions in - JavascriptCore

    -

    Applications with an embedded JavascriptCore should be able to +state.clazz(NAME, Getattr(n, "sym:name"));

    +
    +

    State information can be retrieved using state.clazz(NAME) + or with Getattr on state.clazz() which + actually returns a Hash instance.

    +

    27.5.5 Handling Exceptions in + JavascriptCore

    +

    Applications with an embedded JavascriptCore should be able to present detailed exception messages that occur in the Javascript engine. Below is an example derived from code provided by Brian Barnes - on how these exception details can be extracted.

    -
    -
    + on how these exception details can be extracted.

    +
    +
     void script_exception_to_string(JSContextRef js_context, JSValueRef exception_value_ref, char* return_error_string, int return_error_string_max_length)
     {
       JSObjectRef exception_object;
    @@ -36863,803 +37138,114 @@ void script_exception_to_string(JSContextRef js_context, JSValueRef exception_va
         strncat(return_error_string, c_result_string, return_error_string_max_length-1);
         free(c_result_string);
       }
    -}
    -
    -

    It would be used in the following way:

    -
    -
    +}
    +
    +

    It would be used in the following way:

    +
    +
     if(js_exception)
     {
       char return_error_string[256];
       script_exception_to_string(js_context, js_exception, return_error_string, 256);
       printf("Compile error is %s", return_error_string);
    -}
    -

    -

    27 SWIG and Common Lisp

    +}
    +

    +

    28 SWIG and Lua

    - + -

    Common Lisp is a high-level, all-purpose, object-oriented, dynamic, - functional programming language with long history. Common Lisp is used - in many fields, ranging from web development to finance, and also - common in computer science education. There are more than 9 different - implementations of common lisp which are available, all have different - foreign function interfaces. SWIG currently supports only the Allegro - Common Lisp, Common Foreign Function Interface(CFFI), CLisp and UFFI - foreign function interfaces.

    -

    27.1 Allegro Common Lisp

    -

    Allegro Common Lisp support in SWIG has been updated to include - support for both C and C++. You can read about the interface -here

    -

    27.2 Common Foreign Function Interface(CFFI)

    -

    CFFI, the Common Foreign Function Interface, is a portable foreign - function interface for ANSI Common Lisp systems, similar in spirit to - UFFI. Unlike UFFI, CFFI requires only a small set of low-level - functionality from the Lisp implementation, such as calling a foreign - function by name, allocating foreign memory, and dereferencing - pointers.

    -

    To run the cffi module of SWIG requires very little effort, you just - need to run:

    -
    -
    -swig -cffi -module module-name   file-name 
    -
    -
    -
    -

    But a better was of using all the power of SWIG is to write SWIG - interface files. Below we will explain how to write interface files and - the various things which you can do with them.

    -

    27.2.1 Additional Commandline Options

    -

    The following table list the additional commandline options - available for the CLISP module. They can also be seen by using:

    -
    -
    -swig -cffi -help 
    -
    -
    -
    - - - - - - -
    CFFI specific options
    -generate-typedefIf this option is given then defctype - will be used to generate -
    shortcuts according to the typedefs in the input.
    -[no]cwrapTurn on or turn off generation of an - intermediate C file when -
    creating a C interface. By default this is only done for C++ code.
    -[no]swig-lispTurns on or off generation of code for - helper lisp macro, functions, etc. which SWIG uses while generating - wrappers. These macros, functions may still be used by generated - wrapper code.
    -

    27.2.2 Generating CFFI bindings

    - As we mentioned earlier the ideal way to use SWIG is to use interface - files. To illustrate the use of it, let's assume that we have a file - named test.h with the following C code:
    -
    -#define y 5
    -#define x (y >>  1)
    -
    -typedef int days;
    -
    -struct bar {
    -  short p, q;
    -  char a, b;
    -  int *z[1000];
    -  struct bar * n;
    -};
    -  
    -struct   bar * my_struct;
    -
    -struct foo {
    -  int a;
    -  struct foo * b[100];
    -};
    -
    -int pointer_func(void (*ClosureFun)( void* _fun, void* _data, void* _evt ), int p);
    -
    -int func123(div_t * p, int **q[100], int r[][1000][10]);
    -
    -void lispsort_double (int n, double * array);
    -
    -enum color { RED, BLUE, GREEN};
    -
    -
    Corresponding to this we will write a simple interface file:
    -
    -%module test
    -
    -%include "test.h"
    -
    -
    -
    The generated SWIG Code will be:
    -
    -;;;SWIG wrapper code starts here
    -
    -(cl:defmacro defanonenum (&body enums)
    -   "Converts anonymous enums to defconstants."
    -  `(cl:progn , @(cl:loop for value in enums
    -                        for index = 0 then (cl:1+ index)
    -                        when (cl:listp value) do (cl:setf index (cl:second value)
    -                                                          value (cl:first value))
    -                        collect `(cl:defconstant , value , index))))
    -
    -(cl:eval-when (:compile-toplevel :load-toplevel)
    -  (cl:unless (cl:fboundp 'swig-lispify)
    -    (cl:defun swig-lispify (name flag cl:&optional (package cl:*package*))
    -      (cl:labels ((helper (lst last rest cl:&aux (c (cl:car lst)))
    -                    (cl:cond
    -                      ((cl:null lst)
    -                       rest)
    -                      ((cl:upper-case-p c)
    -                       (helper (cl:cdr lst) 'upper
    -                               (cl:case last
    -                                 ((lower digit) (cl:list* c #\- rest))
    -                                 (cl:t (cl:cons c rest)))))
    -                      ((cl:lower-case-p c)
    -                       (helper (cl:cdr lst) 'lower (cl:cons (cl:char-upcase c) rest)))
    -                      ((cl:digit-char-p c)
    -                       (helper (cl:cdr lst) 'digit 
    -                               (cl:case last
    -                                 ((upper lower) (cl:list* c #\- rest))
    -                                 (cl:t (cl:cons c rest)))))
    -                      ((cl:char-equal c #\_)
    -                       (helper (cl:cdr lst) '_ (cl:cons #\- rest)))
    -                      (cl:t
    -                       (cl:error "Invalid character: ~A" c)))))
    -        (cl:let ((fix (cl:case flag
    -                        ((constant enumvalue) "+")
    -                        (variable "*")
    -                        (cl:t ""))))
    -          (cl:intern
    -           (cl:concatenate
    -            'cl:string
    -            fix
    -            (cl:nreverse (helper (cl:concatenate 'cl:list name) cl:nil cl:nil))
    -            fix)
    -           package))))))
    -
    -;;;SWIG wrapper code ends here
    -
    -
    -(cl:defconstant y 5)
    -
    -(cl:defconstant x (cl:ash 5 -1))
    -
    -(cffi:defcstruct bar
    -        (p :short)
    -        (q :short)
    -        (a :char)
    -        (b :char)
    -        (z :pointer)
    -        (n :pointer))
    -
    -(cffi:defcvar ("my_struct" my_struct)
    - :pointer)
    -
    -(cffi:defcstruct foo
    -        (a :int)
    -        (b :pointer))
    -
    -(cffi:defcfun ("pointer_func" pointer_func) :int
    -  (ClosureFun :pointer)
    -  (p :int))
    -
    -(cffi:defcfun ("func123" func123) :int
    -  (p :pointer)
    -  (q :pointer)
    -  (r :pointer))
    -
    -(cffi:defcfun ("lispsort_double" lispsort_double) :void
    -  (n :int)
    -  (array :pointer))
    -
    -(cffi:defcenum color
    -        :RED
    -        :BLUE
    -        :GREEN)
    -
    -
    -

    The SWIG wrapper code refers to the special code which SWIG - may need to use while wrapping C code. You can turn on/off the - generation of this code by using the -[no]swig-lisp option. You - must have noticed that SWIG goes one extra step to ensure that CFFI - does not do automatic lispification of the C function names. The reason - SWIG does this is because quite often developers want to build a nice - CLOS based lispy API, and this one to one correspondence between C - function names and lisp function name helps.

    -

    Maybe you want to have your own convention for generating lisp - function names for corresponding C function names, or you just want to - lispify the names, also, before we forget you want to export the - generated lisp names. To do this, we will use the SWIG -feature directive. Let's edit the interface file such that the C - type "div_t*" is changed to Lisp type ":my-pointer", we lispify all - names, export everything, and do some more stuff.

    -
    -
    -%module test
    -
    -%typemap(cin) div_t* ":my-pointer";
    -
    -%feature("intern_function", "1");
    -%feature("export");
    -
    -%feature("inline") lispsort_double;
    -%feature("intern_function", "my-lispify") lispsort_double;
    -%feature("export", package="'some-other-package") lispsort_double;
    -
    -%rename func123 renamed_cool_func;
    -
    -%ignore "pointer_func";
    -
    -%include "test.h"
    -
    -
    -
    -

    The typemap(cin) ensures that for all arguments which are - input to C with the type "div_t*", the ":my-pointer" type be used. - Similarly typemap(cout) are used for all types which are - returned from C.

    -

    The feature intern_function ensures that all C names are - interned using the swig-lispify function. The "1" given to the - feature is optional. The use of feature like - %feature("intern_function", "1"); globally enables interning for - everything. If you want to target a single function, or declaration - then use the targeted version of feature, - %feature("intern_function", "my-lispify") lispsort_double;, here we - are using an additional feature which allows us to use our lispify - function.

    -

    The export feature allows us to export the symbols. If the - package argument is given, then the symbol will be exported to the - specified Lisp package. The inline feature declaims the declared - function as inline. The rename directive allows us to change the - name(it is useful when generating C wrapper code for handling - overloaded functions). The ignore directive ignores a certain - declaration.

    -

    There are several other things which are possible, to see some - example of usage of SWIG look at the Lispbuilder and wxCL projects. The - generated code with 'noswig-lisp' option is:

    -
    -
    -(cl:defconstant #.(swig-lispify "y" 'constant) 5)
    -
    -(cl:export '#.(swig-lispify "y" 'constant))
    -
    -(cl:defconstant #.(swig-lispify "x" 'constant) (cl:ash 5 -1))
    -
    -(cl:export '#.(swig-lispify "x" 'constant))
    -
    -(cffi:defcstruct #.(swig-lispify "bar" 'classname)
    -        (#.(swig-lispify "p" 'slotname) :short)
    -        (#.(swig-lispify "q" 'slotname) :short)
    -        (#.(swig-lispify "a" 'slotname) :char)
    -        (#.(swig-lispify "b" 'slotname) :char)
    -        (#.(swig-lispify "z" 'slotname) :pointer)
    -        (#.(swig-lispify "n" 'slotname) :pointer))
    -
    -(cl:export '#.(swig-lispify "bar" 'classname))
    -
    -(cl:export '#.(swig-lispify "p" 'slotname))
    -
    -(cl:export '#.(swig-lispify "q" 'slotname))
    -
    -(cl:export '#.(swig-lispify "a" 'slotname))
    -
    -(cl:export '#.(swig-lispify "b" 'slotname))
    -
    -(cl:export '#.(swig-lispify "z" 'slotname))
    -
    -(cl:export '#.(swig-lispify "n" 'slotname))
    -
    -(cffi:defcvar ("my_struct" #.(swig-lispify "my_struct" 'variable))
    - :pointer)
    -
    -(cl:export '#.(swig-lispify "my_struct" 'variable))
    -
    -(cffi:defcstruct #.(swig-lispify "foo" 'classname)
    -        (#.(swig-lispify "a" 'slotname) :int)
    -        (#.(swig-lispify "b" 'slotname) :pointer))
    -
    -(cl:export '#.(swig-lispify "foo" 'classname))
    -
    -(cl:export '#.(swig-lispify "a" 'slotname))
    -
    -(cl:export '#.(swig-lispify "b" 'slotname))
    -
    -(cffi:defcfun ("renamed_cool_func" #.(swig-lispify "renamed_cool_func" 'function)) :int
    -  (p :my-pointer)
    -  (q :pointer)
    -  (r :pointer))
    -
    -(cl:export '#.(swig-lispify "renamed_cool_func" 'function))
    -
    -(cl:declaim (cl:inline #.(my-lispify "lispsort_double" 'function)))
    -
    -(cffi:defcfun ("lispsort_double" #.(my-lispify "lispsort_double" 'function)) :void
    -  (n :int)
    -  (array :pointer))
    -
    -(cl:export '#.(my-lispify "lispsort_double" 'function) 'some-other-package)
    -
    -(cffi:defcenum #.(swig-lispify "color" 'enumname)
    -        #.(swig-lispify "RED" 'enumvalue :keyword)
    -        #.(swig-lispify "BLUE" 'enumvalue :keyword)
    -        #.(swig-lispify "GREEN" 'enumvalue :keyword))
    -
    -(cl:export '#.(swig-lispify "color" 'enumname))
    -
    -
    -
    -

    27.2.3 Generating CFFI bindings for C++ code

    -

    This feature to SWIG (for CFFI) is very new and still far from - complete. Pitch in with your patches, bug reports and feature requests - to improve it.

    -

    Generating bindings for C++ code, requires -c++ option to be - present and it first generates C binding which will wrap the C++ code, - and then generates the corresponding CFFI wrapper code. In the - generated C wrapper code, you will often want to put your own C code, - such as the code to include various files. This can be done by making - use of "%{" and "%}" as shown below.

    -
    -
    -%{
    - #include "Test/test.h"
    -%}
    -
    -
    -

    Also, while parsing the C++ file and generating C wrapper code SWIG - may need to be able to understand various symbols used in other header - files. To help SWIG in doing this while ensuring that wrapper code is - generated for the target file, use the "import" directive. The - "include" directive specifies the target file for which wrapper code - will be generated.

    -
    -
    -
    -%import "ancillary/header.h"
    -
    -%include "target/header.h"
    -
    -
    -
    Various features which were available for C headers can also be - used here. The target header which we are going to use here is:
    -
    -namespace OpenDemo {
    -  class Test
    -  {
    -    public:
    -      float x;
    -      // constructors
    -      Test (void) {x = 0;}
    -      Test (float X) {x = X;}
    -
    -      // vector addition
    -      Test operator+ (const Test& v) const {return Test (x+v.x);}
    -
    -      // length squared
    -      float lengthSquared (void) const {return this->dot (*this);}
    -
    -      static float distance (const Test& a, const Test& b){return(a-b).length();}
    -
    -      inline Test parallelComponent (const Test& unitBasis) const {
    -        return unitBasis * projection;
    -      }
    -
    -      Test setYtoZero (void) const {return Test (this->x);}
    -
    -      static const Test zero;
    -  };
    -
    -  inline Test operator* (float s, const Test& v) {return v*s;}
    -
    -  inline std::ostream& operator<< (std::ostream& o, const Test& v)
    -  {
    -    return o << "(" << v.x << ")";
    -  }
    -
    -  inline Test RandomUnitVectorOnXZPlane (void)
    -  {
    -    return RandomVectorInUnitRadiusSphere().setYtoZero().normalize();
    -  }
    -}
    -
    -
    -

    The interface used is:

    -
    -
    -%module test
    -%include "test.cpp"
    -
    -
    SWIG generates 3 files, the first one is a C wrap which we don't - show, the second is the plain CFFI wrapper which is as shown below:
    -
    -(cffi:defcfun ("_wrap_Test_x_set" Test_x_set) :void
    -  (self :pointer)
    -  (x :float))
    -
    -(cffi:defcfun ("_wrap_Test_x_get" Test_x_get) :float
    -  (self :pointer))
    -
    -(cffi:defcfun ("_wrap_new_Test__SWIG_0" new_Test) :pointer)
    -
    -(cffi:defcfun ("_wrap_new_Test__SWIG_1" new_Test) :pointer
    -  (X :float))
    -
    -(cffi:defcfun ("_wrap_Test___add__" Test___add__) :pointer
    -  (self :pointer)
    -  (v :pointer))
    -
    -(cffi:defcfun ("_wrap_Test_lengthSquared" Test_lengthSquared) :float
    -  (self :pointer))
    -
    -(cffi:defcfun ("_wrap_Test_distance" Test_distance) :float
    -  (a :pointer)
    -  (b :pointer))
    -
    -(cffi:defcfun ("_wrap_Test_parallelComponent" Test_parallelComponent) :pointer
    -  (self :pointer)
    -  (unitBasis :pointer))
    -
    -(cffi:defcfun ("_wrap_Test_setYtoZero" Test_setYtoZero) :pointer
    -  (self :pointer))
    -
    -(cffi:defcvar ("Test_zero" Test_zero)
    - :pointer)
    -
    -(cffi:defcfun ("_wrap_delete_Test" delete_Test) :void
    -  (self :pointer))
    -
    -(cffi:defcfun ("_wrap___mul__" __mul__) :pointer
    -  (s :float)
    -  (v :pointer))
    -
    -(cffi:defcfun ("_wrap___lshift__" __lshift__) :pointer
    -  (o :pointer)
    -  (v :pointer))
    -
    -(cffi:defcfun ("_wrap_RandomUnitVectorOnXZPlane" RandomUnitVectorOnXZPlane) :pointer)
    -
    -
    The output is pretty good but it fails in disambiguating - overloaded functions such as the constructor, in this case. One way of - resolving this problem is to make the interface use the rename - directiv, but hopefully there are better solutions. In addition SWIG - also generates, a CLOS file
    -
    -(clos:defclass test()
    -  ((ff :reader ff-pointer)))
    -
    -(clos:defmethod (cl:setf x) (arg0 (obj test))
    -  (Test_x_set (ff-pointer obj) arg0))
    -
    -(clos:defmethod x ((obj test))
    -  (Test_x_get (ff-pointer obj)))
    -
    -(cl:shadow "+")
    -(clos:defmethod + ((obj test) (self test) (v test))
    -  (Test___add__ (ff-pointer obj) (ff-pointer self) (ff-pointer v)))
    -
    -(clos:defmethod length-squared ((obj test) (self test))
    -  (Test_lengthSquared (ff-pointer obj) (ff-pointer self)))
    -
    -(clos:defmethod parallel-component ((obj test) (self test) (unitBasis test))
    -  (Test_parallelComponent (ff-pointer obj) (ff-pointer self) (ff-pointer unitBasis)))
    -
    -(clos:defmethod set-yto-zero ((obj test) (self test))
    -  (Test_setYtoZero (ff-pointer obj) (ff-pointer self)))
    -
    -
    -

    I agree that the CFFI C++ module needs lot more work. But I hope it - provides a starting point, on which you can base your work of importing - C++ libraries to Lisp.

    -

    If you have any questions, suggestions, patches, etc., related to - CFFI module feel free to contact us on the SWIG mailing list, and also - please add a "[CFFI]" tag in the subject line.

    -

    27.2.4 Inserting user code into generated files -

    -

    It is often necessary to include user-defined - code into the automatically generated interface files. For example, - when building a C++ interface, example_wrap.cxx will likely not compile - unless you add a #include "header.h" directive. This can be - done using the SWIG %insert(section) %{ ...code... %} - directive:

    -
    -
    -%module example
    -
    -%{
    -#include "header.h"
    -%}
    -
    -%include "header.h"
    -
    -int fact(int n);
    -
    -
    -

    Additional sections have been added for inserting into the generated - lisp interface file:

    -
      -
    • lisphead - inserts before type declarations
    • -
    • swiglisp - inserts after type declarations according to - where it appears in the .i file
    • -
    -

    Note that the block %{ ... %} is effectively a shortcut for - %insert("header") %{ ... %}.

    -

    27.3 CLISP

    -

    CLISP is a feature-loaded - implementation of common lisp which is portable across most of the - operating system environments and hardware. CLISP includes an - interpreter, a compiler, a debugger, CLOS, MOP, a foreign language - interface, i18n, regular expressions, a socket interface, and more. An - X11 interface is available through CLX, Garnet and CLUE/CLIO. Command - line editing is provided by readline. CLISP runs Maxima, ACL2 and many - other Common Lisp packages.

    -

    To run the clisp module of SWIG requires very little effort, you - just need to execute:

    -
    -
    -swig -clisp -module module-name   file-name 
    -
    -
    -
    -

    Because of the high level nature of the CLISP FFI, the bindings - generated by SWIG may not be absolutely correct, and you may need to - modify them. The good thing is that you don't need to complex interface - file for the CLISP module. The CLISP module tries to produce code which - is both human readable and easily modifyable.

    -

    27.3.1 Additional Commandline Options

    -

    The following table list the additional commandline options - available for the CLISP module. They can also be seen by using:

    -
    -
    -swig -clisp -help 
    -
    -
    -
    - - - - -
    CLISP specific options
    -extern-allIf this option is given then clisp - definitions for all the functions -
    and global variables will be created otherwise only definitions for -
    externed functions and variables are created.
    -generate-typedefIf this option is given then - def-c-type will be used to generate -
    shortcuts according to the typedefs in the input.
    -

    27.3.2 Details on CLISP bindings

    -

    As mentioned earlier the CLISP bindings generated by SWIG may need - some modifications. The clisp module creates a lisp file with the same - name as the module name. This lisp file contains a 'defpackage' - declaration, with the package name same as the module name. This - package uses the 'common-lisp' and 'ffi' packages. Also, package - exports all the functions, structures and variables for which an ffi - binding was generated. -
    After generating the defpackage statement, the clisp module also - sets the default language.

    -
    -(defpackage :test
    -    (:use :common-lisp :ffi)
    -  (:export
    -   :make-bar
    -   :bar-x
    -   :bar-y
    -   :bar-a
    -   :bar-b
    -   :bar-z
    -   :bar-n
    -   :pointer_func
    -   :func123
    -   :make-cfunr
    -   :lispsort_double
    -   :test123))
    -
    -(in-package :test)
    -
    -(default-foreign-language :stdc)
    -
    -

    -

    The ffi wrappers for functions and variables are generated as shown - below. When functions have arguments of type "double * array", SWIG - doesn't knows whether it is an 'out' argument or it is an array which - will be passed, so SWIG plays it safe by declaring it as an '(array - (ffi:c-ptr DOUBLE-FLOAT))'. For arguments of type "int **z[100]" where - SWIG has more information, i.e., it knows that 'z' is an array of - pointers to pointers of integers, SWIG defines it to be '(z (ffi:c-ptr - (ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))'

    -
    -
    -extern "C" {
    -int pointer_func(void (*ClosureFun)( void* _fun, void* _data, void* _evt ), int y);
    -
    -int func123(div_t * x, int **z[100], int y[][1000][10]);
    -
    -void lispsort_double (int n, double * array);
    -
    -void test123(float x , double y);
    -
    -}
    -
    -
    -
    -(ffi:def-call-out pointer_func
    -    (:name "pointer_func")
    -  (:arguments (ClosureFun (ffi:c-function (:arguments (arg0 (ffi:c-pointer NIL))
    -                                                      (arg1 (ffi:c-pointer NIL))
    -                                                      (arg2 (ffi:c-pointer NIL)))
    -                                          (:return-type NIL)))
    -              (y ffi:int))
    -  (:return-type ffi:int)
    -  (:library +library-name+))
    -
    -(ffi:def-call-out func123
    -    (:name "func123")
    -  (:arguments (x (ffi:c-pointer div_t))
    -              (z (ffi:c-ptr (ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))
    -              (y (ffi:c-ptr (ffi:c-ptr (ffi:c-array ffi:int (1000 10))))))
    -  (:return-type ffi:int)
    -  (:library +library-name+))
    -
    -
    -(ffi:def-call-out lispsort_double
    -    (:name "lispsort_double")
    -  (:arguments (n ffi:int)
    -              (array (ffi:c-ptr DOUBLE-FLOAT)))
    -  (:return-type NIL)
    -  (:library +library-name+))
    -
    -(ffi:def-call-out test123
    -    (:name "test")
    -  (:arguments (x SINGLE-FLOAT)
    -              (y DOUBLE-FLOAT))
    -  (:return-type NIL)
    -  (:library +library-name+))
    -
    -
    -
    -

    The module also handles strutcures and #define constants as shown - below. SWIG automatically adds the constructors and accessors created - for the struct to the list of symbols exported by the package.

    -
    -
    -struct bar {
    -  short x, y;
    -  char a, b;
    -  int *z[1000];
    -  struct bar * n;
    -};
    -
    -#define max 1000
    -
    -
    -
    -(ffi:def-c-struct bar
    -    (x :type ffi:short)
    -  (y :type ffi:short)
    -  (a :type character)
    -  (b :type character)
    -  (z :type (ffi:c-array (ffi:c-ptr ffi:int) 1000))
    -  (n :type (ffi:c-pointer bar)))
    -
    -(defconstant max 1000)
    -
    -
    -
    -

    27.4 UFFI

    -
    -

    28 SWIG and Lua

    - - - - -

    Lua is an extension programming language designed to support general +

    Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight configuration language for any program that needs one. Lua is implemented as a library, written in clean C (that is, in the common - subset of ANSI C and C++). It's also a really tiny language, + subset of ISO C and C++). It's also a really tiny language, less than 6000 lines of code, which compiles to <100 kilobytes of - binary code. It can be found at -http://www.lua.org

    -

    eLua stands for Embedded Lua (can be thought of as a flavor of Lua) + binary code. It can be found at +http://www.lua.org

    +

    eLua stands for Embedded Lua (can be thought of as a flavor of Lua) and offers the full implementation of the Lua programming language to the embedded world, extending it with specific features for efficient and portable software embedded development. eLua runs on smaller devices like microcontrollers and provides the full features of the regular Lua desktop version. More information on eLua can be found - here: http://www.eluaproject.net -

    -

    28.1 Preliminaries

    -

    The current SWIG implementation is designed to work with Lua 5.0.x, + here: http://www.eluaproject.net +

    +

    28.1 Preliminaries

    +

    The current SWIG implementation is designed to work with Lua 5.0.x, 5.1.x and 5.2.x. It should work with later versions of Lua, but certainly not with Lua 4.0 due to substantial API changes. It is possible to either static link or dynamic link a Lua module into the @@ -37667,95 +37253,95 @@ http://www.lua.org

    linking is not available on all platforms). SWIG also has support for eLua starting from eLua 0.8. Due to substantial changes between SWIG 2.x and SWIG 3.0 and unavailability of testing platform, eLua status - was downgraded to 'experimental'.

    -

    28.2 Running SWIG

    -

    Suppose that you defined a SWIG module such as the following:

    -
    -
    + was downgraded to 'experimental'.

    +

    28.2 Running SWIG

    +

    Suppose that you defined a SWIG module such as the following:

    +
    +
     %module example
     %{
     #include "example.h"
     %}
     int gcd(int x, int y);
     extern double Foo;
    -
    -
    -

    To build a Lua module, run SWIG using the -lua option.

    -
    -
    +
    +
    +

    To build a Lua module, run SWIG using the -lua option.

    +
    +
     $ swig -lua example.i
    -
    -
    -

    If building a C++ extension, add the -c++ option:

    -
    -
    +
    +
    +

    If building a C++ extension, add the -c++ option:

    +
    +
     $ swig -c++ -lua example.i
    -
    -
    -

    This creates a C/C++ source file example_wrap.c or -example_wrap.cxx. The generated C source file contains the +

    +
    +

    This creates a C/C++ source file example_wrap.c or +example_wrap.cxx. The generated C source file contains the low-level wrappers that need to be compiled and linked with the rest of - your C/C++ application to create an extension module.

    -

    The name of the wrapper file is derived from the name of the input - file. For example, if the input file is example.i, the name of - the wrapper file is example_wrap.c. To change this, you can - use the -o option. The wrapped module will export one function "int - luaopen_example(lua_State* L)" which must be called to register + your C/C++ application to create an extension module.

    +

    The name of the wrapper file is derived from the name of the input + file. For example, if the input file is example.i, the name of + the wrapper file is example_wrap.c. To change this, you can + use the -o option. The wrapped module will export one function "int + luaopen_example(lua_State* L)" which must be called to register the module with the Lua interpreter. The name "luaopen_example" depends - upon the name of the module.

    -

    To build an eLua module, run SWIG using -lua and add either - -elua or -eluac.

    -
    -
    + upon the name of the module.

    +

    To build an eLua module, run SWIG using -lua and add either + -elua or -eluac.

    +
    +
     $ swig -lua -elua example.i
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     $ swig -lua -eluac example.i
    -
    -
    -

    The -elua option puts all the C function wrappers and +

    +
    +

    The -elua option puts all the C function wrappers and variable get/set wrappers in rotables. It also generates a metatable which will control the access to these variables from eLua. It also offers a significant amount of module size compression. On the other - hand, the -eluac option puts all the wrappers in a single + hand, the -eluac option puts all the wrappers in a single rotable. With this option, no matter how huge the module, it will consume no additional microcontroller SRAM (crass compression). There - is a catch though: Metatables are not generated with -eluac. + is a catch though: Metatables are not generated with -eluac. To access any value from eLua, one must directly call the wrapper - function associated with that value.

    -

    28.2.1 Additional command line options

    -

    The following table list the additional commandline options - available for the Lua module. They can also be seen by using:

    -
    -
    + function associated with that value.

    +

    28.2.1 Additional command line options

    +

    The following table list the additional commandline options + available for the Lua module. They can also be seen by using:

    +
    +
     swig -lua -help 
    -
    -
    - - - - - - + +
    Lua specific options
    -eluaGenerates LTR compatible wrappers for smaller - devices running elua.
    -eluacLTR compatible wrappers in "crass compress" mode - for elua.
    -nomoduleglobalDo not register the module name as a - global variable but return the module table from calls to require.
    -no-old-metatable-bindingsDisable backward + + + + + + + + - + - -
    Lua specific options
    -eluaGenerates LTR compatible wrappers for smaller + devices running elua.
    -eluacLTR compatible wrappers in "crass compress" mode + for elua.
    -nomoduleglobalDo not register the module name as a + global variable but return the module table from calls to require.
    -no-old-metatable-bindingsDisable backward compatibility: old-style binding names generations and a few other - things. Explanations are included in appropriate later sections.
    -squash-basesSquashes symbols from all inheritance tree + things. Explanations are included in appropriate later sections.
    -squash-basesSquashes symbols from all inheritance tree of a given class into itself. Emulates pre-SWIG3.0 inheritance. - Insignificantly speeds things up, but increases memory consumption.
    -

    28.2.2 Compiling and Linking and Interpreter

    -

    Normally Lua is embedded into another program and will be statically - linked. An extremely simple stand-alone interpreter (min.c) is - given below:

    -
    -
    + Insignificantly speeds things up, but increases memory consumption.
    +

    28.2.2 Compiling and Linking and Interpreter

    +

    Normally Lua is embedded into another program and will be statically + linked. An extremely simple stand-alone interpreter (min.c) is + given below:

    +
    +
     #include <stdio.h>
     #include "lua.h"
     #include "lualib.h"
    @@ -37781,38 +37367,38 @@ int main(int argc, char* argv[])
      lua_close(L);
      return 0;
     }
    -
    -
    -

    A much improved set of code can be found in the Lua distribution -src/lua/lua.c. Include your module, just add the external - declaration & add a #define LUA_EXTRALIBS {"example", - luaopen_example}, at the relevant place.

    -

    The exact commands for compiling and linking vary from platform to - platform. Here is a possible set of commands of doing this:

    -
    -
    +
    +
    +

    A much improved set of code can be found in the Lua distribution +src/lua/lua.c. Include your module, just add the external + declaration & add a #define LUA_EXTRALIBS {"example", + luaopen_example}, at the relevant place.

    +

    The exact commands for compiling and linking vary from platform to + platform. Here is a possible set of commands of doing this:

    +
    +
     $ swig -lua example.i -o example_wrap.c
     $ gcc -I/usr/include/lua -c min.c -o min.o
     $ gcc -I/usr/include/lua -c example_wrap.c -o example_wrap.o
     $ gcc -c example.c -o example.o
     $ gcc -I/usr/include/lua -L/usr/lib/lua min.o example_wrap.o example.o -o my_lua
    -
    -
    -

    For eLua, the source must be built along with the wrappers generated - by SWIG. Make sure the eLua source files platform_conf.h and -auxmods.h are updated with the entries of your new module. Please - note: "mod" is the module name.

    -
    -
    +
    +
    +

    For eLua, the source must be built along with the wrappers generated + by SWIG. Make sure the eLua source files platform_conf.h and +auxmods.h are updated with the entries of your new module. Please + note: "mod" is the module name.

    +
    +
     /* Sample platform_conf.h */
     #define LUA_PLATFORM_LIBS_ROM\
       _ROM( AUXLIB_PIO, luaopen_pio, pio_map )\
       _ROM( AUXLIB_TMR, luaopen_tmr, tmr_map )\
       _ROM( AUXLIB_MOD, luaopen_mod, mod_map )\
       ....
    -
    -
    -
    +
    +
    +
     /* Sample auxmods.h */
     #define AUXLIB_PIO       "pio"
     LUALIB_API int ( luaopen_pio )(lua_State *L );
    @@ -37820,92 +37406,92 @@ LUALIB_API int ( luaopen_pio )(lua_State *L );
     #define AUXLIB_MOD       "mod"
     LUALIB_API int ( luaopen_mod )(lua_State *L );
     ....
    -
    -
    -

    More information on building and configuring eLua can be found here: - -http://www.eluaproject.net/doc/v0.8/en_building.html

    -

    28.2.3 Compiling a dynamic module

    -

    Most, but not all platforms support the dynamic loading of modules +

    +
    +

    More information on building and configuring eLua can be found here: + +http://www.eluaproject.net/doc/v0.8/en_building.html

    +

    28.2.3 Compiling a dynamic module

    +

    Most, but not all platforms support the dynamic loading of modules (Windows & Linux do). Refer to the Lua manual to determine if your platform supports it. For compiling a dynamically loaded module the same wrapper can be used. Assuming you have code you need to link to in - a file called example.c, the commands will be something like - this:

    -
    -
    + a file called example.c, the commands will be something like
    + this:

    +
    +
     $ swig -lua example.i -o example_wrap.c
     $ gcc -fPIC -I/usr/include/lua -c example_wrap.c -o example_wrap.o
     $ gcc -fPIC -c example.c -o example.o
     $ gcc -shared -I/usr/include/lua -L/usr/lib/lua example_wrap.o example.o -o example.so
    -
    -
    -

    The wrappers produced by SWIG can be compiled and linked with Lua - 5.1.x and later. The loading is extremely simple.

    -
    -
    +
    +
    +

    The wrappers produced by SWIG can be compiled and linked with Lua + 5.1.x and later. The loading is extremely simple.

    +
    +
     require("example")
    -
    -
    -

    For those using Lua 5.0.x, you will also need an interpreter with +

    +
    +

    For those using Lua 5.0.x, you will also need an interpreter with the loadlib function (such as the default interpreter compiled with Lua). In order to dynamically load a module you must call the loadlib function with two parameters: the filename of the shared library, and the function exported by SWIG. Calling loadlib should return the - function, which you then call to initialise the module

    -
    -
    + function, which you then call to initialise the module

    +
    +
     my_init=loadlib("example.so", "luaopen_example") -- for Unix/Linux
     --my_init=loadlib("example.dll", "luaopen_example") -- for Windows
     assert(my_init) -- make sure it's not nil
     my_init()       -- call the init fn of the lib
    -
    -
    -

    Or can be done in a single line of Lua code

    -
    -
    +
    +
    +

    Or can be done in a single line of Lua code

    +
    +
     assert(loadlib("example.so", "luaopen_example"))()
    -
    -
    -

    If the code didn't work, don't panic. The best thing to do is to +

    +
    +

    If the code didn't work, don't panic. The best thing to do is to copy the module and your interpreter into a single directory and then execute the interpreter and try to manually load the module (take care, - all this code is case sensitive).

    -
    -
    + all this code is case sensitive).

    +
    +
     a, b, c=package.loadlib("example.so", "luaopen_example") -- for Unix/Linux
     --a, b, c=package.loadlib("example.dll", "luaopen_example") -- for Windows
     print(a, b, c)
    -
    -
    -

    Note: for Lua 5.0: -
    The loadlib() function is in the global namespace, not in a - package. So it's just loadlib().

    -

    if 'a' is a function, this is all working fine, all you need to do - is call it

    -
    -
    +
    +
    +

    Note: for Lua 5.0: +
    The loadlib() function is in the global namespace, not in a + package. So it's just loadlib().

    +

    if 'a' is a function, this is all working fine, all you need to do + is call it

    +
    +
       a()
    -
    -
    -

    to load your library which will add a table 'example' with all the - functions added.

    -

    If it doesn't work, look at the error messages, in particular +

    +
    +

    to load your library which will add a table 'example' with all the + functions added.

    +

    If it doesn't work, look at the error messages, in particular message 'b' -
    The specified module could not be found. -
    Means that is cannot find the module, check your the location and +
    The specified module could not be found. +
    Means that is cannot find the module, check your the location and spelling of the module. -
    The specified procedure could not be found. -
    Means that it loaded the module, but cannot find the named +
    The specified procedure could not be found. +
    Means that it loaded the module, but cannot find the named function. Again check the spelling, and if possible check to make sure the functions were exported correctly. -
    'loadlib' not installed/supported -
    Is quite obvious (Go back and consult the Lua documents on how to - enable loadlib for your platform).

    -

    28.2.4 Using your module

    -

    Assuming all goes well, you will be able to this:

    -
    -
    +
    'loadlib' not installed/supported +
    Is quite obvious (Go back and consult the Lua documents on how to + enable loadlib for your platform).

    +

    28.2.4 Using your module

    +

    Assuming all goes well, you will be able to this:

    +
    +
     $ ./my_lua
     > print(example.gcd(4, 6))
     2
    @@ -37915,77 +37501,77 @@ $ ./my_lua
     > print(example.Foo)
     4
     >
    -
    -
    -

    28.3 A tour of basic C/C++ wrapping

    -

    By default, SWIG tries to build a very natural Lua interface to your +

    +
    +

    28.3 A tour of basic C/C++ wrapping

    +

    By default, SWIG tries to build a very natural Lua interface to your C/C++ code. This section briefly covers the essential aspects of this - wrapping.

    -

    28.3.1 Modules

    -

    The SWIG module directive specifies the name of the Lua module. If + wrapping.

    +

    28.3.1 Modules

    +

    The SWIG module directive specifies the name of the Lua module. If you specify `module example', then everything is wrapped into a Lua table 'example' containing all the functions and variables. When choosing a module name, make sure you don't use the same name as a - built-in Lua command or standard module name.

    -

    28.3.2 Functions

    -

    Global functions are wrapped as new Lua built-in functions. For - example,

    -
    -
    + built-in Lua command or standard module name.

    +

    28.3.2 Functions

    +

    Global functions are wrapped as new Lua built-in functions. For + example,

    +
    +
     %module example
    -int fact(int n);
    -
    -

    creates a built-in function example.fact(n) that works - exactly like you think it does:

    -
    -
    +int fact(int n);
    +
    +

    creates a built-in function example.fact(n) that works + exactly like you think it does:

    +
    +
     > print example.fact(4)
     24
     >
    -
    -
    -

    To avoid name collisions, SWIG create a Lua table which keeps all +

    +
    +

    To avoid name collisions, SWIG create a Lua table which keeps all the functions, constants, classes and global variables in. It is possible to copy the functions, constants and classes (but not variables) out of this and into the global environment with the following code. This can easily overwrite existing functions, so this must be used with care. This option is considered deprecated and will - be removed in the near future.

    -
    -
    + be removed in the near future.

    +
    +
     > for k, v in pairs(example) do _G[k]=v end
     > print(fact(4))
     24
     >
    -
    -
    -

    It is also possible to rename the module with an assignment.

    -
    -
    +
    +
    +

    It is also possible to rename the module with an assignment.

    +
    +
     > e=example
     > print(e.fact(4))
     24
     > print(example.fact(4))
     24
    -
    -
    -

    28.3.3 Global variables

    -

    Global variables (which are linked to C code) are supported, and +

    +
    +

    28.3.3 Global variables

    +

    Global variables (which are linked to C code) are supported, and appear to be just another variable in Lua. However the actual mechanism - is more complex. Given a global variable:

    -
    -
    %module example
    + is more complex. Given a global variable:

    +
    +
    %module example
     extern double Foo;
    -
    -
    -

    SWIG will effectively generate two functions example.Foo_set() - and example.Foo_get(). It then adds a metatable to the table +

    +
    +

    SWIG will effectively generate two functions example.Foo_set() + and example.Foo_get(). It then adds a metatable to the table 'example' to call these functions at the correct time (when you attempt to set or get examples.Foo). Therefore if you were to attempt to assign the global to another variable, you will get a local copy within the - interpreter, which is no longer linked to the C code.

    -
    -
    + interpreter, which is no longer linked to the C code.

    +
    +
     > print(example.Foo)
     3
     > c=example.Foo   -- c is a COPY of example.Foo, not the same thing
    @@ -37995,35 +37581,35 @@ extern double Foo;
     > c=5 -- this will not effect the original example.Foo
     > print(example.Foo, c)
     4    5
    -
    -
    -

    It is therefore not possible to 'move' the global variable into the +

    +
    +

    It is therefore not possible to 'move' the global variable into the global namespace as it is with functions. It is however, possible to - rename the module with an assignment, to make it more convenient.

    -
    -
    + rename the module with an assignment, to make it more convenient.

    +
    +
     > e=example
     > -- e and example are the same table
     > -- so e.Foo and example.Foo are the same thing
     > example.Foo=4
     > print(e.Foo)
     4
    -
    -
    -

    If a variable is marked with the %immutable directive then any +

    +
    +

    If a variable is marked with the %immutable directive then any attempts to set this variable will cause a Lua error. Given a global - variable:

    -
    -
    %module example
    + variable:

    +
    +
    %module example
     %immutable;
     extern double Foo;
     %mutable;
    -
    -
    -

    SWIG will allow the reading of Foo but when a set attempt - is made, an error function will be called.

    -
    -
    +
    +
    +

    SWIG will allow the reading of Foo but when a set attempt + is made, an error function will be called.

    +
    +
     > print(e.Foo) -- reading works ok
     4
     > example.Foo=40 -- but writing does not
    @@ -38033,93 +37619,93 @@ stack traceback:
             [C]: ?
             stdin:1: in main chunk
             [C]: ?
    -
    -
    -

    For those people who would rather that SWIG silently ignore the +

    +
    +

    For those people who would rather that SWIG silently ignore the setting of immutables (as previous versions of the Lua bindings did), - adding a -DSWIGLUA_IGNORE_SET_IMMUTABLE compile option will - remove this.

    -

    Unlike earlier versions of the binding, it is now possible to add + adding a -DSWIGLUA_IGNORE_SET_IMMUTABLE compile option will + remove this.

    +

    Unlike earlier versions of the binding, it is now possible to add new functions or variables to the module, just as if it were a normal table. This also allows the user to rename/remove existing functions and constants (but not linked variables, mutable or immutable). - Therefore users are recommended to be careful when doing so.

    -
    -
    + Therefore users are recommended to be careful when doing so.

    +
    +
     > -- example.PI does not exist
     > print(example.PI)
     nil
     > example.PI=3.142 -- new value added
     > print(example.PI)
     3.142
    -
    -
    -

    If you have used the -eluac option for your eLua module, +

    +
    +

    If you have used the -eluac option for your eLua module, you will have to follow a different approach while manipulating global - variables. (This is not applicable for wrappers generated with --elua)

    -
    -
    + variables. (This is not applicable for wrappers generated with 
    +-elua)

    +
    +
     > -- Applicable only with -eluac. (num is defined)
     > print(example.num_get())
     20
     > example.num_set(50) -- new value added
     > print(example.num_get())
     50
    -
    -
    -

    In general, functions of the form "variable_get()" and -"variable_set()" are automatically generated by SWIG for use with --eluac.

    -

    28.3.4 Constants and enums

    -

    Because Lua doesn't really have the concept of constants, C/C++ +

    +
    +

    In general, functions of the form "variable_get()" and +"variable_set()" are automatically generated by SWIG for use with +-eluac.

    +

    28.3.4 Constants and enums

    +

    Because Lua doesn't really have the concept of constants, C/C++ constants are not really constant in Lua. They are actually just a copy of the value into the Lua interpreter. Therefore they can be changed - just as any other value. For example given some constants:

    -
    -
    %module example
    + just as any other value. For example given some constants:

    +
    +
    %module example
     %constant int ICONST=42;
     #define    SCONST      "Hello World"
     enum Days{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
    -
    -
    -

    This is 'effectively' converted into the following Lua code:

    -
    -
    +
    +
    +

    This is 'effectively' converted into the following Lua code:

    +
    +
     example.ICONST=42
     example.SCONST="Hello World"
     example.SUNDAY=0
     ....
    -
    -
    -

    Constants are not guaranteed to remain constant in Lua. The name of +

    +
    +

    Constants are not guaranteed to remain constant in Lua. The name of the constant could be accidentally reassigned to refer to some other object. Unfortunately, there is no easy way for SWIG to generate code - that prevents this. You will just have to be careful.

    -

    If you're using eLua and have used -elua or -eluac + that prevents this. You will just have to be careful.

    +

    If you're using eLua and have used -elua or -eluac to generate your wrapper, macro constants and enums should be accessed - through a rotable called "const". In eLua, macro constants and + through a rotable called "const". In eLua, macro constants and enums are guaranteed to remain constants since they are all contained within a rotable. A regular C constant is accessed from eLua just as if it were a regular global variable, just that the property of value immutability is demonstrated if an attempt at modifying a C constant is - made.

    -
    -
    + made.

    +
    +
     > print(example.ICONST)
     10
     > print(example.const.SUNDAY)
     0
     > print(example.const.SCONST)
     Hello World
    -
    -
    -

    28.3.4.1 Constants/enums and classes/structures -

    -

    Enums are exported into a class table. For example, given some - enums:

    -
    -
    %module example
    +
    +
    +

    28.3.4.1 Constants/enums and classes/structures +

    +

    Enums are exported into a class table. For example, given some + enums:

    +
    +
    %module example
     enum Days { SUNDAY = 0, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };
     struct Test {
       enum { TEST1 = 10, TEST2 = 20 };
    @@ -38127,147 +37713,147 @@ struct Test {
       static const int ICONST = 12;
     #endif
     };
    -
    -
    -

    There is a slight difference in behaviour wrapping C and C++ code +

    +
    +

    There is a slight difference in behaviour wrapping C and C++ code due to the different scoping rules of C and C++. The wrapped C++ code - is used as follows from Lua code:

    -
    -
    + is used as follows from Lua code:

    +
    +
     > print(example.SUNDAY)
     0
     > print(example.Test.TEST1)
     10
     > print(example.Test.ICONST)
     12
    -
    -
    -

    Enums within a C struct are in the global namespace and are used as - follows from Lua

    -
    -
    +
    +
    +

    Enums within a C struct are in the global namespace and are used as + follows from Lua

    +
    +
     > print(example.SUNDAY)
     0
     > -- See the difference here
     > print(example.TEST1)
     10
    -
    -
    -

    Compatibility Note: Versions of SWIG prior to SWIG-3.0.0 did +

    +
    +

    Compatibility Note: Versions of SWIG prior to SWIG-3.0.0 did not generate the class table members above. There is no change in the C wrappers, but the following code was the only way to access these - constants/enums when wrapping C++ member constants:

    -
    -
    + constants/enums when wrapping C++ member constants:

    +
    +
     > print(example.Test_TEST1)
     10
     > print(example.Test_ICONST)
     12
    -
    -
    -

    The old-style bindings are still generated in addition to the new - ones. If the -no-old-metatable-bindings option is used, then - these old-style bindings are not generated.

    -

    It is worth mentioning, that example.Test.TEST1 and -example.Test_TEST1 are different entities and changing one does not +

    +
    +

    The old-style bindings are still generated in addition to the new + ones. If the -no-old-metatable-bindings option is used, then + these old-style bindings are not generated.

    +

    It is worth mentioning, that example.Test.TEST1 and +example.Test_TEST1 are different entities and changing one does not change the other. Given the fact that these are constantes and they are - not supposed to be changed, it is up to you to avoid such issues.

    -

    28.3.5 Pointers

    -

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no + not supposed to be changed, it is up to you to avoid such issues.

    +

    28.3.5 Pointers

    +

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type information. Given a wrapping of - the <file.h> interface:

    -
    -
    %module example
    + the <file.h> interface:

    +
    +
    %module example
     
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    When wrapped, you will be able to use the functions in a natural way - from Lua. For example:

    -
    -
    +
    +
    +

    When wrapped, you will be able to use the functions in a natural way + from Lua. For example:

    +
    +
     > f=example.fopen("junk", "w")
     > example.fputs("Hello World", f)
     > example.fclose(f)
    -
    -
    -

    Unlike many scripting languages, Lua has had support for pointers to +

    +
    +

    Unlike many scripting languages, Lua has had support for pointers to C/C++ object built in for a long time. They are called 'userdata'. Unlike many other SWIG versions which use some kind of encoded character string, all objects will be represented as a userdata. The - SWIG-Lua bindings provides a special function swig_type(), + SWIG-Lua bindings provides a special function swig_type(), which if given a userdata object will return the type of object pointed - to as a string (assuming it was a SWIG wrapped object).

    -
    -
    + to as a string (assuming it was a SWIG wrapped object).

    +
    +
     > print(f)
     userdata: 003FDA80
     > print(swig_type(f))
     FILE * -- it's a FILE*
    -
    -
    -

    Lua enforces the integrity of its userdata, so it is virtually +

    +
    +

    Lua enforces the integrity of its userdata, so it is virtually impossible to corrupt the data. But as the user of the pointer, you are responsible for freeing it, or closing any resources associated with it (just as you would in a C program). This does not apply so strictly to classes & structs (see below). One final note: if a function returns a - NULL pointer, this is not encoded as a userdata, but as a Lua nil.

    -
    -
    + NULL pointer, this is not encoded as a userdata, but as a Lua nil.

    +
    +
     > f=example.fopen("not there", "r") -- this will return a NULL in C
     > print(f)
     nil
    -
    -
    -

    28.3.6 Structures

    -

    If you wrap a C structure, it is also mapped to a Lua userdata. By +

    +
    +

    28.3.6 Structures

    +

    If you wrap a C structure, it is also mapped to a Lua userdata. By adding a metatable to the userdata, this provides a very natural - interface. For example,

    -
    -
    struct Point{
    + interface. For example,

    +
    +
    struct Point{
       int x, y;
     };
    -
    -
    -

    is used as follows:

    -
    -
    +
    +
    +

    is used as follows:

    +
    +
     > p=example.new_Point()
     > p.x=3
     > p.y=5
     > print(p.x, p.y)
     3       5
     >
    -
    -
    -

    Similar access is provided for unions and the data members of C++ +

    +
    +

    Similar access is provided for unions and the data members of C++ classes. -
    C structures can be created using a function new_Point(), +
    C structures can be created using a function new_Point(), and both C structures and C++ classes can be created using just the - name Point().

    -

    If you print out the value of p in the above example, you will see - something like this:

    -
    -
    + name Point().

    +

    If you print out the value of p in the above example, you will see + something like this:

    +
    +
     > print(p)
     userdata: 003FA320
    -
    -
    -

    Like the pointer in the previous section, this is held as a +

    +
    +

    Like the pointer in the previous section, this is held as a userdata. However, additional features have been added to make this more usable. SWIG effectively creates some accessor/mutator functions to get and set the data. These functions will be added to the userdata's metatable. This provides the natural access to the member variables that were shown above (see end of the document for full - details).

    -

    const members of a structure are read-only. Data members + details).

    +

    const members of a structure are read-only. Data members can also be forced to be read-only using the immutable directive. As with other immutables, setting attempts will be cause an error. For - example:

    -
    -
    struct Foo {
    + example:

    +
    +
    struct Foo {
       ...
       %immutable;
       int x;        // Read-only members
    @@ -38275,53 +37861,53 @@ userdata: 003FA320
       %mutable;
       ...
     };
    -
    -
    -

    The mechanism for managing char* members as well as array members is +

    +
    +

    The mechanism for managing char* members as well as array members is similar to other languages. It is somewhat cumbersome and should - probably be better handled by defining of typemaps (described later).

    -

    When a member of a structure is itself a structure, it is handled as - a pointer. For example, suppose you have two structures like this:

    -
    -
    struct Foo {
    + probably be better handled by defining of typemaps (described later).

    +

    When a member of a structure is itself a structure, it is handled as + a pointer. For example, suppose you have two structures like this:

    +
    +
    struct Foo {
       int a;
     };
     
     struct Bar {
       Foo f;
     };
    -
    -
    -

    Now, suppose that you access the f attribute of Bar like this:

    -
    -
    +
    +
    +

    Now, suppose that you access the f attribute of Bar like this:

    +
    +
     > b = Bar()
     > x = b.f
    -
    -
    -

    In this case, x is a pointer that points to the Foo that is inside - b. This is the same value as generated by this C code:

    -
    -
    +
    +
    +

    In this case, x is a pointer that points to the Foo that is inside + b. This is the same value as generated by this C code:

    +
    +
     Bar b;
     Foo *x = &b->f;       // Points inside b
    -
    -
    -

    Because the pointer points inside the structure, you can modify the - contents and everything works just like you would expect. For example:

    -
    -
    +
    +
    +

    Because the pointer points inside the structure, you can modify the + contents and everything works just like you would expect. For example:

    +
    +
     > b = Bar()
     > b.f.a = 3               -- Modify attribute of structure member
     > x = b.f
     > x.a = 3                 -- Modifies the same structure
    -
    -
    -

    For eLua with the -eluac option, structure manipulation has +

    +
    +

    For eLua with the -eluac option, structure manipulation has to be performed with specific structure functions generated by SWIG. - Let's say you have the following structure definition:

    -
    -
    struct data {
    + Let's say you have the following structure definition:

    +
    +
    struct data {
       int x, y;
       double z;
     };
    @@ -38332,18 +37918,18 @@ Foo *x = &b->f;       // Points inside b
     > example.data_y_set(a, 20)
     > print(example.data_x_get(a), example.data_y_get(a))
     10 20
    -
    -
    -

    In general, functions of the form "new_struct()", -"struct_member_get()", "struct_member_set()" and -"free_struct()" are automatically generated by SWIG for each +

    +
    +

    In general, functions of the form "new_struct()", +"struct_member_get()", "struct_member_set()" and +"free_struct()" are automatically generated by SWIG for each structure defined in C. (Please note: This doesn't apply for modules - generated with the -elua option)

    -

    28.3.7 C++ classes

    -

    C++ classes are wrapped by a Lua userdata as well. For example, if - you have this class,

    -
    -
    class List {
    + generated with the -elua option)

    +

    28.3.7 C++ classes

    +

    C++ classes are wrapped by a Lua userdata as well. For example, if + you have this class,

    +
    +
    class List {
     public:
       List();
       ~List();
    @@ -38353,11 +37939,11 @@ public:
       char *get(int n);
       int  length;
     };
    -
    -
    -

    you can use it in Lua like this:

    -
    -
    +
    +
    +

    you can use it in Lua like this:

    +
    +
     > l = example.List()
     > l:insert("Ale")
     > l:insert("Stout")
    @@ -38367,209 +37953,209 @@ Stout
     > print(l:length)
     3
     >
    -
    -
    -

    (Note: for calling methods of a class, you use -class:method(args), not class.method(args), it's an easy - mistake to make. However for data attributes it is class.attribute -)

    -

    Class data members are accessed in the same manner as C structures. +

    +
    +

    (Note: for calling methods of a class, you use +class:method(args), not class.method(args), it's an easy + mistake to make. However for data attributes it is class.attribute +)

    +

    Class data members are accessed in the same manner as C structures. Static class members present a special problem for Lua, as Lua doesn't have support for such features. Therefore, SWIG generates wrappers that try to work around some of these issues. To illustrate, suppose you - have a class like this:

    -
    -
    class Spam {
    + have a class like this:

    +
    +
    class Spam {
     public:
       static void foo();
       static int bar;
     };
    -
    -
    -

    In Lua, C++ static members can be accessed as follows:

    -
    -
    +
    +
    +

    In Lua, C++ static members can be accessed as follows:

    +
    +
     > example.Spam.foo()            -- calling Spam::foo()
     > a=example.Spam.bar            -- reading Spam::bar 
     > example.Spam.bar=b            -- writing to Spam::bar
    -
    -
    -

    It is not (currently) possible to access static members of an - instance:

    -
    -
    +
    +
    +

    It is not (currently) possible to access static members of an + instance:

    +
    +
     > s=example.Spam()              -- s is a Spam instance
     > s.foo()                       -- Spam::foo() via an instance
                                     -- does NOT work
    -
    -
    -

    Compatibility Note: In versions prior to SWIG-3.0.0 only the - following names would work:

    -
    -
    +
    +
    +

    Compatibility Note: In versions prior to SWIG-3.0.0 only the + following names would work:

    +
    +
     > example.Spam_foo()            -- calling Spam::foo()
     > a=example.Spam_bar            -- reading Spam::bar 
     > example.Spam_bar=b            -- writing to Spam::bar
    -
    -
    -

    Both style names are generated by default now. However, if the --no-old-metatable-bindings option is used, then the backward - compatible names are not generated in addition to ordinary ones.

    -

    28.3.8 C++ inheritance

    -

    SWIG is fully aware of issues related to C++ inheritance. Therefore, - if you have classes like this

    -
    -
    class Foo {
    +
    +
    +

    Both style names are generated by default now. However, if the +-no-old-metatable-bindings option is used, then the backward + compatible names are not generated in addition to ordinary ones.

    +

    28.3.8 C++ inheritance

    +

    SWIG is fully aware of issues related to C++ inheritance. Therefore, + if you have classes like this

    +
    +
    class Foo {
     ...
     };
     
     class Bar : public Foo {
     ...
     };
    -
    -
    -

    And if you have functions like this

    -
    -
    void spam(Foo *f);
    -
    -
    -

    then the function spam() accepts a Foo pointer or a pointer - to any class derived from Foo.

    -

    It is safe to use multiple inheritance with SWIG.

    -

    28.3.9 Pointers, references, values, and arrays -

    -

    In C++, there are many different ways a function might receive and - manipulate objects. For example:

    -
    -
    void spam1(Foo *x);      // Pass by pointer
    +
    +
    +

    And if you have functions like this

    +
    +
    void spam(Foo *f);
    +
    +
    +

    then the function spam() accepts a Foo pointer or a pointer + to any class derived from Foo.

    +

    It is safe to use multiple inheritance with SWIG.

    +

    28.3.9 Pointers, references, values, and arrays +

    +

    In C++, there are many different ways a function might receive and + manipulate objects. For example:

    +
    +
    void spam1(Foo *x);      // Pass by pointer
     void spam2(Foo &x);      // Pass by reference
     void spam3(Foo x);       // Pass by value
     void spam4(Foo x[]);     // Array of objects
    -
    -
    -

    In SWIG, there is no detailed distinction like this--specifically, +

    +
    +

    In SWIG, there is no detailed distinction like this--specifically, there are only "objects". There are no pointers, references, arrays, and so forth. Because of this, SWIG unifies all of these types together in the wrapper code. For instance, if you actually had the above - functions, it is perfectly legal to do this:

    -
    -
    + functions, it is perfectly legal to do this:

    +
    +
     > f = Foo()           -- Create a Foo
     > spam1(f)            -- Ok. Pointer
     > spam2(f)            -- Ok. Reference
     > spam3(f)            -- Ok. Value.
     > spam4(f)            -- Ok. Array (1 element)
    -
    -
    -

    Similar behaviour occurs for return values. For example, if you had - functions like this,

    -
    -
    Foo *spam5();
    +
    +
    +

    Similar behaviour occurs for return values. For example, if you had + functions like this,

    +
    +
    Foo *spam5();
     Foo &spam6();
     Foo  spam7();
    -
    -
    -

    then all three functions will return a pointer to some Foo object. +

    +
    +

    then all three functions will return a pointer to some Foo object. Since the third function (spam7) returns a value, newly allocated memory is used to hold the result and a pointer is returned (Lua will release this memory when the return value is garbage collected). The other two are pointers which are assumed to be managed by the C code - and so will not be garbage collected.

    -

    28.3.10 C++ overloaded functions

    -

    C++ overloaded functions, methods, and constructors are mostly - supported by SWIG. For example, if you have two functions like this:

    -
    -
    void foo(int);
    + and so will not be garbage collected.

    +

    28.3.10 C++ overloaded functions

    +

    C++ overloaded functions, methods, and constructors are mostly + supported by SWIG. For example, if you have two functions like this:

    +
    +
    void foo(int);
     void foo(char *c);
    -
    -
    -

    You can use them in Lua in a straightforward manner:

    -
    -
    +
    +
    +

    You can use them in Lua in a straightforward manner:

    +
    +
     > foo(3)           -- foo(int)
     > foo("Hello")     -- foo(char *c)
    -
    -
    -

    However due to Lua's coercion mechanism is can sometimes do strange - things.

    -
    -
    +
    +
    +

    However due to Lua's coercion mechanism is can sometimes do strange + things.

    +
    +
     > foo("3")           -- "3" can be coerced into an int, so it calls foo(int)!
    -
    -
    -

    As this coercion mechanism is an integral part of Lua, there is no +

    +
    +

    As this coercion mechanism is an integral part of Lua, there is no easy way to get around this other than renaming of functions (see - below).

    -

    Similarly, if you have a class like this,

    -
    -
    class Foo {
    + below).

    +

    Similarly, if you have a class like this,

    +
    +
    class Foo {
     public:
       Foo();
       Foo(const Foo &);
       ...
     };
    -
    -
    -

    you can write Lua code like this:

    -
    -
    +
    +
    +

    you can write Lua code like this:

    +
    +
     > f = Foo()          -- Create a Foo
     > g = Foo(f)         -- Copy f
    -
    -
    -

    Overloading support is not quite as flexible as in C++. Sometimes - there are methods that SWIG can't disambiguate. For example:

    -
    -
    void spam(int);
    +
    +
    +

    Overloading support is not quite as flexible as in C++. Sometimes + there are methods that SWIG can't disambiguate. For example:

    +
    +
    void spam(int);
     void spam(short);
    -
    -
    -

    or

    -
    -
    void foo(Bar *b);
    +
    +
    +

    or

    +
    +
    void foo(Bar *b);
     void foo(Bar &b);
    -
    -
    -

    If declarations such as these appear, you will get a warning message - like this:

    -
    -
    +
    +
    +

    If declarations such as these appear, you will get a warning message + like this:

    +
    +
     example.i:12: Warning 509: Overloaded method spam(short) effectively ignored,
     example.i:11: Warning 509: as it is shadowed by spam(int).
    -
    -
    -

    To fix this, you either need to ignore or rename one of the methods. - For example:

    -
    -
    %rename(spam_short) spam(short);
    +
    +
    +

    To fix this, you either need to ignore or rename one of the methods. + For example:

    +
    +
    %rename(spam_short) spam(short);
     ...
     void spam(int);
     void spam(short);   // Accessed as spam_short
    -
    -
    -

    or

    -
    -
    %ignore spam(short);
    +
    +
    +

    or

    +
    +
    %ignore spam(short);
     ...
     void spam(int);
     void spam(short);   // Ignored
    -
    -
    -

    SWIG resolves overloaded functions and methods using a +

    +
    +

    SWIG resolves overloaded functions and methods using a disambiguation scheme that ranks and sorts declarations according to a set of type-precedence rules. The order in which declarations appear in the input does not matter except in situations where ambiguity - arises--in this case, the first declaration takes precedence.

    -

    Please refer to the "SWIG and C++" chapter for more information - about overloading.

    -

    Dealing with the Lua coercion mechanism, the priority is roughly + arises--in this case, the first declaration takes precedence.

    +

    Please refer to the "SWIG and C++" chapter for more information + about overloading.

    +

    Dealing with the Lua coercion mechanism, the priority is roughly (integers, floats, strings, userdata). But it is better to rename the - functions rather than rely upon the ordering.

    -

    28.3.11 C++ operators

    -

    Certain C++ overloaded operators can be handled automatically by - SWIG. For example, consider a class like this:

    -
    -
    class Complex {
    + functions rather than rely upon the ordering.

    +

    28.3.11 C++ operators

    +

    Certain C++ overloaded operators can be handled automatically by + SWIG. For example, consider a class like this:

    +
    +
    class Complex {
     private:
       double rpart, ipart;
     public:
    @@ -38584,11 +38170,11 @@ public:
       double re() const { return rpart; }
       double im() const { return ipart; }
     };
    -
    -
    -

    When wrapped, it works like you expect:

    -
    -
    +
    +
    +

    When wrapped, it works like you expect:

    +
    +
     > c = Complex(3, 4)
     > d = Complex(7, 8)
     > e = c + d
    @@ -38596,86 +38182,85 @@ public:
     10.0
     > e:im()
     12.0
    -
    -
    -

    One restriction with operator overloading support is that SWIG is +

    +
    +

    One restriction with operator overloading support is that SWIG is not able to fully handle operators that aren't defined as part of the - class. For example, if you had code like this

    -
    -
    class Complex {
    + class. For example, if you had code like this

    +
    +
    class Complex {
     ...
     friend Complex operator+(double, const Complex &c);
     ...
     };
    -
    -
    -

    then SWIG doesn't know what to do with the friend function--in fact, +

    +
    +

    then SWIG doesn't know what to do with the friend function--in fact, it simply ignores it and issues a warning. You can still wrap the operator, but you may have to encapsulate it in a special function. For - example:

    -
    -
    %rename(Complex_add_dc) operator+(double, const Complex &);
    + example:

    +
    +
    %rename(Complex_add_dc) operator+(double, const Complex &);
     ...
     Complex operator+(double, const Complex &c);
    -
    -
    -

    There are ways to make this operator appear as part of the class - using the %extend directive. Keep reading.

    -

    Also, be aware that certain operators don't map cleanly to Lua, and +

    +
    +

    There are ways to make this operator appear as part of the class + using the %extend directive. Keep reading.

    +

    Also, be aware that certain operators don't map cleanly to Lua, and some Lua operators don't map cleanly to C++ operators. For instance, overloaded assignment operators don't map to Lua semantics and will be - ignored, and C++ doesn't support Lua's concatenation operator (.. -).

    -

    In order to keep maximum compatibility within the different + ignored, and C++ doesn't support Lua's concatenation operator (.. +).

    +

    In order to keep maximum compatibility within the different languages in SWIG, the Lua bindings uses the same set of operator names - as python. Although internally it renames the functions to something - else (on order to work with Lua).

    -

    The current list of operators which can be overloaded (and the - alternative function names) are:

    -
      -
    • __add__ operator+
    • -
    • __sub__ operator-
    • -
    • __mul__ operator *
    • -
    • __div__ operator/
    • -
    • __unm__ unary minus
    • -
    • __call__ operator() (often used in functor - classes)
    • -
    • __pow__ the exponential fn (no C++ equivalent, Lua uses -^)
    • -
    • __concat__ the concatenation operator (Lua's ..)
    • -
    • __eq__ operator==
    • -
    • __lt__ operator<
    • -
    • __le__ operator<=
    • -
    -

    Note: in Lua, only the equals, less than, and less than equals + as Python. Although internally it renames the functions to something + else (on order to work with Lua).

    +

    The current list of operators which can be overloaded (and the + alternative function names) are:

    +
      +
    • __add__ operator+
    • +
    • __sub__ operator-
    • +
    • __mul__ operator *
    • +
    • __div__ operator/
    • +
    • __unm__ unary minus
    • +
    • __call__ operator() (often used in functor + classes)
    • +
    • __pow__ the exponential fn (no C++ equivalent, Lua uses +^)
    • +
    • __concat__ the concatenation operator (Lua's ..)
    • +
    • __eq__ operator==
    • +
    • __lt__ operator<
    • +
    • __le__ operator<=
    • +
    +

    Note: in Lua, only the equals, less than, and less than equals operators are defined. The other operators (!=, >, >=) are achieved by - using a logical not applied to the results of other operators.

    -

    The following operators cannot be overloaded (mainly because they - are not supported in Lua)

    -
      -
    • ++ and --
    • -
    • +=, -=, *= etc
    • -
    • % operator (you have to use math.mod)
    • -
    • assignment operator
    • -
    • all bitwise/logical operations
    • -
    -

    SWIG also accepts the __str__() member function which + using a logical not applied to the results of other operators.

    +

    The following operators cannot be overloaded (mainly because they + are not supported in Lua)

    +
      +
    • ++ and --
    • +
    • +=, -=, *= etc
    • +
    • % operator (you have to use math.mod)
    • +
    • assignment operator
    • +
    • all bitwise/logical operations
    • +
    +

    SWIG also accepts the __str__() member function which converts an object to a string. This function should return a const - char*, preferably to static memory. This will be used for the -print() and tostring() functions in Lua. Assuming the - complex class has a function

    -
    -
    const char* __str__()
    -{
    -        static char buffer[255];
    -        sprintf(buffer, "Complex(%g, %g)", this->re(), this->im());
    -        return buffer;
    + char*, preferably to static memory. This will be used for the 
    +print() and tostring() functions in Lua. Assuming the
    + complex class has a function

    +
    +
    const char* __str__() {
    +  static char buffer[255];
    +  sprintf(buffer, "Complex(%g, %g)", this->re(), this->im());
    +  return buffer;
     }
    -
    -
    -

    Then this will support the following code in Lua

    -
    -
    +
    +
    +

    Then this will support the following code in Lua

    +
    +
     > c = Complex(3, 4)
     > d = Complex(7, 8)
     > e = c + d
    @@ -38684,56 +38269,55 @@ Complex(10, 12)
     > s=tostring(e) -- s is the number in string form
     > print(s)
     Complex(10, 12)
    -
    -
    -

    It is also possible to overload the operator[], but +

    +
    +

    It is also possible to overload the operator[], but currently this cannot be automatically performed. To overload the - operator[] you need to provide two functions, -__getitem__() and __setitem__()

    -
    -
    class Complex
    -{
    -        //....
    -        double __getitem__(int i)const; // i is the index, returns the data
    -        void __setitem__(int i, double d); // i is the index, d is the data
    + operator[] you need to provide two functions, 
    +__getitem__() and __setitem__()

    +
    +
    class Complex {
    +  //....
    +  double __getitem__(int i)const; // i is the index, returns the data
    +  void __setitem__(int i, double d); // i is the index, d is the data
     };
    -
    -
    -

    C++ operators are mapped to Lua predefined metafunctions. Class +

    +
    +

    C++ operators are mapped to Lua predefined metafunctions. Class inherits from its bases the following list of metafunctions ( thus - inheriting the folloging operators and pseudo-operators):

    -
      -
    • __add__
    • -
    • __sub__
    • -
    • __mul__
    • -
    • __div__
    • -
    • __unm__
    • -
    • __mod__
    • -
    • __call__
    • -
    • __pow__
    • -
    • __concat__
    • -
    • __eq__
    • -
    • __lt__
    • -
    • __le__
    • -
    • __len__
    • -
    • __getitem__
    • -
    • __setitem__
    • -
    • __tostring used internally by Lua for tostring() function. - __str__ is mapped to this function
    • -
    -

    No other lua metafunction is inherited. For example, __gc is not - inherited and must be redefined in every class. __tostring is + inheriting the folloging operators and pseudo-operators):

    +
      +
    • __add__
    • +
    • __sub__
    • +
    • __mul__
    • +
    • __div__
    • +
    • __unm__
    • +
    • __mod__
    • +
    • __call__
    • +
    • __pow__
    • +
    • __concat__
    • +
    • __eq__
    • +
    • __lt__
    • +
    • __le__
    • +
    • __len__
    • +
    • __getitem__
    • +
    • __setitem__
    • +
    • __tostring used internally by Lua for tostring() function. + __str__ is mapped to this function
    • +
    +

    No other lua metafunction is inherited. For example, __gc is not + inherited and must be redefined in every class. __tostring is subject to a special handling. If absent in class and in class bases, a - default one will be provided by SWIG.

    -

    28.3.12 Class extension with %extend

    -

    One of the more interesting features of SWIG is that it can extend + default one will be provided by SWIG.

    +

    28.3.12 Class extension with %extend

    +

    One of the more interesting features of SWIG is that it can extend structures and classes with new methods. In the previous section, the Complex class would have benefited greatly from an __str__() method as well as some repairs to the operator overloading. It can also be used - to add additional functions to the class if they are needed.

    -

    Take the original Complex class

    -
    -
    class Complex {
    + to add additional functions to the class if they are needed.

    +

    Take the original Complex class

    +
    +
    class Complex {
     private:
       double rpart, ipart;
     public:
    @@ -38748,11 +38332,11 @@ public:
       double re() const { return rpart; }
       double im() const { return ipart; }
     };
    -
    -
    -

    Now we extend it with some new code

    -
    -
    %extend Complex {
    +
    +
    +

    Now we extend it with some new code

    +
    +
    %extend Complex {
       const char *__str__() {
         static char tmp[1024];
         sprintf(tmp, "Complex(%g, %g)", $self->re(), $self->im());
    @@ -38762,11 +38346,11 @@ public:
         return ($self->re()==c.re() && $self->im()==c.im());
       }
     };
    -
    -
    -

    Now, in Lua

    -
    -
    +
    +
    +

    Now, in Lua

    +
    +
     > c = Complex(3, 4)
     > d = Complex(7, 8)
     > e = c + d
    @@ -38776,43 +38360,43 @@ Complex(10, 12)
     true
     > print(e!=Complex(12, 12))  -- the != uses the == operator
     true
    -
    -
    -

    Extend works with both C and C++ code, on classes and structs. It +

    +
    +

    Extend works with both C and C++ code, on classes and structs. It does not modify the underlying object in any way---the extensions only show up in the Lua interface. The only item to take note of is the code has to use the '$self' instead of 'this', and that you cannot access protected/private members of the code (as you are not officially part - of the class).

    -

    28.3.13 Using %newobject to release memory

    -

    If you have a function that allocates memory like this,

    -
    -
    char *foo() {
    + of the class).

    +

    28.3.13 Using %newobject to release memory

    +

    If you have a function that allocates memory like this,

    +
    +
    char *foo() {
       char *result = (char *) malloc(...);
       ...
       return result;
     }
    -
    -
    -

    then the SWIG generated wrappers will have a memory leak--the +

    +
    +

    then the SWIG generated wrappers will have a memory leak--the returned data will be copied into a string object and the old contents - ignored.

    -

    To fix the memory leak, use the -%newobject directive.

    -
    -
    %newobject foo;
    + ignored.

    +

    To fix the memory leak, use the +%newobject directive.

    +
    +
    %newobject foo;
     ...
     char *foo();
    -
    -
    -

    This will release the allocated memory.

    -

    28.3.14 C++ templates

    -

    C++ templates don't present a huge problem for SWIG. However, in +

    +
    +

    This will release the allocated memory.

    +

    28.3.14 C++ templates

    +

    C++ templates don't present a huge problem for SWIG. However, in order to create wrappers, you have to tell SWIG to create wrappers for a particular template instantiation. To do this, you use the template - directive. For example:

    -
    -
    %module example
    + directive. For example:

    +
    +
    %module example
     %{
     #include "pair.h"
     %}
    @@ -38829,90 +38413,90 @@ struct pair {
     };
     
     %template(pairii) pair<int, int>;
    -
    -
    -

    In Lua:

    -
    -
    +
    +
    +

    In Lua:

    +
    +
     > p = example.pairii(3, 4)
     > print(p.first, p.second)
     3    4
    -
    -
    -

    Obviously, there is more to template wrapping than shown in this +

    +
    +

    Obviously, there is more to template wrapping than shown in this example. More details can be found in the SWIG and C++ chapter. Some - more complicated examples will appear later.

    -

    28.3.15 C++ Smart Pointers

    -

    In certain C++ programs, it is common to use classes that have been + more complicated examples will appear later.

    +

    28.3.15 C++ Smart Pointers

    +

    In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use - of a template class that implements operator->() like this:

    -
    -
    template<class T> class SmartPtr {
    + of a template class that implements operator->() like this:

    +
    +
    template<class T> class SmartPtr {
       ...
       T *operator->();
       ...
     }
    -
    -
    -

    Then, if you have a class like this,

    -
    -
    class Foo {
    +
    +
    +

    Then, if you have a class like this,

    +
    +
    class Foo {
     public:
       int x;
       int bar();
     };
    -
    -
    -

    A smart pointer would be used in C++ as follows:

    -
    -
    SmartPtr<Foo> p = CreateFoo();   // Created somehow (not shown)
    +
    +
    +

    A smart pointer would be used in C++ as follows:

    +
    +
    SmartPtr<Foo> p = CreateFoo();   // Created somehow (not shown)
     ...
     p->x = 3;                        // Foo::x
     int y = p->bar();                // Foo::bar
    -
    -
    -

    To wrap this, simply tell SWIG about the SmartPtr class and the +

    +
    +

    To wrap this, simply tell SWIG about the SmartPtr class and the low-level Foo object. Make sure you instantiate SmartPtr using template - if necessary. For example:

    -
    -
    %module example
    + if necessary. For example:

    +
    +
    %module example
     ...
     %template(SmartPtrFoo) SmartPtr<Foo>;
     ...
    -
    -
    -

    Now, in Lua, everything should just "work":

    -
    -
    +
    +
    +

    Now, in Lua, everything should just "work":

    +
    +
     > p = example.CreateFoo()          -- Create a smart-pointer somehow
     > p.x = 3                          -- Foo::x
     > print(p:bar())                   -- Foo::bar
    -
    -
    -

    If you ever need to access the underlying pointer returned by -operator->() itself, simply use the __deref__() method. - For example:

    -
    -
    +
    +
    +

    If you ever need to access the underlying pointer returned by +operator->() itself, simply use the __deref__() method. + For example:

    +
    +
     > f = p:__deref__()     -- Returns underlying Foo *
    -
    -
    -

    28.3.16 C++ Exceptions

    -

    Lua does not natively support exceptions, but it has errors which +

    +
    +

    28.3.16 C++ Exceptions

    +

    Lua does not natively support exceptions, but it has errors which are similar. When a Lua function terminates with an error it returns one value back to the caller. SWIG automatically maps any basic type - which is thrown into a Lua error. Therefore for a function:

    -
    -
    + which is thrown into a Lua error. Therefore for a function:

    +
    +
     int message() throw(const char *) {
       throw("I died.");
       return 1;
     }
    -
    -
    -

    SWIG will automatically convert this to a Lua error.

    -
    -
    +
    +
    +

    SWIG will automatically convert this to a Lua error.

    +
    +
     > message()
     I died.
     stack traceback:
    @@ -38920,14 +38504,14 @@ stack traceback:
             stdin:1: in main chunk
             [C]: ?
     >
    -
    -
    -

    If you want to catch an exception, you must use either pcall() or +

    +
    +

    If you want to catch an exception, you must use either pcall() or xpcall(), which are documented in the Lua manual. Using xpcall will allow you to obtain additional debug information (such as a - stacktrace).

    -
    -
    + stacktrace).

    +
    +
     > function a() b() end -- function a() calls function b()
     > function b() message() end -- function b() calls C++ function message(), which throws 
     > ok, res=pcall(a)  -- call the function
    @@ -38943,32 +38527,32 @@ stack traceback:
             [C]: in function 'xpcall'
             runme.lua:95: in main chunk
             [C]: ?
    -
    -
    -

    SWIG is able to throw numeric types, enums, chars, char*'s and +

    +
    +

    SWIG is able to throw numeric types, enums, chars, char*'s and std::string's without problem. It has also written typemaps for std::exception and its derived classes, which convert the exception - into an error string.

    -

    However it's not so simple to throw other types of objects. Thrown + into an error string.

    +

    However it's not so simple to throw other types of objects. Thrown objects are not valid outside the 'catch' block. Therefore they cannot be returned to the interpreter. The obvious ways to overcome this would be to either return a copy of the object, or to convert the object to a string and return that. Though it seems obvious to perform the former, in some cases this is not possible, most notably when SWIG has no - information about the object, or the object is not copyable/creatable.

    -

    Therefore by default SWIG converts all thrown object into strings - and returns them. So given a function:

    -
    -
    + information about the object, or the object is not copyable/creatable.

    +

    Therefore by default SWIG converts all thrown object into strings + and returns them. So given a function:

    +
    +
     void throw_A() throw(A*) {
       throw new A();
     }
    -
    -
    -

    SWIG will just convert it (poorly) to a string and use that as its - error. (This is not that useful, but it always works).

    -
    -
    +
    +
    +

    SWIG will just convert it (poorly) to a string and use that as its + error. (This is not that useful, but it always works).

    +
    +
     > throw_A()
     object exception:A *
     stack traceback:
    @@ -38976,28 +38560,28 @@ stack traceback:
             stdin:1: in main chunk
             [C]: ?
     >
    -
    -
    -

    To get a more useful behaviour out of SWIG you must either: provide +

    +
    +

    To get a more useful behaviour out of SWIG you must either: provide a way to convert your exceptions into strings, or throw objects which - can be copied.

    -

    If you have your own class which you want output as a string you - will need to add a typemap something like this:

    -
    -
    + can be copied.

    +

    If you have your own class which you want output as a string you + will need to add a typemap something like this:

    +
    +
     %typemap(throws) my_except
     %{ 
       lua_pushstring(L, $1.what()); // assuming my_except::what() returns a const char* message
       SWIG_fail; // trigger the error handler
     %}
    -
    -
    -

    If you wish your exception to be returned to the interpreter, it - must firstly be copyable. Then you must have an additional %apply +

    +
    +

    If you wish your exception to be returned to the interpreter, it + must firstly be copyable. Then you must have an additional %apply statement, to tell SWIG to return a copy of this object to the - interpreter. For example:

    -
    -
    + interpreter. For example:

    +
    +
     %apply SWIGTYPE EXCEPTION_BY_VAL {Exc}; // tell SWIG to return Exc by value to interpreter
     
     class Exc {
    @@ -39013,12 +38597,12 @@ public:
     void throw_exc() throw(Exc) {
       throw(Exc(42, "Hosed"));
     } 
    -
    -
    -

    Then the following code can be used (note: we use pcall to catch the - error so we can process the exception).

    -
    -
    +
    +
    +

    Then the following code can be used (note: we use pcall to catch the + error so we can process the exception).

    +
    +
     > ok, res=pcall(throw_exc)
     > print(ok)
     false
    @@ -39027,26 +38611,26 @@ userdata: 0003D880
     > print(res.code, res.msg)
     42      Hosed
     >
    -
    -
    -

    Note: it is also possible (though tedious) to have a function throw +

    +
    +

    Note: it is also possible (though tedious) to have a function throw several different kinds of exceptions. To process this will require a pcall, followed by a set of if statements checking the type of the - error.

    -

    All of this code assumes that your C++ code uses exception - specification (which a lot doesn't). If it doesn't consult the " -Exception handling with %catches" section and the " -Exception handling with %exception" section, for more details on how - to add exception specification to functions or globally (respectively).

    -

    28.3.17 Namespaces

    -

    Since SWIG-3.0.0 C++ namespaces are supported via the %nspace - feature.

    -

    Namespaces are mapped into Lua tables. Each of those tables contains + error.

    +

    All of this code assumes that your C++ code uses exception + specification (which a lot doesn't). If it doesn't consult the " +Exception handling with %catches" section and the " +Exception handling with %exception" section, for more details on how + to add exception specification to functions or globally (respectively).

    +

    28.3.17 Namespaces

    +

    Since SWIG-3.0.0 C++ namespaces are supported via the %nspace + feature.

    +

    Namespaces are mapped into Lua tables. Each of those tables contains names that were defined within appropriate namespace. Namespaces structure (a.k.a nested namespaces) is preserved. Consider the - following C++ code:

    -
    -
    %module example
    + following C++ code:

    +
    +
    %module example
     %nspace MyWorld::Nested::Dweller;
     %nspace MyWorld::World;
     
    @@ -39068,11 +38652,11 @@ namespace MyWorld {
         };
       }
     }
    -
    -
    -

    Now, from Lua usage is as follows:

    -
    -
    +
    +
    +

    Now, from Lua usage is as follows:

    +
    +
     > print(example.module_function())
     7
     > print(example.module_variable)
    @@ -39086,34 +38670,34 @@ namespace MyWorld {
     > print(example.MyWorld.Nested.Dweller.count())
     19
     >
    -
    -
    -

    28.3.17.1 Compatibility Note

    -

    If SWIG is running in a backwards compatible way, i.e. without the --no-old-metatable-bindings option, then additional old-style names - are generated (notice the underscore):

    -
    -
    +
    +
    +

    28.3.17.1 Compatibility Note

    +

    If SWIG is running in a backwards compatible way, i.e. without the +-no-old-metatable-bindings option, then additional old-style names + are generated (notice the underscore):

    +
    +
     9
     > print(example.MyWorld.Nested.Dweller_MALE)
     0
     > print(example.MyWorld.Nested.Dweller_count())
     11
     >
    -
    -
    -

    28.3.17.2 Names

    -

    If SWIG is launched without -no-old-metatable-bindings +

    +
    +

    28.3.17.2 Names

    +

    If SWIG is launched without -no-old-metatable-bindings option, then it enters backward-compatible mode. While in this mode, it tries to generate additional names for static functions, class static - constants and class enums. Those names are in a form -$classname_$symbolname and are added to the scope surrounding the + constants and class enums. Those names are in a form +$classname_$symbolname and are added to the scope surrounding the class. If %nspace is enabled, then class namespace is taken as scope. If there is no namespace, or %nspace is disabled, then module is - considered a class namespace.

    -

    Consider the following C++ code

    -
    -
    %module example
    + considered a class namespace.

    +

    Consider the following C++ code

    +
    +
    %module example
     %nspace MyWorld::Test;
     namespace MyWorld {
     class Test {
    @@ -39126,12 +38710,12 @@ class Test2 {
       enum { TEST3 = 20, TEST4 }
       static const int ICONST2 = 23;
     }
    -
    -
    -

    When in backward compatible mode, in addition to the usual names, - the following ones will be generated (notice the underscore):

    -
    -
    +
    +
    +

    When in backward compatible mode, in addition to the usual names, + the following ones will be generated (notice the underscore):

    +
    +
     9
     > print(example.MyWorld.Test_TEST1) -- Test has %nspace enabled
     10
    @@ -39142,24 +38726,24 @@ class Test2 {
     > print(example.Test2_ICONST2) -- Test2 doesn't have %nspace enabled
     23
     >
    -
    -
    -

    There is a slight difference with enums when in C mode. As per C +

    +
    +

    There is a slight difference with enums when in C mode. As per C standard, enums from C structures are exported to surrounding scope without any prefixing. Pretending that Test2 is a struct, not class, - that would be:

    -
    -
    + that would be:

    +
    +
     > print(example.TEST3) -- NOT Test2_TEST3
     20
     >
    -
    -
    -

    28.3.17.3 Inheritance

    -

    The internal organization of inheritance has changed. Consider the - following C++ code:

    -
    -
    %module example
    +
    +
    +

    28.3.17.3 Inheritance

    +

    The internal organization of inheritance has changed. Consider the + following C++ code:

    +
    +
    %module example
     class Base {
       public:
       int base_func()
    @@ -39168,20 +38752,20 @@ class Derived : public Base {
       public:
       int derived_func()
     }
    -
    -
    -

    Lets assume for a moment that class member functions are stored in -.fn table. Previously, when classes were exported to Lua during - module initialization, for every derived class all service tables -ST(i.e. ".fn") were squashed and added to corresponding derived - class ST: Everything from .fn table of class Base was - copied to .fn table of class Derived and so on. This was a +

    +
    +

    Lets assume for a moment that class member functions are stored in +.fn table. Previously, when classes were exported to Lua during + module initialization, for every derived class all service tables +ST(i.e. ".fn") were squashed and added to corresponding derived + class ST: Everything from .fn table of class Base was + copied to .fn table of class Derived and so on. This was a recursive procedure, so in the end the whole inheritance tree of - derived class was squashed into derived class.

    -

    That means that any changes done to class Base after module - initialization wouldn't affect class Derived:

    -
    -
    + derived class was squashed into derived class.

    +

    That means that any changes done to class Base after module + initialization wouldn't affect class Derived:

    +
    +
     base = example.Base()
     der = example.Derived()
     > print(base.base_func)
    @@ -39192,30 +38776,30 @@ function
     > print(der.new_func) -- Wouldn't work. Derived doesn't check Base any more.
     nil
     >
    -
    -
    -

    This behaviour was changed. Now unless -squash-bases option is +

    +
    +

    This behaviour was changed. Now unless -squash-bases option is provided, Derived store a list of it's bases and if some symbol is not found in it's own service tables then its bases are searched for it. - Option -squash-bases will effectively return old behaviour.

    -
    + Option -squash-bases will effectively return old behaviour.
    +
     > print(der.new_func) -- Now it works
     function
     >
    -
    -

    -

    28.4 Typemaps

    -

    This section explains what typemaps are and how to use them. The +

    +

    +

    28.4 Typemaps

    +

    This section explains what typemaps are and how to use them. The default wrapping behaviour of SWIG is enough in most cases. However sometimes SWIG may need a little additional assistance to know which typemap to apply to provide the best wrapping. This section will be - explaining how to use typemaps to best effect

    -

    28.4.1 What is a typemap?

    -

    A typemap is nothing more than a code generation rule that is + explaining how to use typemaps to best effect

    +

    28.4.1 What is a typemap?

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers - from Lua to C, you might define a typemap like this:

    -
    -
    %module example
    + from Lua to C, you might define a typemap like this:

    +
    +
    %module example
     
     %typemap(in) int {
       $1 = (int) lua_tonumber(L, $input);
    @@ -39224,35 +38808,35 @@ function
     %inline %{
     extern int fact(int n);
     %}
    -
    -
    -

    Note: you shouldn't use this typemap, as SWIG already has a - typemap for this task. This is purely for example.

    -

    Typemaps are always associated with some specific aspect of code +

    +
    +

    Note: you shouldn't use this typemap, as SWIG already has a + typemap for this task. This is purely for example.

    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variable prefaced by a $ are used. The $1 variable is placeholder for a local variable of type int. The $input - is the index on the Lua stack for the value to be used.

    -

    When this example is compiled into a Lua module, it operates as - follows:

    -
    -
    > require "example"
    + is the index on the Lua stack for the value to be used.

    +

    When this example is compiled into a Lua module, it operates as + follows:

    +
    +
    > require "example"
     > print(example.fact(6))
     Received an integer : 6
     720
    -
    -
    -

    28.4.2 Using typemaps

    -

    There are many ready written typemaps built into SWIG for all common +

    +
    +

    28.4.2 Using typemaps

    +

    There are many ready written typemaps built into SWIG for all common types (int, float, short, long, char*, enum and more), which SWIG uses - automatically, with no effort required on your part.

    -

    However for more complex functions which use input/output parameters + automatically, with no effort required on your part.

    +

    However for more complex functions which use input/output parameters or arrays, you will need to make use of <typemaps.i>, which contains - typemaps for these situations. For example, consider these functions:

    -
    -
    void add(int x, int y, int *result) {
    + typemaps for these situations. For example, consider these functions:

    +
    +
    void add(int x, int y, int *result) {
       *result = x + y;
     }
     
    @@ -39265,17 +38849,17 @@ void swap(int *sx, int *sy) {
       *sx=*sy;
       *sy=t;
     }
    -
    -
    -

    It is clear to the programmer, that 'result' is an output parameter, +

    +
    +

    It is clear to the programmer, that 'result' is an output parameter, 'x1' and 'y1' are input parameters and 'sx' and 'sy' are input/output parameters. However is not apparent to SWIG, so SWIG must to informed - about which kind they are, so it can wrapper accordingly.

    -

    One means would be to rename the argument name to help SWIG, eg -void add(int x, int y, int *OUTPUT), however it is easier to use - the %apply to achieve the same result, as shown below.

    -
    -
    %include <typemaps.i>
    + about which kind they are, so it can wrapper accordingly.

    +

    One means would be to rename the argument name to help SWIG, eg +void add(int x, int y, int *OUTPUT), however it is easier to use + the %apply to achieve the same result, as shown below.

    +
    +
    %include <typemaps.i>
     %apply int* OUTPUT {int *result}; // int *result is output
     %apply int* INPUT {int *x1, int *y1}; // int *x1 and int *y1 are input
     %apply int* INOUT {int *sx, int *sy}; // int *sx and int *sy are input and output
    @@ -39283,11 +38867,11 @@ void add(int x, int y, int *OUTPUT), however it is easier to use
     void add(int x, int y, int *result);
     int sub(int *x1, int *y1);
     void swap(int *sx, int *sy);
    -
    -
    -

    When wrapped, it gives the following results:

    -
    -
    > require "example"
    +
    +
    +

    When wrapped, it gives the following results:

    +
    +
    > require "example"
     > print(example.add(1, 2))
     3
     > print(demo.sub(1, 2))
    @@ -39296,42 +38880,42 @@ void swap(int *sx, int *sy);
     > c, d=demo.swap(a, b)
     > print(a, b, c, d)
     1       2       2       1
    -
    -
    -

    Notice, that 'result' is not required in the arguments to call the +

    +
    +

    Notice, that 'result' is not required in the arguments to call the function, as it an output parameter only. For 'sx' and 'sy' they must be passed in (as they are input), but the original value is not modified (Lua does not have a pass by reference feature). The modified results are then returned as two return values. All INPUT/OUTPUT/INOUT - arguments will behave in a similar manner.

    -

    Note: C++ references must be handled exactly the same way. However - SWIG will automatically wrap a const int& as an input - parameter (since that it obviously input).

    -

    28.4.3 Typemaps and arrays

    -

    Arrays present a challenge for SWIG, because like pointers SWIG does + arguments will behave in a similar manner.

    +

    Note: C++ references must be handled exactly the same way. However + SWIG will automatically wrap a const int& as an input + parameter (since that it obviously input).

    +

    28.4.3 Typemaps and arrays

    +

    Arrays present a challenge for SWIG, because like pointers SWIG does not know whether these are input or output values, nor does SWIG have any indication of how large an array should be. However with the proper - guidance SWIG can easily wrapper arrays for convenient usage.

    -

    Given the functions:

    -
    -
    extern void sort_int(int* arr, int len);
    + guidance SWIG can easily wrapper arrays for convenient usage.

    +

    Given the functions:

    +
    +
    extern void sort_int(int* arr, int len);
     extern void sort_double(double* arr, int len);
    -
    -
    -

    There are basically two ways that SWIG can deal with this. The first - way, uses the <carrays.i> library to create an array in C/C++ +

    +
    +

    There are basically two ways that SWIG can deal with this. The first + way, uses the <carrays.i> library to create an array in C/C++ then this can be filled within Lua and passed into the function. It - works, but it's a bit tedious. More details can be found in the -carrays.i documentation.

    -

    The second and more intuitive way, would be to pass a Lua table + works, but it's a bit tedious. More details can be found in the +carrays.i documentation.

    +

    The second and more intuitive way, would be to pass a Lua table directly into the function, and have SWIG automatically convert between - Lua-table and C-array. Within the <typemaps.i> file there are + Lua-table and C-array. Within the <typemaps.i> file there are typemaps ready written to perform this task. To use them is again a - matter of using %apply in the correct manner.

    -

    The wrapper file below, shows both the use of carrays as well as the - use of the typemap to wrap arrays.

    -
    -
    // using the C-array
    + matter of using %apply in the correct manner.

    +

    The wrapper file below, shows both the use of carrays as well as the + use of the typemap to wrap arrays.

    +
    +
    // using the C-array
     %include <carrays.i>
     // this declares a batch of function for manipulating C integer arrays
     %array_functions(int, int)
    @@ -39343,12 +38927,12 @@ extern void sort_int(int* arr, int len); // the function to wrap
     %apply (double *INOUT, int) {(double* arr, int len)};
     
     extern void sort_double(double* arr, int len); // the function to wrap
    -
    -
    -

    Once wrapped, the functions can both be called, though with different - ease of use:

    -
    -
    require "example"
    +
    +
    +

    Once wrapped, the functions can both be called, though with different + ease of use:

    +
    +
    require "example"
     ARRAY_SIZE=10
     
     -- passing a C array to the sort_int()
    @@ -39366,149 +38950,149 @@ for i=1, ARRAY_SIZE do -- index 1..10 (Lua style)
         t[i]=math.random(1000)/10
     end
     t=example.sort_double(t) -- replace t with the result
    -
    -
    -

    Obviously the first version could be made less tedious by writing a - Lua function to perform the conversion from a table to a C-array. The -%luacode directive is good for this. See SWIG\Examples\lua\arrays - for an example of this.

    -

    Warning: in C indexes start at ZERO, in Lua indexes start at +

    +
    +

    Obviously the first version could be made less tedious by writing a + Lua function to perform the conversion from a table to a C-array. The +%luacode directive is good for this. See SWIG\Examples\lua\arrays + for an example of this.

    +

    Warning: in C indexes start at ZERO, in Lua indexes start at ONE. SWIG expects C-arrays to be filled for 0..N-1 and Lua tables to be 1..N, (the indexing follows the norm for the language). In the typemap when it converts the table to an array it quietly changes the indexing accordingly. Take note of this behaviour if you have a C function which - returns indexes.

    -

    Note: SWIG also can support arrays of pointers in a similar manner.

    -

    28.4.4 Typemaps and - pointer-pointer functions

    -

    Several C++ libraries use a pointer-pointer functions to create its + returns indexes.

    +

    Note: SWIG also can support arrays of pointers in a similar manner.

    +

    28.4.4 Typemaps and + pointer-pointer functions

    +

    Several C++ libraries use a pointer-pointer functions to create its objects. These functions require a pointer to a pointer which is then filled with the pointer to the new object. Microsoft's COM and DirectX as well as many other libraries have this kind of function. An example - is given below:

    -
    -
    struct iMath;    // some structure
    + is given below:

    +
    +
    struct iMath;    // some structure
     int Create_Math(iMath** pptr); // its creator (assume it mallocs)
    -
    -
    -

    Which would be used with the following C code:

    -
    -
    iMath* ptr;
    +
    +
    +

    Which would be used with the following C code:

    +
    +
    iMath* ptr;
     int ok;
     ok=Create_Math(&ptr);
     // do things with ptr
     //...
     free(ptr); // dispose of iMath
    -
    -
    -

    SWIG has a ready written typemap to deal with such a kind of function +

    +
    +

    SWIG has a ready written typemap to deal with such a kind of function in <typemaps.i>. It provides the correct wrapping as well as setting the flag to inform Lua that the object in question should be garbage - collected. Therefore the code is simply:

    -
    -
    %include <typemaps.i>
    + collected. Therefore the code is simply:

    +
    +
    %include <typemaps.i>
     %apply SWIGTYPE** OUTPUT{iMath **pptr }; // tell SWIG it's an output
     
     struct iMath;    // some structure
     int Create_Math(iMath** pptr); // its creator (assume it mallocs)
    -
    -
    -

    The usage is as follows:

    -
    -
    ok, ptr=Create_Math() -- ptr is an iMath* which is returned with the int (ok)
    +
    +
    +

    The usage is as follows:

    +
    +
    ok, ptr=Create_Math() -- ptr is an iMath* which is returned with the int (ok)
     ptr=nil -- the iMath* will be GC'ed as normal
    -
    -
    -

    28.5 Writing typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap +

    +
    +

    28.5 Writing typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap directive. This is an advanced topic that assumes familiarity with the - Lua C API as well as the material in the "Typemaps -" chapter.

    -

    Before proceeding, it should be stressed that writing typemaps is + Lua C API as well as the material in the "Typemaps +" chapter.

    +

    Before proceeding, it should be stressed that writing typemaps is rarely needed unless you want to change some aspect of the wrapping, or - to achieve an effect which in not available with the default bindings.

    -

    Before proceeding, you should read the previous section on using + to achieve an effect which in not available with the default bindings.

    +

    Before proceeding, you should read the previous section on using typemaps, and look at the existing typemaps found in luatypemaps.swg and typemaps.i. These are both well documented and fairly easy to read. You should not attempt to write your own typemaps until you have read and can understand both of these files (they may well also give you an - idea to base your work on).

    -

    28.5.1 Typemaps you can write

    -

    There are many different types of typemap that can be written, the - full list can be found in the "Typemaps" - chapter. However the following are the most commonly used ones.

    -
      -
    • in this is for input arguments to functions
    • -
    • out this is for return types from functions
    • -
    • argout this is for a function argument which is actually - returning something
    • -
    • typecheck this is used to determine which overloaded + idea to base your work on).

      +

      28.5.1 Typemaps you can write

      +

      There are many different types of typemap that can be written, the + full list can be found in the "Typemaps" + chapter. However the following are the most commonly used ones.

      +
        +
      • in this is for input arguments to functions
      • +
      • out this is for return types from functions
      • +
      • argout this is for a function argument which is actually + returning something
      • +
      • typecheck this is used to determine which overloaded function should be called (the syntax for the typecheck is different - from the typemap, see typemaps for details).
      • -
      -

      28.5.2 SWIG's Lua-C API

      -

      This section explains the SWIG specific Lua-C API. It does not cover - the main Lua-C api, as this is well documented and not worth covering.

      -

      int SWIG_ConvertPtr(lua_State* L, int index, void** ptr, - swig_type_info *type, int flags);

      -
      This is the standard function used for converting a + from the typemap, see typemaps for details).
    • +
    +

    28.5.2 SWIG's Lua-C API

    +

    This section explains the SWIG specific Lua-C API. It does not cover + the main Lua-C api, as this is well documented and not worth covering.

    +

    int SWIG_ConvertPtr(lua_State* L, int index, void** ptr, + swig_type_info *type, int flags);

    +
    This is the standard function used for converting a Lua userdata to a void*. It takes the value at the given index in the Lua state and converts it to a userdata. It will then provide the necessary type checks, confirming that the pointer is compatible with the type given in 'type'. Then finally setting '*ptr' to the pointer. If flags is set to SWIG_POINTER_DISOWN, this is will clear any ownership flag set on the object. -
    This returns a value which can be checked with the macro - SWIG_IsOK()
    -

    void SWIG_NewPointerObj(lua_State* L, void* ptr, swig_type_info - *type, int own);

    -
    This is the opposite of SWIG_ConvertPtr, as it +
    This returns a value which can be checked with the macro + SWIG_IsOK()
    +

    void SWIG_NewPointerObj(lua_State* L, void* ptr, swig_type_info + *type, int own);

    +
    This is the opposite of SWIG_ConvertPtr, as it pushes a new userdata which wrappers the pointer 'ptr' of type 'type'. The parameter 'own' specifies if the object is owned be Lua and if it - is 1 then Lua will GC the object when the userdata is disposed of.
    -

    void* SWIG_MustGetPtr(lua_State* L, int index, swig_type_info - *type, int flags, int argnum, const char* func_name);

    -
    This function is a version of SWIG_ConvertPtr(), + is 1 then Lua will GC the object when the userdata is disposed of.
    +

    void* SWIG_MustGetPtr(lua_State* L, int index, swig_type_info + *type, int flags, int argnum, const char* func_name);

    +
    This function is a version of SWIG_ConvertPtr(), except that it will either work, or it will trigger a lua_error() with a text error message. This function is rarely used, and may be - deprecated in the future.
    -

    SWIG_fail

    -
    This macro, when called within the context of a + deprecated in the future.
    +

    SWIG_fail

    +
    This macro, when called within the context of a SWIG wrapped function, will jump to the error handler code. This will call any cleanup code (freeing any temp variables) and then triggers a lua_error. -
    A common use for this code is: -
    -
    +
    A common use for this code is: +
    +
     if (!SWIG_IsOK(SWIG_ConvertPtr( .....)){
      lua_pushstring(L, "something bad happened");
      SWIG_fail;
    -}
    -
    -

    SWIG_fail_arg(char* func_name, int argnum, char* type)

    -
    This macro, when called within the context of a +} +
    +

    SWIG_fail_arg(char* func_name, int argnum, char* type)

    +
    This macro, when called within the context of a SWIG wrapped function, will display the error message and jump to the error handler code. The error message is of the form -
    -"Error in func_name (arg argnum), expected 'type' got 'whatever the type was'"
    -
    -
    -

    SWIG_fail_ptr(const char* fn_name, int argnum, swig_type_info* - type);

    -
    Similar to SWIG_fail_arg, except that it will - display the swig_type_info information instead.
    -

    28.6 Customization of your Bindings

    -

    This section covers adding of some small extra bits to your module - to add the last finishing touches.

    -

    28.6.1 Writing your own custom wrappers

    -

    Sometimes, it may be necessary to add your own special functions, +

    +"Error in func_name (arg argnum), expected 'type' got 'whatever the type was'"
    +
    + +

    SWIG_fail_ptr(const char* fn_name, int argnum, swig_type_info* + type);

    +
    Similar to SWIG_fail_arg, except that it will + display the swig_type_info information instead.
    +

    28.6 Customization of your Bindings

    +

    This section covers adding of some small extra bits to your module + to add the last finishing touches.

    +

    28.6.1 Writing your own custom wrappers

    +

    Sometimes, it may be necessary to add your own special functions, which bypass the normal SWIG wrapper method, and just use the native Lua API calls. These 'native' functions allow direct adding of your own - code into the module. This is performed with the %native - directive as follows:

    -
    -
    %native(my_func) int native_function(lua_State*L);  // registers native_function() with SWIG
    + code into the module. This is performed with the %native
    + directive as follows:

    +
    +
    %native(my_func) int native_function(lua_State*L);  // registers native_function() with SWIG
     ...
     %{
     int native_function(lua_State*L) // my native code
    @@ -39516,22 +39100,22 @@ int native_function(lua_State*L) // my native code
      ...
     }
     %}
    -
    -
    -

    The %native directive in the above example, tells SWIG that - there is a function int native_function(lua_State*L); which is - to be added into the module under the name 'my_func'. SWIG +

    +
    +

    The %native directive in the above example, tells SWIG that + there is a function int native_function(lua_State*L); which is + to be added into the module under the name 'my_func'. SWIG will not add any wrapper for this function, beyond adding it into the - function table. How you write your code is entirely up to you.

    -

    28.6.2 Adding additional Lua code

    -

    As well as adding additional C/C++ code, it's also possible to add + function table. How you write your code is entirely up to you.

    +

    28.6.2 Adding additional Lua code

    +

    As well as adding additional C/C++ code, it's also possible to add your own Lua code to the module as well. This code is executed once all - other initialisation, including the %init code has been called.

    -

    The directive %luacode adds code into the module which is + other initialisation, including the %init code has been called.

    +

    The directive %luacode adds code into the module which is executed upon loading. Normally you would use this to add your own - functions to the module. Though you could easily perform other tasks.

    -
    -
    %module example;
    + functions to the module. Though you could easily perform other tasks.

    +
    +
    %module example;
     
     %luacode {
       function example.greet() 
    @@ -39542,51 +39126,51 @@ int native_function(lua_State*L) // my native code
     }
     ...
     %}
    -
    -
    -

    Notice that the code is not part of the module table. Therefore any - references to the module must have the module name added.

    -

    Should there be an error in the Lua code, this will not +

    +
    +

    Notice that the code is not part of the module table. Therefore any + references to the module must have the module name added.

    +

    Should there be an error in the Lua code, this will not stop loading of the module. The default behaviour of SWIG is to print an error message to stderr and then continue. It is possible to change - this behaviour by using a #define SWIG_DOSTRING_FAIL(STR) to - define a different behaviour should the code fail.

    -

    Good uses for this feature is adding of new code, or writing helper + this behaviour by using a #define SWIG_DOSTRING_FAIL(STR) to + define a different behaviour should the code fail.

    +

    Good uses for this feature is adding of new code, or writing helper functions to simplify some of the code. See Examples/lua/arrays for an - example of this code.

    -

    28.7 Details on the Lua binding

    -

    In the previous section, a high-level view of Lua wrapping was + example of this code.

    +

    28.7 Details on the Lua binding

    +

    In the previous section, a high-level view of Lua wrapping was presented. Obviously a lot of stuff happens behind the scenes to make this happen. This section will explain some of the low-level details on - how this is achieved.

    -

    If you just want to use SWIG and don't care how it works, then + how this is achieved.

    +

    If you just want to use SWIG and don't care how it works, then stop reading here. This is going into the guts of the code and how it works. It's mainly for people who need to know what's going on within - the code.

    -

    28.7.1 Binding global data into the module.

    -

    Assuming that you had some global data that you wanted to share - between C and Lua. How does SWIG do it?

    -
    -
    %module example;
    + the code.

    +

    28.7.1 Binding global data into the module.

    +

    Assuming that you had some global data that you wanted to share + between C and Lua. How does SWIG do it?

    +
    +
    %module example;
     extern double Foo;
    -
    -
    -

    SWIG will effectively generate the pair of functions

    -
    -
    void Foo_set(double);
    +
    +
    +

    SWIG will effectively generate the pair of functions

    +
    +
    void Foo_set(double);
     double Foo_get();
    -
    -
    -

    At initialisation time, it will then add to the interpreter a table +

    +
    +

    At initialisation time, it will then add to the interpreter a table called 'example', which represents the module. It will then add all its functions to the module. (Note: older versions of SWIG actually added the Foo_set() and Foo_get() functions, current implementation does not add these functions any more.) But it also adds a metatable to this - table, which has two functions (__index and __newindex -) as well as two tables (.get and .set) The following - Lua code will show these hidden features.

    -
    -
    + table, which has two functions (__index and __newindex
    +) as well as two tables (.get and .set) The following
    + Lua code will show these hidden features.

    +
    +
     > print(example)
     table: 003F8F90
     > m=getmetatable(example)
    @@ -39599,14 +39183,14 @@ __newindex      function: 003F8FF8
     > table.foreach(g, print)
     Foo     function: 003FAFD8
     >
    -
    -
    -

    The .get and .set tables are lookups connecting the variable name - 'Foo' to the accessor/mutator functions (Foo_set, Foo_get)

    -

    The Lua equivalent of the code for the __index and -__newindex looks a bit like this

    -
    -
    +
    +
    +

    The .get and .set tables are lookups connecting the variable name + 'Foo' to the accessor/mutator functions (Foo_set, Foo_get)

    +

    The Lua equivalent of the code for the __index and +__newindex looks a bit like this

    +
    +
     function __index(mod, name)
             local g=getmetatable(mod)['.get'] -- gets the table
             if not g then return nil end
    @@ -39624,30 +39208,30 @@ function __newindex(mod, name, value)
             if type(f)=="function" then f(value)
             else rawset(mod, name, value) end
     end
    -
    -
    -

    That way when you call 'a=example.Foo', the interpreter +

    +
    +

    That way when you call 'a=example.Foo', the interpreter looks at the table 'example' sees that there is no field 'Foo' and calls __index. This will in turn check in '.get' table and find the existence of 'Foo' and then return the value of the C function call - 'Foo_get()'. Similarly for the code 'example.Foo=10', the + 'Foo_get()'. Similarly for the code 'example.Foo=10', the interpreter will check the table, then call the __newindex which will - then check the '.set' table and call the C function 'Foo_set(10)'.

    -

    28.7.2 Userdata and Metatables

    -

    As mentioned earlier, classes and structures, are all held as + then check the '.set' table and call the C function 'Foo_set(10)'.

    +

    28.7.2 Userdata and Metatables

    +

    As mentioned earlier, classes and structures, are all held as pointer, using the Lua 'userdata' structure. This structure is actually a pointer to a C structure 'swig_lua_userdata', which contains the pointer to the data, a pointer to the swig_type_info (an internal SWIG struct) and a flag which marks if the object is to be disposed of when the interpreter no longer needs it. The actual accessing of the object - is done via the metatable attached to this userdata.

    -

    The metatable is a Lua 5.0 feature (which is also why SWIG cannot + is done via the metatable attached to this userdata.

    +

    The metatable is a Lua 5.0 feature (which is also why SWIG cannot wrap Lua 4.0). It's a table which holds a list of functions, operators and attributes. This is what gives the userdata the feeling that it is - a real object and not just a hunk of memory.

    -

    Given a class

    -
    -
    %module excpp;
    + a real object and not just a hunk of memory.

    +

    Given a class

    +
    +
    %module excpp;
     
     class Point
     {
    @@ -39657,9 +39241,9 @@ public:
      ~Point(){}
      virtual void Print(){printf("Point @%p (%d, %d)\n", this, x, y);}
     };
    -
    -
    -

    SWIG will create a module excpp, with all the various functions +

    +
    +

    SWIG will create a module excpp, with all the various functions inside. However to allow the intuitive use of the userdata, SWIG also creates up a set of metatables. As seen in the above section on global variables, use of the metatables allows for wrappers to be used @@ -39668,11 +39252,11 @@ public: instantiated, the metatable is found in the registry and the userdata associated with the metatable. Currently, derived classes make a complete copy of the base class' table and then add on their own - additional functions.

    -

    Some of the internals can be seen by looking at the metatable of a - class:

    -
    -
    + additional functions.

    +

    Some of the internals can be seen by looking at the metatable of a + class:

    +
    +
     > p=excpp.Point()
     > print(p)
     userdata: 003FDB28
    @@ -39685,16 +39269,16 @@ __index function: 003FB698
     .get    table: 003FB4D8
     .set    table: 003FB500
     .fn     table: 003FB528
    -
    -
    -

    The '.type' attribute is the name of the class. The '.get' and +

    +
    +

    The '.type' attribute is the name of the class. The '.get' and '.set' tables work in a similar manner to the modules, the main difference is the '.fn' table which also holds all the member - functions. (The '__gc' function is the class' destructor function)

    -

    The Lua equivalent of the code for enabling functions looks a little - like this

    -
    -
    + functions. (The '__gc' function is the class' destructor function)

    +

    The Lua equivalent of the code for enabling functions looks a little + like this

    +
    +
     function __index(obj, name)
             local m=getmetatable(obj) -- gets the metatable
             if not m then return nil end
    @@ -39712,1576 +39296,177 @@ function __index(obj, name)
             if type(f)=="function" then return f end
             return nil
     end
    -
    -
    -

    So when 'p:Print()' is called, the __index looks on the object +

    +
    +

    So when 'p:Print()' is called, the __index looks on the object metatable for a 'Print' attribute, then looks for a 'Print' function. When it finds the function, it returns the function, and then - interpreter can call 'Point_Print(p)'

    -

    In theory, you can play with this usertable & add new features, but + interpreter can call 'Point_Print(p)'

    +

    In theory, you can play with this usertable & add new features, but remember that it is a shared table between all instances of one class, - and you could very easily corrupt the functions in all the instances.

    -

    Note: Both the opaque structures (like the FILE*) and normal wrapped + and you could very easily corrupt the functions in all the instances.

    +

    Note: Both the opaque structures (like the FILE*) and normal wrapped classes/structs use the same 'swig_lua_userdata' structure. Though the opaque structures has do not have a metatable attached, or any information on how to dispose of them when the interpreter has finished - with them.

    -

    Note: Operator overloads are basically done in the same way, by + with them.

    +

    Note: Operator overloads are basically done in the same way, by adding functions such as '__add' & '__call' to the class' metatable. The current implementation is a bit rough as it will add any member function beginning with '__' into the metatable too, assuming its an - operator overload.

    -

    28.7.3 Memory management

    -

    Lua is very helpful with the memory management. The + operator overload.

    +

    28.7.3 Memory management

    +

    Lua is very helpful with the memory management. The 'swig_lua_userdata' is fully managed by the interpreter itself. This means that neither the C code nor the Lua code can damage it. Once a piece of userdata has no references to it, it is not instantly collected, but will be collected when Lua deems is necessary. (You can - force collection by calling the Lua function collectgarbage() + force collection by calling the Lua function collectgarbage() ). Once the userdata is about to be free'ed, the interpreter will check the userdata for a metatable and for a function '__gc'. If this exists this is called. For all complete types (ie normal wrapped classes & structs) this should exist. The '__gc' function will check the 'swig_lua_userdata' to check for the 'own' field and if this is true (which is will be for all owned data) it will then call the destructor - on the pointer.

    -

    It is currently not recommended to edit this field or add some user + on the pointer.

    +

    It is currently not recommended to edit this field or add some user code, to change the behaviour. Though for those who wish to try, here - is where to look.

    -

    It is also currently not possible to change the ownership flag on + is where to look.

    +

    It is also currently not possible to change the ownership flag on the data (unlike most other scripting languages, Lua does not permit - access to the data from within the interpreter).

    + access to the data from within the interpreter).


    -

    29 SWIG and Modula-3

    +

    29 SWIG and Octave

    - + -

    This chapter describes SWIG's support for -Modula-3. You should be familiar with the basics - of SWIG, especially typemaps.

    -

    29.1 Overview

    -

    Modula-3 is a compiled language in the tradition of Niklaus Wirth's - Modula 2, which is in turn a successor to Pascal.

    -

    SWIG's Modula-3 support is currently very basic and highly - experimental! Many features are still not designed satisfyingly and I - need more discussion about the odds and ends. Don't rely on any - feature, incompatible changes are likely in the future! However, the - Modula-3 generator was already useful for interfacing to the libraries:

    -
      -
    1. - PLPlot
    2. -
    3. - FFTW
    4. -
    -

    29.1.1 Motivation

    -

    Although it is possible to write Modula-3 code that performs as well - as C/C++ most existing libraries are not written in Modula-3 but in C - or C++, and even libraries in other languages may provide C header - files.

    -

    Fortunately Modula-3 can call C functions, but you have to write - Modula-3 interfaces to them, and to make things comfortable you will - also need wrappers that convert between high-level features of Modula-3 - (garbage collecting, exceptions) and the explicit tracking of allocated - memory and exception codes used by C APIs.

    -

    SWIG converts C headers to Modula-3 interfaces for you, and using - typemaps you can pass TEXTs or open arrays, and convert error - return codes into exceptions.

    -

    If the library API is ill designed writing appropriate typemaps can - still be time-consuming. E.g. C programmers are very creative to - work-around missing data types like (real) enumerations and sets. You - should turn such work-arounds back to the Modula-3 way otherwise you - lose static safety and consistency.

    -

    Without SWIG you would probably never consider trying to call C++ - libraries from Modula-3, but with SWIG this is becomes feasible. SWIG - can generate C wrappers to C++ functions and object methods that may - throw exceptions, and then wrap these C wrappers for Modula-3. To make - it complete you can then hide the C interface with Modula-3 classes and - exceptions.

    -

    SWIG allows you to call C and C++ libraries from Modula-3 (even with - call back functions), but it doesn't allow you to easily integrate a - Modula-3 module into a C/C++ project.

    -

    29.2 Conception

    -

    29.2.1 Interfaces to C libraries

    -

    Modula-3 has integrated support for calling C functions. This is - also extensively used by the standard Modula-3 libraries to call OS - functions. The Modula-3 part of SWIG and the corresponding SWIG library - modula3.swg contain code that uses these features. Because of the - built-in support there is no need for calling the SWIG kernel to - generate wrappers written in C. All conversion and argument checking - can be done in Modula-3 and the interfacing is quite efficient. All you - have to do is to write pieces of Modula-3 code that SWIG puts together.

    - - - - - - - - -
    C library support integrated in Modula-3
    Pragma <* EXTERNAL *>Precedes a declaration of - a PROCEDURE that is implemented in an external library instead of a - Modula-3 module.
    Pragma <* CALLBACK *>Precedes a declaration of - a PROCEDURE that should be called by external library code.
    Module CtypesContains Modula-3 types that - match some basic C types.
    Module M3toCContains routines that convert - between Modula-3's TEXT type and C's char * type.
    -

    In each run of SWIG the Modula-3 part generates several files:

    - - - - - - - - -
    Module name schemeIdentifier for %insert -Description
    ModuleRaw.i3m3rawintf -Declaration of types that are equivalent to those of the C library, -EXTERNAL procedures as interface to the C library functions
    ModuleRaw.m3m3rawimplAlmost - empty.
    Module.i3m3wrapintf -Declaration of comfortable wrappers to the C library functions.
    Module.m3m3wrapimpl -Implementation of the wrappers that convert between Modula-3 and C - types, check for validity of values, hand-over resource management to - the garbage collector using WeakRefs and raises exceptions.
    m3makefilem3makefileAdd the - modules above to the Modula-3 project and specify the name of the - Modula-3 wrapper library to be generated. Today I'm not sure if it is a - good idea to create a m3makefile in each run, because SWIG - must be started for each Modula-3 module it creates. Thus the - m3makefile is overwritten each time. :-(
    -

    Here's a scheme of how the function calls to Modula-3 wrappers are - redirected to C library functions:

    - - - - - -
    Modula-3 wrapper -
    Module.i3 -
    generated by Modula-3 part of SWIG
    - - | -
    v
    Modula-3 interface to C -
    ModuleRaw.i3 -
    generated by Modula-3 part of SWIG
    --> - C library
    -

    I have still no good conception how one can split C library - interfaces into type oriented interfaces. A Module in Modula-3 - represents an Abstract DataType (or call it a static classes, i.e. a - class without virtual methods). E.g. if you have a principal type, say -Database, it is good Modula-3 style to set up one Module with the - name Database where the database type is declared with the - name T and where all functions are declared that operates on - it.

    -

    The normal operation of SWIG is to generate a fixed set of files per - call. To generate multiple modules one has to write one SWIG interface - (different SWIG interfaces can share common data) per module. - Identifiers belonging to a different module may ignored (%ignore -) and the principal type must be renamed (%typemap).

    -

    29.2.2 Interfaces to C++ libraries -

    -

    Interfaces to C++ files are much more complicated and there are some - more design decisions that are not made, yet. Modula-3 has no support - for C++ functions but C++ compilers should support generating C++ - functions with a C interface.

    -

    Here's a scheme of how the function calls to Modula-3 wrappers are - redirected to C library functions:

    - - - - -
    Modula-3 wrapper -
    Module.i3 -
    generated by Modula-3 part of SWIG
    -C++ library
    - - | -
    v
    ^ -
    |
    Modula-3 interface to C -
    ModuleRaw.i3 -
    generated by Modula-3 part of SWIG
    --> - C interface to C++ -
    module_wrap.cxx -
    generated by the SWIG core
    -

    Wrapping C++ libraries arises additional problems:

    -
      -
    • Is it sensible to wrap C++ classes with Modula-3 classes?
    • -
    • How to find the wrapping Modula-3 class for a class pointer that is - returned by a C++ routine?
    • -
    • How to deal with multiple inheritance which was neglected for - Modula-3 for good reasons?
    • -
    • Is it possible to sub-class C++ classes with Modula-3 code? This - issue is addressed by directors, a feature that was experimentally - added to some Language modules like Java - and Python.
    • -
    • How to manage storage with the garbage collector of Modula-3? - Support for %newobject and - %typemap(newfree) isn't implemented, yet. What's about - resources that are managed by the garbage collector but shall be passed - back to the storage management of the C++ library? This is a general - issue which is not solved in a satisfying fashion as far as I know.
    • -
    • How to turn C++ exceptions into Modula-3 exceptions? There's also - no support for %exception -, yet.
    • -
    -

    Be warned: There is no C++ library I wrote a SWIG interface for, so - I'm not sure if this is possible or sensible, yet.

    -

    29.3 Preliminaries

    -

    29.3.1 Compilers

    -

    There are different Modula-3 compilers around: cm3, pm3, ezm3, - Klagenfurth Modula-3, Cambridge Modula-3. SWIG itself does not contain - compiler specific code but the modula3.swg library file may do so. For - testing examples I use Critical Mass cm3.

    -

    29.3.2 Additional Commandline Options -

    -

    There are some experimental command line options that prevent SWIG - from generating interface files. Instead files are emitted that may - assist you when writing SWIG interface files.

    - - - - - -
    Modula-3 specific optionsDescription
    -generateconst <file> Disable generation - of interfaces and wrappers. Instead write code for computing numeric - values of constants to the specified file. -
    C code may contain several constant definitions written as - preprocessor macros. Other language modules of SWIG use - compute-once-use-readonly variables or functions to wrap such - definitions. All of them can invoke C code dynamically for computing - the macro values. But if one wants to turn them into Modula-3 integer - constants, enumerations or set types, the values of these expressions - has to be known statically. Although definitions like (1 << - FLAG_MAXIMIZEWINDOW) must be considered as good C style they are - hard to convert to Modula-3 since the value computation can use every - feature of C. -
    Thus I implemented these switch to extract all constant definitions - and write a C program that output the values of them. It works for - numeric constants only and treats all of them as double. - Future versions may generate a C++ program that can detect the type of - the macros by overloaded output functions. Then strings can also be - processed.
    -generaterename <file> Disable generation - of interfaces and wrappers. Instead generate suggestions for -%rename. -
    C libraries use a naming style that is neither homogeneous nor - similar to that of Modula-3. C function names often contain a prefix - denoting the library and some name components separated by underscores - or capitalization changes. To get library interfaces that are really - Modula-3 like you should rename the function names with the %rename - directive. This switch outputs a list of such directives with a name - suggestion generated by a simple heuristic.
    -generatetypemap <file> Disable generation - of interfaces and wrappers. Instead generate templates for some basic - typemaps.
    -

    29.4 Modula-3 typemaps

    -

    29.4.1 Inputs and outputs

    -

    Each C procedure has a bunch of inputs and outputs. Inputs are - passed as function arguments, outputs are updated referential arguments - and the function value.

    -

    Each C type can have several typemaps that apply only in case if a - type is used for an input argument, for an output argument, or for a - return value. A further typemap may specify the direction that is used - for certain parameters. I have chosen this separation in order to be - able to write general typemaps for the modula3.swg typemap library. In - the library code the final usage of the type is not known. Using - separate typemaps for each possible use allows appropriate definitions - for each case. If these pre-definitions are fine then the direction of - the function parameter is the only hint the user must give.

    -

    The typemaps specific to Modula-3 have a common name scheme: A - typemap name starts with "m3", followed by "raw" or "wrap" depending on - whether it controls the generation of the ModuleRaw.i3 or the - Module.i3, respectively. It follows an "in" for typemaps - applied to input argument, "out" for output arguments, "arg" for all - kind of arguments, "ret" for returned values.

    -

    The main task of SWIG is to build wrapper function, i.e. functions - that convert values between C and Modula-3 and call the corresponding C - function. Modula-3 wrapper functions generated by SWIG consist of the - following parts:

    -
      -
    • Generate PROCEDURE signature.
    • -
    • Declare local variables.
    • -
    • Convert input values from Modula-3 to C.
    • -
    • Check for input value integrity.
    • -
    • Call the C function.
    • -
    • Check returned values, e.g. error codes.
    • -
    • Convert and write back values into Modula-3 records.
    • -
    • Free temporary storage.
    • -
    • Return values.
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypemapExampleDescription
    m3wrapargvar$1: INTEGER := $1_name; - Declaration of some variables needed for temporary results.
    m3wrapargconst$1 = "$1_name"; - Declaration of some constant, maybe for debug purposes.
    m3wrapargrawORD($1_name) The - expression that should be passed as argument to the raw Modula-3 - interface function.
    m3wrapargdirout Referential arguments - can be used for input, output, update. ???
    m3wrapinmodeREADONLY One of Modula-3 - parameter modes VALUE (or empty), VAR, READONLY -
    m3wrapinname New name of the input argument.
    m3wrapintype Modula-3 type of the input - argument.
    m3wrapindefault Default value of the input - argument
    m3wrapinconv$1 := M3toC.SharedTtoS($1_name); - Statement for converting the Modula-3 input value to C compliant value.
    m3wrapincheckIF Text.Length($1_name) > 10 THEN - RAISE E("str too long"); END; Check the integrity of the - input value.
    m3wrapoutname Name of the RECORD - field to be used for returning multiple values. This applies to - referential output arguments that shall be turned into return values.
    m3wrapouttype Type of the value that is - returned instead of a referential output argument.
    m3wrapoutconv
    m3wrapoutcheck
    m3wrapretraw
    m3wrapretname
    m3wraprettype
    m3wrapretvar
    m3wrapretconv
    m3wrapretcheck
    m3wrapfreeargM3toC.FreeSharedS(str, arg1); - Free resources that were temporarily used in the wrapper. Since this - step should never be skipped, SWIG will put it in the FINALLY - branch of a TRY .. FINALLY structure.
    -

    29.4.2 Subranges, Enumerations, Sets

    -

    Subranges, enumerations, and sets are machine oriented types that - make Modula very strong and expressive compared with the type systems - of many other languages.

    -
      -
    • Subranges are used for statically restricted choices of integers.
    • -
    • Enumerations are used for named choices.
    • -
    • Sets are commonly used for flag (option) sets.
    • -
    -

    Using them extensively makes Modula code very safe and readable.

    -

    C supports enumerations, too, but they are not as safe as the ones - of Modula. Thus they are abused for many things: For named choices, for - integer constant definitions, for sets. To make it complete every way - of defining a value in C (#define, const int, -enum) is somewhere used for defining something that must be handled - completely different in Modula-3 (INTEGER, enumeration, -SET).

    -

    I played around with several %features and %pragma -s that split the task up into converting the C bit patterns (integer or - bit set) into Modula-3 bit patterns (integer or bit set) and change the - type as requested. See the corresponding example in the - Examples/modula3/enum/example.i file. This is quite messy and not - satisfying. So the best what you can currently do is to rewrite - constant definitions manually. Though this is a tedious work that I'd - like to automate.

    -

    29.4.3 Objects

    -

    Declarations of C++ classes are mapped to OBJECT types - while it is tried to retain the access hierarchy "public - protected - - private" using partial revelation. Though the example in - Examples/modula3/class/example.i is not really useful, yet.

    -

    29.4.4 Imports

    -

    Pieces of Modula-3 code provided by typemaps may contain identifiers - from foreign modules. If the typemap m3wrapinconv for blah - * contains code using the function M3toC.SharedTtoS you - may declare %typemap("m3wrapinconv:import") blah * %{M3toC%}. - Then the module M3toC is imported if the m3wrapinconv - typemap for blah * is used at least once. Use -%typemap("m3wrapinconv:import") blah * %{MyConversions AS M3toC%} - if you need module renaming. Unqualified import is not supported.

    -

    It is cumbersome to add this typemap to each piece of Modula-3 code. - It is especially useful when writing general typemaps for the - modula3.swg typemap library. For a monolithic module you might be - better off if you add the imports directly:

    -
    -
    -%insert(m3rawintf) %{
    -IMPORT M3toC;
    -%}
    -
    -
    -

    29.4.5 Exceptions

    -

    Modula-3 provides another possibility of an output of a function: - exceptions.

    -

    Any piece of Modula-3 code that SWIG inserts due to a typemap can - raise an exception. This way you can also convert an error code from a - C function into a Modula-3 exception.

    -

    The RAISES clause is controlled by typemaps with the -throws extension. If the typemap m3wrapinconv for blah - * contains code that may raise the exceptions OSError.E - you should declare %typemap("m3wrapinconv:throws") blah * - %{OSError.E%}.

    -

    29.4.6 Example

    -

    The generation of wrappers in Modula-3 needs very fine control to - take advantage of the language features. Here is an example of a - generated wrapper where almost everything is generated by a typemap:

    -
    -
    -         (* %relabel  m3wrapinmode m3wrapinname m3wrapintype  m3wrapindefault *)
    -  PROCEDURE Name     (READONLY       str       :    TEXT    :=      ""       )
    -              (* m3wrapoutcheck:throws *)
    -     : NameResult RAISES {E} =
    -    CONST
    -      arg1name = "str";                  (* m3wrapargconst *)
    -    VAR
    -      arg0   : C.char_star;              (* m3wrapretvar *)
    -      arg1   : C.char_star;              (* m3wrapargvar *)
    -      arg2   : C.int;
    -      result : RECORD
    -           (*m3wrapretname  m3wraprettype*)
    -                 unixPath : TEXT;
    -           (*m3wrapoutname  m3wrapouttype*)
    -                 checksum : CARDINAL;
    -               END;
    -    BEGIN
    -      TRY
    -        arg1 := M3toC.SharedTtoS(str);   (* m3wrapinconv *)
    -        IF Text.Length(arg1) > 10 THEN   (* m3wrapincheck *)
    -          RAISE E("str too long");
    -        END;
    - (* m3wrapretraw           m3wrapargraw *)
    -        arg0 := MessyToUnix  (arg1,   arg2);
    -        result.unixPath := M3toC.CopyStoT(arg0);  (* m3wrapretconv *)
    -        result.checksum := arg2;         (* m3wrapoutconv *)
    -        IF result.checksum = 0 THEN      (* m3wrapoutcheck *)
    -          RAISE E("invalid checksum");
    -        END;
    -      FINALLY
    -        M3toC.FreeSharedS(str, arg1);     (* m3wrapfreearg *)
    -      END;
    -    END Name;
    -
    -
    -

    29.5 More hints to the generator

    -

    29.5.1 Features

    - - - - -
    FeatureExampleDescription
    multiretval%m3multiretval get_box; or -%feature("modula3:multiretval") get_box;Let the denoted - function return a RECORD rather than a plain value. This -RECORD contains all arguments with "out" direction including the - return value of the C function (if there is one). If more than one - argument is "out" then the function must have the -multiretval feature activated, but it is explicitly requested from - the user to prevent mistakes.
    constnumeric%constnumeric(12) twelve; or -%feature("constnumeric", "12") twelve;This feature can be - used to tell Modula-3's back-end of SWIG the value of an identifier. - This is necessary in the cases where it was defined by a non-trivial C - expression. This feature is used by the -generateconst -option. In future it may be generalized to other kind of values such - as strings.
    -

    29.5.2 Pragmas

    - - - - -
    PragmaExampleDescription
    unsafe%pragma(modula3) unsafe="true"; -Mark the raw interface modules as UNSAFE. This will be - necessary in many cases.
    library%pragma(modula3) library="m3fftw"; -Specifies the library name for the wrapper library to be created. It - should be distinct from the name of the library to be wrapped.
    -

    29.6 Remarks

    -
      -
    • The Modula-3 part of SWIG doesn't try to generate nicely formatted - code. If you need to read the generated code, use m3pp to - postprocess the Modula files.
    • -
    -
    -

    30 SWIG and MzScheme/Racket

    - - - - -

    This section contains information on SWIG's support of Racket, - formally known as MzScheme.

    -

    30.1 Creating native structures

    -

    Example interface file:

    -
    -
    -/* define a macro for the struct creation */
    -%define handle_ptr(TYPE, NAME)
    -%typemap(argout) TYPE *NAME{
    -  Scheme_Object *o = SWIG_NewStructFromPtr($1, $*1_mangle);
    -  SWIG_APPEND_VALUE(o);
    -}
    -
    -%typemap(in, numinputs=0) TYPE *NAME (TYPE temp) {
    -  $1 = &temp;
    -}
    -%enddef
    -
    -/* setup the typemaps for the pointer to an output parameter cntrs */
    -handle_ptr(struct diag_cntrs, cntrs);
    -
    -
    -

    Then in scheme, you can use regular struct access procedures like

    -
    -
    -        ; suppose a function created a struct foo as
    -        ; (define foo (make-diag-cntrs (#x1 #x2 #x3) (make-inspector))
    -        ; Then you can do
    -        (format "0x~x" (diag-cntrs-field1 foo))
    -        (format "0x~x" (diag-cntrs-field2 foo))
    -        ;etc...
    -
    -
    -

    30.2 Simple example

    -

    A few examples are available in the Examples/mzscheme directory. The - code and log of a session using SWIG below should help getting started.

    -

    C header file:

    -
    -
    -// example.h
    -int fact(int n);
    -
    -
    -

    C source code:

    -
    -
    -// File: example.c
    -#include "example.h"
    -
    -int fact(int n) {
    -  if (n < 0) { /* This should probably return an error, but this is simpler */
    -    return 0;
    -  }
    -  if (n == 0) {
    -    return 1;
    -  }
    -  else {
    -    /* testing for overflow would be a good idea here */
    -    return n * fact(n-1);
    -  }
    -}
    -
    -
    -

    SWIG interface file:

    -
    -
    -/* File: example.i */
    -%module example
    -
    -%{
    -#include "example.h"
    -%}
    -
    -int fact(int n);
    -
    -
    -

    The session below using the above files is on an OS X machine, but - the points to be made are more general. On OS X, libtool is the tool - which creates libraries, which are named .dylib, rather than .so on - other unixes, or .dll on Windows.

    -
    -
    -% swig -mzscheme -declaremodule example.i
    -% gcc -c -m32 -o example.o example.c # force 32-bit object file (mzscheme is 32-bit only)
    -% libtool -dynamic -o libexample.dylib example.o # make it into a library
    -% ls # what've we got so far?
    -example.c example.o
    -example.h example_wrap.c
    -example.i libexample.dylib*
    -% mzc --cgc --cc example_wrap.c # compile the wrapping code
    -% LDFLAGS="-L. -lexample" mzc --ld example_wrap.dylib example_wrap.o # ...and link it
    -% mzscheme -e '(path->string (build-path "compiled" "native" (system-library-subpath)))'
    -"compiled/native/i386-macosx/3m"
    -% mkdir -p compiled/native/i386-macosx/3m # move the extension library to a magic place
    -% mv example_wrap.dylib compiled/native/i386-macosx/3m/example_ss.dylib
    -% mzscheme
    -Welcome to MzScheme v4.2.4 [3m], Copyright (c) 2004-2010 PLT Scheme Inc.
    -> (require "example.ss")
    -> (fact 5)
    -120
    -> ^D
    -% echo 'It works!'
    -
    -
    -

    Some points of interest:

    -
      -
    • This is on a 64-bit machine, so we have to include the -m32 option - when building the object file
    • -
    • If you want to declare a scheme module (and you probably do), it's - important that you include the -declaremodule option to swig (if you - miss this out, it'll appear to work, but fail later).
    • -
    • Use mzc to compile and then link the wrapped code. You'll probably - need to adjust the link flags to refer to the library you're wrapping - (you can either do this with an LDFLAGS declaration, as here, or with - multiple ++ldf options to mzc).
    • -
    • Create the directory with path (build-path "compiled" "native" - (system-library-subpath)) and move the freshly-generated .dylib to - there, changing its name to module-name_ss.dylib. After that, you can - REQUIRE the new module with (require "module-name.ss").
    • -
    • The above requests mzc to create an extension using the CGC - garbage-collector. The alternative -- the 3m collector -- has generally - better performance, but work is still required for SWIG to emit code - which is compatible with it.
    • -
    -

    30.3 External documentation

    -

    See the C - API for more description of using the mechanism for adding - extensions. The main documentation is -here.

    -

    Tip: mzc's --vv option is very useful for debugging the inevitable - library problems you'll encounter.

    -
    -

    31 SWIG and Ocaml

    - - - - -

    This chapter describes SWIG's support of Ocaml.

    -

    Ocaml is a relatively recent addition to the ML family, and is a - recent addition to SWIG. It's the second compiled, typed language to be - added. Ocaml has widely acknowledged benefits for engineers, mostly - derived from a sophisticated type system, compile-time checking which - eliminates several classes of common programming errors, and good - native performance. While all of this is wonderful, there are - well-written C and C++ libraries that Ocaml users will want to take - advantage of as part of their arsenal (such as SSL and gdbm), as well - as their own mature C and C++ code. SWIG allows this code to be used in - a natural, type-safe way with Ocaml, by providing the necessary, but - repetitive glue code which creates and uses Ocaml values to communicate - with C and C++ code. In addition, SWIG also produces the needed Ocaml - source that binds variants, functions, classes, etc.

    -

    If you're not familiar with the Objective Caml language, you can - visit The Ocaml Website.

    -

    31.1 Preliminaries

    -

    SWIG 3.0 works with Ocaml 3.08.3 and above. Given the choice, you - should use the latest stable release. The SWIG Ocaml module has been - tested on Linux (x86, PPC, Sparc) and Cygwin on Windows. The best way - to determine whether your system will work is to compile the examples - and test-suite which come with SWIG. You can do this by running -make check from the SWIG root directory after installing SWIG. The - Ocaml module has been tested using the system's dynamic linking (the - usual -lxxx against libxxx.so, as well as with Gerd Stolpmann's -Dl package. The ocaml_dynamic and ocaml_dynamic_cpp targets in the - file Examples/Makefile illustrate how to compile and link SWIG modules - that will be loaded dynamically. This has only been tested on Linux so - far.

    -

    31.1.1 Running SWIG

    -

    The basics of getting a SWIG Ocaml module up and running can be seen - from one of SWIG's example Makefiles, but is also described here. To - build an Ocaml module, run SWIG using the -ocaml option.

    -
    -
    -%swig -ocaml example.i
    -
    -
    -

    This will produce 3 files. The file example_wrap.c contains - all of the C code needed to build an Ocaml module. To build the module, - you will compile the file example_wrap.c with ocamlc - or ocamlopt to create the needed .o file. You will need to - compile the resulting .ml and .mli files as well, and do the final link - with -custom (not needed for native link).

    -

    31.1.2 Compiling the code

    -

    The OCaml SWIG module now requires you to compile a module (Swig -) separately. In addition to aggregating common SWIG functionality, the - Swig module contains the data structure that represents C/C++ values. - This allows easier data sharing between modules if two or more are - combined, because the type of each SWIG'ed module's c_obj is derived - from Swig.c_obj_t. This also allows SWIG to acquire new conversions - painlessly, as well as giving the user more freedom with respect to - custom typing. Use ocamlc or ocamlopt to compile your - SWIG interface like:

    -
    -
    -% swig -ocaml -co swig.mli ; swig -ocaml co swig.ml
    -% ocamlc -c swig.mli ; ocamlc -c swig.ml
    -% ocamlc -c -ccopt "-I/usr/include/foo" example_wrap.c
    -% ocamlc -c example.mli
    -% ocamlc -c example.ml
    -
    -
    -

    ocamlc is aware of .c files and knows how to handle them. - Unfortunately, it does not know about .cxx, .cc, or .cpp files, so when - SWIG is invoked in C++ mode, you must:

    -
    -
    -% cp example_wrap.cxx example_wrap.cxx.c
    -% ocamlc -c ... -ccopt -xc++ example_wrap.cxx.c
    -% ...
    -
    -
    -

    31.1.3 The camlp4 module

    -

    The camlp4 module (swigp4.ml -> swigp4.cmo) contains a simple - rewriter which makes C++ code blend more seamlessly with objective caml - code. Its use is optional, but encouraged. The source file is included - in the Lib/ocaml directory of the SWIG source distribution. You can - checkout this file with "swig -ocaml -co swigp4.ml". You - should compile the file with "ocamlc -I `camlp4 -where` -pp - 'camlp4o pa_extend.cmo q_MLast.cmo' -c swigp4.ml"

    -

    The basic principle of the module is to recognize certain non-caml - expressions and convert them for use with C++ code as interfaced by - SWIG. The camlp4 module is written to work with generated SWIG - interfaces, and probably isn't great to use with anything else.

    -

    Here are the main rewriting rules:

    - - - - - - - - - - - - - -
    InputRewritten to
    f'( ... ) as in -
    atoi'("0") or -
    _exit'(0)
    f(C_list [ ... ]) as in -
    atoi (C_list [ C_string "0" ]) or -
    _exit (C_list [ C_int 0 ])
    object -> method ( ... )(invoke object) "method" - (C_list [ ... ])
    object 'binop argument as in -
    a '+= b
    (invoke object) "+=" argument as in -
    (invoke a) "+=" b
    Note that because camlp4 always recognizes << and - >>, they are replaced by lsl and lsr in operator names.
    'unop object as in -
    '! a
    (invoke a) "!" C_void
    Smart pointer access like this -
    object '-> method ( args ) -
    (invoke (invoke object "->" C_void))
    Invoke syntax -
    object . '( ... )
    (invoke object) "()" (C_list [ ... ])
    Array syntax -
    object '[ 10 ]
    (invoke object) "[]" (C_int 10)
    Assignment syntax -
    let a = '10 and b = '"foo" and c = '1.0 and d = 'true
    let - a = C_int 10 and b = C_string "foo" and c = C_double 1.0 and d = C_bool - true
    Cast syntax -
    let a = _atoi '("2") as int -
    let b = (getenv "PATH") to string -
    This works for int, string, float, bool
    let a = get_int - (_atoi (C_string "2")) -
    let b = C_string (getenv "PATH")
    -

    31.1.4 Using your module

    -

    You can test-drive your module by building a toplevel ocaml - interpreter. Consult the ocaml manual for details.

    -

    When linking any ocaml bytecode with your module, use the -custom - option to build your functions into the primitive list. This option is - not needed when you build native code.

    -

    31.1.5 Compilation problems and compiling with - C++

    -

    As mentioned above, .cxx files need special handling to be compiled - with ocamlc. Other than that, C code that uses class - as a non-keyword, and C code that is too liberal with pointer types may - not compile under the C++ compiler. Most code meant to be compiled as - C++ will not have problems.

    -

    31.2 The low-level Ocaml/C interface

    -

    In order to provide access to overloaded functions, and provide - sensible outputs from them, all C entities are represented as members - of the c_obj type:

    -

    In the code as seen by the typemap writer, there is a value, - swig_result, that always contains the current return data. It is a - list, and must be appended with the caml_list_append function, or with - functions and macros provided by objective caml.

    -
    -
    -type c_obj =
    -    C_void
    -  | C_bool of bool
    -  | C_char of char
    -  | C_uchar of char
    -  | C_short of int
    -  | C_ushort of int
    -  | C_int of int
    -  | C_uint of int32
    -  | C_int32 of int32
    -  | C_int64 of int64
    -  | C_float of float
    -  | C_double of float
    -  | C_ptr of int64 * int64
    -  | C_array of c_obj array
    -  | C_list of c_obj list
    -  | C_obj of (string -> c_obj -> c_obj)
    -  | C_string of string
    -  | C_enum of c_enum_t
    -
    -
    -

    A few functions exist which generate and return these:

    -
      -
    • caml_ptr_val receives a c_obj and returns a void *. This should be - used for all pointer purposes.
    • -
    • caml_long_val receives a c_obj and returns a long. This should be - used for most integral purposes.
    • -
    • caml_val_ptr receives a void * and returns a c_obj.
    • -
    • caml_val_bool receives a C int and returns a c_obj representing its - bool value.
    • -
    • caml_val_(u)?(char|short|int|long|float|double) receives an - appropriate C value and returns a c_obj representing it.
    • -
    • caml_val_string receives a char * and returns a string value.
    • -
    • caml_val_string_len receives a char * and a length and returns a - string value.
    • -
    • caml_val_obj receives a void * and an object type and returns a - C_obj, which contains a closure giving method access.
    • -
    -

    Because of this style, a typemap can return any kind of value it - wants from a function. This enables out typemaps and inout typemaps to - work well. The one thing to remember about outputting values is that - you must append them to the return list with swig_result = - caml_list_append(swig_result, v).

    -

    This function will return a new list that has your element appended. - Upon return to caml space, the fnhelper function beautifies the result. - A list containing a single item degrades to only that item (i.e. [ - C_int 3 ] -> C_int 3), and a list containing more than one item is - wrapped in C_list (i.e. [ C_char 'a' ; C_char 'b' -> C_list [ C_char - 'a' ; C_char b ]). This is in order to make return values easier to - handle when functions have only one return value, such as constructors, - and operators. In addition, string, pointer, and object values are - interchangeable with respect to caml_ptr_val, so you can allocate - memory as caml strings and still use the resulting pointers for C - purposes, even using them to construct simple objects on. Note, though, - that foreign C++ code does not respect the garbage collector, although - the SWIG interface does.

    -

    The wild card type that you can use in lots of different ways is - C_obj. It allows you to wrap any type of thing you like as an object - using the same mechanism that the ocaml module does. When evaluated in - caml_ptr_val, the returned value is the result of a call to the - object's "&" operator, taken as a pointer.

    -

    You should only construct values using objective caml, or using the - functions caml_val_* functions provided as static functions to a SWIG - ocaml module, as well as the caml_list_* functions. These functions - provide everything a typemap needs to produce values. In addition, - value items pass through directly, but you must make your own type - signature for a function that uses value in this way.

    -

    31.2.1 The generated module

    -

    The SWIG %module directive specifies the name of the Ocaml - module to be generated. If you specified `%module example', - then your Ocaml code will be accessible in the module Example. The - module name is always capitalized as is the ocaml convention. Note that - you must not use any Ocaml keyword to name your module. Remember that - the keywords are not the same as the C++ ones.

    -

    You can introduce extra code into the output wherever you like with - SWIG. These are the places you can introduce code:

    - - - - - - - -
    "header"This code is inserted near the beginning of the - C wrapper file, before any function definitions.
    "wrapper"This code is inserted in the function - definition section.
    "runtime"This code is inserted near the end of the C - wrapper file.
    "mli"This code is inserted into the caml interface - file. Special signatures should be inserted here.
    "ml"This code is inserted in the caml code defining the - interface to your C code. Special caml code, as well as any - initialization which should run when the module is loaded may be - inserted here.
    "classtemplate"The "classtemplate" place is special - because it describes the output SWIG will generate for class - definitions.
    -

    31.2.2 Enums

    -

    SWIG will wrap enumerations as polymorphic variants in the output - Ocaml code, as above in C_enum. In order to support all C++-style uses - of enums, the function int_to_enum and enum_to_int are provided for - ocaml code to produce and consume these values as integers. Other than - that, correct uses of enums will not have a problem. Since enum labels - may overlap between enums, the enum_to_int and int_to_enum functions - take an enum type label as an argument. Example:

    -
    -
    -%module enum_test
    -%{
    -enum c_enum_type { a = 1, b, c = 4, d = 8 };
    -%}
    -enum c_enum_type { a = 1, b, c = 4, d = 8 };
    -
    -
    -

    The output mli contains:

    -
    -
    -type c_enum_type = [
    -  `unknown
    -| `c_enum_type
    -]
    -type c_enum_tag = [
    -  `int of int
    -| `a
    -| `b
    -| `c
    -| `d
    -]
    -val int_to_enum c_enum_type -> int -> c_obj
    -val enum_to_int c_enum_type -> c_obj -> c_obj
    -
    -
    -

    So it's possible to do this:

    -
    -
    -bash-2.05a$ ocamlmktop -custom enum_test_wrap.o enum_test.cmo -o enum_test_top
    -bash-2.05a$ ./enum_test_top
    -        Objective Caml version 3.04
    -
    -# open Enum_test ;;
    -# let x = C_enum `a ;;
    -val x : Enum_test.c_obj = C_enum `a
    -# enum_to_int `c_enum_type x ;;
    -- : Enum_test.c_obj = C_int 1
    -# int_to_enum `c_enum_type 4 ;;
    -- : Enum_test.c_obj = C_enum `c
    -
    -
    -

    31.2.2.1 Enum typing in Ocaml

    -

    The ocaml SWIG module now has support for loading and using multiple - SWIG modules at the same time. This enhances modularity, but presents - problems when used with a language which assumes that each module's - types are complete at compile time. In order to achieve total soundness - enum types are now isolated per-module. The type issue matters when - values are shared between functions imported from different modules. - You must convert values to master values using the swig_val function - before sharing them with another module.

    -

    31.2.3 Arrays

    -

    31.2.3.1 Simple types of bounded arrays

    -

    SWIG has support for array types, but you generally will need to - provide a typemap to handle them. You can currently roll your own, or - expand some of the macros provided (but not included by default) with - the SWIG distribution.

    -

    By including "carray.i", you will get access to some macros that - help you create typemaps for array types fairly easily.

    -

    %make_simple_array_typemap is the easiest way to get access - to arrays of simple types with known bounds in your code, but this only - works for arrays whose bounds are completely specified.

    -

    31.2.3.2 Complex and unbounded arrays

    -

    Unfortunately, unbounded arrays and pointers can't be handled in a - completely general way by SWIG, because the end-condition of such an - array can't be predicted. In some cases, it will be by consent (e.g. an - array of four or more chars), sometimes by explicit length (char - *buffer, int len), and sometimes by sentinel value (0, -1, etc.). SWIG - can't predict which of these methods will be used in the array, so you - have to specify it for yourself in the form of a typemap.

    -

    31.2.3.3 Using an object

    -

    It's possible to use C++ to your advantage by creating a simple - object that provides access to your array. This may be more desirable - in some cases, since the object can provide bounds checking, etc., that - prevents crashes.

    -

    Consider writing an object when the ending condition of your array - is complex, such as using a required sentinel, etc.

    -

    31.2.3.4 Example typemap for a function taking - float * and int

    -

    This is a simple example in typemap for an array of float, - where the length of the array is specified as an extra parameter. Other - such typemaps will work similarly. In the example, the function - printfloats is called with a float array, and specified length. The - actual length reported in the len argument is the length of the array - passed from ocaml, making passing an array into this type of function - convenient.

    - - - - - -
    -
    tarray.i
    -
    -
    -%module tarray
    -%{
    -#include <stdio.h>
    -
    -void printfloats( float *tab, int len ) {
    -  int i;
    -
    -  for( i = 0; i < len; i++ ) {
    -    printf( "%f ", tab[i] );
    -  }
    -
    -  printf( "\n" );
    -}
    -%}
    -
    -%typemap(in) (float *tab, int len) {
    -  int i;
    -  /* $*1_type */
    -  $2 = caml_array_len($input);
    -  $1 = ($*1_type *)malloc( $2 * sizeof( float ) );
    -  for( i = 0; i < $2; i++ ) {
    -    $1[i] = caml_double_val(caml_array_nth($input, i));
    -  }
    -}
    -
    -void printfloats( float *tab, int len );
    -
    -
    Sample Run
    -
    -# open Tarray ;;
    -# _printfloats (C_array [| C_double 1.0 ; C_double 3.0 ; C_double 5.6666 |]) ;;
    -1.000000 3.000000 5.666600
    -- : Tarray.c_obj = C_void
    -
    -
    -

    31.2.4 C++ Classes

    -

    C++ classes, along with structs and unions are represented by C_obj - (string -> c_obj -> c_obj) wrapped closures. These objects contain a - method list, and a type, which allow them to be used like C++ objects. - When passed into typemaps that use pointers, they degrade to pointers - through their "&" method. Every method an object has is represented as - a string in the object's method table, and each method table exists in - memory only once. In addition to any other operators an object might - have, certain builtin ones are provided by SWIG: (all of these take no - arguments (C_void))

    - - - - - - - - - -
    "~"Delete this object
    "&"Return an ordinary C_ptr value representing this - object's address
    "sizeof"If enabled with ("sizeof"="1") on the module - node, return the object's size in char.
    ":methods"Returns a list of strings containing the - names of the methods this object contains
    ":classof"Returns the name of the class this object - belongs to.
    ":parents"Returns a list of all direct parent classes - which have been wrapped by SWIG.
    "::[parent-class]"Returns a view of the object as the - indicated parent class. This is mainly used internally by the SWIG - module, but may be useful to client programs.
    "[member-variable]"Each member variable is wrapped as a - method with an optional parameter. Called with one argument, the member - variable is set to the value of the argument. With zero arguments, the - value is returned.
    -

    Note that this string belongs to the wrapper object, and not the - underlying pointer, so using create_[x]_from_ptr alters the returned - value for the same object.

    -

    31.2.4.1 STL vector and string Example

    -

    Standard typemaps are now provided for STL vector and string. More - are in the works. STL strings are passed just like normal strings, and - returned as strings. STL string references don't mutate the original - string, (which might be surprising), because Ocaml strings are mutable - but have fixed length. Instead, use multiple returns, as in the - argout_ref example.

    - - - - -
    -
    example.i
    -
    -
    -%module example
    -%{
    -#include "example.h"
    -%}
    -
    -%include <stl.i>
    -
    -namespace std {
    -  %template(StringVector) std::vector < string >;
    -};
    -
    -%include "example.h"
    -
    -
    This example is in Examples/ocaml/stl -
    -

    Since there's a makefile in that directory, the example is easy to - build.

    -

    Here's a sample transcript of an interactive session using a string - vector after making a toplevel (make toplevel). This example uses the - camlp4 module.

    -
    -
    -bash-2.05a$ ./example_top
    -        Objective Caml version 3.06
    -
    -        Camlp4 Parsing version 3.06
    -
    -# open Swig ;;
    -# open Example ;;
    -# let x = new_StringVector '() ;;
    -val x : Example.c_obj = C_obj <fun>
    -# x -> ":methods" () ;;
    -- : Example.c_obj =
    -C_list
    - [C_string "nop"; C_string "size"; C_string "empty"; C_string "clear";
    -  C_string "push_back"; C_string "[]"; C_string "="; C_string "set";
    -  C_string "~"; C_string "&"; C_string ":parents"; C_string ":classof";
    -  C_string ":methods"]
    -# x -> push_back ("foo") ;;
    -- : Example.c_obj = C_void
    -# x -> push_back ("bar") ;;
    -- : Example.c_obj = C_void
    -# x -> push_back ("baz") ;;
    -- : Example.c_obj = C_void
    -# x '[1] ;;
    -- : Example.c_obj = C_string "bar"
    -# x -> set (1, "spam") ;;
    -- : Example.c_obj = C_void
    -# x '[1] ;;
    -- : Example.c_obj = C_string "spam"
    -# for i = 0 to (x -> size() as int) - 1 do
    -    print_endline ((x '[i to int]) as string)
    -  done ;;
    -foo
    -bar
    -baz
    -- : unit = ()
    -#
    -
    -
    -

    31.2.4.2 C++ Class Example

    -

    Here's a simple example using Trolltech's Qt Library:

    - - - -
    -
    qt.i
    -
    -
    -%module qt
    -%{
    -#include <qapplication.h>
    -#include <qpushbutton.h>
    -%}
    -class QApplication {
    -public:
    -  QApplication( int argc, char **argv );
    -  void setMainWidget( QWidget *widget );
    -  void exec();
    -};
    -
    -class QPushButton {
    -public:
    -  QPushButton( char *str, QWidget *w );
    -  void resize( int x, int y );
    -  void show();
    -};
    -
    -
    -

    31.2.4.3 Compiling the example

    -
    -
    -bash-2.05a$ QTPATH=/your/qt/path
    -bash-2.05a$ for file in swig.mli swig.ml swigp4.ml ; do swig -ocaml -co $file ; done
    -bash-2.05a$ ocamlc -c swig.mli ; ocamlc -c swig.ml
    -bash-2.05a$ ocamlc -I `camlp4 -where` -pp "camlp4o pa_extend.cmo q_MLast.cmo" -c swigp4.ml
    -bash-2.05a$ swig -ocaml -c++ -I$QTPATH/include qt.i
    -bash-2.05a$ mv qt_wrap.cxx qt_wrap.c
    -bash-2.05a$ ocamlc -c -ccopt -xc++ -ccopt -g -g -ccopt -I$QTPATH/include qt_wrap.c
    -bash-2.05a$ ocamlc -c qt.mli
    -bash-2.05a$ ocamlc -c qt.ml
    -bash-2.05a$ ocamlmktop -custom swig.cmo -I `camlp4 -where` \
    -  camlp4o.cma swigp4.cmo qt_wrap.o qt.cmo -o qt_top -cclib \
    -  -L$QTPATH/lib -cclib -lqt
    -
    -
    -

    31.2.4.4 Sample Session

    -
    -
    -bash-2.05a$ ./qt_top
    -        Objective Caml version 3.06
    -
    -        Camlp4 Parsing version 3.06
    -
    -# open Swig ;;
    -# open Qt ;;
    -# let a = new_QApplication '(0, 0) ;;
    -val a : Qt.c_obj = C_obj <fun>
    -# let hello = new_QPushButton '("hi", 0) ;;
    -val hello : Qt.c_obj = C_obj <fun>
    -# hello -> resize (100, 30) ;;
    -- : Qt.c_obj = C_void
    -# hello -> show () ;;
    -- : Qt.c_obj = C_void
    -# a -> exec () ;;
    -
    -
    -

    Assuming you have a working installation of QT, you will see a - window containing the string "hi" in a button.

    -

    31.2.5 Director Classes

    -

    31.2.5.1 Director Introduction

    -

    Director classes are classes which allow Ocaml code to override the - public methods of a C++ object. This facility allows the user to use - C++ libraries that require a derived class to provide application - specific functionality in the context of an application or utility - framework.

    -

    You can turn on director classes by using an optional module - argument like this:

    -
    -
    -%module(directors="1")
    -
    -...
    -
    -// Turn on the director class for a specific class like this:
    -%feature("director")
    -class foo {
    -  ...
    -};
    -
    -
    -

    31.2.5.2 Overriding Methods in Ocaml

    -

    Because the Ocaml language module treats C++ method calls as calls - to a certain function, all you need to do is to define the function - that will handle the method calls in terms of the public methods of the - object, and any other relevant information. The function -new_derived_object uses a stub class to call your methods in place - of the ones provided by the underlying implementation. The object you - receive is the underlying object, so you are free to call any methods - you want from within your derived method. Note that calls to the - underlying object do not invoke Ocaml code. You need to handle that - yourself.

    -

    new_derived_object receives your function, the function - that creates the underlying object, and any constructor arguments, and - provides an object that you can use in any usual way. When C++ code - calls one of the object's methods, the object invokes the Ocaml - function as if it had been invoked from Ocaml, allowing any method - definitions to override the C++ ones.

    -

    In this example, I'll examine the objective caml code involved in - providing an overloaded class. This example is contained in - Examples/ocaml/shapes.

    -

    31.2.5.3 Director Usage Example

    - - - -
    -
    example_prog.ml
    -
    -
    -open Swig
    -open Example
    -
    -...
    -
    -let triangle_class pts ob meth args =
    -  match meth with
    -      "cover" ->
    -        (match args with
    -             C_list [ x_arg ; y_arg ] ->
    -             let xa = x_arg as float
    -             and ya = y_arg as float in
    -               (point_in_triangle pts xa ya) to bool
    -           | _ -> raise (Failure "cover needs two double arguments."))
    -    | _ -> (invoke ob) meth args ;;
    -
    -let triangle =
    -  new_derived_object
    -    new_shape
    -    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.0)))
    -    '() ;;
    -
    -let _ = _draw_shape_coverage '(triangle, C_int 60, C_int 20) ;;
    -
    -
    -

    This is the meat of what you need to do. The actual "class" - definition containing the overloaded method is defined in the function - triangle_class. This is a lot like the class definitions emitted by - SWIG, if you look at example.ml, which is generated when SWIG consumes - example.i. Basically, you are given the arguments as a c_obj and the - method name as a string, and you must intercept the method you are - interested in and provide whatever return value you need. Bear in mind - that the underlying C++ code needs the right return type, or an - exception will be thrown. This exception will generally be Failure, or - NotObject. You must call other ocaml methods that you rely on yourself. - Due to the way directors are implemented, method calls on your object - from with ocaml code will always invoke C++ methods even if they are - overridden in ocaml.

    -

    In the example, the draw_shape_coverage function plots the indicated - number of points as either covered (x) or uncovered ( ) - between 0 and 1 on the X and Y axes. Your shape implementation can - provide any coverage map it likes, as long as it responds to the - "cover" method call with a boolean return (the underlying method - returns bool). This might allow a tricky shape implementation, such as - a boolean combination, to be expressed in a more effortless style in - ocaml, while leaving the "engine" part of the program in C++.

    -

    31.2.5.4 Creating director objects

    -

    The definition of the actual object triangle can be described this - way:

    -
    -
    -let triangle =
    -  new_derived_object
    -    new_shape
    -    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.0)))
    -    '()
    -
    -
    -

    The first argument to new_derived_object, new_shape is the - method which returns a shape instance. This function will be invoked - with the third argument will be appended to the argument list [ C_void - ]. In the example, the actual argument list is sent as (C_list [ C_void - ; C_void ]). The augmented constructor for a director class needs the - first argument to determine whether it is being constructed as a - derived object, or as an object of the indicated type only (in this - case shape). The Second argument is a closure that will be - added to the final C_obj.

    -

    The actual object passed to the self parameter of the director - object will be a C_director_core, containing a c_obj option ref and a - c_obj. The c_obj provided is the same object that will be returned from - new_derived object, that is, the object exposing the overridden - methods. The other part is an option ref that will have its value - extracted before becoming the ob parameter of your class - closure. This ref will contain None if the C++ object - underlying is ever destroyed, and will consequently trigger an - exception when any method is called on the object after that point (the - actual raise is from an inner function used by new_derived_object, and - throws NotObject). This prevents a deleted C++ object from causing a - core dump, as long as the object is destroyed properly.

    -

    31.2.5.5 Typemaps for directors, directorin, - directorout, directorargout

    -

    Special typemaps exist for use with directors, the directorin, - directorout, directorargout are used in place of in, out, - argout typemaps, except that their direction is reversed. They - provide for you to provide argout values, as well as a function return - value in the same way you provide function arguments, and to receive - arguments the same way you normally receive function returns.

    -

    31.2.5.6 typemap

    -

    The directorin typemap is used when you will receive - arguments from a call made by C++ code to you, therefore, values will - be translated from C++ to ocaml. You must provide some valid C_obj - value. This is the value your ocaml code receives when you are called. - In general, a simple directorin typemap can use the same body - as a simple out typemap.

    -

    31.2.5.7 directorout typemap

    -

    The directorout typemap is used when you will send an - argument from your code back to the C++ caller. That is; directorout - specifies a function return conversion. You can usually use the same - body as an in typemap for the same type, except when there are - special requirements for object ownership, etc.

    -

    31.2.5.8 directorargout typemap

    -

    C++ allows function arguments which are by pointer (*) and by - reference (&) to receive a value from the called function, as well as - sending one there. Sometimes, this is the main purpose of the argument - given. directorargout typemaps allow your caml code to emulate - this by specifying additional return values to be put into the output - parameters. The SWIG ocaml module is a bit loose in order to make code - easier to write. In this case, your return to the caller must be a list - containing the normal function return first, followed by any argout - values in order. These argout values will be taken from the list and - assigned to the values to be returned to C++ through directorargout - typemaps. In the event that you don't specify all of the necessary - values, integral values will read zero, and struct or object returns - have undefined results.

    -

    31.2.6 Exceptions

    -

    Catching exceptions is now supported using SWIG's %exception - feature. A simple but not too useful example is provided by the - throw_exception testcase in Examples/test-suite. You can provide your - own exceptions, too.

    -
    -

    32 SWIG and Octave

    - - - - -

    Octave is a high-level language intended for numerical programming +

    Octave is a high-level language intended for numerical programming that is mostly compatible with MATLAB. More information can be found at - Octave web site.

    -

    This chapter is intended to give an introduction to using the + Octave web site.

    +

    This chapter is intended to give an introduction to using the module. You should also read the SWIG documentation that is not specific to Octave. Also, there are a dozen or so examples in the Examples/octave directory, and hundreds in the test suite - (Examples/test-suite and Examples/test-suite/octave).

    -

    32.1 Preliminaries

    -

    SWIG is regularly tested against the following versions of Octave: - 3.8, 4.0, 4.2.

    -

    Every effort is made to maintain backward compatibility with older + (Examples/test-suite and Examples/test-suite/octave).

    +

    29.1 Preliminaries

    +

    SWIG is regularly tested against the following versions of Octave: + 3.8, 4.0, 4.2.

    +

    Every effort is made to maintain backward compatibility with older versions of Octave. This cannot be guaranteed however, as in recent times new Octave releases have required nontrivial updates to SWIG, which may break backward compatibility for older Octave versions - against which SWIG is not regularly tested.

    -

    The SWIG runtime exports the function swig_octave_prereq() - for checking the version of Octave.

    -

    32.2 Running SWIG

    -

    Let's start with a very simple SWIG interface file, example.i:

    -
    -
    + against which SWIG is not regularly tested.

    +

    The SWIG runtime exports the function swig_octave_prereq() + for checking the version of Octave.

    +

    29.2 Running SWIG

    +

    Let's start with a very simple SWIG interface file, example.i:

    +
    +
     %module swigexample
     %{
     #include "example.h"
     %}
     int gcd(int x, int y);
    -extern double Foo; 
    -
    -

    To build an Octave module when wrapping C code, run SWIG using the --octave option:

    -
    -
    $ swig -octave -o example_wrap.cpp example.i 
    -
    -

    The -c++ option is also required when wrapping C++ code:

    -
    -
    $ swig -octave -c++ -o example_wrap.cpp example.i 
    -
    -

    This creates a C++ source file "example_wrap.cpp". A C++ file is +extern double Foo;

    +
    +

    To build an Octave module when wrapping C code, run SWIG using the +-octave option:

    +
    +
    $ swig -octave -o example_wrap.cpp example.i 
    +
    +

    The -c++ option is also required when wrapping C++ code:

    +
    +
    $ swig -octave -c++ -o example_wrap.cpp example.i 
    +
    +

    This creates a C++ source file "example_wrap.cpp". A C++ file is generated even when wrapping C code as Octave is itself written in C++ and requires wrapper code to be in the same language. The generated C++ source file contains the low-level wrappers that need to be compiled and linked with the rest of your C/C++ application (in this case, the - gcd implementation) to create an extension module.

    -

    32.2.1 Command-line options

    -

    The swig command line has a number of options you can use, like to - redirect its output. Use swig -help to learn about these. - Options specific to the Octave module are:

    -
    -
    $ swig -octave -help
    + gcd implementation) to create an extension module.

    +

    29.2.1 Command-line options

    +

    The swig command line has a number of options you can use, like to + redirect its output. Use swig -help to learn about these. + Options specific to the Octave module are:

    +
    +
    $ swig -octave -help
     ...
     Octave Options (available with -octave)
    -     -globals name - Set name used to access C global variables [default: 'cvar']
    +     -globals name - Set name used to access C global variables [default: 'cvar']
                          Use '.' to load C global variables into module namespace
    -     -opprefix str - Prefix str for global operator functions [default: 'op_']
    -
    -
    -

    The -globals option sets the name of the variable which is + -opprefix str - Prefix str for global operator functions [default: 'op_'] +

    +
    +

    The -globals option sets the name of the variable which is the namespace for C global variables exported by the module. The special name "." loads C global variables into the module namespace, - i.e. alongside C functions and structs exported by the module. The - -opprefix options sets the prefix of the names of global/friend -operator functions.

    -

    32.2.2 Compiling a dynamic module

    -

    Octave modules are DLLs/shared objects having the ".oct" suffix. + i.e. alongside C functions and structs exported by the module. The + -opprefix options sets the prefix of the names of global/friend +operator functions.

    +

    29.2.2 Compiling a dynamic module

    +

    Octave modules are DLLs/shared objects having the ".oct" suffix. Building an oct file is usually done with the mkoctfile command (either - within Octave itself, or from the shell). For example,

    -
    -
    + within Octave itself, or from the shell). For example,

    +
    +
     $ swig -octave -c++ -o example_wrap.cpp example.i
     $ mkoctfile example_wrap.cpp example.c
    -
    -
    -

    where "example.c" is the file containing the gcd() implementation.

    -

    mkoctfile can also be used to extract the build parameters required +

    +
    +

    where "example.c" is the file containing the gcd() implementation.

    +

    mkoctfile can also be used to extract the build parameters required to invoke the compiler and linker yourself. See the Octave manual and - mkoctfile man page.

    -

    mkoctfile will produce "swigexample.oct", which contains the + mkoctfile man page.

    +

    mkoctfile will produce "swigexample.oct", which contains the compiled extension module. Loading it into Octave is then a matter of - invoking

    -
    -
    octave:1> swigexample
    -
    -

    32.2.3 Using your module

    -

    Assuming all goes well, you will be able to do this: -

    -
    -
    $ octave -q
    + invoking

    +
    +
    octave:1> swigexample
    +
    +

    29.2.3 Using your module

    +

    Assuming all goes well, you will be able to do this: +

    +
    +
    $ octave -q
     octave:1> swigexample
     octave:2> swigexample.gcd(4, 6)
     ans =  2
    @@ -41289,23 +39474,23 @@ octave:3> swigexample.cvar.Foo
     ans =  3
     octave:4> swigexample.cvar.Foo=4;
     octave:5> swigexample.cvar.Foo
    -ans =  4 
    -
    -

    32.3 A tour of basic C/C++ wrapping

    -

    32.3.1 Modules

    -

    The SWIG module directive specifies the name of the Octave module. +ans = 4

    +
    +

    29.3 A tour of basic C/C++ wrapping

    +

    29.3.1 Modules

    +

    The SWIG module directive specifies the name of the Octave module. If you specify "module swigexample", then in Octave everything in the module will be accessible under "swigexample", as in the above example. When choosing a module name, make sure you don't use the same name as a - built-in Octave command or standard module name.

    -

    When Octave is asked to invoke swigexample, it will try to + built-in Octave command or standard module name.

    +

    When Octave is asked to invoke swigexample, it will try to find the ".m" or ".oct" file that defines the function "swigexample". You therefore need to make sure that "swigexample.oct" is in Octave's search path, which can be specified with the environment variable - "OCTAVE_PATH".

    -

    To load an Octave module, simply type its name:

    -
    -
    + "OCTAVE_PATH".

    +

    To load an Octave module, simply type its name:

    +
    +
     octave:1> swigexample;
     octave:2> gcd(4, 6)
     ans =  2
    @@ -41314,13 +39499,13 @@ ans =  3
     octave:4> cvar.Foo=4;
     octave:5> cvar.Foo
     ans =  4
    -
    -
    -

    Modules can also be loaded from within functions, even before being +

    +
    +

    Modules can also be loaded from within functions, even before being loaded in the base context. If the module is also used in the base - context, however, it must first be loaded again:

    -
    -
    + context, however, it must first be loaded again:

    +
    +
     octave:1> function l = my_lcm(a, b)
     > swigexample
     > l = abs(a*b)/swigexample.gcd(a, b);
    @@ -41332,175 +39517,175 @@ error: can't perform indexing operations for <unknown type> type
     octave:3> swigexample;
     octave:4> swigexample.gcd(4, 6)
     ans =  2
    -
    -
    -

    32.3.2 Functions

    -

    Global functions are wrapped as new Octave built-in functions. For - example,

    -
    -
    %module swigexample
    -int fact(int n); 
    -
    -

    creates a built-in function swigexample.fact(n) that works - exactly like you think it does:

    -
    -
    octave:1> swigexample.fact(4)
    -24 
    -
    -

    32.3.3 Global variables

    -

    Global variables are a little special in Octave. Given a global - variable:

    -
    -
    %module swigexample
    +
    +
    +

    29.3.2 Functions

    +

    Global functions are wrapped as new Octave built-in functions. For + example,

    +
    +
    %module swigexample
    +int fact(int n); 
    +
    +

    creates a built-in function swigexample.fact(n) that works + exactly like you think it does:

    +
    +
    octave:1> swigexample.fact(4)
    +24 
    +
    +

    29.3.3 Global variables

    +

    Global variables are a little special in Octave. Given a global + variable:

    +
    +
    %module swigexample
     extern double Foo;
    -
    -
    -

    To expose variables, SWIG actually generates two functions, to get +

    +
    +

    To expose variables, SWIG actually generates two functions, to get and set the value. In this case, Foo_set and Foo_set would be generated. SWIG then automatically calls these functions when you get and set the variable-- in the former case creating a local copy in the interpreter of the C variables, and in the latter case copying an - interpreter variables onto the C variable.

    -
    -
    octave:1> swigexample;
    + interpreter variables onto the C variable.

    +
    +
    octave:1> swigexample;
     octave:2> c=swigexample.cvar.Foo
     c =  3
     octave:3> swigexample.cvar.Foo=4;
     octave:4> c
     c =  3
     octave:5> swigexample.cvar.Foo
    -ans =  4
    -
    -

    If a variable is marked with the %immutable directive then any +ans = 4

    +
    +

    If a variable is marked with the %immutable directive then any attempts to set this variable will cause an Octave error. Given a - global variable:

    -
    -
    %module swigexample
    + global variable:

    +
    +
    %module swigexample
     %immutable;
     extern double Foo;
     %mutable;
    -
    -
    -

    SWIG will allow the reading of Foo but when a set attempt - is made, an error function will be called.

    -
    -
    octave:1> swigexample
    +
    +
    +

    SWIG will allow the reading of Foo but when a set attempt + is made, an error function will be called.

    +
    +
    octave:1> swigexample
     octave:2> swigexample.Foo=4
     error: attempt to set immutable member variable
     error: assignment failed, or no method for `swig_type = scalar'
    -error: evaluating assignment expression near line 2, column 12 
    -
    -

    It is possible to add new functions or variables to the module. This +error: evaluating assignment expression near line 2, column 12

    +
    +

    It is possible to add new functions or variables to the module. This also allows the user to rename/remove existing functions and constants (but not linked variables, mutable or immutable). Therefore users are - recommended to be careful when doing so.

    -
    -
    octave:1> swigexample;
    + recommended to be careful when doing so.

    +
    +
    octave:1> swigexample;
     octave:2> swigexample.PI=3.142;
     octave:3> swigexample.PI
    -ans =  3.1420 
    -
    -

    32.3.4 Constants and enums

    -

    Because Octave doesn't really have the concept of constants, C/C++ +ans = 3.1420

    +
    +

    29.3.4 Constants and enums

    +

    Because Octave doesn't really have the concept of constants, C/C++ constants are not really constant in Octave. They are actually just a copy of the value into the Octave interpreter. Therefore they can be - changed just as any other value. For example given some constants:

    -
    -
    %module swigexample
    + changed just as any other value. For example given some constants:

    +
    +
    %module swigexample
     %constant int ICONST=42;
     #define    SCONST      "Hello World"
     enum Days{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
    -
    -
    -

    This is 'effectively' converted into the following Octave code:

    -
    -
    swigexample.ICONST=42
    +
    +
    +

    This is 'effectively' converted into the following Octave code:

    +
    +
    swigexample.ICONST=42
     swigexample.SCONST="Hello World"
     swigexample.SUNDAY=0
    -.... 
    -
    -

    32.3.5 Pointers

    -

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no +....

    +
    +

    29.3.5 Pointers

    +

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type information. Given a wrapping of the <file.h> interface: C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type - information. Given a wrapping of the <file.h> interface:

    -
    -
    %module swigexample
    + information. Given a wrapping of the <file.h> interface:

    +
    +
    %module swigexample
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    When wrapped, you will be able to use the functions in a natural way - from Octave. For example:

    -
    -
    +
    +
    +

    When wrapped, you will be able to use the functions in a natural way + from Octave. For example:

    +
    +
     octave:1> swigexample;
     octave:2> f=swigexample.fopen("w", "junk");
     octave:3> swigexample.fputs("Hello world", f);
     octave:4> swigexample.fclose(f);
    -
    -
    -

    Simply printing the value of a wrapped C++ type will print its - typename. E.g.,

    -
    -
    octave:1> swigexample;
    +
    +
    +

    Simply printing the value of a wrapped C++ type will print its + typename. E.g.,

    +
    +
    octave:1> swigexample;
     octave:2> f=swigexample.fopen("junk", "w");
     octave:3> f
     f =
     
     {
       _p_FILE, ptr = 0x9b0cd00
    -} 
    -
    -

    As the user of the pointer, you are responsible for freeing it, or +}

    +
    +

    As the user of the pointer, you are responsible for freeing it, or closing any resources associated with it (just as you would in a C program). This does not apply so strictly to classes and structs (see - below).

    -
    -
    octave:1> swigexample;
    + below).

    +
    +
    octave:1> swigexample;
     octave:2> f=swigexample.fopen("not there", "r");
     error: value on right hand side of assignment is undefined
    -error: evaluating assignment expression near line 2, column 2 
    -
    -

    32.3.6 Structures and C++ classes

    -

    SWIG wraps C structures and C++ classes by using a special Octave - type called a swig_ref. A swig_ref contains a +error: evaluating assignment expression near line 2, column 2

    +
    +

    29.3.6 Structures and C++ classes

    +

    SWIG wraps C structures and C++ classes by using a special Octave + type called a swig_ref. A swig_ref contains a reference to one or more instances of C/C++ objects, or just the type - information for an object. For each wrapped structure and class, a -swig_ref will be exposed that has the name of the type. When + information for an object. For each wrapped structure and class, a +swig_ref will be exposed that has the name of the type. When invoked as a function, it creates a new object of its type and returns - a swig_ref that points to that instance. This provides a very - natural interface. For example,

    -
    -
    struct Point{
    + a swig_ref that points to that instance. This provides a very
    + natural interface. For example,

    +
    +
    struct Point{
       int x, y;
     };
    -
    -
    -

    is used as follows:

    -
    -
    octave:1> swigexample;
    +
    +
    +

    is used as follows:

    +
    +
    octave:1> swigexample;
     octave:2> p=swigexample.Point();
     octave:3> p.x=3;
     octave:4> p.y=5;
     octave:5> p.x, p.y
     ans =  3
     ans =  5 
    -
    -
    -

    In C++, invoking the type object in this way calls the object's - constructor. swig_ref objects can also be acquired by having a +

    +
    +

    In C++, invoking the type object in this way calls the object's + constructor. swig_ref objects can also be acquired by having a wrapped function return a pointer, reference, or value of a - non-primitive type.

    -

    The swig_ref type handles indexing operations such that usage maps + non-primitive type.

    +

    The swig_ref type handles indexing operations such that usage maps closely to what you would have in C/C++. Structure members are accessed as in the above example, by calling set and get methods for C++ variables. Methods also work as expected. For example, code wrapped in - the following way

    -
    -
    class Point{
    + the following way

    +
    +
    class Point{
     public:
       int x, y;
       Point(int _x, int _y) : x(_x), y(_y) {}
    @@ -41511,38 +39696,38 @@ public:
         x=_x; y=_y;
       }
     };
    -
    -
    -

    can be used from Octave like this

    -
    -
    octave:1> swigexample;
    +
    +
    +

    can be used from Octave like this

    +
    +
    octave:1> swigexample;
     octave:2> p1=swigexample.Point(3, 5);
     octave:3> p2=swigexample.Point(1, 2);
     octave:4> p1.distance(p2)
     ans =  3.6056
    -
    -
    -

    By using the swig_this() and swig_type() +

    +
    +

    By using the swig_this() and swig_type() functions, one can discover the pointers to and types of the underlying - C/C++ object.

    -
    -
    + C/C++ object.

    +
    +
     octave:5> swig_this(p1)
     ans = 162504808
     octave:6> swig_type(p1)
     ans = Point
    -
    -
    -

    Note that swig_ref is a reference-counted pointer to a +

    +
    +

    Note that swig_ref is a reference-counted pointer to a C/C++ object/type, and as such has pass-by-reference semantics. For - example if one has a allocated a single object but has two swig_ref + example if one has a allocated a single object but has two swig_ref 's pointing to it, modifying the object through either of them will change the single allocated object. This differs from the usual pass-by-value (copy-on-write) semantics that Octave maintains for - built-in types. For example, in the following snippet, modifying b - does not modify a,

    -
    -
    + built-in types. For example, in the following snippet, modifying b
    + does not modify a,

    +
    +
     octave:7> a=struct('x', 4)
     a =
     {
    @@ -41567,11 +39752,11 @@ a =
     {
       x =  4
     }
    -
    -
    -

    However, when dealing with wrapped objects, one gets the behavior

    -
    -
    +
    +
    +

    However, when dealing with wrapped objects, one gets the behavior

    +
    +
     octave:2> a=Point(3, 5)
     a =
     
    @@ -41593,44 +39778,44 @@ ans =  1
     octave:6> a.x, a.y
     ans =  2
     ans =  1
    -
    -
    -

    Depending on the ownership setting of a swig_ref, it may +

    +
    +

    Depending on the ownership setting of a swig_ref, it may call C++ destructors when its reference count goes to zero. See the - section on memory management below for details.

    -

    32.3.7 C++ inheritance

    -

    Single and multiple inheritance are fully supported. The -swig_ref type carries type information along with any C++ object + section on memory management below for details.

    +

    29.3.7 C++ inheritance

    +

    Single and multiple inheritance are fully supported. The +swig_ref type carries type information along with any C++ object pointer it holds. This information contains the full class hierarchy. When an indexing operation (such as a method invocation) occurs, the tree is walked to find a match in the current class as well as any of - its bases. The lookup is then cached in the swig_ref.

    -

    32.3.8 C++ overloaded functions

    -

    Overloaded functions are supported, and handled as in other modules. + its bases. The lookup is then cached in the swig_ref.

    +

    29.3.8 C++ overloaded functions

    +

    Overloaded functions are supported, and handled as in other modules. That is, each overload is wrapped separately (under internal names), and a dispatch function is also emitted under the external/visible name. The dispatch function selects which overload to call (if any) - based on the passed arguments. typecheck typemaps are used to + based on the passed arguments. typecheck typemaps are used to analyze each argument, as well as assign precedence. See the chapter on - typemaps for details.

    -

    32.3.9 C++ operators

    -

    C++ operator overloading is supported, in a way similar to other - modules. The swig_ref type supports all unary and binary + typemaps for details.

    +

    29.3.9 C++ operators

    +

    C++ operator overloading is supported, in a way similar to other + modules. The swig_ref type supports all unary and binary operators between itself and all other types that exist in the system at module load time. When an operator is used (where one of the - operands is a swig_ref), the runtime routes the call to either + operands is a swig_ref), the runtime routes the call to either a member function of the given object, or to a global function whose named is derived from the types of the operands (either both or just - the lhs or rhs).

    -

    For example, if a and b are SWIG variables in - Octave, a+b becomes a.__add__(b). The wrapper is then + the lhs or rhs).

    +

    For example, if a and b are SWIG variables in + Octave, a+b becomes a.__add__(b). The wrapper is then free to implement __add__ to do whatever it wants. A wrapper may define - the __add__ function manually, %rename some other function to - it, or %rename a C++ operator to it.

    -

    By default the C++ operators are renamed to their corresponding - Octave operators. So without doing any work, the following interface

    -
    -
    + the __add__ function manually, %rename some other function to
    + it, or %rename a C++ operator to it.

    +

    By default the C++ operators are renamed to their corresponding + Octave operators. So without doing any work, the following interface

    +
    +
     %inline {
     struct A {
       int value;
    @@ -41640,18 +39825,18 @@ struct A {
       }
     };
     }
    -
    -
    -

    is usable from Octave like this:

    -
    -
    +
    +
    +

    is usable from Octave like this:

    +
    +
     a=A(2), b=A(3), c=a+b
     assert(c.value==5);
    -
    -
    -

    Octave operators are mapped in the following way:

    -
    -
    +
    +
    +

    Octave operators are mapped in the following way:

    +
    +
     __brace__      a{args}
     __brace_asgn__ a{args} = rhs
     __paren__      a(args)
    @@ -41684,11 +39869,11 @@ __el_pow__     a .^ b
     __el_ldiv__    a .\ b
     __el_and__     a & b
     __el_or__      a | b
    -
    -
    -

    On the C++ side, the default mappings are as follows:

    -
    -
    +
    +
    +

    On the C++ side, the default mappings are as follows:

    +
    +
     %rename(__add__)       *::operator+;
     %rename(__add__)       *::operator+();
     %rename(__add__)       *::operator+() const;
    @@ -41719,21 +39904,21 @@ __el_or__      a | b
     %rename(__decr__)      *::operator--;
     %rename(__paren__)     *::operator();
     %rename(__brace__)     *::operator[];
    -
    -
    -

    Octave can also utilise friend (i.e. non-member) operators with a +

    +
    +

    Octave can also utilise friend (i.e. non-member) operators with a simple %rename: see the example in the Examples/octave/operator - directory.

    -

    32.3.10 Class extension with %extend

    -

    The %extend directive works the same as in other modules.

    -

    You can use it to define special behavior, like for example defining + directory.

    +

    29.3.10 Class extension with %extend

    +

    The %extend directive works the same as in other modules.

    +

    You can use it to define special behavior, like for example defining Octave operators not mapped to C++ operators, or defining certain - Octave mechanisms such as how an object prints. For example, the -octave_value::{is_string, string_value, print} functions are routed - to a special method __str__ that can be defined inside an - %extend.

    -
    -
    + Octave mechanisms such as how an object prints. For example, the 
    +octave_value::{is_string, string_value, print} functions are routed
    + to a special method __str__ that can be defined inside an
    + %extend.

    +
    +
     %extend A {
     string __str__() {
       stringstream sout;
    @@ -41741,11 +39926,11 @@ string __str__() {
       return sout.str();
     }
     }
    -
    -
    -

    Then in Octave one gets,

    -
    -
    +
    +
    +

    Then in Octave one gets,

    +
    +
     octave:1> a=A(4);
     octave:2> a
     a = 4
    @@ -41753,12 +39938,12 @@ octave:3> printf("%s\n", a);
     4
     octave:4> a.__str__()
     4
    -
    -
    -

    Similarly, Octave can use the __float__ method to convert - an object to a numeric value.

    -

    Octave 3.8.0 and later versions will also map unary functions X() to - the corresponding __X__ method, where X includes: abs(), +

    +
    +

    Similarly, Octave can use the __float__ method to convert + an object to a numeric value.

    +

    Octave 3.8.0 and later versions will also map unary functions X() to + the corresponding __X__ method, where X includes: abs(), acos(), acosh(), angle(), arg(), asin(), asinh(), atan(), atanh(), cbrt(), ceil(), conj(), cos(), cosh(), dawson(), erf(), erfc(), erfcinv(), erfcx(), erfi(), erfinv(), exp(), expm1(), finite(), fix(), @@ -41766,14 +39951,14 @@ octave:4> a.__str__() isdigit(), isgraph(), isinf(), islower(), isna(), isnan(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), lgamma(), log(), log10(), log1p(), log2(), real(), round(), roundb(), signbit(), signum(), sin(), - sinh(), sqrt(), tan(), tanh(), toascii(), tolower(), toupper()

    -

    32.3.11 C++ templates

    -

    C++ class and function templates are fully supported as in other + sinh(), sqrt(), tan(), tanh(), toascii(), tolower(), toupper()

    +

    29.3.11 C++ templates

    +

    C++ class and function templates are fully supported as in other modules, in that the %template directive may used to create explicit instantiations of templated types. For example, function templates can - be instantiated as follows:

    -
    -
    %module swigexample
    + be instantiated as follows:

    +
    +
    %module swigexample
     %inline {
       template<class __scalar>
         __scalar mul(__scalar a, __scalar b) {
    @@ -41783,23 +39968,23 @@ octave:4> a.__str__()
     %include <std_complex.i>
     %template(mul) mul<std::complex<double> >
     %template(mul) mul<double>
    -
    -
    -

    and then used from Octave

    -
    -
    +
    +
    +

    and then used from Octave

    +
    +
     octave:1> mul(4, 3)
     ans =  12
     octave:2> mul(4.2, 3.6)
     ans =  15.120
     octave:3> mul(3+4i, 10+2i)
     ans =  22 + 46i
    -
    -
    -

    Similarly, class templates can be instantiated as in the following - example,

    -
    -
    %module swigexample
    +
    +
    +

    Similarly, class templates can be instantiated as in the following + example,

    +
    +
    %module swigexample
     %include <std_complex.i>
     %include <std_string.i>
     %inline {
    @@ -41821,11 +40006,11 @@ ans =  22 + 46i
     }
     %template(sum_complex) sum<std::complex<double> >;
     %template(sum_double) sum<double>;
    -
    -
    -

    and then used from Octave

    -
    -
    +
    +
    +

    and then used from Octave

    +
    +
     octave:2> a=sum_complex(2+3i);
     octave:3> a.add(2)
     ans =
    @@ -41835,41 +40020,41 @@ octave:4> a.add(3+i)
     ans =
     
     (7, 4)
    -
    -
    -

    32.3.12 C++ Smart Pointers

    -

    32.3.12.1 The shared_ptr - Smart Pointer

    -

    The C++11 standard provides std::shared_ptr which was - derived from the Boost implementation, boost::shared_ptr. Both +

    +
    +

    29.3.12 C++ Smart Pointers

    +

    29.3.12.1 The shared_ptr + Smart Pointer

    +

    The C++11 standard provides std::shared_ptr which was + derived from the Boost implementation, boost::shared_ptr. Both of these are available for Octave in the SWIG library and usage is - outlined in the shared_ptr smart - pointer library section.

    -

    32.3.12.2 Generic Smart - Pointers

    -

    C++ smart pointers are fully supported as in other modules.

    -

    32.3.13 Directors (calling Octave from C++ - code)

    -

    There is full support for SWIG Directors, which permits Octave code - to subclass C++ classes, and implement their virtual methods.

    -

    Octave has no direct support for object oriented programming, - however the swig_ref type provides some of this support. You - can manufacture a swig_ref using the subclass - function (provided by the SWIG/Octave runtime).

    -

    For example,

    -
    -
    + outlined in the shared_ptr smart
    + pointer library section.

    +

    29.3.12.2 Generic Smart + Pointers

    +

    C++ smart pointers are fully supported as in other modules.

    +

    29.3.13 Directors (calling Octave from C++ + code)

    +

    There is full support for SWIG Directors, which permits Octave code + to subclass C++ classes, and implement their virtual methods.

    +

    Octave has no direct support for object oriented programming, + however the swig_ref type provides some of this support. You + can manufacture a swig_ref using the subclass + function (provided by the SWIG/Octave runtime).

    +

    For example,

    +
    +
     octave:1> a=subclass();
     octave:2> a.my_var = 4;
     octave:3> a.my_method = @(self) printf("my_var = ", self.my_var);
     octave:4> a.my_method();
     my_var = 4
    -
    -
    -

    subclass() can also be used to subclass one or more C++ - types. Suppose you have an interface defined by

    -
    -
    +
    +
    +

    subclass() can also be used to subclass one or more C++ + types. Suppose you have an interface defined by

    +
    +
     %inline {
     class A {
     public:
    @@ -41881,48 +40066,48 @@ void call_your_method(A& a) {
       a.my_method();
     }
     }
    -
    -
    -

    Then from Octave you can say:

    -
    -
    +
    +
    +

    Then from Octave you can say:

    +
    +
     octave:1> B=@() subclass(A(), @my_method);
     octave:2> function my_method(self)
     octave:3>   printf("octave-side routine called\n");
     octave:4> end
     octave:5> call_your_method(B());
     octave-side routine called
    -
    -
    -

    or more concisely,

    -
    -
    +
    +
    +

    or more concisely,

    +
    +
     octave:1> B=@() subclass(A(), 'my_method', @(self) printf("octave-side routine called\n"));
     octave:2> call_your_method(B());
     octave-side routine called
    -
    -
    -

    Note that you have to enable directors via the %feature directive - (see other modules for this).

    -

    subclass() will accept any number of C++ bases or other -subclass()'ed objects, (string, octave_value) pairs, and -function_handles. In the first case, these are taken as base +

    +
    +

    Note that you have to enable directors via the %feature directive + (see other modules for this).

    +

    subclass() will accept any number of C++ bases or other +subclass()'ed objects, (string, octave_value) pairs, and +function_handles. In the first case, these are taken as base classes; in the second case, as named members (either variables or functions, depending on whether the given value is a function handle); in the third case, as member functions whose name is taken from the - given function handle. E.g.,

    -
    -
    + given function handle. E.g.,

    +
    +
     octave:1> B=@(some_var=2) subclass(A(), 'some_var', some_var, @some_func, 'another_func',
     @(self) do_stuff())
    -
    -
    -

    You can also assign non-C++ member variables and functions after - construct time. There is no support for non-C++ static members.

    -

    There is limited support for explicitly referencing C++ bases. So, - in the example above, we could have

    -
    -
    +
    +
    +

    You can also assign non-C++ member variables and functions after + construct time. There is no support for non-C++ static members.

    +

    There is limited support for explicitly referencing C++ bases. So, + in the example above, we could have

    +
    +
     octave:1> B=@() subclass(A(), @my_method);
     octave:2> function my_method(self)
     octave:3>   self.A.my_method();
    @@ -41931,25 +40116,25 @@ octave:5> end
     octave:6> call_your_method(B());
     c-side routine called
     octave-side routine called
    -
    -
    -

    32.3.14 Threads

    -

    The use of threads in wrapped Director code is not supported; i.e., +

    +
    +

    29.3.14 Threads

    +

    The use of threads in wrapped Director code is not supported; i.e., an Octave-side implementation of a C++ class must be called from the Octave interpreter's thread. Anything fancier (apartment/queue model, whatever) is left to the user. Without anything fancier, this amounts to the limitation that Octave must drive the module... like, for example, an optimization package that calls Octave to evaluate an - objective function.

    -

    32.3.15 Memory management

    -

    As noted above, swig_ref represents a reference counted + objective function.

    +

    29.3.15 Memory management

    +

    As noted above, swig_ref represents a reference counted pointer to a C/C++-side object. It also contains a flag indicating whether Octave or the C/C++ code owns the object. If Octave owns it, any destructors will be called when the reference count reaches zero. If the C/C++ side owns the object, then destructors will not be called - when the reference count goes to zero.

    -

    For example,

    -
    + when the reference count goes to zero.

    +

    For example,

    +
     %inline {
     class A {
     public:
    @@ -41957,226 +40142,226 @@ public:
       ~A() { printf("A destructing\n"); }
     };
     }
    -
    -

    -

    Would produce this behavior in Octave:

    -
    -
    +
    +

    +

    Would produce this behavior in Octave:

    +
    +
     octave:1> a=A();
     A constructing
     octave:2> b=a;
     octave:3> clear a;
     octave:4> b=4;
     A destructing
    -
    -
    -

    The %newobject directive may be used to control this behavior for - pointers returned from functions.

    -

    In the case where one wishes for the C++ side to own an object that +

    +
    +

    The %newobject directive may be used to control this behavior for + pointers returned from functions.

    +

    In the case where one wishes for the C++ side to own an object that was created in Octave (especially a Director object), one can use the __disown() method to invert this logic. Then letting the Octave reference count go to zero will not destroy the object, but destroying the object will invalidate the Octave-side object if it still exists (and call destructors of other C++ bases in the case of multiple - inheritance/subclass()'ing).

    -

    32.3.16 STL support

    -

    Various STL library files are provided for wrapping STL containers.

    -

    32.3.17 Matrix typemaps

    -

    Octave provides a rich set of classes for dealing with matrices. + inheritance/subclass()'ing).

    +

    29.3.16 STL support

    +

    Various STL library files are provided for wrapping STL containers.

    +

    29.3.17 Matrix typemaps

    +

    Octave provides a rich set of classes for dealing with matrices. Currently there are no built-in typemaps to deal with those. However, these are relatively straight forward for users to add themselves (see the docs on typemaps). Without much work (a single typemap decl-- say, 5 lines of code in the interface file), it would be possible to have a - function

    -
    -
    + function

    +
    +
     double my_det(const double* mat, int m, int n);
    -
    -
    -

    that is accessed from Octave as,

    -
    -
    +
    +
    +

    that is accessed from Octave as,

    +
    +
     octave:1> my_det(rand(4));
     ans = -0.18388
    -
    -
    -

    -

    33 SWIG and Perl5

    +
    +
    +

    +

    30 SWIG and Perl5

    - + -

    Caution: This chapter is under repair!

    -

    This chapter describes SWIG's support of Perl5. Although the Perl5 +

    Caution: This chapter is under repair!

    +

    This chapter describes SWIG's support of Perl5. Although the Perl5 module is one of the earliest SWIG modules, it has continued to evolve and has been improved greatly with the help of SWIG users. For the best results, it is recommended that SWIG be used with Perl 5.8 or later. We're no longer testing regularly with older versions, but Perl 5.6 - seems to mostly work, while older versions don't.

    -

    33.1 Overview

    -

    To build Perl extension modules, SWIG uses a layered approach. At + seems to mostly work, while older versions don't.

    +

    30.1 Overview

    +

    To build Perl extension modules, SWIG uses a layered approach. At the lowest level, simple procedural wrappers are generated for functions, classes, methods, and other declarations in the input file. Then, for structures and classes, an optional collection of Perl proxy classes can be generated in order to provide a more natural object oriented Perl interface. These proxy classes simply build upon the - low-level interface.

    -

    In describing the Perl interface, this chapter begins by covering + low-level interface.

    +

    In describing the Perl interface, this chapter begins by covering the essentials. First, the problem of configuration, compiling, and installing Perl modules is discussed. Next, the low-level procedural interface is presented. Finally, proxy classes are described. Advanced customization features, typemaps, and other options are found near the - end of the chapter.

    -

    33.2 Preliminaries

    -

    To build a Perl5 module, run SWIG using the -perl option as - follows:

    -
    -
    + end of the chapter.

    +

    30.2 Preliminaries

    +

    To build a Perl5 module, run SWIG using the -perl or +-perl5 option as follows:

    +
    +
     swig -perl example.i
     
    -
    -
    -

    This produces two files. The first file, example_wrap.c +

    +
    +

    This produces two files. The first file, example_wrap.c contains all of the C code needed to build a Perl5 module. The second - file, example.pm contains supporting Perl code needed to - properly load the module.

    -

    To build the module, you will need to compile the file -example_wrap.c and link it with the rest of your program.

    -

    33.2.1 Getting the right header files

    -

    In order to compile, SWIG extensions need the following Perl5 header - files:

    -
    -
    + file, example.pm contains supporting Perl code needed to
    + properly load the module.

    +

    To build the module, you will need to compile the file +example_wrap.c and link it with the rest of your program.

    +

    30.2.1 Getting the right header files

    +

    In order to compile, SWIG extensions need the following Perl5 header + files:

    +
    +
     #include "Extern.h"
     #include "perl.h"
     #include "XSUB.h"
    -
    -
    -

    These are typically located in a directory like this

    -
    -
    +
    +
    +

    These are typically located in a directory like this

    +
    +
     /usr/lib/perl/5.14/CORE
    -
    -
    -

    The SWIG configuration script automatically tries to locate this +

    +
    +

    The SWIG configuration script automatically tries to locate this directory so that it can compile examples. However, if you need to find out where the directory is located, an easy way to find out is to ask - Perl itself:

    -
    -
    + Perl itself:

    +
    +
     $ perl -e 'use Config; print "$Config{archlib}\n";'
     /usr/lib/perl/5.14
    -
    -
    -

    33.2.2 Compiling a dynamic module

    -

    The preferred approach to building an extension module is to compile +

    +
    +

    30.2.2 Compiling a dynamic module

    +

    The preferred approach to building an extension module is to compile it into a shared object file or DLL. Assuming you have code you need to - link to in a file called example.c, you will need to compile - your program using commands like this (shown for Linux):

    -
    -
    + link to in a file called example.c, you will need to compile
    + your program using commands like this (shown for Linux):

    +
    +
     $ swig -perl example.i
     $ gcc -fPIC example.c
     $ gcc -fPIC -c example_wrap.c -I/usr/lib/perl/5.14/CORE -Dbool=char
     $ gcc -shared example.o example_wrap.o -o example.so
    -
    -
    -

    The exact compiler options vary from platform to platform. SWIG +

    +
    +

    The exact compiler options vary from platform to platform. SWIG tries to guess the right options when it is installed. Therefore, you - may want to start with one of the examples in the -SWIG/Examples/perl5 directory. If that doesn't work, you will need + may want to start with one of the examples in the +SWIG/Examples/perl5 directory. If that doesn't work, you will need to read the man-pages for your compiler and linker to get the right set - of options. You might also check the -SWIG Wiki for additional information.

    -

    When linking the module, the name of the shared object file must - match the module name used in the SWIG interface file. If you used ` -%module example', then the target should be named `example.so -', `example.sl', or the appropriate dynamic module name on your - system.

    -

    33.2.3 Building a dynamic module with MakeMaker -

    -

    It is also possible to use Perl to build dynamically loadable + of options. You might also check the +SWIG Wiki for additional information.

    +

    When linking the module, the name of the shared object file must + match the module name used in the SWIG interface file. If you used ` +%module example', then the target should be named `example.so +', `example.sl', or the appropriate dynamic module name on your + system.

    +

    30.2.3 Building a dynamic module with MakeMaker +

    +

    It is also possible to use Perl to build dynamically loadable modules for you using the MakeMaker utility. To do this, write a Perl - script such as the following:

    -
    -
    + script such as the following:

    +
    +
     # File : Makefile.PL
     use ExtUtils::MakeMaker;
     WriteMakefile(
    @@ -42185,37 +40370,37 @@ WriteMakefile(
             `OBJECT'  => `example.o example_wrap.o'  # Object files
     );
     
    -
    -
    -

    Now, to build a module, simply follow these steps:

    -
    -
    +
    +
    +

    Now, to build a module, simply follow these steps:

    +
    +
     $ perl Makefile.PL
     $ make
     $ make install
    -
    -
    -

    If you are planning to distribute a SWIG-generated module, this is +

    +
    +

    If you are planning to distribute a SWIG-generated module, this is the preferred approach to compilation. More information about MakeMaker can be found in "Programming Perl, 2nd ed." by Larry Wall, Tom - Christiansen, and Randal Schwartz.

    -

    33.2.4 Building a static version of Perl

    -

    If you machine does not support dynamic loading or if you've tried + Christiansen, and Randal Schwartz.

    +

    30.2.4 Building a static version of Perl

    +

    If you machine does not support dynamic loading or if you've tried to use it without success, you can build a new version of the Perl interpreter with your SWIG extensions added to it. To build a static - extension, you first need to invoke SWIG as follows:

    -
    -
    + extension, you first need to invoke SWIG as follows:

    +
    +
     $ swig -perl -static example.i
    -
    -
    -

    By default SWIG includes code for dynamic loading, but the --static option takes it out.

    -

    Next, you will need to supply a main() function that +

    +
    +

    By default SWIG includes code for dynamic loading, but the +-static option takes it out.

    +

    Next, you will need to supply a main() function that initializes your extension and starts the Perl interpreter. While, this - may sound daunting, SWIG can do this for you automatically as follows:

    -
    -
    + may sound daunting, SWIG can do this for you automatically as follows:

    +
    +
     %module example
     
     %inline %{
    @@ -42225,108 +40410,108 @@ extern int fact(int);
     
     // Include code for rebuilding Perl
     %include <perlmain.i>
    -
    -
    -

    The same thing can be accomplished by running SWIG as follows:

    -
    -
    +
    +
    +

    The same thing can be accomplished by running SWIG as follows:

    +
    +
     $ swig -perl -static -lperlmain.i example.i
    -
    -
    -

    The perlmain.i file inserts Perl's main() function +

    +
    +

    The perlmain.i file inserts Perl's main() function into the wrapper code and automatically initializes the SWIG generated module. If you just want to make a quick a dirty module, this may be - the easiest way. By default, the perlmain.i code does not + the easiest way. By default, the perlmain.i code does not initialize any other Perl extensions. If you need to use other packages, you will need to modify it appropriately. You can do this by - just copying perlmain.i out of the SWIG library, placing it in - your own directory, and modifying it to suit your purposes.

    -

    To build your new Perl executable, follow the exact same procedure + just copying perlmain.i out of the SWIG library, placing it in + your own directory, and modifying it to suit your purposes.

    +

    To build your new Perl executable, follow the exact same procedure as for a dynamic module, but change the link line to something like - this:

    -
    -
    + this:

    +
    +
     $ gcc example.o example_wrap.o -L/usr/lib/perl/5.14/CORE \
             -lperl -lsocket -lnsl -lm -o myperl
    -
    -
    -

    This will produce a new version of Perl called myperl. It +

    +
    +

    This will produce a new version of Perl called myperl. It should be functionality identical to Perl with your C/C++ extension added to it. Depending on your machine, you may need to link with - additional libraries such as -lsocket, -lnsl, -ldl, etc.

    -

    33.2.5 Using the module

    -

    To use the module, simply use the Perl use statement. If - all goes well, you will be able to do this:

    -
    -
    + additional libraries such as -lsocket, -lnsl, -ldl, etc.

    +

    30.2.5 Using the module

    +

    To use the module, simply use the Perl use statement. If + all goes well, you will be able to do this:

    +
    +
     $ perl
     use example;
     print example::fact(4), "\n";
     24
    -
    -
    -

    A common error received by first-time users is the following:

    -
    -
    +
    +
    +

    A common error received by first-time users is the following:

    +
    +
     use example;
     Can't locate example.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at - line 1.
     BEGIN failed--compilation aborted at - line 1.
    -
    -
    -

    This error is almost caused when the name of the shared object file - you created doesn't match the module name you specified with the -%module directive.

    -

    A somewhat related, but slightly different error is this:

    -
    -
    +
    +
    +

    This error is almost caused when the name of the shared object file + you created doesn't match the module name you specified with the +%module directive.

    +

    A somewhat related, but slightly different error is this:

    +
    +
     use example;
     Can't find 'boot_example' symbol in ./example.so
      at - line 1
     BEGIN failed--compilation aborted at - line 1.
    -
    -
    -

    This error is generated because Perl can't locate the module +

    +
    +

    This error is generated because Perl can't locate the module bootstrap function in the SWIG extension module. This could be caused by a mismatch between the module name and the shared library name. However, another possible cause is forgetting to link the SWIG-generated wrapper code with the rest of your application when you - linked the extension module.

    -

    Another common error is the following:

    -
    -
    + linked the extension module.

    +

    Another common error is the following:

    +
    +
     use example;
     Can't load './example.so' for module example: ./example.so: 
     undefined symbol: Foo at /usr/lib/perl/5.14/i386-linux/DynaLoader.pm line 169.
     
      at - line 1
     BEGIN failed--compilation aborted at - line 1.
    -
    -
    -

    This error usually indicates that you forgot to include some object +

    +
    +

    This error usually indicates that you forgot to include some object files or libraries in the linking of the shared library file. Make sure you compile both the SWIG wrapper file and your original program into a shared library file. Make sure you pass all of the required libraries - to the linker.

    -

    Sometimes unresolved symbols occur because a wrapper has been + to the linker.

    +

    Sometimes unresolved symbols occur because a wrapper has been created for a function that doesn't actually exist in a library. This usually occurs when a header file includes a declaration for a function that was never actually implemented or it was removed from a library without updating the header file. To fix this, you can either edit the - SWIG input file to remove the offending declaration or you can use the -%ignore directive to ignore the declaration. Better yet, update the - header file so that it doesn't have an undefined declaration.

    -

    Finally, suppose that your extension module is linked with another - library like this:

    -
    -
    + SWIG input file to remove the offending declaration or you can use the 
    +%ignore directive to ignore the declaration. Better yet, update the
    + header file so that it doesn't have an undefined declaration.

    +

    Finally, suppose that your extension module is linked with another + library like this:

    +
    +
     $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
           -o example.so
    -
    -
    -

    If the foo library is compiled as a shared library, you - might get the following error when you try to use your module:

    -
    -
    +
    +
    +

    If the foo library is compiled as a shared library, you + might get the following error when you try to use your module:

    +
    +
     use example;
     Can't load './example.so' for module example: libfoo.so: cannot open shared object file: 
     No such file or directory at /usr/lib/perl/5.14/i386-linux/DynaLoader.pm line 169.
    @@ -42334,113 +40519,113 @@ No such file or directory at /usr/lib/perl/5.14/i386-linux/DynaLoader.pm line 16
      at - line 1
     BEGIN failed--compilation aborted at - line 1.
     >>>                 
    -
    -
    -

    This error is generated because the dynamic linker can't locate the -libfoo.so library. When shared libraries are loaded, the system - normally only checks a few standard locations such as /usr/lib - and /usr/local/lib. To get the loader to look in other +

    +
    +

    This error is generated because the dynamic linker can't locate the +libfoo.so library. When shared libraries are loaded, the system + normally only checks a few standard locations such as /usr/lib + and /usr/local/lib. To get the loader to look in other locations, there are several things you can do. First, you can recompile your extension module with extra path information. For - example, on Linux you can do this:

    -
    -
    + example, on Linux you can do this:

    +
    +
     $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
    -      -Xlinker -rpath /home/beazley/projects/lib \
    +      -Xlinker -rpath /home/beazley/projects/lib \
           -o example.so
    -
    -
    -

    Alternatively, you can set the LD_LIBRARY_PATH environment +

    +
    +

    Alternatively, you can set the LD_LIBRARY_PATH environment variable to include the directory with your shared libraries. If - setting LD_LIBRARY_PATH, be aware that setting this variable + setting LD_LIBRARY_PATH, be aware that setting this variable can introduce a noticeable performance impact on all other applications that you run. To set it only for Perl, you might want to do this - instead:

    -
    -
    + instead:

    +
    +
     $ env LD_LIBRARY_PATH=/home/beazley/projects/lib perl
    -
    -
    -

    Finally, you can use a command such as ldconfig (Linux) or -crle (Solaris) to add additional search paths to the default system +

    +
    +

    Finally, you can use a command such as ldconfig (Linux) or +crle (Solaris) to add additional search paths to the default system configuration (this requires root access and you will need to read the - man pages).

    -

    33.2.6 Compilation problems and compiling with - C++

    -

    Compilation of C++ extensions has traditionally been a tricky + man pages).

    +

    30.2.6 Compilation problems and compiling with + C++

    +

    Compilation of C++ extensions has traditionally been a tricky problem. Since the Perl interpreter is written in C, you need to take steps to make sure C++ is properly initialized and that modules are - compiled correctly.

    -

    On most machines, C++ extension modules should be linked using the - C++ compiler. For example:

    -
    -
    + compiled correctly.

    +

    On most machines, C++ extension modules should be linked using the + C++ compiler. For example:

    +
    +
     $ swig -c++ -perl example.i
     $ g++ -fPIC -c example.cxx
     $ g++ -fPIC -c example_wrap.cxx -I/usr/lib/perl/5.14/i386-linux/CORE
    -$ g++ -shared example.o example_wrap.o -o example.so
    -
    -
    -

    In addition to this, you may need to include additional library +$ g++ -shared example.o example_wrap.o -o example.so +

    +
    +

    In addition to this, you may need to include additional library files to make it work. For example, if you are using the Sun C++ - compiler on Solaris, you often need to add an extra library -lCrun - like this:

    -
    -
    + compiler on Solaris, you often need to add an extra library -lCrun
    + like this:

    +
    +
     $ swig -c++ -perl example.i
     $ CC -Kpic -c example.cxx
     $ CC -Kpic -c example_wrap.cxx -I/usr/lib/perl/5.14/i386-linux/CORE
    -$ CC -shared example.o example_wrap.o -o example.so -lCrun
    -
    -
    -

    Of course, the names of the extra libraries are completely - non-portable---you will probably need to do some experimentation.

    -

    Another possible compile problem comes from recent versions of Perl +$ CC -shared example.o example_wrap.o -o example.so -lCrun +

    +
    +

    Of course, the names of the extra libraries are completely + non-portable---you will probably need to do some experimentation.

    +

    Another possible compile problem comes from recent versions of Perl (5.8.0) and the GNU tools. If you see errors having to do with _crypt_struct, that means _GNU_SOURCE is not defined and it needs to - be. So you should compile the wrapper like:

    -
    -
    + be. So you should compile the wrapper like:

    +
    +
     $ g++ -fPIC -c example_wrap.cxx -I/usr/lib/perl/5.8.0/CORE -D_GNU_SOURCE
    -
    -
    -

    -D_GNU_SOURCE is also included in the Perl ccflags, which can be - found by running

    -
    -
    +
    +
    +

    -D_GNU_SOURCE is also included in the Perl ccflags, which can be + found by running

    +
    +
     $ perl -e 'use Config; print "$Config{ccflags}\n";'
    -
    -
    -

    So you could also compile the wrapper like

    -
    -
    +
    +
    +

    So you could also compile the wrapper like

    +
    +
     $ g++ -fPIC -c example_wrap.cxx -I/usr/lib/perl/5.8.0/CORE \
     `perl -MConfig -e 'print $Config{ccflags}'`
    -
    -
    -

    Sometimes people have suggested that it is necessary to relink the +

    +
    +

    Sometimes people have suggested that it is necessary to relink the Perl interpreter using the C++ compiler to make C++ extension modules work. In the experience of this author, this has never actually appeared to be necessary on most platforms. Relinking the interpreter with C++ really only includes the special run-time libraries described above---as long as you link your extension modules with these - libraries, it should not be necessary to rebuild Perl.

    -

    If you aren't entirely sure about the linking of a C++ extension, - you might look at an existing C++ program. On many Unix machines, the -ldd command will list library dependencies. This should give you + libraries, it should not be necessary to rebuild Perl.

    +

    If you aren't entirely sure about the linking of a C++ extension, + you might look at an existing C++ program. On many Unix machines, the +ldd command will list library dependencies. This should give you some clues about what you might have to include when you link your - extension module. For example, notice the first line of output here:

    -
    -
    + extension module. For example, notice the first line of output here:

    +
    +
     $ ldd swig
    -        libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x40019000)
    +        libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x40019000)
             libm.so.6 => /lib/libm.so.6 (0x4005b000)
             libc.so.6 => /lib/libc.so.6 (0x40077000)
             /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
     $
    -
    -
    -

    If linking wasn't enough of a problem, another major complication of +

    +
    +

    If linking wasn't enough of a problem, another major complication of C++ is that it does not define any sort of standard for binary linking of libraries. This means that C++ code compiled by different compilers will not link together properly as libraries nor is the memory layout @@ -42452,24 +40637,24 @@ $ start sharing data, you will need to take steps to avoid segmentation faults and other erratic program behavior. Also, be aware that certain C++ features, especially RTTI, can behave strangely when working with - multiple modules.

    -

    It should be noted that you may get a lot of error messages about - the 'bool' datatype when compiling a C++ Perl module. If you - experience this problem, you can try the following:

    -
      -
    • Use -DHAS_BOOL when compiling the SWIG wrapper code
    • -
    • Or use -Dbool=char when compiling.
    • -
    -

    Finally, recent versions of Perl (5.8.0) have namespace conflict + multiple modules.

    +

    It should be noted that you may get a lot of error messages about + the 'bool' datatype when compiling a C++ Perl module. If you + experience this problem, you can try the following:

    +
      +
    • Use -DHAS_BOOL when compiling the SWIG wrapper code
    • +
    • Or use -Dbool=char when compiling.
    • +
    +

    Finally, recent versions of Perl (5.8.0) have namespace conflict problems. Perl defines a bunch of short macros to make the Perl API function names shorter. For example, in - /usr/lib/perl/5.8.0/CORE/embed.h there is a line:

    -
    -
    + /usr/lib/perl/5.8.0/CORE/embed.h there is a line:

    +
    +
     #define do_open Perl_do_open
    -
    -
    -

    The problem is, in the <iostream> header from GNU libstdc++v3 there +

    +
    +

    The problem is, in the <iostream> header from GNU libstdc++v3 there is a private function named do_open. If <iostream> is included after the perl headers, then the Perl macro causes the iostream do_open to be renamed, which causes compile errors. Hopefully in the future Perl will @@ -42480,149 +40665,149 @@ $ other macros not included in Lib/perl5/noembed.h while compiling the wrapper, you will have to find the macro that conflicts and add an #undef into the .i file. Please report any conflicting macros you find - to swig-user mailing list.

    -

    33.2.7 Compiling for 64-bit platforms

    -

    On platforms that support 64-bit applications (Solaris, Irix, etc.), + to swig-user mailing list.

    +

    30.2.7 Compiling for 64-bit platforms

    +

    On platforms that support 64-bit applications (Solaris, Irix, etc.), special care is required when building extension modules. On these machines, 64-bit applications are compiled and linked using a different set of compiler/linker options. In addition, it is not generally possible to mix 32-bit and 64-bit code together in the same - application.

    -

    To utilize 64-bits, the Perl executable will need to be recompiled + application.

    +

    To utilize 64-bits, the Perl executable will need to be recompiled as a 64-bit application. In addition, all libraries, wrapper code, and every other part of your application will need to be compiled for 64-bits. If you plan to use other third-party extension modules, they - will also have to be recompiled as 64-bit extensions.

    -

    If you are wrapping commercial software for which you have no source + will also have to be recompiled as 64-bit extensions.

    +

    If you are wrapping commercial software for which you have no source code, you will be forced to use the same linking standard as used by that software. This may prevent the use of 64-bit extensions. It may also introduce problems on platforms that support more than one linking - standard (e.g., -o32 and -n32 on Irix).

    -

    33.3 Building Perl Extensions under Windows

    -

    Building a SWIG extension to Perl under Windows is roughly similar + standard (e.g., -o32 and -n32 on Irix).

    +

    30.3 Building Perl Extensions under Windows

    +

    Building a SWIG extension to Perl under Windows is roughly similar to the process used with Unix. Normally, you will want to produce a DLL that can be loaded into the Perl interpreter. This section assumes you are using SWIG with Microsoft Visual C++ although the procedure may be - similar with other compilers.

    -

    33.3.1 Running SWIG from Developer Studio

    -

    If you are developing your application within Microsoft developer + similar with other compilers.

    +

    30.3.1 Running SWIG from Developer Studio

    +

    If you are developing your application within Microsoft developer studio, SWIG can be invoked as a custom build option. The process - roughly requires these steps:

    -
      -
    • Open up a new workspace and use the AppWizard to select a DLL - project.
    • -
    • Add both the SWIG interface file (the .i file), any supporting C + roughly requires these steps:

      +
        +
      • Open up a new workspace and use the AppWizard to select a DLL + project.
      • +
      • Add both the SWIG interface file (the .i file), any supporting C files, and the name of the wrapper file that will be created by SWIG - (ie. example_wrap.c). Note: If using C++, choose a different - suffix for the wrapper file such as example_wrap.cxx. Don't + (ie. example_wrap.c). Note: If using C++, choose a different + suffix for the wrapper file such as example_wrap.cxx. Don't worry if the wrapper file doesn't exist yet--Developer studio will keep - a reference to it around.
      • -
      • Select the SWIG interface file and go to the settings menu. Under - settings, select the "Custom Build" option.
      • -
      • Enter "SWIG" in the description field.
      • -
      • Enter "swig -perl5 -o $(ProjDir)\$(InputName)_wrap.cxx - $(InputPath)" in the "Build command(s) field"
      • -
      • Enter "$(ProjDir)\$(InputName)_wrap.cxx" in the "Output - files(s) field".
      • -
      • Next, select the settings for the entire project and go to + a reference to it around.
      • +
      • Select the SWIG interface file and go to the settings menu. Under + settings, select the "Custom Build" option.
      • +
      • Enter "SWIG" in the description field.
      • +
      • Enter "swig -perl5 -o $(ProjDir)\$(InputName)_wrap.cxx + $(InputPath)" in the "Build command(s) field"
      • +
      • Enter "$(ProjDir)\$(InputName)_wrap.cxx" in the "Output + files(s) field".
      • +
      • Next, select the settings for the entire project and go to "C++:Preprocessor". Add the include directories for your Perl 5 - installation under "Additional include directories".
      • -
      • Define the symbols WIN32 and MSWIN32 under preprocessor options. If + installation under "Additional include directories".
      • +
      • Define the symbols WIN32 and MSWIN32 under preprocessor options. If using the ActiveWare port, also define the symbol PERL_OBJECT. Note that all extensions to the ActiveWare port must be compiled with the - C++ compiler since Perl has been encapsulated in a C++ class.
      • -
      • Finally, select the settings for the entire project and go to "Link + C++ compiler since Perl has been encapsulated in a C++ class.
      • +
      • Finally, select the settings for the entire project and go to "Link Options". Add the Perl library file to your link libraries. For example "perl.lib". Also, set the name of the output file to match the name of - your Perl module (ie. example.dll).
      • -
      • Build your project.
      • -
      -

      Now, assuming you made it this far, SWIG will be automatically + your Perl module (ie. example.dll).

    • +
    • Build your project.
    • +
    +

    Now, assuming you made it this far, SWIG will be automatically invoked when you build your project. Any changes made to the interface file will result in SWIG being automatically invoked to produce a new version of the wrapper file. To run your new Perl extension, simply run - Perl and use the use command as normal. For example:

    -
    -
    + Perl and use the use command as normal. For example:

    +
    +
     DOS > perl
     use example;
     $a = example::fact(4);
     print "$a\n";
     
    -
    -
    -

    33.3.2 Using other compilers

    -

    SWIG is known to work with Cygwin and may work with other compilers - on Windows. For general hints and suggestions refer to the -Windows chapter.

    -

    33.4 The low-level interface

    -

    At its core, the Perl module uses a simple low-level interface to C +

    +
    +

    30.3.2 Using other compilers

    +

    SWIG is known to work with Cygwin and may work with other compilers + on Windows. For general hints and suggestions refer to the +Windows chapter.

    +

    30.4 The low-level interface

    +

    At its core, the Perl module uses a simple low-level interface to C function, variables, constants, and classes. This low-level interface can be used to control your application. However, it is also used to construct more user-friendly proxy classes as described in the next - section.

    -

    33.4.1 Functions

    -

    C functions are converted into new Perl built-in commands (or - subroutines). For example:

    -
    -
    + section.

    +

    30.4.1 Functions

    +

    C functions are converted into new Perl built-in commands (or + subroutines). For example:

    +
    +
     %module example
     int fact(int a);
     ...
    -
    -
    -

    Now, in Perl:

    -
    -
    +
    +
    +

    Now, in Perl:

    +
    +
     use example;
     $a = &example::fact(2);
    -
    -
    -

    33.4.2 Global variables

    -

    Global variables are handled using Perl's magic variable mechanism. +

    +
    +

    30.4.2 Global variables

    +

    Global variables are handled using Perl's magic variable mechanism. SWIG generates a pair of functions that intercept read/write operations and attaches them to a Perl variable with the same name as the C global - variable. Thus, an interface like this

    -
    -
    + variable. Thus, an interface like this

    +
    +
     %module example;
     ...
     double Spam;
     ...
    -
    -
    -

    is accessed as follows:

    -
    -
    +
    +
    +

    is accessed as follows:

    +
    +
     use example;
     print $example::Spam, "\n";
     $example::Spam = $example::Spam + 4
     # ... etc ...
     
    -
    -
    -

    If a variable is declared as const, it is wrapped as a +

    +
    +

    If a variable is declared as const, it is wrapped as a read-only variable. Attempts to modify its value will result in an - error.

    -

    To make ordinary variables read-only, you can also use the -%immutable directive. For example:

    -
    -
    + error.

    +

    To make ordinary variables read-only, you can also use the +%immutable directive. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable;
     extern char *path;
     %mutable;
    -
    -
    -

    The %immutable directive stays in effect until it is - explicitly disabled or cleared using %mutable. See the -Creating read-only variables section for further details.

    -

    It is also possible to tag a specific variable as read-only like - this:

    -
    -
    +
    +
    +

    The %immutable directive stays in effect until it is + explicitly disabled or cleared using %mutable. See the +Creating read-only variables section for further details.

    +

    It is also possible to tag a specific variable as read-only like + this:

    +
    +
     %{
     extern char *path;
     %}
    @@ -42630,96 +40815,96 @@ extern char *path;
     ...
     ...
     extern char *path;       // Declared later in the input
    -
    -
    -

    33.4.3 Constants

    -

    By default, constants are wrapped as read-only Perl variables. For - example:

    -
    -
    +
    +
    +

    30.4.3 Constants

    +

    By default, constants are wrapped as read-only Perl variables. For + example:

    +
    +
     %module example
     
     #define FOO 42
    -
    -
    -

    In Perl:

    -
    -
    +
    +
    +

    In Perl:

    +
    +
     use example;
     print $example::FOO, "\n";   # OK
     $example::FOO = 2;           # Error
    -
    -
    -

    Alternatively, if you use swig's -const option, constants +

    +
    +

    Alternatively, if you use swig's -const option, constants are wrapped such that the leading $ isn't required (by using a constant subroutine), which usually gives a more natural Perl interface, for - example:

    -
    -
    + example:

    +
    +
     use example;
     print example::FOO, "\n";
    -
    -
    -

    33.4.4 Pointers

    -

    SWIG represents pointers as blessed references. A blessed reference +

    +
    +

    30.4.4 Pointers

    +

    SWIG represents pointers as blessed references. A blessed reference is the same as a Perl reference except that it has additional information attached to it indicating what kind of reference it is. - That is, if you have a C declaration like this:

    -
    -
    + That is, if you have a C declaration like this:

    +
    +
     Matrix *new_Matrix(int n, int m);
    -
    -
    -

    The module returns a value generated as follows:

    -
    -
    +
    +
    +

    The module returns a value generated as follows:

    +
    +
     $ptr = new_Matrix(int n, int m);     # Save pointer return result
     bless $ptr, "p_Matrix";              # Bless it as a pointer to Matrix
    -
    -
    -

    SWIG uses the "blessing" to check the datatype of various pointers. - In the event of a mismatch, an error or warning message is generated.

    -

    To check to see if a value is the NULL pointer, use the -defined() command:

    -
    -
    +
    +
    +

    SWIG uses the "blessing" to check the datatype of various pointers. + In the event of a mismatch, an error or warning message is generated.

    +

    To check to see if a value is the NULL pointer, use the +defined() command:

    +
    +
     if (defined($ptr)) {
       print "Not a NULL pointer.";
     } else {
       print "Is a NULL pointer.";
     }
     
    -
    -
    -

    To create a NULL pointer, you should pass the undef value - to a function.

    -

    The "value" of a Perl reference is not the same as the underlying C - pointer that SWIG wrapper functions return. Suppose that $a - and $b are two references that point to the same C object. In - general, $a and $b will be different--since they are - different references. Thus, it is a mistake to check the equality of -$a and $b to check the equality of two C pointers. The +

    +
    +

    To create a NULL pointer, you should pass the undef value + to a function.

    +

    The "value" of a Perl reference is not the same as the underlying C + pointer that SWIG wrapper functions return. Suppose that $a + and $b are two references that point to the same C object. In + general, $a and $b will be different--since they are + different references. Thus, it is a mistake to check the equality of +$a and $b to check the equality of two C pointers. The correct method to check equality of C pointers is to dereference them - as follows:

    -
    -
    + as follows:

    +
    +
     if ($$a == $$b) {
       print "a and b point to the same thing in C";
     } else {
       print "a and b point to different objects.";
     }
     
    -
    -
    -

    As much as you might be inclined to modify a pointer value directly +

    +
    +

    As much as you might be inclined to modify a pointer value directly from Perl, don't. Manipulating pointer values is architecture dependent and could cause your program to crash. Similarly, don't try to manually cast a pointer to a new type by reblessing a pointer. This may not work like you expect and it is particularly dangerous when casting C++ objects. If you need to cast a pointer or change its value, consider - writing some helper functions instead. For example:

    -
    -
    + writing some helper functions instead. For example:

    +
    +
     %inline %{
     /* C-style cast */
     Bar *FooToBar(Foo *f) {
    @@ -42732,33 +40917,33 @@ Foo *BarToFoo(Bar *b) {
     }
     
     Foo *IncrFoo(Foo *f, int i) {
    -    return f+i;
    +  return f+i;
     }
     %}
    -
    -
    -

    Also, if working with C++, you should always try to use the new C++ +

    +
    +

    Also, if working with C++, you should always try to use the new C++ style casts. For example, in the above code, the C-style cast may - return a bogus result whereas as the C++-style cast will return -NULL if the conversion can't be performed.

    -

    Compatibility Note: In earlier versions, SWIG tried to - preserve the same pointer naming conventions as XS and xsubpp. + return a bogus result whereas as the C++-style cast will return +NULL if the conversion can't be performed.

    +

    Compatibility Note: In earlier versions, SWIG tried to + preserve the same pointer naming conventions as XS and xsubpp. Given the advancement of the SWIG typesystem and the growing - differences between SWIG and XS, this is no longer supported.

    -

    33.4.5 Structures

    -

    Access to the contents of a structure are provided through a set of + differences between SWIG and XS, this is no longer supported.

    +

    30.4.5 Structures

    +

    Access to the contents of a structure are provided through a set of low-level accessor functions as described in the "SWIG Basics" chapter. - For example,

    -
    -
    + For example,

    +
    +
     struct Vector {
       double x, y, z;
     };
    -
    -
    -

    gets mapped into the following collection of accessor functions:

    -
    -
    +
    +
    +

    gets mapped into the following collection of accessor functions:

    +
    +
     struct Vector *new_Vector();
     void           delete_Vector(Vector *v);
     double         Vector_x_get(Vector *obj)
    @@ -42768,24 +40953,24 @@ void           Vector_y_set(Vector *obj, double y)
     double         Vector_z_get(Vector *obj)
     void           Vector_z_set(Vector *obj, double z)
     
    -
    -
    -

    These functions are then used to access structure data from Perl as - follows:

    -
    -
    +
    +
    +

    These functions are then used to access structure data from Perl as + follows:

    +
    +
     $v = example::new_Vector();
     print example::Vector_x_get($v), "\n";   # Get x component
     example::Vector_x_set($v, 7.8);          # Change x component
    -
    -
    -

    Similar access is provided for unions and the data members of C++ - classes.

    -

    const members of a structure are read-only. Data members - can also be forced to be read-only using the %immutable - directive. For example:

    -
    -
    +
    +
    +

    Similar access is provided for unions and the data members of C++ + classes.

    +

    const members of a structure are read-only. Data members + can also be forced to be read-only using the %immutable + directive. For example:

    +
    +
     struct Foo {
       ...
       %immutable;
    @@ -42794,38 +40979,38 @@ struct Foo {
       %mutable;
       ...
     };
    -
    -
    -

    When char * members of a structure are wrapped, the - contents are assumed to be dynamically allocated using malloc - or new (depending on whether or not SWIG is run with the -c++ +

    +
    +

    When char * members of a structure are wrapped, the + contents are assumed to be dynamically allocated using malloc + or new (depending on whether or not SWIG is run with the -c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior you want, - you will have to use a typemap (described later).

    -

    Array members are normally wrapped as read-only. For example,

    -
    -
    + you will have to use a typemap (described later).

    +

    Array members are normally wrapped as read-only. For example,

    +
    +
     struct Foo {
       int x[50];
     };
    -
    -
    -

    produces a single accessor function like this:

    -
    -
    +
    +
    +

    produces a single accessor function like this:

    +
    +
     int *Foo_x_get(Foo *self) {
    -    return self->x;
    +  return self->x;
     };
    -
    -
    -

    If you want to set an array member, you will need to supply a +

    +
    +

    If you want to set an array member, you will need to supply a "memberin" typemap described later in this chapter. As a special case, - SWIG does generate code to set array members of type char - (allowing you to store a Python string in the structure).

    -

    When structure members are wrapped, they are handled as pointers. - For example,

    -
    -
    + SWIG does generate code to set array members of type char
    + (allowing you to store a Python string in the structure).

    +

    When structure members are wrapped, they are handled as pointers. + For example,

    +
    +
     struct Foo {
       ...
     };
    @@ -42833,25 +41018,25 @@ struct Foo {
     struct Bar {
       Foo f;
     };
    -
    -
    -

    generates accessor functions such as this:

    -
    -
    +
    +
    +

    generates accessor functions such as this:

    +
    +
     Foo *Bar_f_get(Bar *b) {
    -    return &b->f;
    +  return &b->f;
     }
     
     void Bar_f_set(Bar *b, Foo *val) {
    -    b->f = *val;
    +  b->f = *val;
     }
    -
    -
    -

    33.4.6 C++ classes

    -

    C++ classes are wrapped by building a set of low level accessor - functions. Consider the following class:

    -
    -
    +
    +
    +

    30.4.6 C++ classes

    +

    C++ classes are wrapped by building a set of low level accessor + functions. Consider the following class:

    +
    +
     class List {
     public:
       List();
    @@ -42863,11 +41048,11 @@ public:
       int  length;
     static void print(List *l);
     };
    -
    -
    -

    When wrapped by SWIG, the following functions are created:

    -
    -
    +
    +
    +

    When wrapped by SWIG, the following functions are created:

    +
    +
     List    *new_List();
     void     delete_List(List *l);
     int      List_search(List *l, char *item);
    @@ -42878,11 +41063,11 @@ int      List_length_get(List *l);
     void     List_length_set(List *l, int n);
     void     List_print(List *l);
     
    -
    -
    -

    In Perl, these functions are used in a straightforward manner:

    -
    -
    +
    +
    +

    In Perl, these functions are used in a straightforward manner:

    +
    +
     use example;
     $l = example::new_List();
     example::List_insert($l, "Ale");
    @@ -42894,19 +41079,19 @@ Stout
     Ale
     print example::List_length_get($l), "\n";
     3
    -
    -
    -

    At this low level, C++ objects are really just typed pointers. +

    +
    +

    At this low level, C++ objects are really just typed pointers. Member functions are accessed by calling a C-like wrapper with an instance pointer as the first argument. Although this interface is fairly primitive, it provides direct access to C++ objects. A higher level interface using Perl proxy classes can be built using these - low-level accessors. This is described shortly.

    -

    33.4.7 C++ classes and type-checking

    -

    The SWIG type-checker is fully aware of C++ inheritance. Therefore, - if you have classes like this

    -
    -
    + low-level accessors. This is described shortly.

    +

    30.4.7 C++ classes and type-checking

    +

    The SWIG type-checker is fully aware of C++ inheritance. Therefore, + if you have classes like this

    +
    +
     class Foo {
     ...
     };
    @@ -42914,24 +41099,24 @@ class Foo {
     class Bar : public Foo {
     ...
     };
    -
    -
    -

    and a function

    -
    -
    +
    +
    +

    and a function

    +
    +
     void spam(Foo *f);
    -
    -
    -

    then the function spam() accepts Foo * or a - pointer to any class derived from Foo. If necessary, the +

    +
    +

    then the function spam() accepts Foo * or a + pointer to any class derived from Foo. If necessary, the type-checker also adjusts the value of the pointer (as is necessary - when multiple inheritance is used).

    -

    33.4.8 C++ overloaded functions

    -

    If you have a C++ program with overloaded functions or methods, you - will need to disambiguate those methods using %rename. For - example:

    -
    -
    + when multiple inheritance is used).

    +

    30.4.8 C++ overloaded functions

    +

    If you have a C++ program with overloaded functions or methods, you + will need to disambiguate those methods using %rename. For + example:

    +
    +
     /* Forward renaming declarations */
     %rename(foo_i) foo(int); 
     %rename(foo_d) foo(double);
    @@ -42945,92 +41130,92 @@ public:
       void foo(double);   // Becomes 'foo_d'
       ...
     };
    -
    -
    -

    Now, in Perl, the methods are accessed as follows:

    -
    -
    +
    +
    +

    Now, in Perl, the methods are accessed as follows:

    +
    +
     use example;
     example::foo_i(3);
     $s = example::new_Spam();
     example::Spam_foo_i($s, 3);
     example::Spam_foo_d($s, 3.14);
    -
    -
    -

    Please refer to the "SWIG Basics" chapter for more information.

    -

    33.4.9 Operators

    -

    As of version 1.3.27 SWIG automatically renames the most common C++ +

    +
    +

    Please refer to the "SWIG Basics" chapter for more information.

    +

    30.4.9 Operators

    +

    As of version 1.3.27 SWIG automatically renames the most common C++ operators, and maps them into the perl module with the proper 'use - overload ...' so you don't need to do any work.

    -

    The following C++ operators are currently supported by the Perl - module:

    -
      -
    • operator++
    • -
    • operator--
    • -
    • operator+
    • -
    • operator-
    • -
    • operator*
    • -
    • operator/
    • -
    • operator==
    • -
    • operator!=
    • -
    • operator%
    • -
    • operator>
    • -
    • operator<
    • -
    • operator and
    • -
    • operator or
    • -
    -

    33.4.10 Modules and packages

    -

    When you create a SWIG extension, everything gets placed into a - single Perl module. The name of the module is determined by the -%module directive. To use the module, do the following:

    -
    -
    + overload ...' so you don't need to do any work.

    +

    The following C++ operators are currently supported by the Perl + module:

    +
      +
    • operator++
    • +
    • operator--
    • +
    • operator+
    • +
    • operator-
    • +
    • operator*
    • +
    • operator/
    • +
    • operator==
    • +
    • operator!=
    • +
    • operator%
    • +
    • operator>
    • +
    • operator<
    • +
    • operator and
    • +
    • operator or
    • +
    +

    30.4.10 Modules and packages

    +

    When you create a SWIG extension, everything gets placed into a + single Perl module. The name of the module is determined by the +%module directive. To use the module, do the following:

    +
    +
     $ perl5
     use example;                      # load the example module
     print example::fact(4), "\n"      # Call a function in it
     24
    -
    -
    -

    Usually, a module consists of a collection of code that is contained +

    +
    +

    Usually, a module consists of a collection of code that is contained within a single file. A package, on the other hand, is the Perl equivalent of a namespace. A package is a lot like a module, except that it is independent of files. Any number of files may be part of the same package--or a package may be broken up into a collection of - modules if you prefer to think about it in this way.

    -

    SWIG installs its functions into a package with the same name as the - module.

    -

    Incompatible Change: previous versions of SWIG enabled you to + modules if you prefer to think about it in this way.

    +

    SWIG installs its functions into a package with the same name as the + module.

    +

    Incompatible Change: previous versions of SWIG enabled you to change the name of the package by using the -package option, this feature has been removed in order to properly support modules that used nested namespaces, e.g. Foo::Bar::Baz. To give your module a nested namespace simply provide the fully qualified name in your %module - directive:

    -
    -
    + directive:

    +
    +
     %module "Foo::Bar::Baz"
    -
    -
    -

    NOTE: the double quotes are necessary.

    -

    Using the package option of the %module directive +

    +
    +

    NOTE: the double quotes are necessary.

    +

    Using the package option of the %module directive allows you to specify what Perl namespace that the module will be living in when installed. This is useful in the situation where a module maintainer wants to split a large module into smaller pieces to make maintenance easier, but doesn't want to have that affect the - module name used by applications. So for example, if I wanted to split -XML::Xerces into XML::Xerces::SAX, etc. , but I wanted all - the applications to be able to access the classes using the -XML::Xerces namespace I could use:

    -
    -
    + module name used by applications. So for example, if I wanted to split 
    +XML::Xerces into XML::Xerces::SAX, etc. , but I wanted all
    + the applications to be able to access the classes using the 
    +XML::Xerces namespace I could use:

    +
    +
     %module(package="XML::Xerces") "XML::Xerces::SAX
    -
    -
    -

    And now all the applications could use the class -XML::Xerces::SAXParser. Without the package directive - splitting the module would force applications to use the class -XML::Xerces::SAX::SAXParser. This could break compatibility for - existing applications that are already using the class under the name -XML::Xerces::SAXParser.

    +
    +
    +

    And now all the applications could use the class +XML::Xerces::SAXParser. Without the package directive + splitting the module would force applications to use the class +XML::Xerces::SAX::SAXParser. This could break compatibility for + existing applications that are already using the class under the name +XML::Xerces::SAXParser.

    -

    33.5 Input and output parameters

    -

    A common problem in some C programs is handling parameters passed as - simple pointers. For example:

    -
    -
    +

    30.5 Input and output parameters

    +

    A common problem in some C programs is handling parameters passed as + simple pointers. For example:

    +
    +
     void add(int x, int y, int *result) {
       *result = x + y;
     }
    -
    -
    -

    or perhaps

    -
    -
    +
    +
    +

    or perhaps

    +
    +
     int sub(int *x, int *y) {
       return *x+*y;
     }
    -
    -
    -

    The easiest way to handle these situations is to use the -typemaps.i file. For example:

    -
    -
    +
    +
    +

    The easiest way to handle these situations is to use the +typemaps.i file. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
     void add(int, int, int *OUTPUT);
     int  sub(int *INPUT, int *INPUT);
    -
    -
    -

    In Perl, this allows you to pass simple values. For example:

    -
    -
    +
    +
    +

    In Perl, this allows you to pass simple values. For example:

    +
    +
     $a = example::add(3, 4);
     print "$a\n";
     7
     $b = example::sub(7, 4);
     print "$b\n";
     3
    -
    -
    -

    Notice how the INPUT parameters allow integer values to be - passed instead of pointers and how the OUTPUT parameter - creates a return result.

    -

    If you don't want to use the names INPUT or OUTPUT -, use the %apply directive. For example:

    -
    -
    +
    +
    +

    Notice how the INPUT parameters allow integer values to be + passed instead of pointers and how the OUTPUT parameter + creates a return result.

    +

    If you don't want to use the names INPUT or OUTPUT +, use the %apply directive. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
    @@ -43108,112 +41293,112 @@ print "$b\n";
     
     void add(int x, int y, int *result);
     int  sub(int *x, int *y);
    -
    -
    -

    If a function mutates one of its parameters like this,

    -
    -
    +
    +
    +

    If a function mutates one of its parameters like this,

    +
    +
     void negate(int *x) {
       *x = -(*x);
     }
    -
    -
    -

    you can use INOUT like this:

    -
    -
    +
    +
    +

    you can use INOUT like this:

    +
    +
     %include "typemaps.i"
     ...
     void negate(int *INOUT);
    -
    -
    -

    In Perl, a mutated parameter shows up as a return value. For - example:

    -
    -
    +
    +
    +

    In Perl, a mutated parameter shows up as a return value. For + example:

    +
    +
     $a = example::negate(3);
     print "$a\n";
     -3
    -
    -
    -

    The most common use of these special typemap rules is to handle +

    +
    +

    The most common use of these special typemap rules is to handle functions that return more than one value. For example, sometimes a - function returns a result as well as a special error code:

    -
    -
    + function returns a result as well as a special error code:

    +
    +
     /* send message, return number of bytes sent, along with success code */
     int send_message(char *text, int len, int *success);
    -
    -
    -

    To wrap such a function, simply use the OUTPUT rule above. - For example:

    -
    -
    +
    +
    +

    To wrap such a function, simply use the OUTPUT rule above. + For example:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *success };
     ...
     int send_message(char *text, int *success);
    -
    -
    -

    When used in Perl, the function will return multiple values.

    -
    -
    +
    +
    +

    When used in Perl, the function will return multiple values.

    +
    +
     ($bytes, $success) = example::send_message("Hello World");
    -
    -
    -

    Another common use of multiple return values are in query functions. - For example:

    -
    -
    +
    +
    +

    Another common use of multiple return values are in query functions. + For example:

    +
    +
     void get_dimensions(Matrix *m, int *rows, int *columns);
    -
    -
    -

    To wrap this, you might use the following:

    -
    -
    +
    +
    +

    To wrap this, you might use the following:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *rows, int *columns };
     ...
     void get_dimensions(Matrix *m, int *rows, *columns);
    -
    -
    -

    Now, in Perl:

    -
    -
    +
    +
    +

    Now, in Perl:

    +
    +
     ($r, $c) = example::get_dimensions($m);
    -
    -
    -

    In certain cases, it is possible to treat Perl references as C - pointers. To do this, use the REFERENCE typemap. For example:

    -
    -
    +
    +
    +

    In certain cases, it is possible to treat Perl references as C + pointers. To do this, use the REFERENCE typemap. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
     void add(int x, int y, int *REFERENCE);
    -
    -
    -

    In Perl:

    -
    -
    +
    +
    +

    In Perl:

    +
    +
     use example;
     $c = 0.0;
     example::add(3, 4, \$c);
     print "$c\n";
     7
    -
    -
    -

    Note: The REFERENCE feature is only currently - supported for numeric types (integers and floating point).

    -

    33.6 Exception handling

    -

    The SWIG %exception directive can be used to create a +

    +
    +

    Note: The REFERENCE feature is only currently + supported for numeric types (integers and floating point).

    +

    30.6 Exception handling

    +

    The SWIG %exception directive can be used to create a user-definable exception handler for converting exceptions in your C/C++ program into Perl exceptions. The chapter on customization features contains more details, but suppose you have a C++ class like - the following:

    -
    -
    + the following:

    +
    +
     class RangeError {};   // Used for an exception
     
     class DoubleArray {
    @@ -43247,18 +41432,17 @@ class DoubleArray {
         void setitem(int i, double val) {
           if ((i >= 0) && (i < n))
             ptr[i] = val;
    -      else {
    +      else
             throw RangeError();
    -      }
         }
       };
    -
    -
    -

    Since several methods in this class can throw an exception for an +

    +
    +

    Since several methods in this class can throw an exception for an out-of-bounds access, you might want to catch this in the Perl - extension by writing the following in an interface file:

    -
    -
    + extension by writing the following in an interface file:

    +
    +
     %exception {
       try {
         $action
    @@ -43271,20 +41455,20 @@ class DoubleArray {
     class DoubleArray {
     ...
     };
    -
    -
    -

    The exception handling code is inserted directly into generated - wrapper functions. The $action variable is replaced with the +

    +
    +

    The exception handling code is inserted directly into generated + wrapper functions. The $action variable is replaced with the C/C++ code being executed by the wrapper. When an exception handler is defined, errors can be caught and used to gracefully generate a Perl error instead of forcing the entire program to terminate with an - uncaught error.

    -

    As shown, the exception handling code will be added to every wrapper + uncaught error.

    +

    As shown, the exception handling code will be added to every wrapper function. Since this is somewhat inefficient. You might consider refining the exception handler to only apply to specific methods like - this:

    -
    -
    + this:

    +
    +
     %exception getitem {
       try {
         $action
    @@ -43302,14 +41486,14 @@ class DoubleArray {
         croak("Array index out-of-bounds");
       }
     }
    -
    -
    -

    In this case, the exception handler is only attached to methods and - functions named getitem and setitem.

    -

    If you had a lot of different methods, you can avoid extra typing by - using a macro. For example:

    -
    -
    +
    +
    +

    In this case, the exception handler is only attached to methods and + functions named getitem and setitem.

    +

    If you had a lot of different methods, you can avoid extra typing by + using a macro. For example:

    +
    +
     %define RANGE_ERROR
     {
       try {
    @@ -43323,15 +41507,15 @@ class DoubleArray {
     
     %exception getitem RANGE_ERROR;
     %exception setitem RANGE_ERROR;
    -
    -
    -

    Since SWIG's exception handling is user-definable, you are not - limited to C++ exception handling. See the chapter on " -Customization features" for more examples.

    -

    Compatibility note: In SWIG1.1, exceptions were defined using - the older %except directive:

    -
    -
    +
    +
    +

    Since SWIG's exception handling is user-definable, you are not + limited to C++ exception handling. See the chapter on " +Customization features" for more examples.

    +

    Compatibility note: In SWIG1.1, exceptions were defined using + the older %except directive:

    +
    +
     %except(python) {
       try {
         $function
    @@ -43340,27 +41524,27 @@ Customization features" for more examples.

    croak("Array index out-of-bounds"); } } -
    -
    -

    This is still supported, but it is deprecated. The newer -%exception directive provides the same functionality, but it has - additional capabilities that make it more powerful.

    -

    33.7 Remapping datatypes with typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap +

    +
    +

    This is still supported, but it is deprecated. The newer +%exception directive provides the same functionality, but it has + additional capabilities that make it more powerful.

    +

    30.7 Remapping datatypes with typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap directive. This is an advanced topic that assumes familiarity with the - Perl C API as well as the material in the "Typemaps -" chapter.

    -

    Before proceeding, it should be stressed that typemaps are not + Perl C API as well as the material in the "Typemaps +" chapter.

    +

    Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect - of the primitive C-Perl interface.

    -

    33.7.1 A simple typemap example

    -

    A typemap is nothing more than a code generation rule that is + of the primitive C-Perl interface.

    +

    30.7.1 A simple typemap example

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers - from Perl to C, you might define a typemap like this:

    -
    -
    + from Perl to C, you might define a typemap like this:

    +
    +
     %module example
     
     %typemap(in) int {
    @@ -43372,19 +41556,19 @@ Customization features" for more examples.

    extern int fact(int n); %} -
    -
    -

    Typemaps are always associated with some specific aspect of code +

    +
    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of - input arguments to C/C++. The datatype int is the datatype to + input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variable prefaced by a - $ are used. The $1 variable is placeholder for a - local variable of type int. The $input variable is - the input object (usually a SV *).

    -

    When this example is used in Perl5, it will operate as follows:

    -
    -
    + $ are used. The $1 variable is placeholder for a
    + local variable of type int. The $input variable is
    + the input object (usually a SV *).

    +

    When this example is used in Perl5, it will operate as follows:

    +
    +
     use example;
     $n = example::fact(6);
     print "$n\n";
    @@ -43393,16 +41577,16 @@ print "$n\n";
     Output:
     Received an integer : 6
     720
    -
    -
    -

    The application of a typemap to specific datatypes and argument +

    +
    +

    The application of a typemap to specific datatypes and argument names involves more than simple text-matching--typemaps are fully - integrated into the SWIG type-system. When you define a typemap for -int, that typemap applies to int and qualified variations - such as const int. In addition, the typemap system follows -typedef declarations. For example:

    -
    -
    + integrated into the SWIG type-system. When you define a typemap for 
    +int, that typemap applies to int and qualified variations
    + such as const int. In addition, the typemap system follows 
    +typedef declarations. For example:

    +
    +
     %typemap(in) int n {
       $1 = (int) SvIV($input);
       printf("n = %d\n", $1);
    @@ -43411,126 +41595,126 @@ typedef declarations. For example:

    typedef int Integer; extern int fact(Integer n); // Above typemap is applied %} -
    -
    -

    It should be noted that the matching of typedef only occurs - in one direction. If you defined a typemap for Integer, it is - not applied to arguments of type int.

    -

    Typemaps can also be defined for groups of consecutive arguments. - For example:

    -
    -
    +
    +
    +

    It should be noted that the matching of typedef only occurs + in one direction. If you defined a typemap for Integer, it is + not applied to arguments of type int.

    +

    Typemaps can also be defined for groups of consecutive arguments. + For example:

    +
    +
     %typemap(in) (char *str, unsigned len) {
         $1 = SvPV($input, $2);
     };
     
     int count(char c, char *str, unsigned len);
    -
    -
    -

    When a multi-argument typemap is defined, the arguments are always +

    +
    +

    When a multi-argument typemap is defined, the arguments are always handled as a single Perl object. This allows the function to be used - like this (notice how the length parameter is omitted):

    -
    -
    + like this (notice how the length parameter is omitted):

    +
    +
     example::count("e", "Hello World");
     1
     >>>
    -
    -
    -

    33.7.2 Perl5 typemaps

    -

    The previous section illustrated an "in" typemap for converting Perl +

    +
    +

    30.7.2 Perl5 typemaps

    +

    The previous section illustrated an "in" typemap for converting Perl objects to C. A variety of different typemap methods are defined by the Perl module. For example, to convert a C integer back into a Perl - object, you might define an "out" typemap like this:

    -
    -
    + object, you might define an "out" typemap like this:

    +
    +
     %typemap(out) int {
    -    $result = sv_newmortal();
    -    set_setiv($result, (IV) $1);
    -    argvi++;
    +  $result = sv_newmortal();
    +  sv_setiv($result, (IV) $1);
    +  argvi++;
     }
    -
    -
    -

    The following typemap methods are available:

    -

    %typemap(in)

    -
    Converts Perl5 object to input function arguments.
    -

    %typemap(out)

    -
    Converts function return value to a Perl5 value.
    -

    %typemap(varin)

    -
    Converts a Perl5 object to a global variable.
    -

    %typemap(varout)

    -
    Converts a global variable to a Perl5 object.
    -

    %typemap(freearg)

    -
    Cleans up a function argument after a function call
    -

    %typemap(argout)

    -
    Output argument handling
    -

    %typemap(ret)

    -
    Clean up return value from a function.
    -

    %typemap(memberin)

    -
    Setting of C++ member data (all languages).
    -

    %typemap(memberout)

    -
    Return of C++ member data (all languages).
    -

    %typemap(check)

    -
    Check value of input parameter.
    -

    33.7.3 Typemap variables

    -

    Within typemap code, a number of special variables prefaced with a -$ may appear. A full list of variables can be found in the " -Typemaps" chapter. This is a list of the most common variables:

    -

    $1

    -
    A C local variable corresponding to the actual type - specified in the %typemap directive. For input values, this is +
    +
    +

    The following typemap methods are available:

    +

    %typemap(in)

    +
    Converts Perl5 object to input function arguments.
    +

    %typemap(out)

    +
    Converts function return value to a Perl5 value.
    +

    %typemap(varin)

    +
    Converts a Perl5 object to a global variable.
    +

    %typemap(varout)

    +
    Converts a global variable to a Perl5 object.
    +

    %typemap(freearg)

    +
    Cleans up a function argument after a function call
    +

    %typemap(argout)

    +
    Output argument handling
    +

    %typemap(ret)

    +
    Clean up return value from a function.
    +

    %typemap(memberin)

    +
    Setting of C++ member data (all languages).
    +

    %typemap(memberout)

    +
    Return of C++ member data (all languages).
    +

    %typemap(check)

    +
    Check value of input parameter.
    +

    30.7.3 Typemap variables

    +

    Within typemap code, a number of special variables prefaced with a +$ may appear. A full list of variables can be found in the " +Typemaps" chapter. This is a list of the most common variables:

    +

    $1

    +
    A C local variable corresponding to the actual type + specified in the %typemap directive. For input values, this is a C local variable that's supposed to hold an argument value. For output values, this is the raw result that's supposed to be returned to - Perl.
    -

    $input

    -
    A Perl object holding the value of an argument of - variable value.
    -

    $result

    -
    A Perl object that holds the result to be returned - to Perl.
    -

    $1_name

    -
    The parameter name that was matched.
    -

    $1_type

    -
    The actual C datatype matched by the typemap.
    -

    $1_ltype

    -
    An assignable version of the datatype matched by + Perl.
    +

    $input

    +
    A Perl object holding the value of an argument of + variable value.
    +

    $result

    +
    A Perl object that holds the result to be returned + to Perl.
    +

    $1_name

    +
    The parameter name that was matched.
    +

    $1_type

    +
    The actual C datatype matched by the typemap.
    +

    $1_ltype

    +
    An assignable version of the datatype matched by the typemap (a type that can appear on the left-hand-side of a C assignment operation). This type is stripped of qualifiers and may be - an altered version of $1_type. All arguments and local + an altered version of $1_type. All arguments and local variables in wrapper functions are declared using this type so that - their values can be properly assigned.
    -

    $symname

    -
    The Perl name of the wrapper function being - created.
    -

    33.7.4 Useful functions

    -

    When writing typemaps, it is necessary to work directly with Perl5 + their values can be properly assigned. +

    $symname

    +
    The Perl name of the wrapper function being + created.
    +

    30.7.4 Useful functions

    +

    When writing typemaps, it is necessary to work directly with Perl5 objects. This, unfortunately, can be a daunting task. Consult the "perlguts" man-page for all of the really ugly details. A short summary of commonly used functions is provided here for reference. It should be stressed that SWIG can be used quite effectively without knowing any of these details--especially now that there are typemap libraries that can - already been written.

    -

    Perl Integer Functions

    -
    -
    + already been written.

    +

    Perl Integer Functions

    +
    +
     int   SvIV(SV *);
     void  sv_setiv(SV *sv, IV value);
     SV   *newSViv(IV value);
     int   SvIOK(SV *);
    -
    -
    -

    Perl Floating Point Functions

    -
    -
    +
    +
    +

    Perl Floating Point Functions

    +
    +
     double SvNV(SV *);
     void   sv_setnv(SV *, double value);
     SV    *newSVnv(double value);
     int    SvNOK(SV *);
    -
    -
    -

    Perl String Functions

    -
    -
    +
    +
    +

    Perl String Functions

    +
    +
     char     *SvPV(SV *, STRLEN len);
     void      sv_setpv(SV *, char *val);
     void      sv_setpvn(SV *, char *val, STRLEN len);
    @@ -43538,29 +41722,29 @@ SV       *newSVpv(char *value, STRLEN len);
     int       SvPOK(SV *);
     void      sv_catpv(SV *, char *);
     void      sv_catpvn(SV *, char *, STRLEN);
    -
    -
    -

    Perl References

    -
    -
    +
    +
    +

    Perl References

    +
    +
     void      sv_setref_pv(SV *, char *, void *ptr);
     int       sv_isobject(SV *);
     SV       *SvRV(SV *);
     int       sv_isa(SV *, char *0;
    -
    -
    -

    33.8 Typemap Examples

    -

    This section includes a few examples of typemaps. For more examples, - you might look at the files "perl5.swg" and "typemaps.i -" in the SWIG library.

    -

    33.8.1 Converting a Perl5 array to a char ** -

    -

    A common problem in many C programs is the processing of command +

    +
    +

    30.8 Typemap Examples

    +

    This section includes a few examples of typemaps. For more examples, + you might look at the files "perl5.swg" and "typemaps.i +" in the SWIG library.

    +

    30.8.1 Converting a Perl5 array to a char ** +

    +

    A common problem in many C programs is the processing of command line arguments, which are usually passed in an array of NULL terminated strings. The following SWIG interface file allows a Perl5 array - reference to be used as a char ** datatype.

    -
    -
    + reference to be used as a char ** datatype.

    +
    +
     %module argv
     
     // This tells SWIG to treat char ** as a special case
    @@ -43626,31 +41810,31 @@ int       sv_isa(SV *, char *0;
       }
     %}
     
    -
    -
    -

    When this module is compiled, the wrapped C functions can be used in - a Perl script as follows:

    -
    -
    +
    +
    +

    When this module is compiled, the wrapped C functions can be used in + a Perl script as follows:

    +
    +
     use argv;
     @a = ("Dave", "Mike", "John", "Mary");           # Create an array of strings
     argv::print_args(\@a);                           # Pass it to our C function
     $b = argv::get_args();                           # Get array of strings from C
     print @$b, "\n";                                 # Print it out
    -
    -
    -

    33.8.2 Return values

    -

    Return values are placed on the argument stack of each wrapper +

    +
    +

    30.8.2 Return values

    +

    Return values are placed on the argument stack of each wrapper function. The current value of the argument stack pointer is contained - in a variable argvi. Whenever a new output value is added, it + in a variable argvi. Whenever a new output value is added, it is critical that this value be incremented. For multiple output values, - the final value of argvi should be the total number of output - values.

    -

    The total number of return values should not exceed the number of + the final value of argvi should be the total number of output + values.

    +

    The total number of return values should not exceed the number of input values unless you explicitly extend the argument stack. This can - be done using the EXTEND() macro as in:

    -
    -
    + be done using the EXTEND() macro as in:

    +
    +
     %typemap(argout) int *OUTPUT {
       if (argvi >= items) {
         EXTEND(sp, 1);              /* Extend the stack by 1 object */
    @@ -43659,14 +41843,14 @@ print @$b, "\n";                                 # Print it out
       sv_setiv($target, (IV) *($1));
       argvi++;
     }
    -
    -
    -

    33.8.3 Returning values from arguments

    -

    Sometimes it is desirable for a function to return a value in one of - its arguments. This example describes the implementation of the -OUTPUT typemap.

    -
    -
    +
    +
    +

    30.8.3 Returning values from arguments

    +

    Sometimes it is desirable for a function to return a value in one of + its arguments. This example describes the implementation of the +OUTPUT typemap.

    +
    +
     %module return
     
     // This tells SWIG to treat an double * argument with name 'OutDouble' as
    @@ -43698,94 +41882,94 @@ int multout(double a, double b, double *out1, double *out2) {
     
     int multout(double a, double b, double *OUTPUT, double *OUTPUT);
     ...
    -
    -
    -

    When this function is called, the output arguments are appended to +

    +
    +

    When this function is called, the output arguments are appended to the stack used to return results. This shows up an array in Perl. For - example:

    -
    -
    + example:

    +
    +
     @r = multout(7, 13);
     print "multout(7, 13) = @r\n";
     ($x, $y) = multout(7, 13);
    -
    -
    -

    33.8.4 Accessing array structure members

    -

    Consider the following data structure:

    -
    -
    +
    +
    +

    30.8.4 Accessing array structure members

    +

    Consider the following data structure:

    +
    +
     #define SIZE  8
     typedef struct {
    -    int   values[SIZE];
    -    ...
    +  int   values[SIZE];
    +  ...
     } Foo;
     
    -
    -
    -

    By default, SWIG doesn't know how to the handle the values structure +

    +
    +

    By default, SWIG doesn't know how to the handle the values structure member it's an array, not a pointer. In this case, SWIG makes the array member read-only. Reading will simply return a pointer to the first item in the array. To make the member writable, a "memberin" typemap - can be used.

    -
    -
    + can be used.

    +
    +
     %typemap(memberin) int [SIZE] {
    -    int i;
    -    for (i = 0; i < SIZE; i++) {
    -        $1[i] = $input[i];
    -    }
    +  int i;
    +  for (i = 0; i < SIZE; i++) {
    +    $1[i] = $input[i];
    +  }
     }
     
    -
    -
    -

    Whenever a int [SIZE] member is encountered in a structure - or class, this typemap provides a safe mechanism for setting its value.

    -

    As in the previous example, the typemap can be generalized for any - dimension. For example:

    -
    -
    +
    +
    +

    Whenever a int [SIZE] member is encountered in a structure + or class, this typemap provides a safe mechanism for setting its value.

    +

    As in the previous example, the typemap can be generalized for any + dimension. For example:

    +
    +
     %typemap(memberin) int [ANY] {
       int i;
       for (i = 0; i < $1_dim0; i++) {
         $1[i] = $input[i];
       }
     }
    -
    -
    -

    When setting structure members, the input object is always assumed +

    +
    +

    When setting structure members, the input object is always assumed to be a C array of values that have already been converted from the - target language. Because of this, the memberin typemap is + target language. Because of this, the memberin typemap is almost always combined with the use of an "in" typemap. For example, - the "in" typemap in the previous section would be used to convert an -int[] array to C whereas the "memberin" typemap would be used to - copy the converted array into a C data structure.

    -

    33.8.5 Turning Perl references into C pointers -

    -

    A frequent confusion on the SWIG mailing list is errors caused by + the "in" typemap in the previous section would be used to convert an +int[] array to C whereas the "memberin" typemap would be used to + copy the converted array into a C data structure.

    +

    30.8.5 Turning Perl references into C pointers +

    +

    A frequent confusion on the SWIG mailing list is errors caused by the mixing of Perl references and C pointers. For example, suppose you - have a C function that modifies its arguments like this:

    -
    -
    + have a C function that modifies its arguments like this:

    +
    +
     void add(double a, double b, double *c) {
       *c = a + b;
     }
    -
    -
    -

    A common misinterpretation of this function is the following Perl - script:

    -
    -
    +
    +
    +

    A common misinterpretation of this function is the following Perl + script:

    +
    +
     # Perl script
     $a = 3.5;
     $b = 7.5;
     $c = 0.0;          # Output value
     add($a, $b, \$c);    # Place result in c (Except that it doesn't work)
    -
    -
    -

    To make this work with a reference, you can use a typemap such as - this:

    -
    -
    +
    +
    +

    To make this work with a reference, you can use a typemap such as + this:

    +
    +
     %typemap(in) double * (double dvalue) {
       SV* tempsv;
       if (!SvROK($input)) {
    @@ -43804,47 +41988,47 @@ add($a, $b, \$c);    # Place result in c (Except that it doesn't work)
       tempsv = SvRV($input);
       sv_setnv(tempsv, *$1);
     }
    -
    -
    -

    Now, if you place this before the add function, you can do this:

    -
    -
    +
    +
    +

    Now, if you place this before the add function, you can do this:

    +
    +
     $a = 3.5;
     $b = 7.5;
     $c = 0.0;
     add($a, $b, \$c);            # Now it works!
     print "$c\n";
     
    -
    -
    -

    33.8.6 Pointer handling

    -

    Occasionally, it might be necessary to convert pointer values that +

    +
    +

    30.8.6 Pointer handling

    +

    Occasionally, it might be necessary to convert pointer values that have been stored using the SWIG typed-pointer representation. To - convert a pointer from Perl to C, the following function is used:

    -

    int SWIG_ConvertPtr(SV *obj, void **ptr, swig_type_info *ty, int - flags)

    -
    Converts a Perl object obj to a C pointer. - The result of the conversion is placed into the pointer located at -ptr. ty is a SWIG type descriptor structure. flags - is used to handle error checking and other aspects of conversion. -flags is currently undefined and reserved for future expansion. - Returns 0 on success and -1 on error.
    -

    void *SWIG_MakePtr(SV *obj, void *ptr, swig_type_info *ty, int - flags)

    -
    Creates a new Perl pointer object. obj is - a Perl SV that has been initialized to hold the result, ptr is - the pointer to convert, ty is the SWIG type descriptor - structure that describes the type, and flags is a flag that - controls properties of the conversion. flags is currently - undefined and reserved.
    -

    Both of these functions require the use of a special SWIG + convert a pointer from Perl to C, the following function is used:

    +

    int SWIG_ConvertPtr(SV *obj, void **ptr, swig_type_info *ty, int + flags)

    +
    Converts a Perl object obj to a C pointer. + The result of the conversion is placed into the pointer located at +ptr. ty is a SWIG type descriptor structure. flags + is used to handle error checking and other aspects of conversion. +flags is currently undefined and reserved for future expansion. + Returns 0 on success and -1 on error.
    +

    void *SWIG_MakePtr(SV *obj, void *ptr, swig_type_info *ty, int + flags)

    +
    Creates a new Perl pointer object. obj is + a Perl SV that has been initialized to hold the result, ptr is + the pointer to convert, ty is the SWIG type descriptor + structure that describes the type, and flags is a flag that + controls properties of the conversion. flags is currently + undefined and reserved.
    +

    Both of these functions require the use of a special SWIG type-descriptor structure. This structure contains information about the mangled name of the datatype, type-equivalence information, as well as information about converting pointer values under C++ inheritance. - For a type of Foo *, the type descriptor structure is usually - accessed as follows:

    -
    -
    + For a type of Foo *, the type descriptor structure is usually
    + accessed as follows:

    +
    +
     Foo *f;
     if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
       SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
    @@ -43852,56 +42036,56 @@ if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
     
     SV *sv = sv_newmortal();
     SWIG_MakePtr(sv, f, SWIGTYPE_p_Foo, 0);
    -
    -
    -

    In a typemap, the type descriptor should always be accessed using - the special typemap variable $1_descriptor. For example:

    -
    -
    +
    +
    +

    In a typemap, the type descriptor should always be accessed using + the special typemap variable $1_descriptor. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    If necessary, the descriptor for any type can be obtained using the -$descriptor() macro in a typemap. For example:

    -
    -
    +
    +
    +

    If necessary, the descriptor for any type can be obtained using the +$descriptor() macro in a typemap. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $descriptor(Foo *), 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    33.9 Proxy classes

    -

    Out of date. Needs update.

    -

    Using the low-level procedural interface, SWIG can also construct a +

    +
    +

    30.9 Proxy classes

    +

    Out of date. Needs update.

    +

    Using the low-level procedural interface, SWIG can also construct a high-level object oriented interface to C structures and C++ classes. This is done by constructing a Perl proxy class (also known as a shadow class) that provides an OO wrapper to the underlying code. This section - describes the implementation details of the proxy interface.

    -

    33.9.1 Preliminaries

    -

    Proxy classes, are generated by default. If you want to turn them - off, use the -noproxy command line option. For example:

    -
    -
    + describes the implementation details of the proxy interface.

    +

    30.9.1 Preliminaries

    +

    Proxy classes, are generated by default. If you want to turn them + off, use the -noproxy command line option. For example:

    +
    +
     $ swig -c++ -perl -noproxy example.i
    -
    -
    -

    When proxy classes are used, SWIG moves all of the low-level +

    +
    +

    When proxy classes are used, SWIG moves all of the low-level procedural wrappers to another package name. By default, this package is named 'modulec' where 'module' is the name of the module you - provided with the %module directive. Then, in place of the + provided with the %module directive. Then, in place of the original module, SWIG creates a collection of high-level Perl wrappers. In your scripts, you will use these high level wrappers. The wrappers, - in turn, interact with the low-level procedural module.

    -

    33.9.2 Structure and class wrappers

    -

    Suppose you have the following SWIG interface file:

    -
    -
    + in turn, interact with the low-level procedural module.

    +

    30.9.2 Structure and class wrappers

    +

    Suppose you have the following SWIG interface file:

    +
    +
     %module example
     struct Vector {
       Vector(double x, double y, double z);
    @@ -43909,12 +42093,12 @@ struct Vector {
       double x, y, z;
     };
     
    -
    -
    -

    When wrapped, SWIG creates the following set of low-level accessor - functions as described in previous sections.

    -
    -
    +
    +
    +

    When wrapped, SWIG creates the following set of low-level accessor + functions as described in previous sections.

    +
    +
     Vector *new_Vector(double x, double y, double z);
     void    delete_Vector(Vector *v);
     double  Vector_x_get(Vector *v);
    @@ -43924,74 +42108,74 @@ double  Vector_y_set(Vector *v, double value);
     double  Vector_z_get(Vector *v);
     double  Vector_z_set(Vector *v, double value);
     
    -
    -
    -

    However, when proxy classes are enabled, these accessor functions - are wrapped inside a Perl class like this:

    -
    -
    +
    +
    +

    However, when proxy classes are enabled, these accessor functions + are wrapped inside a Perl class like this:

    +
    +
     package example::Vector;
     @ISA = qw( example );
     %OWNER = ();
     %BLESSEDMEMBERS = ();
     
     sub new () {
    -    my $self = shift;
    -    my @args = @_;
    -    $self = vectorc::new_Vector(@args);
    -    return undef if (!defined($self));
    -    bless $self, "example::Vector";
    -    $OWNER{$self} = 1;
    -    my %retval;
    -    tie %retval, "example::Vector", $self;
    -    return bless \%retval, "Vector";
    +  my $self = shift;
    +  my @args = @_;
    +  $self = vectorc::new_Vector(@args);
    +  return undef if (!defined($self));
    +  bless $self, "example::Vector";
    +  $OWNER{$self} = 1;
    +  my %retval;
    +  tie %retval, "example::Vector", $self;
    +  return bless \%retval, "Vector";
     }
     
     sub DESTROY {
    -    return unless $_[0]->isa('HASH');
    -    my $self = tied(%{$_[0]});
    -    delete $ITERATORS{$self};
    -    if (exists $OWNER{$self}) {
    -        examplec::delete_Vector($self));
    -        delete $OWNER{$self};
    -    }
    +  return unless $_[0]->isa('HASH');
    +  my $self = tied(%{$_[0]});
    +  delete $ITERATORS{$self};
    +  if (exists $OWNER{$self}) {
    +    examplec::delete_Vector($self));
    +    delete $OWNER{$self};
    +  }
     }
     
     sub FETCH {
    -    my ($self, $field) = @_;
    -    my $member_func = "vectorc::Vector_${field}_get";
    -    my $val = &$member_func($self);
    -    if (exists $BLESSEDMEMBERS{$field}) {
    -        return undef if (!defined($val));
    -        my %retval;
    -        tie %retval, $BLESSEDMEMBERS{$field}, $val;
    -        return bless \%retval, $BLESSEDMEMBERS{$field};
    -    }
    -    return $val;
    +  my ($self, $field) = @_;
    +  my $member_func = "vectorc::Vector_${field}_get";
    +  my $val = &$member_func($self);
    +  if (exists $BLESSEDMEMBERS{$field}) {
    +    return undef if (!defined($val));
    +    my %retval;
    +    tie %retval, $BLESSEDMEMBERS{$field}, $val;
    +    return bless \%retval, $BLESSEDMEMBERS{$field};
    +  }
    +  return $val;
     }
     
     sub STORE {
    -    my ($self, $field, $newval) = @_;
    -    my $member_func = "vectorc::Vector_${field}_set";
    -    if (exists $BLESSEDMEMBERS{$field}) {
    -        &$member_func($self, tied(%{$newval}));
    -    } else {
    -        &$member_func($self, $newval);
    -    }
    +  my ($self, $field, $newval) = @_;
    +  my $member_func = "vectorc::Vector_${field}_set";
    +  if (exists $BLESSEDMEMBERS{$field}) {
    +    &$member_func($self, tied(%{$newval}));
    +  } else {
    +    &$member_func($self, $newval);
    +  }
     }
    -
    -
    -

    Each structure or class is mapped into a Perl package of the same +

    +
    +

    Each structure or class is mapped into a Perl package of the same name. The C++ constructors and destructors are mapped into constructors and destructors for the package and are always named "new" and "DESTROY". The constructor always returns a tied hash table. This hash table is used to access the member variables of a structure in addition - to being able to invoke member functions. The %OWNER and -%BLESSEDMEMBERS hash tables are used internally and described - shortly.

    -

    To use our new proxy class we can simply do the following:

    -
    -
    + to being able to invoke member functions. The %OWNER and 
    +%BLESSEDMEMBERS hash tables are used internally and described
    + shortly.

    +

    To use our new proxy class we can simply do the following:

    +
    +
     # Perl code using Vector class
     $v = new Vector(2, 3, 4);
     $w = Vector->new(-1, -2, -3);
    @@ -44010,81 +42194,81 @@ $x = $v->{x};
     # Destruction
     $v->DESTROY();
     
    -
    -
    -

    33.9.3 Object Ownership

    -

    In order for proxy classes to work properly, it is necessary for +

    +
    +

    30.9.3 Object Ownership

    +

    In order for proxy classes to work properly, it is necessary for Perl to manage some mechanism of object ownership. Here's the crux of - the problem---suppose you had a function like this:

    -
    -
    + the problem---suppose you had a function like this:

    +
    +
     Vector *Vector_get(Vector *v, int index) {
       return &v[i];
     }
    -
    -
    -

    This function takes a Vector pointer and returns a pointer to +

    +
    +

    This function takes a Vector pointer and returns a pointer to another Vector. Such a function might be used to manage arrays or lists of vectors (in C). Now contrast this function with the constructor for - a Vector object:

    -
    -
    + a Vector object:

    +
    +
     Vector *new_Vector(double x, double y, double z) {
       Vector *v;
       v = new Vector(x, y, z);        // Call C++ constructor
       return v;
     }
    -
    -
    -

    Both functions return a Vector, but the constructor is returning a +

    +
    +

    Both functions return a Vector, but the constructor is returning a brand-new Vector while the other function is returning a Vector that was already created (hopefully). In Perl, both vectors will be indistinguishable---clearly a problem considering that we would probably like the newly created Vector to be destroyed when we are done - with it.

    -

    To manage these problems, each class contains two methods that - access an internal hash table called %OWNER. This hash keeps a + with it.

    +

    To manage these problems, each class contains two methods that + access an internal hash table called %OWNER. This hash keeps a list of all of the objects that Perl knows that it has created. This happens in two cases: (1) when the constructor has been called, and (2) when a function implicitly creates a new object (as is done when SWIG needs to return a complex datatype by value). When the destructor is - invoked, the Perl proxy class module checks the %OWNER hash to + invoked, the Perl proxy class module checks the %OWNER hash to see if Perl created the object. If so, the C/C++ destructor is invoked. If not, we simply destroy the Perl object and leave the underlying C object alone (under the assumption that someone else must have created - it).

    -

    This scheme works remarkably well in practice but it isn't + it).

    +

    This scheme works remarkably well in practice but it isn't foolproof. In fact, it will fail if you create a new C object in Perl, pass it on to a C function that remembers the object, and then destroy the corresponding Perl object (this situation turns out to come up frequently when constructing objects like linked lists and trees). When C takes possession of an object, you can change Perl's ownership by - simply deleting the object from the %OWNER hash. This is done - using the DISOWN method.

    -
    -
    + simply deleting the object from the %OWNER hash. This is done
    + using the DISOWN method.

    +
    +
     # Perl code to change ownership of an object
     $v = new Vector(x, y, z);
     $v->DISOWN();     
    -
    -
    -

    To acquire ownership of an object, the ACQUIRE method can - be used.

    -
    -
    +
    +
    +

    To acquire ownership of an object, the ACQUIRE method can + be used.

    +
    +
     # Given Perl ownership of a file
     $u = Vector_get($v);
     $u->ACQUIRE();
     
    -
    -
    -

    As always, a little care is in order. SWIG does not provide +

    +
    +

    As always, a little care is in order. SWIG does not provide reference counting, garbage collection, or advanced features one might - find in sophisticated languages.

    -

    33.9.4 Nested Objects

    -

    Suppose that we have a new object that looks like this:

    -
    -
    + find in sophisticated languages.

    +

    30.9.4 Nested Objects

    +

    Suppose that we have a new object that looks like this:

    +
    +
     struct Particle {
       Vector r;
       Vector v;
    @@ -44092,14 +42276,14 @@ struct Particle {
       int type;
     }
     
    -
    -
    -

    In this case, the members of the structure are complex objects that +

    +
    +

    In this case, the members of the structure are complex objects that have already been encapsulated in a Perl proxy class. To handle these - correctly, we use the %BLESSEDMEMBERS hash which would look - like this (along with some supporting code):

    -
    -
    + correctly, we use the %BLESSEDMEMBERS hash which would look
    + like this (along with some supporting code):

    +
    +
     package Particle;
     ...
     %BLESSEDMEMBERS = (
    @@ -44108,53 +42292,53 @@ package Particle;
             f => `Vector',
     );
     
    -
    -
    -

    When fetching members from the structure, %BLESSEDMEMBERS +

    +
    +

    When fetching members from the structure, %BLESSEDMEMBERS is checked. If the requested field is present, we create a tied-hash table and return it. If not, we just return the corresponding member - unmodified.

    -

    This implementation allows us to operate on nested structures as - follows:

    -
    -
    + unmodified.

    +

    This implementation allows us to operate on nested structures as + follows:

    +
    +
     # Perl access of nested structure
     $p = new Particle();
     $p->{f}->{x} = 0.0;
     %${$p->{v}} = ( x=>0, y=>0, z=>0);         
    -
    -
    -

    33.9.5 Proxy Functions

    -

    When functions take arguments involving a complex object, it is - sometimes necessary to write a proxy function. For example:

    -
    -
    +
    +
    +

    30.9.5 Proxy Functions

    +

    When functions take arguments involving a complex object, it is + sometimes necessary to write a proxy function. For example:

    +
    +
     double dot_product(Vector *v1, Vector *v2);
    -
    -
    -

    Since Vector is an object already wrapped into a proxy class, we +

    +
    +

    Since Vector is an object already wrapped into a proxy class, we need to modify this function to accept arguments that are given in the form of tied hash tables. This is done by creating a Perl function like - this:

    -
    -
    + this:

    +
    +
     sub dot_product {
    -    my @args = @_;
    -    $args[0] = tied(%{$args[0]});         # Get the real pointer values
    -    $args[1] = tied(%{$args[1]});
    -    my $result = vectorc::dot_product(@args);
    -    return $result;
    +  my @args = @_;
    +  $args[0] = tied(%{$args[0]});         # Get the real pointer values
    +  $args[1] = tied(%{$args[1]});
    +  my $result = vectorc::dot_product(@args);
    +  return $result;
     }
    -
    -
    -

    This function replaces the original function, but operates in an - identical manner.

    -

    33.9.6 Inheritance

    -

    Simple C++ inheritance is handled using the Perl @ISA array +

    +
    +

    This function replaces the original function, but operates in an + identical manner.

    +

    30.9.6 Inheritance

    +

    Simple C++ inheritance is handled using the Perl @ISA array in each class package. For example, if you have the following interface - file:

    -
    -
    + file:

    +
    +
     // shapes.i
     // SWIG interface file for shapes class
     %module shapes
    @@ -44183,11 +42367,11 @@ public:
       double perimeter();
     }
     
    -
    -
    -

    The resulting, Perl wrapper class will create the following code:

    -
    -
    +
    +
    +

    The resulting, Perl wrapper class will create the following code:

    +
    +
     Package Shape;
     @ISA = (shapes);
     ...
    @@ -44197,28 +42381,28 @@ Package Circle;
     Package Square;
     @ISA = (shapes Shape);
     
    -
    -
    -

    The @ISA array determines where to look for methods of a - particular class. In this case, both the Circle and Square - classes inherit functions from Shape so we'll want to look in - the Shape base class for them. All classes also inherit from - the top-level module shapes. This is because certain common +

    +
    +

    The @ISA array determines where to look for methods of a + particular class. In this case, both the Circle and Square + classes inherit functions from Shape so we'll want to look in + the Shape base class for them. All classes also inherit from + the top-level module shapes. This is because certain common operations needed to implement proxy classes are implemented only once - and reused in the wrapper code for various classes and structures.

    -

    Since SWIG proxy classes are implemented in Perl, it is easy to + and reused in the wrapper code for various classes and structures.

    +

    Since SWIG proxy classes are implemented in Perl, it is easy to subclass from any SWIG generated class. To do this, simply put the name - of a SWIG class in the @ISA array for your new class. However, + of a SWIG class in the @ISA array for your new class. However, be forewarned that this is not a trivial problem. In particular, inheritance of data members is extremely tricky (and I'm not even sure - if it really works).

    -

    33.9.7 Modifying the proxy methods

    -

    It is possible to override the SWIG generated proxy/shadow methods, - using %feature("shadow"). It works like all the other -%feature directives. Here is a simple example showing how to add - some Perl debug code to the constructor:

    -
    -
    + if it really works).

    +

    30.9.7 Modifying the proxy methods

    +

    It is possible to override the SWIG generated proxy/shadow methods, + using %feature("shadow"). It works like all the other +%feature directives. Here is a simple example showing how to add + some Perl debug code to the constructor:

    +
    +
     /* Let's make the constructor of the class Square more verbose */
     %feature("shadow") Square(double w)
     %{
    @@ -44235,15 +42419,15 @@ public:
       Square(double w);
       ...
     };
    -
    -
    -

    33.10 Adding additional Perl code

    -

    If writing support code in C isn't enough, it is also possible to - write code in Perl. This code gets inserted in to the .pm file +

    +
    +

    30.10 Adding additional Perl code

    +

    If writing support code in C isn't enough, it is also possible to + write code in Perl. This code gets inserted in to the .pm file created by SWIG. One use of Perl code might be to supply a high-level - interface to certain functions. For example:

    -
    -
    + interface to certain functions. For example:

    +
    +
     void set_transform(Image *im, double x[4][4]);
     
     ...
    @@ -44258,39 +42442,39 @@ sub set_transform
         for (my $j = 0; $j < 4, $j++)
         {
           mat44_set($a, $i, $j, $x->[i][j])
    -      }
    +    }
       }
       example.set_transform($im, $a);
       free_mat44($a);
     }
     %}
    -
    -
    -

    In this example, set_transform() provides a high-level Perl +

    +
    +

    In this example, set_transform() provides a high-level Perl interface built on top of low-level helper functions. For example, this - code now seems to work:

    -
    -
    + code now seems to work:

    +
    +
     my $a =
       [[1, 0, 0, 0],
       [0, 1, 0, 0],
       [0, 0, 1, 0],
       [0, 0, 0, 1]];
     set_transform($im, $a);
    -
    -
    -

    33.11 Cross language polymorphism

    -

    Proxy classes provide a more natural, object-oriented way to access +

    +
    +

    30.11 Cross language polymorphism

    +

    Proxy classes provide a more natural, object-oriented way to access extension classes. As described above, each proxy instance has an associated C++ instance, and method calls to the proxy are passed to - the C++ instance transparently via C wrapper functions.

    -

    This arrangement is asymmetric in the sense that no corresponding + the C++ instance transparently via C wrapper functions.

    +

    This arrangement is asymmetric in the sense that no corresponding mechanism exists to pass method calls down the inheritance chain from C++ to Perl. In particular, if a C++ class has been extended in Perl (by extending the proxy class), these extensions will not be visible from C++ code. Virtual method calls from C++ are thus not able access - the lowest implementation in the inheritance chain.

    -

    Changes have been made to SWIG to address this problem and make the + the lowest implementation in the inheritance chain.

    +

    Changes have been made to SWIG to address this problem and make the relationship between C++ classes and proxy classes more symmetric. To achieve this goal, new classes called directors are introduced at the bottom of the C++ inheritance chain. The job of the directors is to @@ -44301,61 +42485,61 @@ set_transform($im, $a); classes. Neither C++ code nor Perl code needs to know where a particular method is implemented: the combination of proxy classes, director classes, and C wrapper functions takes care of all the - cross-language method routing transparently.

    -

    33.11.1 Enabling directors

    -

    The director feature is disabled by default. To use directors you + cross-language method routing transparently.

    +

    30.11.1 Enabling directors

    +

    The director feature is disabled by default. To use directors you must make two changes to the interface file. First, add the "directors" - option to the %module directive, like this:

    -
    -
    + option to the %module directive, like this:

    +
    +
     %module(directors="1") modulename
    -
    -
    -

    Without this option no director code will be generated. Second, you +

    +
    +

    Without this option no director code will be generated. Second, you must use the %feature("director") directive to tell SWIG which classes and methods should get directors. The %feature directive can be applied - globally, to specific classes, and to specific methods, like this:

    -
    -
    + globally, to specific classes, and to specific methods, like this:

    +
    +
     // generate directors for all classes that have virtual methods
     %feature("director");         
     
    -// generate directors for all virtual methods in class Foo
    +// generate directors for the virtual methods in class Foo
     %feature("director") Foo;      
    -
    -
    -

    You can use the %feature("nodirector") directive to turn off - directors for specific classes or methods. So for example,

    -
    -
    +
    +
    +

    You can use the %feature("nodirector") directive to turn off + directors for specific classes or methods. So for example,

    +
    +
     %feature("director") Foo;
     %feature("nodirector") Foo::bar;
    -
    -
    -

    will generate directors for all virtual methods of class Foo except - bar().

    -

    Directors can also be generated implicitly through inheritance. In +

    +
    +

    will generate directors for the virtual methods of class Foo except + bar().

    +

    Directors can also be generated implicitly through inheritance. In the following, class Bar will get a director class that handles the - methods one() and two() (but not three()):

    -
    -
    + methods one() and two() (but not three()):

    +
    +
     %feature("director") Foo;
     class Foo {
     public:
    -    Foo(int foo);
    -    virtual void one();
    -    virtual void two();
    +  Foo(int foo);
    +  virtual void one();
    +  virtual void two();
     };
     
     class Bar: public Foo {
     public:
    -    virtual void three();
    +  virtual void three();
     };
    -
    -
    -

    then at the Perl side you can define

    -
    -
    +
    +
    +

    then at the Perl side you can define

    +
    +
     use mymodule;
     
     package MyFoo;
    @@ -44364,37 +42548,38 @@ use base 'mymodule::Foo';
     sub one {
       print "one from Perl\n";
     }
    -
    -
    -

    33.11.2 Director classes

    -

    For each class that has directors enabled, SWIG generates a new - class that derives from both the class in question and a special -Swig::Director class. These new classes, referred to as director +

    +
    +

    30.11.2 Director classes

    +

    For each class that has directors enabled, SWIG generates a new + class that derives from both the class in question and a special +Swig::Director class. These new classes, referred to as director classes, can be loosely thought of as the C++ equivalent of the Perl proxy classes. The director classes store a pointer to their underlying - Perl object and handle various issues related to object ownership.

    -

    For simplicity let's ignore the Swig::Director class and + Perl object and handle various issues related to object ownership.

    +

    For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how - to modify this behavior). Thus all virtual method calls, whether they - originate in C++ or in Perl via proxy classes, eventually end up in at - the implementation in the director class. The job of the director + to modify this behavior). Virtual methods that have a final specifier + are unsurprisingly excluded. Thus the virtual method calls, whether + they originate in C++ or in Perl via proxy classes, eventually end up + in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate place" we mean the method that would have been called if the C++ base class and its extensions in Perl were seamlessly integrated. That seamless integration is exactly what the director classes provide, transparently skipping over all the messy - extension API glue that binds the two languages together.

    -

    In reality, the "appropriate place" is one of only two + extension API glue that binds the two languages together.

    +

    In reality, the "appropriate place" is one of only two possibilities: C++ or Perl. Once this decision is made, the rest is fairly easy. If the correct implementation is in C++, then the lowest implementation of the method in the C++ inheritance chain is called explicitly. If the correct implementation is in Perl, the Perl API is used to call the method of the underlying Perl object (after which the usual virtual method resolution in Perl automatically finds the right - implementation).

    -

    Now how does the director decide which language should handle the + implementation).

    +

    Now how does the director decide which language should handle the method call? The basic rule is to handle the method in Perl, unless there's a good reason not to. The reason for this is simple: Perl has the most "extended" implementation of the method. This assertion is @@ -44413,46 +42598,46 @@ Swig::Director class. These new classes, referred to as director object that called the wrapper function to the pointer stored by the director. If these are the same, then the C wrapper function tells the director to resolve the method by calling up the C++ inheritance chain, - preventing an infinite loop.

    -

    One more point needs to be made about the relationship between + preventing an infinite loop.

    +

    One more point needs to be made about the relationship between director classes and proxy classes. When a proxy class instance is created in Perl, SWIG creates an instance of the original C++ class. This is exactly what happens without directors and is true even if directors are enabled for the particular class in question. When a - class derived from a proxy class is created, however, SWIG then + class derived from a proxy class is created, however, SWIG then creates an instance of the corresponding C++ director class. The reason for this difference is that user-defined subclasses may override or extend methods of the original class, so the director class is needed to route calls to these methods correctly. For unmodified proxy classes, all methods are ultimately implemented in C++ so there is no need for the extra overhead involved with routing the calls through - Perl.

    -

    33.11.3 Ownership and object destruction

    -

    Memory management issues are slightly more complicated with + Perl.

    +

    30.11.3 Ownership and object destruction

    +

    Memory management issues are slightly more complicated with directors than for proxy classes alone. Perl instances hold a pointer to the associated C++ director object, and the director in turn holds a pointer back to a Perl object. By default, proxy classes own their C++ director object and take care of deleting it when they are garbage - collected.

    -

    This relationship can be reversed by calling the special -DISOWN() method of the proxy class. After calling this method the + collected.

    +

    This relationship can be reversed by calling the special +DISOWN() method of the proxy class. After calling this method the director class increments the reference count of the Perl object. When the director class is deleted it decrements the reference count. Assuming no outstanding references to the Perl object remain, the Perl object will be destroyed at the same time. This is a good thing, since directors and proxies refer to each other and so must be created and destroyed together. Destroying one without destroying the other will - likely cause your program to segfault.

    -

    Also note that due to the proxy implementation, the DESTROY() + likely cause your program to segfault.

    +

    Also note that due to the proxy implementation, the DESTROY() method on directors can be called for several reasons, many of which have little to do with the teardown of an object instance. To help - disambiguate this, a second argument is added to the DESTROY() + disambiguate this, a second argument is added to the DESTROY() call when a C++ director object is being released. So, to avoid running your clean-up code when an object is not really going away, or after it has already been reclaimed, it is suggested that custom destructors in - Perl subclasses looks something like:

    -
    -
    + Perl subclasses looks something like:

    +
    +
     sub DESTROY {
       my($self, $final) = @_;
       if($final) {
    @@ -44460,58 +42645,58 @@ sub DESTROY {
       }
       shift->SUPER::DESTROY(@_);
     }
    -
    -
    -

    33.11.4 Exception unrolling

    -

    With directors routing method calls to Perl, and proxies routing +

    +
    +

    30.11.4 Exception unrolling

    +

    With directors routing method calls to Perl, and proxies routing them to C++, the handling of exceptions is an important concern. By default, the directors ignore exceptions that occur during method calls that are resolved in Perl. To handle such exceptions correctly, it is necessary to temporarily translate them into C++ exceptions. This can be done with the %feature("director:except") directive. The following - code should suffice in most cases:

    -
    -
    + code should suffice in most cases:

    +
    +
     %feature("director:except") {
    -    if ($error != NULL) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error != NULL) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
    -
    -
    -

    This code will check the Perl error state after each method call +

    +
    +

    This code will check the Perl error state after each method call from a director into Perl, and throw a C++ exception if an error occurred. This exception can be caught in C++ to implement an error - handler.

    -

    It may be the case that a method call originates in Perl, travels up + handler.

    +

    It may be the case that a method call originates in Perl, travels up to C++ through a proxy class, and then back into Perl via a director method. If an exception occurs in Perl at this point, it would be nice for that exception to find its way back to the original caller. This - can be done by combining a normal %exception directive with the -director:except handler shown above. Here is an example of a - suitable exception handler:

    -
    -
    + can be done by combining a normal %exception directive with the 
    +director:except handler shown above. Here is an example of a
    + suitable exception handler:

    +
    +
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
    -
    -
    -

    The class Swig::DirectorException used in this example is actually a +

    +
    +

    The class Swig::DirectorException used in this example is actually a base class of Swig::DirectorMethodException, so it will trap this exception. Because the Perl error state is still set when Swig::DirectorMethodException is thrown, Perl will register the - exception as soon as the C wrapper function returns.

    -

    33.11.5 Overhead and code bloat

    -

    Enabling directors for a class will generate a new director method + exception as soon as the C wrapper function returns.

    +

    30.11.5 Overhead and code bloat

    +

    Enabling directors for a class will generate a new director method for every virtual method in the class' inheritance chain. This alone can generate a lot of code bloat for large hierarchies. Method arguments that require complex conversions to and from target language types can result in large director methods. For this reason it is recommended that you selectively enable directors only for specific - classes that are likely to be extended in Perl and used in C++.

    -

    Compared to classes that do not use directors, the call routing in + classes that are likely to be extended in Perl and used in C++.

    +

    Compared to classes that do not use directors, the call routing in the director methods does add some overhead. In particular, at least one dynamic cast and one extra function call occurs per method call from Perl. Relative to the speed of Perl execution this is probably @@ -44519,210 +42704,205 @@ director:except handler shown above. Here is an example of a ultimately resolves in C++ may take one extra detour through Perl in order to ensure that the method does not have an extended Perl implementation. This could result in a noticeable overhead in some - cases.

    -

    Although directors make it natural to mix native C++ objects with + cases.

    +

    Although directors make it natural to mix native C++ objects with Perl objects (as director objects) via a common base class pointer, one should be aware of the obvious fact that method calls to Perl objects will be much slower than calls to C++ objects. This situation can be optimized by selectively enabling director methods (using the %feature directive) for only those methods that are likely to be extended in - Perl.

    -

    33.11.6 Typemaps

    -

    Typemaps for input and output of most of the basic types from + Perl.

    +

    30.11.6 Typemaps

    +

    Typemaps for input and output of most of the basic types from director classes have been written. These are roughly the reverse of the usual input and output typemaps used by the wrapper code. The typemap operation names are 'directorin', 'directorout', and 'directorargout'. The director code does not currently use any of the other kinds of typemaps. It is not clear at this point which kinds are - appropriate and need to be supported.

    + appropriate and need to be supported.


    -

    34 SWIG and PHP

    +

    31 SWIG and PHP

    - + -

    In this chapter, we discuss SWIG's support of PHP. The PHP module - was extensively rewritten in release 1.3.26, and support for generating - OO wrappers for PHP5 was added in 1.3.30. The PHP module now supports - most of the features available in some of the other languages.

    -

    SWIG supports generating wrappers for PHP5 and PHP7. Support for - PHP4 was removed in SWIG 1.3.37.

    -

    Currently any PHP5 or PHP7 release should work, but we don't - regularly test with PHP < 5.3.

    -

    In order to use this module, you will need to have a copy of the PHP +

    In this chapter, we discuss SWIG's support of PHP. SWIG currently + supports generating wrappers for PHP7. Support for PHP5 was removed in + SWIG 4.0.0 and support for PHP4 was removed in SWIG 1.3.37.

    +

    Currently any PHP7 release should work.

    +

    In order to use this module, you will need to have a copy of the PHP include files to compile the SWIG generated files. If you installed PHP from a binary package, you may need to install a "php-dev" or "php-devel" package for these to be installed. You can find out where - these files are by running php-config --includes. To use the + these files are by running php-config --includes. To use the built PHP module you will need either the php binary or the Apache php module. If you want to build your extension into php directly, you will - need the complete PHP source tree available.

    -

    34.1 Generating PHP Extensions

    -

    To build a PHP extension, run swig using the -php5 or --php7 option as follows (-php is also supported and - currently is an alias for -php5):

    -
    -
    + need the complete PHP source tree available.

    +

    31.1 Generating PHP Extensions

    +

    To build a PHP extension, run swig using the -php7 option + as follows (-php is also supported and currently is an alias + for -php7 but prior to SWIG 4.0.0 it was an alias for +-php5):

    +
    +
     swig -php7 example.i
    -
    -
    -

    This will produce 3 files example_wrap.c, php_example.h and - example.php. The first file, example_wrap.c contains all of - the C code needed to build a PHP extension. The second file, -php_example.h contains the header information needed if you wish to +

    +
    +

    This will produce 3 files example_wrap.c, php_example.h and + example.php. The first file, example_wrap.c contains all of + the C code needed to build a PHP extension. The second file, +php_example.h contains the header information needed if you wish to statically link the extension into the php interpreter. The third file, - example.php can be included by PHP scripts. It attempts to + example.php can be included by PHP scripts. It attempts to dynamically load the extension and contains extra php code specified in the interface file. If wrapping C++ code with PHP classes, it will also - contain PHP class wrappers.

    -

    SWIG can generate PHP extensions from C++ libraries as well when - given the -c++ option. The support for C++ is discussed in - more detail in section 27.2.6. The generated - C++ wrapper will be called example_wrap.cpp (for PHP5) or - example_wrap.cxx (for PHP7 where the default has been changed to align - with SWIG's default for every other language). You can specify a - different extension for the C++ wrapper using -cppext - e.g. - if you want example_wrap.cc use -cppext cc.

    -

    The usual (and recommended) way is to build the extension as a + contain PHP class wrappers.

    +

    SWIG can generate PHP extensions from C++ libraries as well when + given the -c++ option. The support for C++ is discussed in + more detail in section 27.2.6. The generated + C++ wrapper will be called example_wrap.cxx. You can specify a + different extension for the C++ wrapper using -cppext - e.g. + if you want example_wrap.cc use -cppext cc.

    +

    The usual (and recommended) way is to build the extension as a separate dynamically loaded module (which is supported by all modern - operating systems).

    -

    It is also possible to rebuild PHP from source so that your module + operating systems).

    +

    It is also possible to rebuild PHP from source so that your module is statically linked into the php executable/library. This is a lot more work, and also requires a full rebuild of PHP to update your module, and it doesn't play nicely with package system. We don't - recommend this approach, or provide explicit support for it.

    -

    34.1.1 Building a loadable extension

    -

    To build your module as a dynamically loadable extension, use + recommend this approach, or provide explicit support for it.

    +

    31.1.1 Building a loadable extension

    +

    To build your module as a dynamically loadable extension, use compilation commands like these (if you aren't using GCC, the commands will be different, and there may be some variation between platforms - - these commands should at least work for Linux though):

    -
    -
    + these commands should at least work for Linux though):

    +
    +
             gcc `php-config --includes` -fpic -c example_wrap.c example.c
             gcc -shared example_wrap.o example.o -o example.so
    -
    -
    -

    34.1.2 Using PHP Extensions

    -

    To test the extension from a PHP script, you first need to tell PHP - to load it. To do this, add a line like this to the [PHP] - section of php.ini:

    -
    -
    +
    +
    +

    31.1.2 Using PHP Extensions

    +

    To test the extension from a PHP script, you first need to tell PHP + to load it. To do this, add a line like this to the [PHP] + section of php.ini:

    +
    +
             extension=/path/to/modulename.so
    -
    -
    -

    If the module is in PHP's default extension directory, you can omit - the path.

    -

    For some SAPIs (for example, the CLI SAPI) you can instead use the dl() function to - load an extension at run time, by adding a like like this to the start - of each PHP script which uses your extension:

    -
    -
    +
    +
    +

    If the module is in PHP's default extension directory, you can omit + the path.

    +

    For some SAPIs (for example, the CLI SAPI) you can instead use the dl() function + to load an extension at run time, by adding a line like this to the + start of each PHP script which uses your extension:

    +
    +
             dl("/path/to/modulename.so"); // Load the module
    -
    -
    -

    But note that this doesn't work when running PHP through a webserver - in PHP5.3 and later - you'll need to use extension in -php.ini as described above.

    -

    The PHP module which SWIG generates will also attempt to do the -dl() call for you if the extension isn't already loaded:

    -
    -
    +
    +
    +

    But note that dl() isn't supported when running PHP through + a webserver - you'll need to use extension in php.ini + as described above.

    +

    The PHP module which SWIG generates will also attempt to do the +dl() call for you if the extension isn't already loaded:

    +
    +
             include("example.php");
    -
    -
    -

    This PHP module also defines the PHP classes for the wrapped API, so - you'll almost certainly want to include it anyway.

    -

    34.2 Basic PHP interface

    -

    It is important to understand that PHP uses a single global +

    +
    +

    This PHP module also defines the PHP classes for the wrapped API, so + you'll almost certainly want to include it anyway.

    +

    31.2 Basic PHP interface

    +

    It is important to understand that PHP uses a single global namespace into which all symbols from extension modules are loaded. It is quite possible for names of symbols in one extension module to clash - with other symbols unless care is taken to %rename them. At - present SWIG doesn't have support for the namespace feature added in - PHP 5.3.

    -

    34.2.1 Constants

    -

    These work in much the same way as in C/C++. Constants can be + with other symbols unless care is taken to %rename them. At + present SWIG doesn't have support for generating wrappers which make + use of PHP's namespace feature.

    +

    31.2.1 Constants

    +

    These work in much the same way as in C/C++. Constants can be defined by using either the normal C pre-processor declarations, or the - %constant SWIG directive. These will then be available from + %constant SWIG directive. These will then be available from your PHP script as a PHP constant, (i.e. no dollar sign is needed to - access them.) For example, with a swig interface file like this,

    -
    -
    + access them.) For example, with a swig interface file like this,

    +
    +
     %module example
     
     #define PI 3.14159
     
     %constant int E  = 2.71828
    -
    -
    -

    you can access the constants in your PHP script like this,

    -
    -
    +
    +
    +

    you can access the constants in your PHP script like this,

    +
    +
     include("example.php");
     
     echo "PI = " . PI . "\n";
     
     echo "E = " . E . "\n";
     
    -
    -
    -

    There's one peculiarity of how constants work in PHP which it is +

    +
    +

    There's one peculiarity of how constants work in PHP which it is useful to note (this is not specific to SWIG though) - if you try to use an undeclared constant, PHP will emit a notice and then expand the constant to a string version of the constant's name. Unfortunately it is easy to miss the notice if you're using PHP in a webserver, as it - will probably end up in error.log or similar.

    -

    For example,

    -
    -
    + will probably end up in error.log or similar.

    +

    For example,

    +
    +
     %module example
     
     #define EASY_TO_MISPELL 0
    -
    -
    -

    accessed incorrectly in PHP,

    -
    -
    +
    +
    +

    accessed incorrectly in PHP,

    +
    +
     include("example.php");
     
     if(EASY_TO_MISPEL) {
    @@ -44731,18 +42911,18 @@ if(EASY_TO_MISPEL) {
       ...
     }
     
    -
    -
    -

    The mis-spelled constant will become the string 'EASY_TO_MISPEL', +

    +
    +

    The mis-spelled constant will become the string 'EASY_TO_MISPEL', which is treated as true by the if test, when the value of the intended constant would be treated as false! Modern versions of PHP will at - least issue a PHP notice by default when this happens.

    -

    34.2.2 Global Variables

    -

    Because PHP does not provide a mechanism to intercept access and + least issue a PHP notice by default when this happens.

    +

    31.2.2 Global Variables

    +

    Because PHP does not provide a mechanism to intercept access and assignment of global variables, global variables are supported through - the use of automatically generated accessor functions.

    -
    -
    + the use of automatically generated accessor functions.

    +
    +
     %module example;
     
     %inline %{
    @@ -44751,47 +42931,47 @@ if(EASY_TO_MISPEL) {
         zend_printf("seki is now %f\n", seki);
       }
     %}
    -
    -
    -

    is accessed as follows:

    -
    -
    +
    +
    +

    is accessed as follows:

    +
    +
     include("example.php");
     print seki_get();
     seki_set( seki_get() * 2); # The C variable is now 4.
     print seki_get();
    -
    -
    -

    SWIG supports global variables of all C datatypes including pointers - and complex objects. Additional types can be supported by using the -varinit typemap.

    -

    SWIG honors the %immutable modifier by not generating code - for the _set method. This provides read-only access to the - variable from the php script. Attempting to access the _set +

    +
    +

    SWIG supports global variables of all C datatypes including pointers + and complex objects. Additional types can be supported by using the +varinit typemap.

    +

    SWIG honors the %immutable modifier by not generating code + for the _set method. This provides read-only access to the + variable from the php script. Attempting to access the _set method will result in a php fatal error because the function is - undefined.

    -

    At this time SWIG does not support custom accessor methods.

    -

    34.2.3 Functions

    -

    C functions are converted into PHP functions. Default/optional - arguments are also allowed. An interface file like this :

    -
    -
    + undefined.

    +

    At this time SWIG does not support custom accessor methods.

    +

    31.2.3 Functions

    +

    C functions are converted into PHP functions. Default/optional + arguments are also allowed. An interface file like this :

    +
    +
     %module example
     int foo(int a);
     double bar(double, double b = 3.0);
     ...
    -
    -
    -

    Will be accessed in PHP like this :

    -
    -
    +
    +
    +

    Will be accessed in PHP like this :

    +
    +
     include("example.php");
     $a = foo(2);
     $b = bar(3.5, -1.5);
     $c = bar(3.5);  # Use default argument for 2nd parameter
     
    -
    -
    +
    +
    -

    34.2.4 Overloading

    -

    Although PHP does not support overloading functions natively, swig - will generate dispatch functions which will use %typecheck +

    31.2.4 Overloading

    +

    Although PHP does not support overloading functions natively, swig + will generate dispatch functions which will use %typecheck typemaps to allow overloading. This dispatch function's operation and - precedence is described in -Wrapping Overloaded Functions and Methods.

    + precedence is described in +Overloaded functions and methods.

    -

    34.2.5 Pointers and References

    -

    Pointers to C/C++ objects are represented as PHP resources, rather - like MySQL connection handles.

    -

    There are multiple ways to wrap pointers to simple types. Given the - following C method:

    -
    -
    +

    31.2.5 Pointers and References

    +

    Pointers to C/C++ objects are represented as PHP resources, rather + like MySQL connection handles.

    +

    There are multiple ways to wrap pointers to simple types. Given the + following C method:

    +
    +
       void add( int *in1, int *in2, int *result);
    -
    -
    -

    One can include cpointer.i to generate PHP wrappers to -int *.

    -
    -
    +
    +
    +

    One can include cpointer.i to generate PHP wrappers to +int *.

    +
    +
     %module example
     %include "cpointer.i"
     %pointer_functions(int, intp)
     
     void add( int *in1, int *in2, int *result);
    -
    -
    -

    This will result in the following usage in PHP:

    -
    -
    +
    +
    +

    This will result in the following usage in PHP:

    +
    +
     <?php
     
     include("example.php");
    @@ -44902,24 +43082,24 @@ add( $in1, $in2, $result );
     
     echo "The sum " . intp_value($in1) . " + " . intp_value($in2) . " = " . intp_value( $result) . "\n";
     ?>
    -
    -
    -

    An alternative would be to use the include typemaps.i which +

    +
    +

    An alternative would be to use the include typemaps.i which defines named typemaps for INPUT, OUTPUT and INOUT variables. One needs - to either %apply the appropriate typemap or adjust the - parameter names as appropriate.

    -
    -
    + to either %apply the appropriate typemap or adjust the
    + parameter names as appropriate.

    +
    +
     %module example
     %include "typemaps.i"
     
     void add( int *INPUT, int *INPUT, int *OUTPUT);
     
    -
    -
    -

    This will result in the following usage in PHP:

    -
    -
    +
    +
    +

    This will result in the following usage in PHP:

    +
    +
     <?php
     
     include("example.php");
    @@ -44930,32 +43110,28 @@ $result= add($in1, $in2);  # Note using variables for the input is unnecessary.
     
     echo "The sum $in1 + $in2 = $result\n";
     ?>
    -
    -
    -

    Because PHP has a native concept of reference, it may seem more +

    +
    +

    Because PHP has a native concept of reference, it may seem more natural to the PHP developer to use references to pass pointers. To - enable this, one needs to include phppointers.i which defines - the named typemap REF.

    -

    Prior to SWIG 3.0, the REF typemaps relied on PHP's call-time - pass-by-reference, which was deprecated in PHP 5.3 and removed in PHP - 5.4. So if you use these REF typemaps, you should ensure that SWIG≥3.0 - is used to generate wrappers from your interface file.

    -

    In case you write your own typemaps, SWIG supports an attribute - called byref: if you set that, then SWIG will make sure that + enable this, one needs to include phppointers.i which defines + the named typemap REF.

    +

    In case you write your own typemaps, SWIG supports an attribute + called byref: if you set that, then SWIG will make sure that the generated wrapper function will want the input parameter as a - reference.

    -
    -
    + reference.

    +
    +
     %module example
     %include "phppointers.i"
     
     void add( int *REF, int *REF, int *REF);
     
    -
    -
    -

    This will result in the following usage in PHP:

    -
    -
    +
    +
    +

    This will result in the following usage in PHP:

    +
    +
     <?php
     
     include("example.php");
    @@ -44967,28 +43143,28 @@ add($in1, $in2, $result);
     
     echo "The sum $in1 + $in2 = $result\n";
     ?>
    -
    -
    -

    It is important to note that a php variable which is NULL when +

    +
    +

    It is important to note that a php variable which is NULL when passed by reference would end up passing a NULL pointer into the function. In PHP, an unassigned variable (i.e. where the first reference to the variable is not an assignment) is NULL. In the above example, if any of the three variables had not been assigned, a NULL - pointer would have been passed into add. Depending on the - implementation of the function, this may or may not be a good thing.

    -

    We chose to allow passing NULL pointers into functions because that + pointer would have been passed into add. Depending on the + implementation of the function, this may or may not be a good thing.

    +

    We chose to allow passing NULL pointers into functions because that is sometimes required in C libraries. A NULL pointer can be created in - PHP in a number of ways: by using unset on an existing - variable, or assigning NULL to a variable.

    -

    34.2.6 Structures and C++ classes

    -

    SWIG defaults to wrapping C++ structs and classes with PHP classes - + PHP in a number of ways: by using unset on an existing + variable, or assigning NULL to a variable.

    +

    31.2.6 Structures and C++ classes

    +

    SWIG defaults to wrapping C++ structs and classes with PHP classes - this is done by generating a PHP wrapper script which defines proxy classes which calls a set of flat functions which actually wrap the C++ class. You can disable this wrapper layer by passing the command-line - option "-noproxy" in which case you'll just get the flat functions.

    -

    This interface file

    -
    -
    + option "-noproxy" in which case you'll just get the flat functions.

    +

    This interface file

    +
    +
     %module vector
     
     class Vector {
    @@ -45002,11 +43178,11 @@ public:
     struct Complex {
      double re, im;
     };
    -
    -
    -

    Would be used in the following way from PHP:

    -
    -
    +
    +
    +

    Would be used in the following way from PHP:

    +
    +
     <?php
       require "vector.php";
     
    @@ -45026,17 +43202,17 @@ struct Complex {
     
       # $c destructor called when $c goes out of scope.
     ?>
    -
    -
    -

    Member variables and methods are accessed using the -> - operator.

    -

    34.2.6.1 Using -noproxy

    -

    The -noproxy option flattens the object structure and +

    +
    +

    Member variables and methods are accessed using the -> + operator.

    +

    31.2.6.1 Using -noproxy

    +

    The -noproxy option flattens the object structure and generates collections of named functions (these are the functions which the PHP class wrappers call). The above example results in the - following PHP functions:

    -
    -
    + following PHP functions:

    +
    +
     new_Vector();
     Vector_x_set($obj, $d);
     Vector_x_get($obj);
    @@ -45050,134 +43226,143 @@ Complex_re_set($obj, $d);
     Complex_re_get($obj);
     Complex_im_set($obj, $d);
     Complex_im_get($obj);
    -
    -
    -

    34.2.6.2 Constructors and Destructors

    -

    The constructor is called when new Object() (or -new_Object() if using -noproxy) is used to create an +

    +
    +

    31.2.6.2 Constructors and Destructors

    +

    The constructor is called when new Object() (or +new_Object() if using -noproxy) is used to create an instance of the object. If multiple constructors are defined for an object, function overloading will be used to determine which - constructor to execute.

    -

    Because PHP uses reference counting to manage resources, simple - assignment of one variable to another such as:

    -
    -
    + constructor to execute.

    +

    Because PHP uses reference counting to manage resources, simple + assignment of one variable to another such as:

    +
    +
     $ref = $v;
    -
    -
    -

    causes the symbol $ref to refer to the same underlying - object as $v. This does not result in a call to the C++ copy - constructor or copy assignment operator.

    -

    One can force execution of the copy constructor by using:

    -
    -
    +
    +
    +

    causes the symbol $ref to refer to the same underlying + object as $v. This does not result in a call to the C++ copy + constructor or copy assignment operator.

    +

    One can force execution of the copy constructor by using:

    +
    +
     $o_copy = new Object($o);
    -
    -
    -

    Destructors are automatically called when all variables referencing +

    +
    +

    Destructors are automatically called when all variables referencing the instance are reassigned or go out of scope. The destructor is not available to be called manually. To force a destructor to be called the - programmer can either reassign the variable or call unset($v)

    -

    34.2.6.3 Static Member Variables

    -

    Static member variables in C++ are not wrapped as such in PHP as it + programmer can either reassign the variable or call unset($v)

    +

    31.2.6.3 Static Member Variables

    +

    Static member variables in C++ are not wrapped as such in PHP as it does not appear to be possible to intercept accesses to such variables. Therefore, static member variables are wrapped using a class function with the same name, which returns the current value of the class - variable. For example

    -
    -
    + variable. For example

    +
    +
     %module example
     
     class Ko {
       static int threats;
     };
     
    -
    -
    -

    would be accessed in PHP as,

    -
    -
    +
    +
    +

    would be accessed in PHP as,

    +
    +
     include("example.php");
     
     echo "There have now been " . Ko::threats() . " threats\n";
     
    -
    -
    -

    To set the static member variable, pass the value as the argument to - the class function, e.g.

    -
    -
    +
    +
    +

    To set the static member variable, pass the value as the argument to + the class function, e.g.

    +
    +
     
     Ko::threats(10);
     
     echo "There have now been " . Ko::threats() . " threats\n";
     
    -
    -
    -

    34.2.6.4 Static Member Functions

    -

    Static member functions are supported in PHP using the -class::function() syntax. For example

    -
    -
    +
    +
    +

    31.2.6.4 Static Member Functions

    +

    Static member functions are supported in PHP using the +class::function() syntax. For example

    +
    +
     %module example
     class Ko {
       static void threats();
     };
    -
    -
    would be executed in PHP as,
    -
    +
    +
    would be executed in PHP as,
    +
     include("example.php");
     Ko::threats();
    -
    -
    -

    34.2.6.5 Specifying Implemented Interfaces

    -

    PHP supports the concept of abstract interfaces which a class can +

    +
    +

    31.2.6.5 Specifying Implemented Interfaces

    +

    PHP supports the concept of abstract interfaces which a class can implement. Since SWIG 3.0.3, you can tell SWIG that a wrapped class - (for example MyIterator) implements the Iterator - interface like so:

    -
    -
    + (for example MyIterator) implements the Iterator
    + interface like so:

    +
    +
     %typemap("phpinterfaces") MyIterator "Iterator";
    -
    -
    -

    If there are multiple interfaces, just list them separated by - commas.

    -

    34.2.7 PHP Pragmas, Startup and Shutdown code -

    -

    To place PHP code in the generated "example.php" file one can use - the code pragma. The code is inserted after loading the shared - object.

    -
    -
    +
    +
    +

    If there are multiple interfaces, just list them separated by + commas.

    +

    31.2.7 PHP Pragmas, Startup and Shutdown code +

    +

    To place PHP code in the generated "example.php" file one can use + the code pragma. The code is inserted after loading the shared + object.

    +
    +
     %module example
     %pragma(php) code="
     # This code is inserted into example.php
     echo \"example.php execution\\n\";
     "
    -
    -
    -

    Results in the following in "example.php"

    -
    -
    +
    +
    +

    Results in the following in "example.php"

    +
    +
     # This code is inserted into example.php
     echo "example.php execution\n";
    -
    -
    -

    The include pragma is a short cut to add include statements - to the example.php file.

    -
    -
    +
    +
    +

    The version pragma can be used to add version to generated + PHP extension module. The version is inserted in the zend_module_entry + block.

    +
    +
    +%module example
    +%pragma(php) version="1.5"
    +
    +
    +

    The include pragma is a short cut to add include statements + to the example.php file.

    +
    +
     %module example
     %pragma(php) code="
     include \"include.php\";
     "
     %pragma(php) include="include.php"   // equivalent.
    -
    -
    -

    The phpinfo pragma inserts code in the PHP_MINFO_FUNCTION - which is called from PHP's phpinfo() function.

    -
    -
    +
    +
    +

    The phpinfo pragma inserts code in the PHP_MINFO_FUNCTION + which is called from PHP's phpinfo() function.

    +
    +
     %module example;
     %pragma(php) phpinfo="
       zend_printf("An example of PHP support through SWIG\n");
    @@ -45186,12 +43371,12 @@ include \"include.php\";
       php_info_print_table_row(2, \"Example support\", \"enabled\");
       php_info_print_table_end();
     "
    -
    -
    -

    To insert code into the PHP_MINIT_FUNCTION, one can use - either %init or %minit.

    -
    -
    +
    +
    +

    To insert code into the PHP_MINIT_FUNCTION, one can use + either %init or %minit.

    +
    +
     %module example;
     %init {
       zend_printf("Inserted into PHP_MINIT_FUNCTION\n");
    @@ -45199,33 +43384,33 @@ include \"include.php\";
     %minit {
       zend_printf("Inserted into PHP_MINIT_FUNCTION\n");
     }
    -
    -
    -

    To insert code into the PHP_MSHUTDOWN_FUNCTION, one can use - either %shutdown or %mshutdown.

    -
    -
    +
    +
    +

    To insert code into the PHP_MSHUTDOWN_FUNCTION, one can use + either %shutdown or %mshutdown.

    +
    +
     %module example;
     %mshutdown {
       zend_printf("Inserted into PHP_MSHUTDOWN_FUNCTION\n");
     }
    -
    -
    -

    The %rinit and %rshutdown statements are very +

    +
    +

    The %rinit and %rshutdown statements are very similar but insert code into the request init (PHP_RINIT_FUNCTION) and - request shutdown (PHP_RSHUTDOWN_FUNCTION) code respectively.

    -

    34.3 Cross language polymorphism

    -

    Proxy classes provide a more natural, object-oriented way to access + request shutdown (PHP_RSHUTDOWN_FUNCTION) code respectively.

    +

    31.3 Cross language polymorphism

    +

    Proxy classes provide a more natural, object-oriented way to access extension classes. As described above, each proxy instance has an associated C++ instance, and method calls to the proxy are passed to - the C++ instance transparently via C wrapper functions.

    -

    This arrangement is asymmetric in the sense that no corresponding + the C++ instance transparently via C wrapper functions.

    +

    This arrangement is asymmetric in the sense that no corresponding mechanism exists to pass method calls down the inheritance chain from C++ to PHP. In particular, if a C++ class has been extended in PHP (by extending the proxy class), these extensions will not be visible from C++ code. Virtual method calls from C++ are thus not able access the - lowest implementation in the inheritance chain.

    -

    Changes have been made to SWIG 1.3.18 to address this problem and + lowest implementation in the inheritance chain.

    +

    Changes have been made to SWIG 1.3.18 to address this problem and make the relationship between C++ classes and proxy classes more symmetric. To achieve this goal, new classes called directors are introduced at the bottom of the C++ inheritance chain. Support for @@ -45237,61 +43422,61 @@ include \"include.php\"; exactly like native C++ classes. Neither C++ code nor PHP code needs to know where a particular method is implemented: the combination of proxy classes, director classes, and C wrapper functions takes care of all - the cross-language method routing transparently.

    -

    34.3.1 Enabling directors

    -

    The director feature is disabled by default. To use directors you + the cross-language method routing transparently.

    +

    31.3.1 Enabling directors

    +

    The director feature is disabled by default. To use directors you must make two changes to the interface file. First, add the "directors" - option to the %module directive, like this:

    -
    -
    + option to the %module directive, like this:

    +
    +
     %module(directors="1") modulename
    -
    -
    -

    Without this option no director code will be generated. Second, you +

    +
    +

    Without this option no director code will be generated. Second, you must use the %feature("director") directive to tell SWIG which classes and methods should get directors. The %feature directive can be applied - globally, to specific classes, and to specific methods, like this:

    -
    -
    + globally, to specific classes, and to specific methods, like this:

    +
    +
     // generate directors for all classes that have virtual methods
     %feature("director");         
     
    -// generate directors for all virtual methods in class Foo
    +// generate directors for the virtual methods in class Foo
     %feature("director") Foo;      
    -
    -
    -

    You can use the %feature("nodirector") directive to turn off - directors for specific classes or methods. So for example,

    -
    -
    +
    +
    +

    You can use the %feature("nodirector") directive to turn off + directors for specific classes or methods. So for example,

    +
    +
     %feature("director") Foo;
     %feature("nodirector") Foo::bar;
    -
    -
    -

    will generate directors for all virtual methods of class Foo except - bar().

    -

    Directors can also be generated implicitly through inheritance. In +

    +
    +

    will generate directors for the virtual methods of class Foo except + bar().

    +

    Directors can also be generated implicitly through inheritance. In the following, class Bar will get a director class that handles the - methods one() and two() (but not three()):

    -
    -
    + methods one() and two() (but not three()):

    +
    +
     %feature("director") Foo;
     class Foo {
     public:
    -    Foo(int foo);
    -    virtual void one();
    -    virtual void two();
    +  Foo(int foo);
    +  virtual void one();
    +  virtual void two();
     };
     
     class Bar: public Foo {
     public:
    -    virtual void three();
    +  virtual void three();
     };
    -
    -
    -

    then at the PHP side you can define

    -
    -
    +
    +
    +

    then at the PHP side you can define

    +
    +
     require("mymodule.php");
     
     class MyFoo extends Foo {
    @@ -45299,38 +43484,39 @@ class MyFoo extends Foo {
         print "one from php\n";
       }
     }
    -
    -
    -

    34.3.2 Director classes

    -

    For each class that has directors enabled, SWIG generates a new - class that derives from both the class in question and a special -Swig::Director class. These new classes, referred to as director +

    +
    +

    31.3.2 Director classes

    +

    For each class that has directors enabled, SWIG generates a new + class that derives from both the class in question and a special +Swig::Director class. These new classes, referred to as director classes, can be loosely thought of as the C++ equivalent of the PHP proxy classes. The director classes store a pointer to their underlying PHP object. Indeed, this is quite similar to the "_cPtr" and "thisown" - members of the PHP proxy classes.

    -

    For simplicity let's ignore the Swig::Director class and + members of the PHP proxy classes.

    +

    For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how - to modify this behavior). Thus all virtual method calls, whether they - originate in C++ or in PHP via proxy classes, eventually end up in at - the implementation in the director class. The job of the director + to modify this behavior). Virtual methods that have a final specifier + are unsurprisingly excluded. Thus the virtual method calls, whether + they originate in C++ or in PHP via proxy classes, eventually end up in + at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate place" we mean the method that would have been called if the C++ base class and its extensions in PHP were seamlessly integrated. That seamless integration is exactly what the director classes provide, transparently skipping over all the messy - extension API glue that binds the two languages together.

    -

    In reality, the "appropriate place" is one of only two + extension API glue that binds the two languages together.

    +

    In reality, the "appropriate place" is one of only two possibilities: C++ or PHP. Once this decision is made, the rest is fairly easy. If the correct implementation is in C++, then the lowest implementation of the method in the C++ inheritance chain is called explicitly. If the correct implementation is in PHP, the Zend API is used to call the method of the underlying PHP object (after which the usual virtual method resolution in PHP automatically finds the right - implementation).

    -

    Now how does the director decide which language should handle the + implementation).

    +

    Now how does the director decide which language should handle the method call? The basic rule is to handle the method in PHP, unless there's a good reason not to. The reason for this is simple: PHP has the most "extended" implementation of the method. This assertion is @@ -45348,117 +43534,117 @@ Swig::Director class. These new classes, referred to as director this. The C wrapper function compares the called and the declaring class name of the given method. If these are not the same, then the C wrapper function tells the director to resolve the method by calling up - the C++ inheritance chain, preventing an infinite loop.

    -

    One more point needs to be made about the relationship between + the C++ inheritance chain, preventing an infinite loop.

    +

    One more point needs to be made about the relationship between director classes and proxy classes. When a proxy class instance is created in PHP, SWIG creates an instance of the original C++ class and - assigns it to ->_cPtr. This is exactly what happens without + assigns it to ->_cPtr. This is exactly what happens without directors and is true even if directors are enabled for the particular - class in question. When a class derived from a proxy class is + class in question. When a class derived from a proxy class is created, however, SWIG then creates an instance of the corresponding C++ director class. The reason for this difference is that user-defined subclasses may override or extend methods of the original class, so the director class is needed to route calls to these methods correctly. For unmodified proxy classes, all methods are ultimately implemented in C++ so there is no need for the extra overhead involved with routing the - calls through PHP.

    -

    34.3.3 Ownership and object destruction

    -

    Memory management issues are slightly more complicated with + calls through PHP.

    +

    31.3.3 Ownership and object destruction

    +

    Memory management issues are slightly more complicated with directors than for proxy classes alone. PHP instances hold a pointer to the associated C++ director object, and the director in turn holds a pointer back to the PHP object. By default, proxy classes own their C++ director object and take care of deleting it when they are garbage - collected.

    -

    This relationship can be reversed by calling the special -->thisown property of the proxy class. After setting this property - to 0, the director class no longer destroys the PHP object. + collected.

    +

    This relationship can be reversed by calling the special +->thisown property of the proxy class. After setting this property + to 0, the director class no longer destroys the PHP object. Assuming no outstanding references to the PHP object remain, the PHP object will be destroyed at the same time. This is a good thing, since directors and proxies refer to each other and so must be created and destroyed together. Destroying one without destroying the other will - likely cause your program to segfault.

    -

    Here is an example:

    -
    -
    + likely cause your program to segfault.

    +

    Here is an example:

    +
    +
     class Foo {
     public:
    -    ...
    +  ...
     };
     class FooContainer {
     public:
    -    void addFoo(Foo *);
    -    ...
    +  void addFoo(Foo *);
    +  ...
     };
    -
    -
    -
    -
    +
    +
    +
    +
     $c = new FooContainer();
     $a = new Foo();
     $a->thisown = 0;
     $c->addFoo($a);
    -
    -
    -

    In this example, we are assuming that FooContainer will take care of - deleting all the Foo pointers it contains at some point.

    -

    34.3.4 Exception unrolling

    -

    With directors routing method calls to PHP, and proxies routing them +

    +
    +

    In this example, we are assuming that FooContainer will take care of + deleting all the Foo pointers it contains at some point.

    +

    31.3.4 Exception unrolling

    +

    With directors routing method calls to PHP, and proxies routing them to C++, the handling of exceptions is an important concern. By default, an exception thrown in PHP code called from C++ causes the PHP interpreter to flag that an exception is thrown, then return passes to - C++ as if the PHP function had returned Null. Assuming the + C++ as if the PHP function had returned Null. Assuming the directorout typemaps handle this (those SWIG defines by default should) then once control returns to PHP code again, the PHP exception will - actually propagate.

    -

    Sometimes this control flow is problematic, and you want to skip any + actually propagate.

    +

    Sometimes this control flow is problematic, and you want to skip any handling in the C++ code. To achieve this, it is necessary to temporarily translate the PHP exception into a C++ exception. This can be achieved using the %feature("director:except") directive. The - following code should suffice in most cases:

    -
    -
    + following code should suffice in most cases:

    +
    +
     %feature("director:except") {
    -    if ($error == FAILURE) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error == FAILURE) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
    -
    -
    -

    This code will check the PHP error state after each method call from +

    +
    +

    This code will check the PHP error state after each method call from a director into PHP, and throw a C++ exception if an error occurred. This exception can be caught in C++ to implement an error handler. Currently no information about the PHP error is stored in the Swig::DirectorMethodException object, but this will likely change in - the future.

    -

    It may be the case that a method call originates in PHP, travels up + the future.

    +

    It may be the case that a method call originates in PHP, travels up to C++ through a proxy class, and then back into PHP via a director method. If an exception occurs in PHP at this point, it would be nice for that exception to find its way back to the original caller. This - can be done by combining a normal %exception directive with the -director:except handler shown above. Here is an example of a - suitable exception handler:

    -
    -
    + can be done by combining a normal %exception directive with the 
    +director:except handler shown above. Here is an example of a
    + suitable exception handler:

    +
    +
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
    -
    -
    -

    The class Swig::DirectorException used in this example is actually a +

    +
    +

    The class Swig::DirectorException used in this example is actually a base class of Swig::DirectorMethodException, so it will trap this exception. Because the PHP error state is still set when Swig::DirectorMethodException is thrown, PHP will register the - exception as soon as the C wrapper function returns.

    -

    34.3.5 Overhead and code bloat

    -

    Enabling directors for a class will generate a new director method + exception as soon as the C wrapper function returns.

    +

    31.3.5 Overhead and code bloat

    +

    Enabling directors for a class will generate a new director method for every virtual method in the class' inheritance chain. This alone can generate a lot of code bloat for large hierarchies. Method arguments that require complex conversions to and from target language types can result in large director methods. For this reason it is recommended that you selectively enable directors only for specific - classes that are likely to be extended in PHP and used in C++.

    -

    Compared to classes that do not use directors, the call routing in + classes that are likely to be extended in PHP and used in C++.

    +

    Compared to classes that do not use directors, the call routing in the director methods does add some overhead. In particular, at least one dynamic cast and one extra function call occurs per method call from PHP. Relative to the speed of PHP execution this is probably @@ -45466,382 +43652,226 @@ director:except handler shown above. Here is an example of a ultimately resolves in C++ may take one extra detour through PHP in order to ensure that the method does not have an extended PHP implementation. This could result in a noticeable overhead in some - cases.

    -

    Although directors make it natural to mix native C++ objects with + cases.

    +

    Although directors make it natural to mix native C++ objects with PHP objects (as director objects) via a common base class pointer, one should be aware of the obvious fact that method calls to PHP objects will be much slower than calls to C++ objects. This situation can be optimized by selectively enabling director methods (using the %feature directive) for only those methods that are likely to be extended in - PHP.

    -

    34.3.6 Typemaps

    -

    Typemaps for input and output of most of the basic types from + PHP.

    +

    31.3.6 Typemaps

    +

    Typemaps for input and output of most of the basic types from director classes have been written. These are roughly the reverse of the usual input and output typemaps used by the wrapper code. The typemap operation names are 'directorin', 'directorout', and 'directorargout'. The director code does not currently use any of the other kinds of typemaps. It is not clear at this point which kinds are - appropriate and need to be supported.

    -

    34.3.7 Miscellaneous

    -

    Director typemaps for STL classes are mostly in place, and hence you - should be able to use std::string, etc., as you would any other type.

    + appropriate and need to be supported.

    +

    31.3.7 Miscellaneous

    +

    Director typemaps for STL classes are mostly in place, and hence you + should be able to use std::string, etc., as you would any other type.


    -

    35 SWIG and Pike

    +

    32 SWIG and Python

    - +
    + +
    -

    This chapter describes SWIG support for Pike. As of this writing, - the SWIG Pike module is still under development and is not considered - ready for prime time. The Pike module is being developed against the - Pike 7.4.10 release and may not be compatible with previous versions of - Pike.

    -

    This chapter covers most SWIG features, but certain low-level +

    Caution: This chapter is under repair!

    +

    This chapter describes SWIG's support of Python. SWIG is compatible + with all recent Python versions (Python 2.7 and Python >= 3.2). If you + still need to generate bindings which work with older versions of + Python, you'll have to use SWIG 3.0.x.

    +

    This chapter covers most SWIG features, but certain low-level details are covered in less depth than in earlier chapters. At the very - least, make sure you read the "SWIG Basics" - chapter. -

    -

    35.1 Preliminaries

    -

    35.1.1 Running SWIG

    -

    Suppose that you defined a SWIG module such as the following:

    -
    -
    %module example
    -
    -
    %{ -
    #include "example.h" -
    %} -
    -
    int fact(int n); -
    -
    -

    To build a C extension module for Pike, run SWIG using the -pike - option :

    -
    -
    $ swig -pike example.i
    -
    -
    -

    If you're building a C++ extension, be sure to add the -c++ - option:

    -
    -
    $ swig -c++ -pike example.i
    -
    -
    -

    This creates a single source file named example_wrap.c (or -example_wrap.cxx, if you ran SWIG with the -c++ option). - The SWIG-generated source file contains the low-level wrappers that - need to be compiled and linked with the rest of your C/C++ application - to create an extension module.

    -

    The name of the wrapper file is derived from the name of the input - file. For example, if the input file is example.i, the name of - the wrapper file is example_wrap.c. To change this, you can - use the -o option:

    -
    -
    $ swig -pike -o pseudonym.c example.i
    -
    -
    -

    35.1.2 Getting the right header files

    -

    In order to compile the C/C++ wrappers, the compiler needs to know - the path to the Pike header files. These files are usually contained in - a directory such as

    -
    -
    /usr/local/pike/7.4.10/include/pike
    -
    -
    -

    There doesn't seem to be any way to get Pike itself to reveal the - location of these files, so you may need to hunt around for them. - You're looking for files with the names global.h, -program.h and so on.

    -

    35.1.3 Using your module

    -

    To use your module, simply use Pike's import statement:

    -
    -
    -$ pike
    -Pike v7.4 release 10 running Hilfe v3.5 (Incremental Pike Frontend)
    -> import example;
    -> fact(4);
    -(1) Result: 24
    -
    -
    -

    35.2 Basic C/C++ Mapping

    -

    35.2.1 Modules

    -

    All of the code for a given SWIG module is wrapped into a single - Pike module. Since the name of the shared library that implements your - module ultimately determines the module's name (as far as Pike is - concerned), SWIG's %module directive doesn't really have any - significance.

    -

    35.2.2 Functions

    -

    Global functions are wrapped as new Pike built-in functions. For - example,

    -
    -
    -%module example
    -
    -int fact(int n);
    -
    -
    -

    creates a new built-in function example.fact(n) that works - exactly as you'd expect it to:

    -
    -
    -> import example;
    -> fact(4);
    -(1) Result: 24
    -
    -
    -

    35.2.3 Global variables

    -

    Global variables are currently wrapped as a pair of functions, one - to get the current value of the variable and another to set it. For - example, the declaration

    -
    -
    -%module example
    -
    -double Foo;
    -
    -
    -

    will result in two functions, Foo_get() and Foo_set() -:

    -
    -
    -> import example;
    -> Foo_get();
    -(1) Result: 3.000000
    -> Foo_set(3.14159);
    -(2) Result: 0
    -> Foo_get();
    -(3) Result: 3.141590
    -
    -
    -

    35.2.4 Constants and enumerated types

    -

    Enumerated types in C/C++ declarations are wrapped as Pike - constants, not as Pike enums.

    -

    35.2.5 Constructors and Destructors

    -

    Constructors are wrapped as create() methods, and - destructors are wrapped as destroy() methods, for Pike - classes.

    -

    35.2.6 Static Members

    -

    Since Pike doesn't support static methods or data for Pike classes, - static member functions in your C++ classes are wrapped as regular - functions and static member variables are wrapped as pairs of functions - (one to get the value of the static member variable, and another to set - it). The names of these functions are prepended with the name of the - class. For example, given this C++ class declaration:

    -
    -
    -class Shape
    -{
    -public:
    -    static void print();
    -    static int nshapes;
    -};
    -
    -
    -

    SWIG will generate a Shape_print() method that invokes the - static Shape::print() member function, as well as a pair of - methods, Shape_nshapes_get() and Shape_nshapes_set(), - to get and set the value of Shape::nshapes.

    -
    -

    36 SWIG and Python

    - - -
    - -
    - -

    Caution: This chapter is under repair!

    -

    This chapter describes SWIG's support of Python. SWIG is compatible - with most recent Python versions including Python 3.0 and Python 2.6, - as well as older versions dating back to Python 2.0. For the best - results, consider using Python 2.3 or newer.

    -

    This chapter covers most SWIG features, but certain low-level - details are covered in less depth than in earlier chapters. At the very - least, make sure you read the "SWIG Basics" - chapter.

    -

    36.1 Overview

    -

    To build Python extension modules, SWIG uses a layered approach in + least, make sure you read the "SWIG Basics" + chapter.

    +

    32.1 Overview

    +

    To build Python extension modules, SWIG uses a layered approach in which parts of the extension module are defined in C and other parts are defined in Python. The C layer contains low-level wrappers whereas - Python code is used to define high-level features.

    -

    This layered approach recognizes the fact that certain aspects of + Python code is used to define high-level features.

    +

    This layered approach recognizes the fact that certain aspects of extension building are better accomplished in each language (instead of trying to do everything in C or C++). Furthermore, by generating code in both languages, you get a lot more flexibility since you can enhance - the extension module with support code in either language.

    -

    In describing the Python interface, this chapter starts by covering + the extension module with support code in either language.

    +

    In describing the Python interface, this chapter starts by covering the basics of configuration, compiling, and installing Python modules. Next, the Python interface to common C and C++ programming features is described. Advanced customization features such as typemaps are then - described followed by a discussion of low-level implementation details.

    -

    36.2 Preliminaries

    -

    36.2.1 Running SWIG

    -

    Suppose that you defined a SWIG module such as the following:

    -
    -
    + described followed by a discussion of low-level implementation details.

    +

    32.2 Preliminaries

    +

    32.2.1 Running SWIG

    +

    Suppose that you defined a SWIG module such as the following:

    +
    +
     /* File: example.i */
     %module example
     
    @@ -45851,86 +43881,85 @@ public:
     %}
     
     int fact(int n);
    -
    -
    -

    The #define SWIG_FILE_WITH_INIT line inserts a macro that - specifies that the resulting C file should be built as a python - extension, inserting the module init code. This .i - file wraps the following simple C file:

    -
    -
    +
    +
    +

    The #define SWIG_FILE_WITH_INIT line inserts a macro that + specifies that the resulting C file should be built as a Python + extension, inserting the module init code. This .i + file wraps the following simple C file:

    +
    +
     /* File: example.c */
     
     #include "example.h"
     
     int fact(int n) {
    -    if (n < 0){ /* This should probably return an error, but this is simpler */
    -        return 0;
    -    }
    -    if (n == 0) {
    -        return 1;
    -    }
    -    else {
    -        /* testing for overflow would be a good idea here */
    -        return n * fact(n-1);
    -    }
    +  if (n < 0) { /* This should probably return an error, but this is simpler */
    +    return 0;
    +  }
    +  if (n == 0) {
    +    return 1;
    +  } else {
    +    /* testing for overflow would be a good idea here */
    +    return n * fact(n-1);
    +  }
     }
     
    -
    -
    -

    With the header file:

    -
    -
    +
    +
    +

    With the header file:

    +
    +
     /* File: example.h */
     
     int fact(int n);
    -
    -
    -

    To build a Python module, run SWIG using the -python - option:

    -
    -
    +
    +
    +

    To build a Python module, run SWIG using the -python + option:

    +
    +
     $ swig -python example.i
    -
    -
    -

    If building a C++ extension, add the -c++ option:

    -
    -
    +
    +
    +

    If building a C++ extension, add the -c++ option:

    +
    +
     $ swig -c++ -python example.i
    -
    -
    -

    This creates two different files; a C/C++ source file -example_wrap.c or example_wrap.cxx and a Python source - file example.py. The generated C source file contains the +

    +
    +

    This creates two different files; a C/C++ source file +example_wrap.c or example_wrap.cxx and a Python source + file example.py. The generated C source file contains the low-level wrappers that need to be compiled and linked with the rest of your C/C++ application to create an extension module. The Python source file contains high-level support code. This is the file that you will - import to use the module.

    -

    The name of the wrapper file is derived from the name of the input - file. For example, if the input file is example.i, the name of - the wrapper file is example_wrap.c. To change this, you can - use the -o option. The name of the Python file is derived from - the module name specified with %module. If the module name is -example, then a file example.py is created.

    -

    The following sections have further practical examples and details - on how you might go about compiling and using the generated files.

    -

    36.2.2 Using distutils

    -

    The preferred approach to building an extension module for python is + import to use the module.

    +

    The name of the wrapper file is derived from the name of the input + file. For example, if the input file is example.i, the name of + the wrapper file is example_wrap.c. To change this, you can + use the -o option. The name of the Python file is derived from + the module name specified with %module. If the module name is +example, then a file example.py is created.

    +

    The following sections have further practical examples and details + on how you might go about compiling and using the generated files.

    +

    32.2.2 Using distutils

    +

    The preferred approach to building an extension module for Python is to compile it with distutils, which comes with all recent versions of - python ( -Distutils Docs).

    -

    Distutils takes care of making sure that your extension is built + Python ( +Distutils Docs).

    +

    Distutils takes care of making sure that your extension is built with all the correct flags, headers, etc. for the version of Python it is run with. Distutils will compile your extension into a shared object - file or DLL (.so on Linux, .pyd on Windows, etc). In + file or DLL (.so on Linux, .pyd on Windows, etc). In addition, distutils can handle installing your package into site-packages, if that is desired. A configuration file (conventionally - called: setup.py) describes the extension (and related python + called: setup.py) describes the extension (and related Python modules). The distutils will then generate all the right compiler - directives to build it for you.

    -

    Here is a sample setup.py file for the above example:

    -
    -
    + directives to build it for you.

    +

    Here is a sample setup.py file for the above example:

    +
    +
     #!/usr/bin/env python
     
     """
    @@ -45951,95 +43980,95 @@ setup (name = 'example',
            ext_modules = [example_module],
            py_modules = ["example"],
            )
    -
    -
    -

    In this example, the line: example_module = Extension(....) - creates an Extension module object, defining the name as _example -, and using the source code files: example_wrap.c, generated by - swig, and example.c, your original c source. The swig (and - other python extension modules) tradition is for the compiled extension - to have the name of the python portion, prefixed by an underscore. If - the name of your python module is "example.py", then the name - of the corresponding object file will be"_example.so"

    -

    The setup call then sets up distutils to build your +

    +
    +

    In this example, the line: example_module = Extension(....) + creates an Extension module object, defining the name as _example +, and using the source code files: example_wrap.c, generated by + swig, and example.c, your original c source. The swig (and + other Python extension modules) tradition is for the compiled extension + to have the name of the Python portion, prefixed by an underscore. If + the name of your Python module is "example.py", then the name + of the corresponding object file will be"_example.so"

    +

    The setup call then sets up distutils to build your package, defining some meta data, and passing in your extension module - object. Once this is saved as setup.py, you can build your - extension with these commands:

    -
    -
    + object. Once this is saved as setup.py, you can build your
    + extension with these commands:

    +
    +
     $ swig -python example.i
     $ python setup.py build_ext --inplace
    -
    -
    -

    And a .so, or .pyd or... will be created for you. It will build a - version that matches the python that you run the command with. Taking - apart the command line:

    -
      -
    • python -- the version of python you want to build for
    • -
    • setup.py -- the name of your setup script (it can be - called anything, but setup.py is the tradition)
    • -
    • build_ext -- telling distutils to build extensions
    • -
    • --inplace -- this tells distutils to put the extension lib +
    +
    +

    And a .so, or .pyd or... will be created for you. It will build a + version that matches the Python that you run the command with. Taking + apart the command line:

    +
      +
    • python -- the version of Python you want to build for
    • +
    • setup.py -- the name of your setup script (it can be + called anything, but setup.py is the tradition)
    • +
    • build_ext -- telling distutils to build extensions
    • +
    • --inplace -- this tells distutils to put the extension lib in the current dir. Otherwise, it will put it inside a build hierarchy, - and you'd have to move it to use it.
    • -
    -

    The distutils have many other features, consult the python distutils - docs for details.

    -

    This same approach works on all platforms if the appropriate + and you'd have to move it to use it. + +

    The distutils have many other features, consult the Python distutils + docs for details.

    +

    This same approach works on all platforms if the appropriate compiler is installed. (it can even build extensions to the standard - Windows Python using MingGW)

    -

    36.2.3 Hand compiling a dynamic module

    -

    While the preferred approach to building an extension module is to + Windows Python using MingGW)

    +

    32.2.3 Hand compiling a dynamic module

    +

    While the preferred approach to building an extension module is to use the distutils, some people like to integrate building extensions with a larger build system, and thus may wish to compile their modules without the distutils. To do this, you need to compile your program - using commands like this (shown for Linux):

    -
    -
    + using commands like this (shown for Linux):

    +
    +
     $ swig -python example.i
     $ gcc -O2 -fPIC -c example.c
     $ gcc -O2 -fPIC -c example_wrap.c -I/usr/local/include/python2.5
     $ gcc -shared example.o example_wrap.o -o _example.so
    -
    -
    -

    The exact commands for doing this vary from platform to platform. +

    +
    +

    The exact commands for doing this vary from platform to platform. However, SWIG tries to guess the right options when it is installed. - Therefore, you may want to start with one of the examples in the -SWIG/Examples/python directory. If that doesn't work, you will need + Therefore, you may want to start with one of the examples in the +SWIG/Examples/python directory. If that doesn't work, you will need to read the man-pages for your compiler and linker to get the right set - of options. You might also check the -SWIG Wiki for additional information.

    -

    When linking the module, the name of the output file has to match - the name of the module prefixed by an underscore. If the name of - your module is "example", then the name of the corresponding - object file should be "_example.so" or "_examplemodule.so -". The name of the module is specified using the %module - directive or the -module command line option.

    -

    Compatibility Note: In SWIG-1.3.13 and earlier releases, + of options. You might also check the +SWIG Wiki for additional information.

    +

    When linking the module, the name of the output file has to match + the name of the module prefixed by an underscore. If the name of + your module is "example", then the name of the corresponding + object file should be "_example.so" or "_examplemodule.so +". The name of the module is specified using the %module + directive or the -module command line option.

    +

    Compatibility Note: In SWIG-1.3.13 and earlier releases, module names did not include the leading underscore. This is because modules were normally created as C-only extensions without the extra Python support file (instead, creating Python code was supported as an optional feature). This has been changed in SWIG-1.3.14 and is - consistent with other Python extension modules. For example, the -socket module actually consists of two files; socket.py - and _socket.so. Many other built-in Python modules follow a - similar convention.

    -

    36.2.4 Static linking

    -

    An alternative approach to dynamic linking is to rebuild the Python + consistent with other Python extension modules. For example, the +socket module actually consists of two files; socket.py + and _socket.so. Many other built-in Python modules follow a + similar convention.

    +

    32.2.4 Static linking

    +

    An alternative approach to dynamic linking is to rebuild the Python interpreter with your extension module added to it. In the past, this approach was sometimes necessary due to limitations in dynamic loading support on certain machines. However, the situation has improved greatly over the last few years and you should not consider this - approach unless there is really no other option.

    -

    The usual procedure for adding a new module to Python involves - finding the Python source, adding an entry to the Modules/Setup + approach unless there is really no other option.

    +

    The usual procedure for adding a new module to Python involves + finding the Python source, adding an entry to the Modules/Setup file, and rebuilding the interpreter using the Python Makefile. However, newer Python versions have changed the build process. You may - need to edit the 'setup.py' file in the Python distribution instead.

    -

    In earlier versions of SWIG, the embed.i library file could - be used to rebuild the interpreter. For example:

    -
    -
    + need to edit the 'setup.py' file in the Python distribution instead.

    +

    In earlier versions of SWIG, the embed.i library file could + be used to rebuild the interpreter. For example:

    +
    +
     %module example
     
     %inline %{
    @@ -46050,13 +44079,13 @@ extern double My_variable;
     
     %include "embed.i"       // Include code for a static version of Python
     
    -
    -
    -

    The embed.i library file includes supporting code that +

    +
    +

    The embed.i library file includes supporting code that contains everything needed to rebuild Python. To rebuild the - interpreter, you simply do something like this:

    -
    -
    + interpreter, you simply do something like this:

    +
    +
     $ swig -python -lembed.i example.i
     $ gcc example.c example_wrap.c \
             -Xlinker -export-dynamic \
    @@ -46065,199 +44094,199 @@ $ gcc example.c example_wrap.c \
             -I/usr/lib/python2.7/config \
             -L/usr/lib/python2.7/config -lpython2.7 -lm -ldl \
             -o mypython
    -
    -
    -

    You will need to supply the same libraries that were used to build - Python the first time. This may include system libraries such as --lsocket, -lnsl, and -lpthread. Assuming this +

    +
    +

    You will need to supply the same libraries that were used to build + Python the first time. This may include system libraries such as +-lsocket, -lnsl, and -lpthread. Assuming this actually works, the new version of Python should be identical to the default version except that your extension module will be a built-in - part of the interpreter.

    -

    Comment: In practice, you should probably try to avoid static + part of the interpreter.

    +

    Comment: In practice, you should probably try to avoid static linking if possible. Some programmers may be inclined to use static linking in the interest of getting better performance. However, the performance gained by static linking tends to be rather minimal in most situations (and quite frankly not worth the extra hassle in the opinion - of this author).

    -

    Compatibility note: The embed.i library file is + of this author).

    +

    Compatibility note: The embed.i library file is deprecated and has not been actively maintained for many years. Even though it appears to "work" with Python 2.7, no future support is guaranteed. If using static linking, you might want to rely on a - different approach (perhaps using distutils).

    -

    36.2.5 Using your module

    -

    To use your module, simply use the Python import statement. - If all goes well, you will be able to run this:

    -
    -
    + different approach (perhaps using distutils).

    +

    32.2.5 Using your module

    +

    To use your module, simply use the Python import statement. + If all goes well, you will be able to run this:

    +
    +
     $ python
     >>> import example
     >>> example.fact(4)
     24
     >>>
    -
    -
    -

    A common error received by first-time users is the following:

    -
    -
    +
    +
    +

    A common error received by first-time users is the following:

    +
    +
     >>> import example
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
       File "example.py", line 2, in ?
         import _example
     ImportError: No module named _example
    -
    -
    -

    If you get this message, it means that you either forgot to compile +

    +
    +

    If you get this message, it means that you either forgot to compile the wrapper code into an extension module or you didn't give the extension module the right name. Make sure that you compiled the - wrappers into a module called _example.so. And don't forget - the leading underscore (_).

    -

    Another possible error is the following:

    -
    -
    + wrappers into a module called _example.so. And don't forget
    + the leading underscore (_).

    +

    Another possible error is the following:

    +
    +
     >>> import example
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     ImportError: dynamic module does not define init function (init_example)
    ->>>                                                               
    -
    -
    -

    This error is almost always caused when a bad name is given to the - shared object file. For example, if you created a file example.so - instead of _example.so you would get this error. +>>> +

    +
    +

    This error is almost always caused when a bad name is given to the + shared object file. For example, if you created a file example.so + instead of _example.so you would get this error. Alternatively, this error could arise if the name of the module is - inconsistent with the module name supplied with the %module + inconsistent with the module name supplied with the %module directive. Double-check the interface to make sure the module name and the shared object filename match. Another possible cause of this error is forgetting to link the SWIG-generated wrapper code with the rest of - your application when creating the extension module.

    -

    Another common error is something similar to the following:

    -
    -
    + your application when creating the extension module.

    +

    Another common error is something similar to the following:

    +
    +
     Traceback (most recent call last):
       File "example.py", line 3, in ?
         import example
     ImportError: ./_example.so: undefined symbol: fact
    -
    -
    -

    This error usually indicates that you forgot to include some object +

    +
    +

    This error usually indicates that you forgot to include some object files or libraries in the linking of the shared library file. Make sure you compile both the SWIG wrapper file and your original program into a shared library file. Make sure you pass all of the required libraries - to the linker.

    -

    Sometimes unresolved symbols occur because a wrapper has been + to the linker.

    +

    Sometimes unresolved symbols occur because a wrapper has been created for a function that doesn't actually exist in a library. This usually occurs when a header file includes a declaration for a function that was never actually implemented or it was removed from a library without updating the header file. To fix this, you can either edit the - SWIG input file to remove the offending declaration or you can use the -%ignore directive to ignore the declaration.

    -

    Finally, suppose that your extension module is linked with another - library like this:

    -
    -
    -$ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
    + SWIG input file to remove the offending declaration or you can use the 
    +%ignore directive to ignore the declaration.

    +

    Finally, suppose that your extension module is linked with another + library like this:

    +
    +
    +$ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
           -o _example.so
    -
    -
    -

    If the foo library is compiled as a shared library, you - might encounter the following problem when you try to use your module:

    -
    -
    +
    +
    +

    If the foo library is compiled as a shared library, you + might encounter the following problem when you try to use your module:

    +
    +
     >>> import example
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     ImportError: libfoo.so: cannot open shared object file: No such file or directory
    ->>>                 
    -
    -
    -

    This error is generated because the dynamic linker can't locate the -libfoo.so library. When shared libraries are loaded, the system - normally only checks a few standard locations such as /usr/lib - and /usr/local/lib. To fix this problem, there are several +>>> +

    +
    +

    This error is generated because the dynamic linker can't locate the +libfoo.so library. When shared libraries are loaded, the system + normally only checks a few standard locations such as /usr/lib + and /usr/local/lib. To fix this problem, there are several things you can do. First, you can recompile your extension module with - extra path information. For example, on Linux you can do this:

    -
    -
    + extra path information. For example, on Linux you can do this:

    +
    +
     $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
    -      -Xlinker -rpath /home/beazley/projects/lib  \
    +      -Xlinker -rpath /home/beazley/projects/lib  \
           -o _example.so
    -
    -
    -

    Alternatively, you can set the LD_LIBRARY_PATH environment +

    +
    +

    Alternatively, you can set the LD_LIBRARY_PATH environment variable to include the directory with your shared libraries. If - setting LD_LIBRARY_PATH, be aware that setting this variable + setting LD_LIBRARY_PATH, be aware that setting this variable can introduce a noticeable performance impact on all other applications that you run. To set it only for Python, you might want to do this - instead:

    -
    -
    + instead:

    +
    +
     $ env LD_LIBRARY_PATH=/home/beazley/projects/lib python
    -
    -
    -

    Finally, you can use a command such as ldconfig (Linux) or -crle (Solaris) to add additional search paths to the default system +

    +
    +

    Finally, you can use a command such as ldconfig (Linux) or +crle (Solaris) to add additional search paths to the default system configuration (this requires root access and you will need to read the - man pages).

    -

    36.2.6 Compilation of C++ extensions

    -

    Compilation of C++ extensions has traditionally been a tricky + man pages).

    +

    32.2.6 Compilation of C++ extensions

    +

    Compilation of C++ extensions has traditionally been a tricky problem. Since the Python interpreter is written in C, you need to take steps to make sure C++ is properly initialized and that modules are compiled correctly. This should be a non-issue if you're using distutils, as it takes care of all that for you. The following is included for historical reasons, and in case you need to compile on - your own.

    -

    On most machines, C++ extension modules should be linked using the - C++ compiler. For example:

    -
    -
    + your own.

    +

    On most machines, C++ extension modules should be linked using the + C++ compiler. For example:

    +
    +
     $ swig -c++ -python example.i
     $ g++ -O2 -fPIC -c example.cxx
     $ g++ -O2 -fPIC -c example_wrap.cxx -I/usr/local/include/python2.5
     $ g++ -shared example.o example_wrap.o -o _example.so
    -
    -
    -

    The -fPIC option tells GCC to generate position-independent code +

    +
    +

    The -fPIC option tells GCC to generate position-independent code (PIC) which is required for most architectures (it's not vital on x86, but still a good idea as it allows code pages from the library to be shared between processes). Other compilers may need a different option - specified instead of -fPIC.

    -

    In addition to this, you may need to include additional library + specified instead of -fPIC.

    +

    In addition to this, you may need to include additional library files to make it work. For example, if you are using the Sun C++ - compiler on Solaris, you often need to add an extra library -lCrun - like this:

    -
    -
    + compiler on Solaris, you often need to add an extra library -lCrun
    + like this:

    +
    +
     $ swig -c++ -python example.i
     $ CC -c example.cxx
     $ CC -c example_wrap.cxx -I/usr/local/include/python2.5
     $ CC -G example.o example_wrap.o -L/opt/SUNWspro/lib -o _example.so -lCrun
    -
    -
    -

    Of course, the extra libraries to use are completely - non-portable---you will probably need to do some experimentation.

    -

    Sometimes people have suggested that it is necessary to relink the +

    +
    +

    Of course, the extra libraries to use are completely + non-portable---you will probably need to do some experimentation.

    +

    Sometimes people have suggested that it is necessary to relink the Python interpreter using the C++ compiler to make C++ extension modules work. In the experience of this author, this has never actually appeared to be necessary. Relinking the interpreter with C++ really only includes the special run-time libraries described above---as long as you link your extension modules with these libraries, it should not - be necessary to rebuild Python.

    -

    If you aren't entirely sure about the linking of a C++ extension, - you might look at an existing C++ program. On many Unix machines, the -ldd command will list library dependencies. This should give you + be necessary to rebuild Python.

    +

    If you aren't entirely sure about the linking of a C++ extension, + you might look at an existing C++ program. On many Unix machines, the +ldd command will list library dependencies. This should give you some clues about what you might have to include when you link your - extension module. For example:

    -
    -
    + extension module. For example:

    +
    +
     $ ldd swig
             libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x40019000)
             libm.so.6 => /lib/libm.so.6 (0x4005b000)
             libc.so.6 => /lib/libc.so.6 (0x40077000)
             /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    -
    -
    -

    As a final complication, a major weakness of C++ is that it does not +

    +
    +

    As a final complication, a major weakness of C++ is that it does not define any sort of standard for binary linking of libraries. This means that C++ code compiled by different compilers will not link together properly as libraries nor is the memory layout of classes and data @@ -46268,189 +44297,240 @@ $ ldd swig probably won't matter. However, if these modules start sharing data, you will need to take steps to avoid segmentation faults and other erratic program behavior. If working with lots of software components, - you might want to investigate using a more formal standard such as COM.

    -

    36.2.7 Compiling for 64-bit platforms

    -

    On platforms that support 64-bit applications (Solaris, Irix, etc.), + you might want to investigate using a more formal standard such as COM.

    +

    32.2.7 Compiling for 64-bit platforms

    +

    On platforms that support 64-bit applications (Solaris, Irix, etc.), special care is required when building extension modules. On these machines, 64-bit applications are compiled and linked using a different set of compiler/linker options. In addition, it is not generally possible to mix 32-bit and 64-bit code together in the same - application.

    -

    To utilize 64-bits, the Python executable will need to be recompiled + application.

    +

    To utilize 64-bits, the Python executable will need to be recompiled as a 64-bit application. In addition, all libraries, wrapper code, and every other part of your application will need to be compiled for 64-bits. If you plan to use other third-party extension modules, they - will also have to be recompiled as 64-bit extensions.

    -

    If you are wrapping commercial software for which you have no source + will also have to be recompiled as 64-bit extensions.

    +

    If you are wrapping commercial software for which you have no source code, you will be forced to use the same linking standard as used by that software. This may prevent the use of 64-bit extensions. It may also introduce problems on platforms that support more than one linking - standard (e.g., -o32 and -n32 on Irix).

    -

    On the Linux x86_64 platform (Opteron or EM64T), besides of the + standard (e.g., -o32 and -n32 on Irix).

    +

    On the Linux x86_64 platform (Opteron or EM64T), besides of the required compiler option -fPIC discussed above, you will need to be careful about the libraries you link with or the library path you use. In general, a Linux distribution will have two set of libraries, one for native x86_64 programs (under /usr/lib64), and another for 32 bits compatibility (under /usr/lib). Also, the compiler options -m32 and - -m64 allow you to choose the desired binary format for your python - extension.

    -

    36.2.8 Building Python Extensions under - Windows

    -

    Building a SWIG extension to Python under Windows is roughly similar + -m64 allow you to choose the desired binary format for your Python + extension.

    +

    32.2.8 Building Python extensions under + Windows

    +

    Building a SWIG extension to Python under Windows is roughly similar to the process used with Unix. Using the distutils, it is essentially identical. If you have the same version of the MS compiler that Python was built with (the python2.4 and python2.5 distributed by python.org - are built with Visual Studio 2003), the standard python setup.py - build should just work.

    -

    As of python2.5, the distutils support building extensions with - MingGW out of the box. Following the instruction here: -Building Python extensions for Windows with only free tools should - get you started.

    -

    If you need to build it on your own, the following notes are - provided:

    -

    You will need to create a DLL that can be loaded into the + are built with Visual Studio 2003), the standard python setup.py + build should just work.

    +

    As of python2.5, the distutils support building extensions with + MingGW out of the box. Following the instruction here: +Building Python extensions for Windows with only free tools should + get you started.

    +

    If you need to build it on your own, the following notes are + provided:

    +

    You will need to create a DLL that can be loaded into the interpreter. This section briefly describes the use of SWIG with Microsoft Visual C++. As a starting point, many of SWIG's examples include project files (.dsp files) for Visual C++ 6. These can be opened by more recent versions of Visual Studio. You might want to take - a quick look at these examples in addition to reading this section.

    -

    In Developer Studio, SWIG should be invoked as a custom build - option. This is usually done as follows:

    -
      -
    • Open up a new workspace and use the AppWizard to select a DLL - project.
    • -
    • Add both the SWIG interface file (the .i file), any supporting C + a quick look at these examples in addition to reading this section.

      +

      In Developer Studio, SWIG should be invoked as a custom build + option. This is usually done as follows:

      +
        +
      • Open up a new workspace and use the AppWizard to select a DLL + project.
      • +
      • Add both the SWIG interface file (the .i file), any supporting C files, and the name of the wrapper file that will be created by SWIG - (ie. example_wrap.c). Note : If using C++, choose a different - suffix for the wrapper file such as example_wrap.cxx. Don't + (ie. example_wrap.c). Note : If using C++, choose a different + suffix for the wrapper file such as example_wrap.cxx. Don't worry if the wrapper file doesn't exist yet--Developer Studio keeps a - reference to it.
      • -
      • Select the SWIG interface file and go to the settings menu. Under - settings, select the "Custom Build" option.
      • -
      • Enter "SWIG" in the description field.
      • -
      • Enter "swig -python -o $(ProjDir)\$(InputName)_wrap.c - $(InputPath)" in the "Build command(s) field"
      • -
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output - files(s) field".
      • -
      • Next, select the settings for the entire project and go to + reference to it.
      • +
      • Select the SWIG interface file and go to the settings menu. Under + settings, select the "Custom Build" option.
      • +
      • Enter "SWIG" in the description field.
      • +
      • Enter "swig -python -o $(ProjDir)\$(InputName)_wrap.c + $(InputPath)" in the "Build command(s) field"
      • +
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output + files(s) field".
      • +
      • Next, select the settings for the entire project and go to "C++:Preprocessor". Add the include directories for your Python - installation under "Additional include directories".
      • -
      • Define the symbol __WIN32__ under preprocessor options.
      • -
      • Finally, select the settings for the entire project and go to "Link + installation under "Additional include directories".
      • +
      • Define the symbol __WIN32__ under preprocessor options.
      • +
      • Finally, select the settings for the entire project and go to "Link Options". Add the Python library file to your link libraries. For - example "python21.lib". Also, set the name of the output file to match - the name of your Python module, ie. _example.pyd - Note that - _example.dll also worked with Python-2.4 and earlier.
      • -
      • Build your project.
      • -
      -

      If all went well, SWIG will be automatically invoked whenever you + example "python27.lib". Also, set the name of the output file to match + the name of your Python module, i.e. _example.pyd

    • +
    • Build your project.
    • +
    +

    If all went well, SWIG will be automatically invoked whenever you build your project. Any changes made to the interface file will result in SWIG being automatically executed to produce a new version of the - wrapper file.

    -

    To run your new Python extension, simply run Python and use the -import command as normal. For example :

    -
    -
    + wrapper file.

    +

    To run your new Python extension, simply run Python and use the +import command as normal. For example :

    +
    +
     $ python
     >>> import example
     >>> print example.fact(4)
     24
     >>>
    -
    -
    -

    If you get an ImportError exception when importing the +

    +
    +

    If you get an ImportError exception when importing the module, you may have forgotten to include additional library files when you built your module. If you get an access violation or some kind of general protection fault immediately upon import, you have a more serious problem. This is often caused by linking your extension module against the wrong set of Win32 debug or thread libraries. You will have to fiddle around with the build options of project to try and track - this down.

    -

    A 'Debug' build of the wrappers requires a debug build of the Python + this down.

    +

    A 'Debug' build of the wrappers requires a debug build of the Python interpreter. This normally requires building the Python interpreter from source, which is not a job for the feint-hearted. Alternatively you can use the 'Release' build of the Python interpreter with a - 'Debug' build of your wrappers by defining the -SWIG_PYTHON_INTERPRETER_NO_DEBUG symbol under the preprocessor + 'Debug' build of your wrappers by defining the +SWIG_PYTHON_INTERPRETER_NO_DEBUG symbol under the preprocessor options. Or you can ensure this macro is defined at the beginning of - the wrapper code using the following in your interface file, where -_MSC_VER ensures it is only used by the Visual Studio compiler:

    -
    -
    + the wrapper code using the following in your interface file, where 
    +_MSC_VER ensures it is only used by the Visual Studio compiler:

    +
    +
     %begin %{
     #ifdef _MSC_VER
     #define SWIG_PYTHON_INTERPRETER_NO_DEBUG
     #endif
     %}
    -
    -
    -

    Some users have reported success in building extension modules using +

    +
    +

    Some users have reported success in building extension modules using Cygwin and other compilers. However, the problem of building usable DLLs with these compilers tends to be rather problematic. For the - latest information, you may want to consult the - SWIG Wiki.

    -

    36.3 A tour of basic C/C++ wrapping

    -

    By default, SWIG tries to build a very natural Python interface to + latest information, you may want to consult the + SWIG Wiki.

    +

    32.2.9 Additional Python commandline + options

    +

    The following table lists the additional commandline options + available for the Python module. They can also be seen by using:

    +
    +
    +swig -python -help
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Python specific options
    -builtinCreate Python built-in types rather than proxy + classes, for better performance
    -castmodeEnable the casting mode, which allows implicit + cast between types in Python
    -debug-doxygen-parserDisplay doxygen parser module + debugging information
    -debug-doxygen-translatorDisplay doxygen translator + module debugging information
    -dirvtableGenerate a pseudo virtual table for directors + for faster dispatch
    -doxygenConvert C++ doxygen comments to pydoc comments + in proxy classes
    -extranativeReturn extra native wrappers for C++ std + containers wherever possible
    -fastproxyUse fast proxy mechanism for member methods
    -globals <name>Set <name> used to access C global + variable (default: 'cvar')
    -interface <mod>Set low-level C/C++ module name to + <mod> (default: module name prefixed by '_')
    -keywordUse keyword arguments
    -nofastunpackUse traditional UnpackTuple method to + parse the argument functions
    -nohDon't generate the output header file
    -noproxyDon't generate proxy classes
    -norttiDisable the use of the native C++ RTTI with + directors
    -nothreadsDisable thread support for the entire + interface
    -olddefsKeep the old method definitions when using + -fastproxy
    -py3Generate code with Python 3 specific features and + syntax
    -relativeimportUse relative Python imports
    -threadsAdd thread support for all the interface
    -OEnable the following optimization options: + -fastdispatch -fastproxy -fvirtual
    +

    Many of these options are covered later on and their use should + become clearer by the time you have finished reading this section on + SWIG and Python.

    +

    32.3 A tour of basic C/C++ wrapping

    +

    By default, SWIG tries to build a very natural Python interface to your C/C++ code. Functions are wrapped as functions, classes are wrapped as classes, and so forth. This section briefly covers the - essential aspects of this wrapping.

    -

    36.3.1 Modules

    -

    The SWIG %module directive specifies the name of the Python - module. If you specify `%module example', then everything is - wrapped into a Python 'example' module. Underneath the covers, - this module consists of a Python source file example.py and a - low-level extension module _example.so. When choosing a module + essential aspects of this wrapping.

    +

    32.3.1 Modules

    +

    The SWIG %module directive specifies the name of the Python + module. If you specify `%module example', then everything is + wrapped into a Python 'example' module. Underneath the covers, + this module consists of a Python source file example.py and a + low-level extension module _example.so. When choosing a module name, make sure you don't use the same name as a built-in Python - command or standard module name.

    -

    36.3.2 Functions

    -

    Global functions are wrapped as new Python built-in functions. For - example,

    -
    -
    + command or standard module name.

    +

    32.3.2 Functions

    +

    Global functions are wrapped as new Python built-in functions. For + example,

    +
    +
     %module example
     int fact(int n);
    -
    -
    -

    creates a built-in function example.fact(n) that works - exactly like you think it does:

    -
    -
    +
    +
    +

    creates a built-in function example.fact(n) that works + exactly like you think it does:

    +
    +
     >>> import example
     >>> print example.fact(4)
     24
     >>>
    -
    -
    -

    36.3.3 Global variables

    -

    C/C++ global variables are fully supported by SWIG. However, the +

    +
    +

    32.3.3 Global variables

    +

    C/C++ global variables are fully supported by SWIG. However, the underlying mechanism is somewhat different than you might expect due to the way that Python assignment works. When you type the following in - Python

    -
    -
    + Python

    +
    +
     a = 3.4
    -
    -
    -

    "a" becomes a name for an object containing the value 3.4. If you - later type

    -
    -
    +
    +
    +

    "a" becomes a name for an object containing the value 3.4. If you + later type

    +
    +
     b = a
    -
    -
    -

    then "a" and "b" are both names for the object containing the value +

    +
    +

    then "a" and "b" are both names for the object containing the value 3.4. Thus, there is only one object containing 3.4 and "a" and "b" are both names that refer to it. This is quite different than C where a variable name refers to a memory location in which a value is stored (and assignment copies data into that location). Because of this, there is no direct way to map variable assignment in C to variable assignment - in Python.

    -

    To provide access to C global variables, SWIG creates a special - object called `cvar' that is added to each SWIG generated + in Python.

    +

    To provide access to C global variables, SWIG creates a special + object called `cvar' that is added to each SWIG generated module. Global variables are then accessed as attributes of this - object. For example, consider this interface

    -
    -
    + object. For example, consider this interface

    +
    +
     // SWIG interface file with global variables
     %module example
     ...
    @@ -46459,11 +44539,11 @@ extern int My_variable;
     extern double density;
     %}
     ...
    -
    -
    -

    Now look at the Python interface:

    -
    -
    +
    +
    +

    Now look at the Python interface:

    +
    +
     >>> import example
     >>> # Print out value of a C global variable
     >>> print example.cvar.My_variable
    @@ -46472,70 +44552,70 @@ extern double density;
     >>> example.cvar.density = 0.8442
     >>> # Use in a math operation
     >>> example.cvar.density = example.cvar.density*1.10
    -
    -
    -

    If you make an error in variable assignment, you will receive an - error message. For example:

    -
    -
    +
    +
    +

    If you make an error in variable assignment, you will receive an + error message. For example:

    +
    +
     >>> example.cvar.density = "Hello"
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: C variable 'density (double )'
    ->>> 
    -
    -
    -

    If a variable is declared as const, it is wrapped as a +>>> +

    +
    +

    If a variable is declared as const, it is wrapped as a read-only variable. Attempts to modify its value will result in an - error.

    -

    To make ordinary variables read-only, you can use the %immutable - directive. For example:

    -
    -
    + error.

    +

    To make ordinary variables read-only, you can use the %immutable + directive. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable;
     extern char *path;
     %mutable;
    -
    -
    -

    The %immutable directive stays in effect until it is - explicitly disabled or cleared using %mutable. See the -Creating read-only variables section for further details.

    -

    If you just want to make a specific variable immutable, supply a - declaration name. For example:

    -
    -
    +
    +
    +

    The %immutable directive stays in effect until it is + explicitly disabled or cleared using %mutable. See the +Creating read-only variables section for further details.

    +

    If you just want to make a specific variable immutable, supply a + declaration name. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable path;
     ...
     extern char *path;      // Read-only (due to %immutable)
    -
    -
    -

    If you would like to access variables using a name other than " -cvar", it can be changed using the -globals option :

    -
    -
    +
    +
    +

    If you would like to access variables using a name other than " +cvar", it can be changed using the -globals option :

    +
    +
     $ swig -python -globals myvar example.i
    -
    -
    -

    Some care is in order when importing multiple SWIG modules. If you - use the "from <file> import *" style of importing, you will - get a name clash on the variable `cvar' and you will only be +

    +
    +

    Some care is in order when importing multiple SWIG modules. If you + use the "from <file> import *" style of importing, you will + get a name clash on the variable `cvar' and you will only be able to access global variables from the last module loaded. To prevent - this, you might consider renaming cvar or making it private to + this, you might consider renaming cvar or making it private to the module by giving it a name that starts with a leading underscore. - SWIG does not create cvar if there are no global variables in - a module.

    -

    36.3.4 Constants and enums

    -

    C/C++ constants are installed as Python objects containing the - appropriate value. To create a constant, use #define, enum -, or the %constant directive. For example:

    -
    -
    + SWIG does not create cvar if there are no global variables in
    + a module.

    +

    32.3.4 Constants and enums

    +

    C/C++ constants are installed as Python objects containing the + appropriate value. To create a constant, use #define, enum +, or the %constant directive. For example:

    +
    +
     #define PI 3.14159
     #define VERSION "1.0"
     
    @@ -46543,95 +44623,95 @@ enum Beverage { ALE, LAGER, STOUT, PILSNER };
     
     %constant int FOO = 42;
     %constant const char *path = "/usr/local";
    -
    -
    -

    For enums, make sure that the definition of the enumeration actually +

    +
    +

    For enums, make sure that the definition of the enumeration actually appears in a header file or in the wrapper file somehow---if you just stick an enum in a SWIG interface without also telling the C compiler - about it, the wrapper code won't compile.

    -

    Note: declarations declared as const are wrapped as - read-only variables and will be accessed using the cvar object + about it, the wrapper code won't compile.

    +

    Note: declarations declared as const are wrapped as + read-only variables and will be accessed using the cvar object described in the previous section. They are not wrapped as constants. - For further discussion about this, see the SWIG Basics - chapter.

    -

    Constants are not guaranteed to remain constant in Python---the name + For further discussion about this, see the SWIG Basics + chapter.

    +

    Constants are not guaranteed to remain constant in Python---the name of the constant could be accidentally reassigned to refer to some other object. Unfortunately, there is no easy way for SWIG to generate code - that prevents this. You will just have to be careful.

    -

    36.3.5 Pointers

    -

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no + that prevents this. You will just have to be careful.

    +

    32.3.5 Pointers

    +

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type information. Here is a rather - simple interface:

    -
    -
    + simple interface:

    +
    +
     %module example
     
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    When wrapped, you will be able to use the functions in a natural way - from Python. For example:

    -
    -
    +
    +
    +

    When wrapped, you will be able to use the functions in a natural way + from Python. For example:

    +
    +
     >>> import example
     >>> f = example.fopen("junk", "w")
     >>> example.fputs("Hello World\n", f)
     >>> example.fclose(f)
    -
    -
    -

    If this makes you uneasy, rest assured that there is no deep magic +

    +
    +

    If this makes you uneasy, rest assured that there is no deep magic involved. Underneath the covers, pointers to C/C++ objects are simply - represented as opaque values using an especial python container object:

    -
    -
    + represented as opaque values using an especial Python container object:

    +
    +
     >>> print f
     <Swig Object of type 'FILE *' at 0xb7d6f470>
    -
    -
    -

    This pointer value can be freely passed around to different C - functions that expect to receive an object of type FILE *. The +

    +
    +

    This pointer value can be freely passed around to different C + functions that expect to receive an object of type FILE *. The only thing you can't do is dereference the pointer from Python. Of - course, that isn't much of a concern in this example.

    -

    In older versions of SWIG (1.3.22 or older), pointers were + course, that isn't much of a concern in this example.

    +

    In older versions of SWIG (1.3.22 or older), pointers were represented using a plain string object. If you have an old package that still requires that representation, or you just feel nostalgic, - you can always retrieve it by casting the pointer object to a string:

    -
    -
    + you can always retrieve it by casting the pointer object to a string:

    +
    +
     >>> print str(f)
     _c0671108_p_FILE
    -
    -
    -

    Also, if you need to pass the raw pointer value to some external - python library, you can do it by casting the pointer object to an - integer:

    -
    -
    +
    +
    +

    Also, if you need to pass the raw pointer value to some external + Python library, you can do it by casting the pointer object to an + integer:

    +
    +
     >>> print int(f)
     135833352
    -
    -
    -

    However, the inverse operation is not possible, i.e., you can't - build a SWIG pointer object from a raw integer value.

    -

    Note also that the '0' or NULL pointer is always represented by -None, no matter what type swig is addressing. In the previous - example, you can call:

    -
    -
    +
    +
    +

    However, the inverse operation is not possible, i.e., you can't + build a SWIG pointer object from a raw integer value.

    +

    Note also that the '0' or NULL pointer is always represented by +None, no matter what type swig is addressing. In the previous + example, you can call:

    +
    +
     >>> example.fclose(None)
    -
    -
    -

    and that will be equivalent to the following, but not really useful, - C code:

    -
    -
    +
    +
    +

    and that will be equivalent to the following, but not really useful, + C code:

    +
    +
     FILE *f = NULL;
     fclose(f);
    -
    -
    -

    As much as you might be inclined to modify a pointer value directly +

    +
    +

    As much as you might be inclined to modify a pointer value directly from Python, don't. The hexadecimal encoding is not necessarily the same as the logical memory address of the underlying object. Instead it is the raw byte encoding of the pointer value. The encoding will vary @@ -46640,9 +44720,9 @@ fclose(f); a new type by simply replacing the type-string. This may not work like you expect, it is particularly dangerous when casting C++ objects. If you need to cast a pointer or change its value, consider writing some - helper functions instead. For example:

    -
    -
    + helper functions instead. For example:

    +
    +
     %inline %{
     /* C-style cast */
     Bar *FooToBar(Foo *f) {
    @@ -46655,65 +44735,65 @@ Foo *BarToFoo(Bar *b) {
     }
     
     Foo *IncrFoo(Foo *f, int i) {
    -    return f+i;
    +  return f+i;
     }
     %}
    -
    -
    -

    Also, if working with C++, you should always try to use the new C++ +

    +
    +

    Also, if working with C++, you should always try to use the new C++ style casts. For example, in the above code, the C-style cast may - return a bogus result whereas as the C++-style cast will return -None if the conversion can't be performed.

    -

    36.3.6 Structures

    -

    If you wrap a C structure, it is wrapped by a Python class. This - provides a very natural interface. For example,

    -
    -
    + return a bogus result whereas as the C++-style cast will return 
    +None if the conversion can't be performed.

    +

    32.3.6 Structures

    +

    If you wrap a C structure, it is wrapped by a Python class. This + provides a very natural interface. For example,

    +
    +
     struct Vector {
       double x, y, z;
     };
     
    -
    -
    -

    is used as follows:

    -
    -
    +
    +
    +

    is used as follows:

    +
    +
     >>> v = example.Vector()
     >>> v.x = 3.5
     >>> v.y = 7.2
     >>> print v.x, v.y, v.z
    -7.8 -4.5 0.0
    ->>> 
    -
    -
    -

    Similar access is provided for unions and the data members of C++ - classes.

    -

    If you print out the value of v in the above example, you - will see something like this:

    -
    -
    +3.5 7.2 0.0
    +>>>
    +
    +
    +

    Similar access is provided for unions and the data members of C++ + classes.

    +

    If you print out the value of v in the above example, you + will see something like this:

    +
    +
     >>> print v
     <C Vector instance at _18e31408_p_Vector>
    -
    -
    -

    This object is actually a Python instance that has been wrapped +

    +
    +

    This object is actually a Python instance that has been wrapped around a pointer to the low-level C structure. This instance doesn't actually do anything--it just serves as a proxy. The pointer to the C - object can be found in the .this attribute. For example:

    -
    -
    + object can be found in the .this attribute. For example:

    +
    +
     >>> print v.this
     _18e31408_p_Vector
     >>>
    -
    -
    -

    Further details about the Python proxy class are covered a little - later.

    -

    const members of a structure are read-only. Data members - can also be forced to be read-only using the %immutable - directive. For example:

    -
    -
    +
    +
    +

    Further details about the Python proxy class are covered a little + later.

    +

    const members of a structure are read-only. Data members + can also be forced to be read-only using the %immutable + directive. For example:

    +
    +
     struct Foo {
       ...
       %immutable;
    @@ -46722,50 +44802,50 @@ struct Foo {
       %mutable;
       ...
     };
    -
    -
    -

    When char * members of a structure are wrapped, the - contents are assumed to be dynamically allocated using malloc - or new (depending on whether or not SWIG is run with the -c++ +

    +
    +

    When char * members of a structure are wrapped, the + contents are assumed to be dynamically allocated using malloc + or new (depending on whether or not SWIG is run with the -c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior you want, - you will have to use a typemap (described later).

    -

    If a structure contains arrays, access to those arrays is managed - through pointers. For example, consider this:

    -
    -
    + you will have to use a typemap (described later).

    +

    If a structure contains arrays, access to those arrays is managed + through pointers. For example, consider this:

    +
    +
     struct Bar {
    -    int  x[16];
    +  int  x[16];
     };
    -
    -
    -

    If accessed in Python, you will see behavior like this:

    -
    -
    +
    +
    +

    If accessed in Python, you will see behavior like this:

    +
    +
     >>> b = example.Bar()
     >>> print b.x
     _801861a4_p_int
    ->>> 
    -
    -
    -

    This pointer can be passed around to functions that expect to - receive an int * (just like C). You can also set the value of - an array member using another pointer. For example:

    -
    -
    +>>>
    +
    +
    +

    This pointer can be passed around to functions that expect to + receive an int * (just like C). You can also set the value of + an array member using another pointer. For example:

    +
    +
     >>> c = example.Bar()
     >>> c.x = b.x             # Copy contents of b.x to c.x
    -
    -
    -

    For array assignment, SWIG copies the entire contents of the array - starting with the data pointed to by b.x. In this example, 16 +

    +
    +

    For array assignment, SWIG copies the entire contents of the array + starting with the data pointed to by b.x. In this example, 16 integers would be copied. Like C, SWIG makes no assumptions about bounds checking---if you pass a bad pointer, you may get a segmentation - fault or access violation.

    -

    When a member of a structure is itself a structure, it is handled as - a pointer. For example, suppose you have two structures like this:

    -
    -
    + fault or access violation.

    +

    When a member of a structure is itself a structure, it is handled as + a pointer. For example, suppose you have two structures like this:

    +
    +
     struct Foo {
       int a;
     };
    @@ -46773,40 +44853,55 @@ struct Foo {
     struct Bar {
       Foo f;
     };
    -
    -
    -

    Now, suppose that you access the f attribute of Bar - like this:

    -
    -
    +
    +
    +

    Now, suppose that you access the f attribute of Bar + like this:

    +
    +
     >>> b = Bar()
     >>> x = b.f
    -
    -
    -

    In this case, x is a pointer that points to the Foo - that is inside b. This is the same value as generated by this - C code:

    -
    -
    +
    +
    +

    In this case, x is a pointer that points to the Foo + that is inside b. This is the same value as generated by this + C code:

    +
    +
     Bar b;
     Foo *x = &b->f;       /* Points inside b */
    -
    -
    -

    Because the pointer points inside the structure, you can modify the - contents and everything works just like you would expect. For example:

    -
    -
    +
    +
    +

    Because the pointer points inside the structure, you can modify the + contents and everything works just like you would expect. For example:

    +
    +
     >>> b = Bar()
     >>> b.f.a = 3               # Modify attribute of structure member
    ->>> x = b.f                   
    +>>> x = b.f
     >>> x.a = 3                 # Modifies the same structure
    -
    -
    -

    36.3.7 C++ classes

    -

    C++ classes are wrapped by Python classes as well. For example, if - you have this class,

    -
    -
    +
    +
    +

    Note that there is a limitation with structs within structs that + will cause a problem if the outer struct is not a named variable in + Python. The following will cause a segfault:

    +
    +
    +Bar().f.a = 3
    +
    +
    +

    because the unnamed Python proxy class for Bar() has its + reference count decremented by the Python interpreter after f + has been obtained from it and before f is used to obtain a +. This results in the underlying Bar instance being deleted, + which of course also deletes f inside it. Hence the pointer to + f points to deleted memory and use of it results in a segfault + or some sort of other undefined behaviour.

    +

    32.3.7 C++ classes

    +

    C++ classes are wrapped by Python classes as well. For example, if + you have this class,

    +
    +
     class List {
     public:
       List();
    @@ -46817,11 +44912,11 @@ public:
       char *get(int n);
       int  length;
     };
    -
    -
    -

    you can use it in Python like this:

    -
    -
    +
    +
    +

    you can use it in Python like this:

    +
    +
     >>> l = example.List()
     >>> l.insert("Ale")
     >>> l.insert("Stout")
    @@ -46831,49 +44926,49 @@ public:
     >>> print l.length
     3
     >>>
    -
    -
    -

    Class data members are accessed in the same manner as C structures.

    -

    Static class members present a special problem for Python. Prior to +

    +
    +

    Class data members are accessed in the same manner as C structures.

    +

    Static class members present a special problem for Python. Prior to Python-2.2, Python classes had no support for static methods and no version of Python supports static member variables in a manner that SWIG can utilize. Therefore, SWIG generates wrappers that try to work around some of these issues. To illustrate, suppose you have a class - like this:

    -
    -
    + like this:

    +
    +
     class Spam {
     public:
       static void foo();
       static int bar;
     };
    -
    -
    -

    In Python, the static member can be access in three different ways:

    -
    -
    +
    +
    +

    In Python, the static member can be access in three different ways:

    +
    +
     >>> example.Spam_foo()    # Spam::foo()
     >>> s = example.Spam()
     >>> s.foo()               # Spam::foo() via an instance
     >>> example.Spam.foo()    # Spam::foo(). Python-2.2 only
    -
    -
    -

    The first two methods of access are supported in all versions of +

    +
    +

    The first two methods of access are supported in all versions of Python. The last technique is only available in Python-2.2 and later - versions.

    -

    Static member variables are currently accessed as global variables. - This means, they are accessed through cvar like this:

    -
    -
    + versions.

    +

    Static member variables are currently accessed as global variables. + This means, they are accessed through cvar like this:

    +
    +
     >>> print example.cvar.Spam_bar
     7
    -
    -
    -

    36.3.8 C++ inheritance

    -

    SWIG is fully aware of issues related to C++ inheritance. Therefore, - if you have classes like this

    -
    -
    +
    +
    +

    32.3.8 C++ inheritance

    +

    SWIG is fully aware of issues related to C++ inheritance. Therefore, + if you have classes like this

    +
    +
     class Foo {
     ...
     };
    @@ -46881,13 +44976,13 @@ class Foo {
     class Bar : public Foo {
     ...
     };
    -
    -
    -

    those classes are wrapped into a hierarchy of Python classes that +

    +
    +

    those classes are wrapped into a hierarchy of Python classes that reflect the same inheritance structure. All of the usual Python utility - functions work normally:

    -
    -
    + functions work normally:

    +
    +
     >>> b = Bar()
     >>> instance(b, Foo)
     1
    @@ -46895,150 +44990,150 @@ class Bar : public Foo {
     1
     >>> issubclass(Foo, Bar)
     0
    -
    -
    -

    Furthermore, if you have functions like this

    -
    -
    +
    +
    +

    Furthermore, if you have functions like this

    +
    +
     void spam(Foo *f);
    -
    -
    -

    then the function spam() accepts Foo * or a - pointer to any class derived from Foo.

    -

    It is safe to use multiple inheritance with SWIG.

    -

    36.3.9 Pointers, references, values, and - arrays

    -

    In C++, there are many different ways a function might receive and - manipulate objects. For example:

    -
    -
    +
    +
    +

    then the function spam() accepts Foo * or a + pointer to any class derived from Foo.

    +

    It is safe to use multiple inheritance with SWIG.

    +

    32.3.9 Pointers, references, values, and + arrays

    +

    In C++, there are many different ways a function might receive and + manipulate objects. For example:

    +
    +
     void spam1(Foo *x);      // Pass by pointer
     void spam2(Foo &x);      // Pass by reference
     void spam3(const Foo &x);// Pass by const reference
     void spam4(Foo x);       // Pass by value
     void spam5(Foo x[]);     // Array of objects
    -
    -
    -

    In Python, there is no detailed distinction like this--specifically, +

    +
    +

    In Python, there is no detailed distinction like this--specifically, there are only "objects". There are no pointers, references, arrays, and so forth. Because of this, SWIG unifies all of these types together in the wrapper code. For instance, if you actually had the above - functions, it is perfectly legal to do this:

    -
    -
    + functions, it is perfectly legal to do this:

    +
    +
     >>> f = Foo()           # Create a Foo
     >>> spam1(f)            # Ok. Pointer
     >>> spam2(f)            # Ok. Reference
     >>> spam3(f)            # Ok. Const reference
     >>> spam4(f)            # Ok. Value.
     >>> spam5(f)            # Ok. Array (1 element)
    -
    -
    -

    Similar behavior occurs for return values. For example, if you had - functions like this,

    -
    -
    +
    +
    +

    Similar behavior occurs for return values. For example, if you had + functions like this,

    +
    +
     Foo *spam6();
     Foo &spam7();
     Foo  spam8();
     const Foo &spam9();
    -
    -
    -

    then all three functions will return a pointer to some Foo +

    +
    +

    then all three functions will return a pointer to some Foo object. Since the third function (spam8) returns a value, newly allocated memory is used to hold the result and a pointer is returned (Python will release this memory when the return value is garbage collected). The fourth case (spam9) which returns a const reference, in most of the cases will be treated as a returning value, and it will - follow the same allocation/deallocation process.

    -

    36.3.10 C++ overloaded functions

    -

    C++ overloaded functions, methods, and constructors are mostly - supported by SWIG. For example, if you have two functions like this:

    -
    -
    + follow the same allocation/deallocation process.

    +

    32.3.10 C++ overloaded functions

    +

    C++ overloaded functions, methods, and constructors are mostly + supported by SWIG. For example, if you have two functions like this:

    +
    +
     void foo(int);
     void foo(char *c);
    -
    -
    -

    You can use them in Python in a straightforward manner:

    -
    -
    +
    +
    +

    You can use them in Python in a straightforward manner:

    +
    +
     >>> foo(3)           # foo(int)
     >>> foo("Hello")     # foo(char *c)
    -
    -
    -

    Similarly, if you have a class like this,

    -
    -
    +
    +
    +

    Similarly, if you have a class like this,

    +
    +
     class Foo {
     public:
    -    Foo();
    -    Foo(const Foo &);
    -    ...
    +  Foo();
    +  Foo(const Foo &);
    +  ...
     };
    -
    -
    -

    you can write Python code like this:

    -
    -
    +
    +
    +

    you can write Python code like this:

    +
    +
     >>> f = Foo()          # Create a Foo
     >>> g = Foo(f)         # Copy f
    -
    -
    -

    Overloading support is not quite as flexible as in C++. Sometimes - there are methods that SWIG can't disambiguate. For example:

    -
    -
    +
    +
    +

    Overloading support is not quite as flexible as in C++. Sometimes + there are methods that SWIG can't disambiguate. For example:

    +
    +
     void spam(int);
     void spam(short);
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     void foo(Bar *b);
     void foo(Bar &b);
    -
    -
    -

    If declarations such as these appear, you will get a warning message - like this:

    -
    -
    +
    +
    +

    If declarations such as these appear, you will get a warning message + like this:

    +
    +
     example.i:12: Warning 509: Overloaded method spam(short) effectively ignored,
     example.i:11: Warning 509: as it is shadowed by spam(int).
    -
    -
    -

    To fix this, you either need to ignore or rename one of the methods. - For example:

    -
    -
    +
    +
    +

    To fix this, you either need to ignore or rename one of the methods. + For example:

    +
    +
     %rename(spam_short) spam(short);
     ...
    -void spam(int);    
    +void spam(int);
     void spam(short);   // Accessed as spam_short
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %ignore spam(short);
     ...
    -void spam(int);    
    +void spam(int);
     void spam(short);   // Ignored
    -
    -
    -

    SWIG resolves overloaded functions and methods using a +

    +
    +

    SWIG resolves overloaded functions and methods using a disambiguation scheme that ranks and sorts declarations according to a set of type-precedence rules. The order in which declarations appear in the input does not matter except in situations where ambiguity - arises--in this case, the first declaration takes precedence.

    -

    Please refer to the "SWIG and C++" chapter for more information - about overloading.

    -

    36.3.11 C++ operators

    -

    Certain C++ overloaded operators can be handled automatically by - SWIG. For example, consider a class like this:

    -
    -
    + arises--in this case, the first declaration takes precedence.

    +

    Please refer to the "SWIG and C++" chapter for more information + about overloading.

    +

    32.3.11 C++ operators

    +

    Certain C++ overloaded operators can be handled automatically by + SWIG. For example, consider a class like this:

    +
    +
     class Complex {
     private:
       double rpart, ipart;
    @@ -47052,15 +45147,15 @@ public:
       Complex operator-(const Complex &c) const;
       Complex operator*(const Complex &c) const;
       Complex operator-() const;
    -  
    +
       double re() const { return rpart; }
       double im() const { return ipart; }
     };
    -
    -
    -

    When wrapped, it works like you expect:

    -
    -
    +
    +
    +

    When wrapped, it works like you expect:

    +
    +
     >>> c = Complex(3, 4)
     >>> d = Complex(7, 8)
     >>> e = c + d
    @@ -47074,39 +45169,48 @@ public:
     >>> c.im()
     12.0
     
    -
    -
    -

    One restriction with operator overloading support is that SWIG is +

    +
    +

    One restriction with operator overloading support is that SWIG is not able to fully handle operators that aren't defined as part of the - class. For example, if you had code like this

    -
    -
    + class. For example, if you had code like this

    +
    +
     class Complex {
     ...
     friend Complex operator+(double, const Complex &c);
     ...
     };
    -
    -
    -

    then SWIG ignores it and issues a warning. You can still wrap the +

    +
    +

    then SWIG ignores it and issues a warning. You can still wrap the operator, but you may have to encapsulate it in a special function. For - example:

    -
    -
    + example:

    +
    +
     %rename(Complex_add_dc) operator+(double, const Complex &);
    -
    -
    -

    There are ways to make this operator appear as part of the class - using the %extend directive. Keep reading.

    -

    Also, be aware that certain operators don't map cleanly to Python. +

    +
    +

    There are ways to make this operator appear as part of the class + using the %extend directive. Keep reading.

    +

    Also, be aware that certain operators don't map cleanly to Python. For instance, overloaded assignment operators don't map to Python - semantics and will be ignored.

    -

    36.3.12 C++ namespaces

    -

    SWIG is aware of C++ namespaces, but namespace names do not appear + semantics and will be ignored.

    +

    Operator overloading is implemented in the pyopers.swg + library file. In particular overloaded operators are marked with the +python:maybecall feature, also known as %pythonmaybecall. + This feature forces SWIG to generate code that return an instance of + Python's NotImplemented instead of raising an exception when + the comparison fails, that is, on any kind of error. This follows the + guidelines in PEP + 207 - Rich Comparisons and +NotImplemented Python constant.

    +

    32.3.12 C++ namespaces

    +

    SWIG is aware of C++ namespaces, but namespace names do not appear in the module nor do namespaces result in a module that is broken up - into submodules or packages. For example, if you have a file like this,

    -
    -
    + into submodules or packages. For example, if you have a file like this,

    +
    +
     %module example
     
     namespace foo {
    @@ -47115,11 +45219,11 @@ namespace foo {
         double x, y, z;
       };
     };
    -
    -
    -

    it works in Python as follows:

    -
    -
    +
    +
    +

    it works in Python as follows:

    +
    +
     >>> import example
     >>> example.fact(3)
     6
    @@ -47128,36 +45232,36 @@ namespace foo {
     >>> print v.y
     0.0
     >>>
    -
    -
    -

    If your program has more than one namespace, name conflicts (if any) - can be resolved using %rename For example:

    -
    -
    +
    +
    +

    If your program has more than one namespace, name conflicts (if any) + can be resolved using %rename For example:

    +
    +
     %rename(Bar_spam) Bar::spam;
     
     namespace Foo {
    -    int spam();
    +  int spam();
     }
     
     namespace Bar {
    -    int spam();
    +  int spam();
     }
    -
    -
    -

    If you have more than one namespace and your want to keep their +

    +
    +

    If you have more than one namespace and your want to keep their symbols separate, consider wrapping them as separate SWIG modules. For example, make the module name the same as the namespace and create extension modules for each namespace separately. If your program utilizes thousands of small deeply nested namespaces each with - identical symbol names, well, then you get what you deserve.

    -

    36.3.13 C++ templates

    -

    C++ templates don't present a huge problem for SWIG. However, in + identical symbol names, well, then you get what you deserve.

    +

    32.3.13 C++ templates

    +

    C++ templates don't present a huge problem for SWIG. However, in order to create wrappers, you have to tell SWIG to create wrappers for - a particular template instantiation. To do this, you use the -%template directive. For example:

    -
    -
    + a particular template instantiation. To do this, you use the 
    +%template directive. For example:

    +
    +
     %module example
     %{
     #include "pair.h"
    @@ -47175,152 +45279,152 @@ struct pair {
     };
     
     %template(pairii) pair<int, int>;
    -
    -
    -

    In Python:

    -
    -
    +
    +
    +

    In Python:

    +
    +
     >>> import example
     >>> p = example.pairii(3, 4)
     >>> p.first
     3
     >>> p.second
     4
    -
    -
    -

    Obviously, there is more to template wrapping than shown in this - example. More details can be found in the SWIG and - C++ chapter. Some more complicated examples will appear later.

    -

    36.3.14 C++ Smart Pointers

    -

    36.3.14.1 The shared_ptr - Smart Pointer

    -

    The C++11 standard provides std::shared_ptr which was - derived from the Boost implementation, boost::shared_ptr. Both +

    +
    +

    Obviously, there is more to template wrapping than shown in this + example. More details can be found in the SWIG and + C++ chapter. Some more complicated examples will appear later.

    +

    32.3.14 C++ Smart Pointers

    +

    32.3.14.1 The shared_ptr + Smart Pointer

    +

    The C++11 standard provides std::shared_ptr which was + derived from the Boost implementation, boost::shared_ptr. Both of these are available for Python in the SWIG library and usage is - outlined in the shared_ptr smart - pointer library section.

    -

    36.3.14.2 Generic Smart - Pointers

    -

    In certain C++ programs, it is common to use classes that have been + outlined in the shared_ptr smart + pointer library section.

    +

    32.3.14.2 Generic Smart + Pointers

    +

    In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use - of a template class that implements operator->() like this:

    -
    -
    + of a template class that implements operator->() like this:

    +
    +
     template<class T> class SmartPtr {
       ...
       T *operator->();
       ...
     }
    -
    -
    -

    Then, if you have a class like this,

    -
    -
    +
    +
    +

    Then, if you have a class like this,

    +
    +
     class Foo {
     public:
       int x;
       int bar();
     };
    -
    -
    -

    A smart pointer would be used in C++ as follows:

    -
    -
    +
    +
    +

    A smart pointer would be used in C++ as follows:

    +
    +
     SmartPtr<Foo> p = CreateFoo();   // Created somehow (not shown)
     ...
     p->x = 3;                        // Foo::x
     int y = p->bar();                // Foo::bar
    -
    -
    -

    To wrap this in Python, simply tell SWIG about the SmartPtr - class and the low-level Foo object. Make sure you instantiate -SmartPtr using %template if necessary. For example:

    -
    -
    +
    +
    +

    To wrap this in Python, simply tell SWIG about the SmartPtr + class and the low-level Foo object. Make sure you instantiate +SmartPtr using %template if necessary. For example:

    +
    +
     %module example
     ...
     %template(SmartPtrFoo) SmartPtr<Foo>;
     ...
    -
    -
    -

    Now, in Python, everything should just "work":

    -
    -
    +
    +
    +

    Now, in Python, everything should just "work":

    +
    +
     >>> p = example.CreateFoo()          # Create a smart-pointer somehow
     >>> p.x = 3                          # Foo::x
     >>> p.bar()                          # Foo::bar
    -
    -
    -

    If you ever need to access the underlying pointer returned by -operator->() itself, simply use the __deref__() method. - For example:

    -
    -
    +
    +
    +

    If you ever need to access the underlying pointer returned by +operator->() itself, simply use the __deref__() method. + For example:

    +
    +
     >>> f = p.__deref__()     # Returns underlying Foo *
    -
    -
    -

    36.3.15 C++ reference counted objects

    -

    The C++ reference counted objects +

    +
    +

    32.3.15 C++ reference counted objects

    +

    The C++ reference counted objects section contains Python examples of memory management using referencing - counting.

    -

    36.4 Further details on the Python class - interface

    -

    In the previous section, a high-level view of Python wrapping was + counting.

    +

    32.4 Further details on the Python class + interface

    +

    In the previous section, a high-level view of Python wrapping was presented. A key component of this wrapping is that structures and classes are wrapped by Python proxy classes. This provides a very natural Python interface and allows SWIG to support a number of advanced features such as operator overloading. However, a number of low-level details were omitted. This section provides a brief overview - of how the proxy classes work.

    -

    New in SWIG version 2.0.4: The use of Python proxy classes has + of how the proxy classes work.

    +

    New in SWIG version 2.0.4: The use of Python proxy classes has performance implications that may be unacceptable for a - high-performance library. The new -builtin option instructs + high-performance library. The new -builtin option instructs SWIG to forego the use of proxy classes, and instead create wrapped types as new built-in Python types. When this option is used, the following section ("Proxy classes") does not apply. Details on the use - of the -builtin option are in the -Built-in Types section.

    -

    36.4.1 Proxy classes

    -

    In the "SWIG basics" and -"SWIG and C++" chapters, details of low-level structure and class + of the -builtin option are in the +Built-in Types section.

    +

    32.4.1 Proxy classes

    +

    In the "SWIG basics" and +"SWIG and C++" chapters, details of low-level structure and class wrapping are described. To summarize those chapters, if you have a - class like this

    -
    -
    + class like this

    +
    +
     class Foo {
     public:
    -    int x;
    -    int spam(int);
    -    ...
    -
    -
    -

    then SWIG transforms it into a set of low-level procedural wrappers. - For example:

    -
    -
    +  int x;
    +  int spam(int);
    +  ...
    +
    +
    +

    then SWIG transforms it into a set of low-level procedural wrappers. + For example:

    +
    +
     Foo *new_Foo() {
    -    return new Foo();
    +  return new Foo();
     }
     void delete_Foo(Foo *f) {
    -    delete f;
    +  delete f;
     }
     int Foo_x_get(Foo *f) {
    -    return f->x;
    +  return f->x;
     }
     void Foo_x_set(Foo *f, int value) {
    -    f->x = value;
    +  f->x = value;
     }
     int Foo_spam(Foo *f, int arg1) {
    -    return f->spam(arg1);
    +  return f->spam(arg1);
     }
    -
    -
    -

    These wrappers can be found in the low-level extension module (e.g., - _example).

    -

    Using these wrappers, SWIG generates a high-level Python proxy class - (also known as a shadow class) like this (shown for Python 2.2):

    -
    -
    +
    +
    +

    These wrappers can be found in the low-level extension module (e.g., + _example).

    +

    Using these wrappers, SWIG generates a high-level Python proxy class + (also known as a shadow class) like this (shown for Python 2.2):

    +
    +
     import _example
     
     class Foo(object):
    @@ -47333,206 +45437,197 @@ class Foo(object):
         def spam(self, arg1):
             return _example.Foo_spam(self.this, arg1)
         x = property(_example.Foo_x_get, _example.Foo_x_set)
    -
    -
    -

    This class merely holds a pointer to the underlying C++ object ( -.this) and dispatches methods and member variable access to that +

    +
    +

    This class merely holds a pointer to the underlying C++ object ( +.this) and dispatches methods and member variable access to that object using the low-level accessor functions. From a user's point of - view, it makes the class work normally:

    -
    -
    + view, it makes the class work normally:

    +
    +
     >>> f = example.Foo()
     >>> f.x = 3
     >>> y = f.spam(5)
    -
    -
    -

    The fact that the class has been wrapped by a real Python class +

    +
    +

    The fact that the class has been wrapped by a real Python class offers certain advantages. For instance, you can attach new Python methods to the class and you can even inherit from it (something not - supported by Python built-in types until Python 2.2).

    -

    36.4.2 Built-in Types

    -

    The -builtin option provides a significant performance + supported by Python built-in types until Python 2.2).

    +

    32.4.2 Built-in Types

    +

    The -builtin option provides a significant performance improvement in the wrapped code. To understand the difference between proxy classes and built-in types, let's take a look at what a wrapped - object looks like under both circumstances.

    -

    When proxy classes are used, each wrapped object in python is an - instance of a pure python class. As a reminder, here is what the -__init__ method looks like in a proxy class:

    -
    -
    + object looks like under both circumstances.

    +

    When proxy classes are used, each wrapped object in Python is an + instance of a pure Python class. As a reminder, here is what the +__init__ method looks like in a proxy class:

    +
    +
     class Foo(object):
         def __init__(self):
             self.this = _example.new_Foo()
             self.thisown = 1
    -
    -
    -

    When a Foo instance is created, the call to -_example.new_Foo() creates a new C++ Foo instance; wraps - that C++ instance inside an instance of a python built-in type called -SwigPyObject; and stores the SwigPyObject instance in the - 'this' field of the python Foo object. Did you get all that? So, the - python Foo object is composed of three parts:

    -
      -
    • The python Foo instance, which contains...
    • -
    • ... an instance of struct SwigPyObject, which contains...
    • -
    • ... a C++ Foo instance
    • -
    -

    When -builtin is used, the pure python layer is stripped - off. Each wrapped class is turned into a new python built-in type which - inherits from SwigPyObject, and SwigPyObject +

    +
    +

    When a Foo instance is created, the call to +_example.new_Foo() creates a new C++ Foo instance; wraps + that C++ instance inside an instance of a Python built-in type called +SwigPyObject; and stores the SwigPyObject instance in the + 'this' field of the Python Foo object. Did you get all that? So, the + Python Foo object is composed of three parts:

    +
      +
    • The Python Foo instance, which contains...
    • +
    • ... an instance of struct SwigPyObject, which contains...
    • +
    • ... a C++ Foo instance
    • +
    +

    When -builtin is used, the pure Python layer is stripped + off. Each wrapped class is turned into a new Python built-in type which + inherits from SwigPyObject, and SwigPyObject instances are returned directly from the wrapped methods. For more - information about python built-in extensions, please refer to the - python documentation:

    -

    -http://docs.python.org/extending/newtypes.html

    -

    36.4.2.1 Limitations

    -

    Use of the -builtin option implies a couple of limitations:

    -
      -
    • -

      python version support:

      -
        -
      • Versions 2.5 and up are fully supported
      • -
      • Versions 2.3 and 2.4 are mostly supported; there are problems with - director classes and/or sub-classing a wrapped type in python.
      • -
      • Versions older than 2.3 are not supported.
      • -
      -
    • -
    • -

      Some legacy syntax is no longer supported; in particular:

      -
        -
      • The functional interface is no longer exposed. For example, you may - no longer call Whizzo.new_CrunchyFrog(). Instead, you must use - Whizzo.CrunchyFrog().
      • -
      • Static member variables are no longer accessed through the 'cvar' - field (e.g., Dances.cvar.FishSlap). They are instead accessed - in the idiomatic way (Dances.FishSlap).
      • -
      -
    • -
    • -

      Wrapped types may not be raised as python exceptions. Here's why: the - python internals expect that all sub-classes of Exception will have - this struct layout:

      -
      -
      + information about Python built-in extensions, please refer to the
      + Python documentation:

      +

      +https://docs.python.org/3/extending/newtypes.html

      +

      32.4.2.1 Limitations

      +

      Use of the -builtin option implies a couple of limitations:

      +
        +
      • +

        Some legacy syntax is no longer supported; in particular:

        +
          +
        • The functional interface is no longer exposed. For example, you may + no longer call Whizzo.new_CrunchyFrog(). Instead, you must use + Whizzo.CrunchyFrog().
        • +
        • Static member variables are no longer accessed through the 'cvar' + field (e.g., Dances.cvar.FishSlap). They are instead accessed + in the idiomatic way (Dances.FishSlap).
        • +
        +
      • +
      • +

        Wrapped types may not be raised as Python exceptions. Here's why: the + Python internals expect that all sub-classes of Exception will have + this struct layout:

        +
        +
         typedef struct {
        -    PyObject_HEAD
        -    PyObject *dict;
        -    PyObject *args;
        -    PyObject *message;
        +  PyObject_HEAD
        +  PyObject *dict;
        +  PyObject *args;
        +  PyObject *message;
         } PyBaseExceptionObject;
        -
        -
        -

        But swig-generated wrappers expect that all swig-wrapped classes will - have this struct layout:

        -
        -
        +
        +
        +

        But swig-generated wrappers expect that all swig-wrapped classes will + have this struct layout:

        +
        +
         typedef struct {
        -    PyObject_HEAD
        -    void *ptr;
        -    swig_type_info *ty;
        -    int own;
        -    PyObject *next;
        -    PyObject *dict;
        +  PyObject_HEAD
        +  void *ptr;
        +  swig_type_info *ty;
        +  int own;
        +  PyObject *next;
        +  PyObject *dict;
         } SwigPyObject;
        -
        -
        -

        There are workarounds for this. For example, if you wrap this class:

        +
        +

        There are workarounds for this. For example, if you wrap this class:

        -
        +
         class MyException {
         public:
        -    MyException (const char *msg_);
        -    ~MyException ();
        +  MyException (const char *msg_);
        +  ~MyException ();
         
        -    const char *what () const;
        +  const char *what () const;
         
         private:
        -    char *msg;
        +  char *msg;
         };
        -
        -

        -

        ... you can define this python class, which may be raised as an - exception:

        -
        -
        +
        +

        +

        ... you can define this Python class, which may be raised as an + exception:

        +
        +
         class MyPyException(Exception):
             def __init__(self, msg, *args):
                 Exception.__init__(self, *args)
                 self.myexc = MyException(msg)
             def what(self):
                 return self.myexc.what()
        -
        -
      • -
      • -

        Reverse binary operators (e.g., __radd__) are not supported.

        -

        To illustrate this point, if you have a wrapped class called -MyString, and you want to use instances of MyString - interchangeably with native python strings, you can define an -'operator+ (const char*)' method :

        -
        -
        +
        +
      • +
      • +

        Reverse binary operators (e.g., __radd__) are not supported.

        +

        To illustrate this point, if you have a wrapped class called +MyString, and you want to use instances of MyString + interchangeably with native Python strings, you can define an +'operator+ (const char*)' method :

        +
        +
         class MyString {
         public:
        -    MyString (const char *init);
        -    MyString operator+ (const char *other) const;
        -    ...
        +  MyString (const char *init);
        +  MyString operator+ (const char *other) const;
        +  ...
         };
        -
        -
        -

        SWIG will automatically create an operator overload in python that - will allow this:

        -
        -
        +
        +
        +

        SWIG will automatically create an operator overload in Python that + will allow this:

        +
        +
         from MyModule import MyString
         
         mystr = MyString("No one expects")
         episode = mystr + " the Spanish Inquisition"
        -
        -
        -

        This works because the first operand (mystr) defines a way - to add a native string to itself. However, the following will not - work:

        -
        -
        +
        +
        +

        This works because the first operand (mystr) defines a way + to add a native string to itself. However, the following will not + work:

        +
        +
         from MyModule import MyString
         
         mystr = MyString("Parrot")
         episode = "Dead " + mystr
        -
        -
        -

        The above code fails, because the first operand -- a native python - string -- doesn't know how to add an instance of MyString to - itself.

        -
      • -
      • -

        If you have multiple SWIG modules that share type information ( -more info), the -builtin option requires a bit of extra +

      +
      +

      The above code fails, because the first operand -- a native Python + string -- doesn't know how to add an instance of MyString to + itself.

      +
    • +
    • +

      If you have multiple SWIG modules that share type information ( +more info), the -builtin option requires a bit of extra discipline to ensure that base classes are initialized before derived - classes. Specifically:

      -
        -
      • -

        There must be an unambiguous dependency graph for the modules.

        -
      • -
      • -

        Module dependencies must be explicitly stated with %import - statements in the SWIG interface file.

        -
      • -
      -

      As an example, suppose module A has this interface in -A.i :

      -
      -
      + classes. Specifically:

      +
        +
      • +

        There must be an unambiguous dependency graph for the modules.

        +
      • +
      • +

        Module dependencies must be explicitly stated with %import + statements in the SWIG interface file.

        +
      • +
      +

      As an example, suppose module A has this interface in +A.i :

      +
      +
       %module "A";
       
       class Base {
       ...
       };
      -
      -
      -

      If you want to wrap another module containing a class that inherits - from A, this is how it would look :

      -
      -
      +
      +
      +

      If you want to wrap another module containing a class that inherits + from A, this is how it would look :

      +
      +
       %module "B";
       
       %import "A.i"
      @@ -47540,79 +45635,80 @@ class Base {
       class Derived : public Base {
       ...
       };
      -
      -
      -

      The import "A.i" statement is required, because module B - depends on module A.

      -

      As long as you obey these requirements, your python code may import - the modules in any order :

      -
      -
      +
      +
      +

      The import "A.i" statement is required, because module B + depends on module A.

      +

      As long as you obey these requirements, your Python code may import + the modules in any order :

      +
      +
       import B
       import A
       
       assert(issubclass(B.Derived, A.Base))
      -
      -
    • -
    -

    36.4.2.2 Operator overloads and - slots -- use them!

    -

    The entire justification for the -builtin option is improved + + + +

    32.4.2.2 Operator overloads and + slots -- use them!

    +

    The entire justification for the -builtin option is improved performance. To that end, the best way to squeeze maximum performance - out of your wrappers is to use operator overloads. Named method - dispatch is slow in python, even when compared to other scripting - languages. However, python built-in types have a large number of + out of your wrappers is to use operator overloads. Named method + dispatch is slow in Python, even when compared to other scripting + languages. However, Python built-in types have a large number of "slots", analogous to C++ operator overloads, which allow you to - short-circuit named method dispatch for certain common operations.

    -

    By default, SWIG will translate most C++ arithmetic operator - overloads into python slot entries. For example, suppose you have this - class:

    -
    + short-circuit named method dispatch for certain common operations.

    +

    By default, SWIG will translate most C++ arithmetic operator + overloads into Python slot entries. For example, suppose you have this + class:

    +
     class Twit {
     public:
    -    Twit operator+ (const Twit& twit) const;
    +  Twit operator+ (const Twit& twit) const;
     
    -    // Forward to operator+
    -    Twit add (const Twit& twit) const
    -    { return *this + twit; }
    +  // Forward to operator+
    +  Twit add (const Twit& twit) const {
    +    return *this + twit;
    +  }
     };
    -
    -

    -

    SWIG will automatically register operator+ as a python slot - operator for addition. You may write python code like this:

    -
    -
    +
    +

    +

    SWIG will automatically register operator+ as a Python slot + operator for addition. You may write Python code like this:

    +
    +
     from MyModule import Twit
     
     nigel = Twit()
     emily = Twit()
     percival = nigel + emily
     percival = nigel.add(emily)
    -
    -
    -

    The last two lines of the python code are equivalent, but the line - that uses the '+' operator is much faster.

    -

    In-place operators (e.g., operator+=) and comparison - operators (operator==, operator<, etc.) are also converted to - python slot operators. For a complete list of C++ operators that are - automatically converted to python slot operators, refer to the file -python/pyopers.swig in the SWIG library.

    -

    Read about all of the available python slots here: -http://docs.python.org/c-api/typeobj.html

    -

    There are two ways to define a python slot function: dispatch to a +

    +
    +

    The last two lines of the Python code are equivalent, but the line + that uses the '+' operator is much faster.

    +

    In-place operators (e.g., operator+=) and comparison + operators (operator==, operator<, etc.) are also converted to + Python slot operators. For a complete list of C++ operators that are + automatically converted to Python slot operators, refer to the file +python/pyopers.swig in the SWIG library.

    +

    Read about all of the available Python slots here: +https://docs.python.org/3/c-api/typeobj.html

    +

    There are two ways to define a Python slot function: dispatch to a statically defined function; or dispatch to a method defined on the - operand.

    -

    To dispatch to a statically defined function, use - %feature("python:<slot>"), where <slot> is the name of a field in a -PyTypeObject, PyNumberMethods, PyMappingMethods, PySequenceMethods - or PyBufferProcs. You may override (almost) all of these - slots.

    -

    Let's consider an example setting the tp_hash slot for the -MyClass type. This is akin to providing a __hash__ method + operand.

    +

    To dispatch to a statically defined function, use + %feature("python:<slot>"), where <slot> is the name of a field in a +PyTypeObject, PyNumberMethods, PyMappingMethods, PySequenceMethods + or PyBufferProcs. You may override (almost) all of these + slots.

    +

    Let's consider an example setting the tp_hash slot for the +MyClass type. This is akin to providing a __hash__ method (for non-builtin types) to make a type hashable. The hashable type can - then for example be added to a Python dict.

    -
    -
    + then for example be added to a Python dict.

    +
    +
     %feature("python:tp_hash") MyClass "myHashFunc";
     
     class MyClass {
    @@ -47634,26 +45730,26 @@ public:
         return (cobj->field1 * (cobj->field2 << 7));
       }
     %}
    -
    -
    -

    If you examine the generated code, the supplied hash function will +

    +
    +

    If you examine the generated code, the supplied hash function will now be the function callback in the tp_hash slot for the builtin type - for MyClass:

    -
    -
    + for MyClass:

    +
    +
     static PyHeapTypeObject SwigPyBuiltin__MyClass_type = {
    -    ...
    -    (hashfunc) myHashFunc,       /* tp_hash */
    -    ...
    -
    -
    -

    NOTE: It is the responsibility of the programmer (that's you!) to + ... + (hashfunc) myHashFunc, /* tp_hash */ + ... +

    +
    +

    NOTE: It is the responsibility of the programmer (that's you!) to ensure that a statically defined slot function has the correct - signature, the hashfunc typedef in this case.

    -

    If, instead, you want to dispatch to an instance method, you can use - %feature("python:slot"). For example:

    -
    -
    + signature, the hashfunc typedef in this case.

    +

    If, instead, you want to dispatch to an instance method, you can use + %feature("python:slot"). For example:

    +
    +
     %feature("python:slot", "tp_hash", functype="hashfunc") MyClass::myHashFunc;
     
     #if PY_VERSION_HEX < 0x03020000
    @@ -47665,109 +45761,109 @@ class MyClass {
         Py_hash_t myHashFunc() const;
         ...
     };
    -
    -
    -

    NOTE: Some python slots use a method signature which does not match +

    +
    +

    NOTE: Some Python slots use a method signature which does not match the signature of SWIG-wrapped methods. For those slots, SWIG will automatically generate a "closure" function to re-marshal the arguments before dispatching to the wrapped method. Setting the "functype" attribute of the feature enables SWIG to generate the chosen closure - function.

    -

    There is further information on %feature("python:slot") in - the file python/pyopers.swig in the SWIG library.

    -

    36.4.3 Memory management

    -

    NOTE: Although this section refers to proxy objects, everything here - also applies when the -builtin option is used.

    -

    Associated with proxy object, is an ownership flag .thisown + function.

    +

    There is further information on %feature("python:slot") in + the file python/pyopers.swig in the SWIG library.

    +

    32.4.3 Memory management

    +

    NOTE: Although this section refers to proxy objects, everything here + also applies when the -builtin option is used.

    +

    Associated with proxy object, is an ownership flag .thisown The value of this flag determines who is responsible for deleting the underlying C++ object. If set to 1, the Python interpreter will destroy the C++ object when the proxy class is garbage collected. If set to 0 (or if the attribute is missing), then the destruction of the proxy - class has no effect on the C++ object.

    -

    When an object is created by a constructor or returned by value, - Python automatically takes ownership of the result. For example:

    -
    -
    + class has no effect on the C++ object.

    +

    When an object is created by a constructor or returned by value, + Python automatically takes ownership of the result. For example:

    +
    +
     class Foo {
     public:
    -    Foo();
    -    Foo bar();
    +  Foo();
    +  Foo bar();
     };
    -
    -
    -

    In Python:

    -
    -
    +
    +
    +

    In Python:

    +
    +
     >>> f = Foo()
     >>> f.thisown
     1
     >>> g = f.bar()
     >>> g.thisown
     1
    -
    -
    -

    On the other hand, when pointers are returned to Python, there is +

    +
    +

    On the other hand, when pointers are returned to Python, there is often no way to know where they came from. Therefore, the ownership is - set to zero. For example:

    -
    -
    + set to zero. For example:

    +
    +
     class Foo {
     public:
    -    ...
    -    Foo *spam();
    -    ...
    +  ...
    +  Foo *spam();
    +  ...
     };
    -
    -
    -
    -
    +
    +
    +
    +
     >>> f = Foo()
     >>> s = f.spam()
     >>> print s.thisown
     0
     >>>
    -
    -
    -

    This behavior is especially important for classes that act as +

    +
    +

    This behavior is especially important for classes that act as containers. For example, if a method returns a pointer to an object that is contained inside another object, you definitely don't want - Python to assume ownership and destroy it!

    -

    A good way to indicate that ownership should be set for a returned - pointer is to use the %newobject directive.

    -

    Related to containers, ownership issues can arise whenever an object + Python to assume ownership and destroy it!

    +

    A good way to indicate that ownership should be set for a returned + pointer is to use the %newobject directive.

    +

    Related to containers, ownership issues can arise whenever an object is assigned to a member or global variable. For example, consider this - interface:

    -
    -
    + interface:

    +
    +
     %module example
     
     struct Foo {
    -    int  value;
    -    Foo  *next;
    +  int  value;
    +  Foo  *next;
     };
     
     Foo *head = 0;
    -
    -
    -

    When wrapped in Python, careful observation will reveal that +

    +
    +

    When wrapped in Python, careful observation will reveal that ownership changes whenever an object is assigned to a global variable. - For example:

    -
    -
    + For example:

    +
    +
     >>> f = example.Foo()
     >>> f.thisown
     1
    ->>> example.cvar.head = f           
    +>>> example.cvar.head = f
     >>> f.thisown
     0
     >>>
    -
    -
    -

    In this case, C is now holding a reference to the object---you +

    +
    +

    In this case, C is now holding a reference to the object---you probably don't want Python to destroy it. Similarly, this occurs for - members. For example:

    -
    -
    + members. For example:

    +
    +
     >>> f = example.Foo()
     >>> g = example.Foo()
     >>> f.thisown
    @@ -47778,85 +45874,60 @@ Foo *head = 0;
     >>> g.thisown
     0
     >>>
    -
    -
    -

    For the most part, memory management issues remain hidden. However, +

    +
    +

    For the most part, memory management issues remain hidden. However, there are occasionally situations where you might have to manually change the ownership of an object. For instance, consider code like - this:

    -
    -
    + this:

    +
    +
     class Node {
       Object *value;
     public:
       void set_value(Object *v) { value = v; }
       ...
     };
    -
    -
    -

    Now, consider the following Python code:

    -
    -
    +
    +
    +

    Now, consider the following Python code:

    +
    +
     >>> v = Object()           # Create an object
     >>> n = Node()             # Create a node
     >>> n.set_value(v)         # Set value
     >>> v.thisown
     1
     >>> del v
    -
    -
    -

    In this case, the object n is holding a reference to v +

    +
    +

    In this case, the object n is holding a reference to v internally. However, SWIG has no way to know that this has occurred. Therefore, Python still thinks that it has ownership of the object. Should the proxy object be destroyed, then the C++ destructor will be - invoked and n will be holding a stale-pointer. If you're - lucky, you will only get a segmentation fault.

    -

    To work around this, it is always possible to flip the ownership - flag. For example,

    -
    -
    + invoked and n will be holding a stale-pointer. If you're
    + lucky, you will only get a segmentation fault.

    +

    To work around this, it is always possible to flip the ownership + flag. For example,

    +
    +
     >>> v.thisown = 0
    -
    -
    -

    It is also possible to deal with situations like this using - typemaps--an advanced topic discussed later.

    -

    36.4.4 Python 2.2 and classic classes

    -

    SWIG makes every attempt to preserve backwards compatibility with - older versions of Python to the extent that it is possible. However, in - Python-2.2, an entirely new type of class system was introduced. This - new-style class system offers many enhancements including static member - functions, properties (managed attributes), and class methods. Details - about all of these changes can be found on -www.python.org and is not repeated here.

    -

    To address differences between Python versions, SWIG currently emits - dual-mode proxy class wrappers. In Python-2.2 and newer releases, these - wrappers encapsulate C++ objects in new-style classes that take - advantage of new features (static methods and properties). However, if - these very same wrappers are imported into an older version of Python, - old-style classes are used instead.

    -

    This dual-nature of the wrapper code means that you can create - extension modules with SWIG and those modules will work with all - versions of Python ranging from Python-2.0 to the very latest release. - Moreover, the wrappers take advantage of Python-2.2 features when - available.

    -

    For the most part, the interface presented to users is the same - regardless of what version of Python is used. The only incompatibility - lies in the handling of static member functions. In Python-2.2, they - can be accessed via the class itself. In Python-2.1 and earlier, they - have to be accessed as a global function or through an instance (see - the earlier section).

    -

    36.5 Cross language polymorphism

    -

    Proxy classes provide a more natural, object-oriented way to access +

    +
    +

    It is also possible to deal with situations like this using + typemaps--an advanced topic discussed later.

    +

    32.5 Cross language polymorphism

    +

    Proxy classes provide a more natural, object-oriented way to access extension classes. As described above, each proxy instance has an associated C++ instance, and method calls to the proxy are passed to - the C++ instance transparently via C wrapper functions.

    -

    This arrangement is asymmetric in the sense that no corresponding + the C++ instance transparently via C wrapper functions.

    +

    This arrangement is asymmetric in the sense that no corresponding mechanism exists to pass method calls down the inheritance chain from C++ to Python. In particular, if a C++ class has been extended in Python (by extending the proxy class), these extensions will not be visible from C++ code. Virtual method calls from C++ are thus not able - access the lowest implementation in the inheritance chain.

    -

    Changes have been made to SWIG 1.3.18 to address this problem and + access the lowest implementation in the inheritance chain.

    +

    Changes have been made to SWIG 1.3.18 to address this problem and make the relationship between C++ classes and proxy classes more symmetric. To achieve this goal, new classes called directors are introduced at the bottom of the C++ inheritance chain. The job of the @@ -47867,62 +45938,62 @@ www.python.org and is not repeated here.

    exactly like native C++ classes. Neither C++ code nor Python code needs to know where a particular method is implemented: the combination of proxy classes, director classes, and C wrapper functions takes care of - all the cross-language method routing transparently.

    -

    36.5.1 Enabling directors

    -

    The director feature is disabled by default. To use directors you + all the cross-language method routing transparently.

    +

    32.5.1 Enabling directors

    +

    The director feature is disabled by default. To use directors you must make two changes to the interface file. First, add the "directors" - option to the %module directive, like this:

    -
    -
    + option to the %module directive, like this:

    +
    +
     %module(directors="1") modulename
    -
    -
    -

    Without this option no director code will be generated. Second, you +

    +
    +

    Without this option no director code will be generated. Second, you must use the %feature("director") directive to tell SWIG which classes and methods should get directors. The %feature directive can be applied - globally, to specific classes, and to specific methods, like this:

    -
    -
    + globally, to specific classes, and to specific methods, like this:

    +
    +
     // generate directors for all classes that have virtual methods
    -%feature("director");         
    +%feature("director");
     
    -// generate directors for all virtual methods in class Foo
    -%feature("director") Foo;      
    -
    -
    -

    You can use the %feature("nodirector") directive to turn off - directors for specific classes or methods. So for example,

    -
    -
    +// generate directors for the virtual methods in class Foo
    +%feature("director") Foo;
    +
    +
    +

    You can use the %feature("nodirector") directive to turn off + directors for specific classes or methods. So for example,

    +
    +
     %feature("director") Foo;
     %feature("nodirector") Foo::bar;
    -
    -
    -

    will generate directors for all virtual methods of class Foo except - bar().

    -

    Directors can also be generated implicitly through inheritance. In +

    +
    +

    will generate directors for the virtual methods of class Foo except + bar().

    +

    Directors can also be generated implicitly through inheritance. In the following, class Bar will get a director class that handles the - methods one() and two() (but not three()):

    -
    -
    + methods one() and two() (but not three()):

    +
    +
     %feature("director") Foo;
     class Foo {
     public:
    -    Foo(int foo);
    -    virtual ~Foo();
    -    virtual void one();
    -    virtual void two();
    +  Foo(int foo);
    +  virtual ~Foo();
    +  virtual void one();
    +  virtual void two();
     };
     
     class Bar: public Foo {
     public:
    -    virtual void three();
    +  virtual void three();
     };
    -
    -
    -

    then at the python side you can define

    -
    -
    +
    +
    +

    then at the Python side you can define

    +
    +
     import mymodule
     
     class MyFoo(mymodule.Foo):
    @@ -47931,40 +46002,41 @@ class MyFoo(mymodule.Foo):
     #       super().__init__(foo) # Alternative construction for Python3
     
         def one(self):
    -        print "one from python"
    -
    -
    -

    36.5.2 Director classes

    -

    For each class that has directors enabled, SWIG generates a new - class that derives from both the class in question and a special -Swig::Director class. These new classes, referred to as director + print "one from Python" +

    +
    +

    32.5.2 Director classes

    +

    For each class that has directors enabled, SWIG generates a new + class that derives from both the class in question and a special +Swig::Director class. These new classes, referred to as director classes, can be loosely thought of as the C++ equivalent of the Python proxy classes. The director classes store a pointer to their underlying Python object and handle various issues related to object ownership. Indeed, this is quite similar to the "this" and "thisown" members of - the Python proxy classes.

    -

    For simplicity let's ignore the Swig::Director class and + the Python proxy classes.

    +

    For simplicity let's ignore the Swig::Director class and refer to the original C++ class as the director's base class. By default, a director class extends all virtual methods in the inheritance chain of its base class (see the preceding section for how - to modify this behavior). Thus all virtual method calls, whether they - originate in C++ or in Python via proxy classes, eventually end up in - at the implementation in the director class. The job of the director + to modify this behavior). Virtual methods that have a final specifier + are unsurprisingly excluded. Thus the virtual method calls, whether + they originate in C++ or in Python via proxy classes, eventually end up + in at the implementation in the director class. The job of the director methods is to route these method calls to the appropriate place in the inheritance chain. By "appropriate place" we mean the method that would have been called if the C++ base class and its extensions in Python were seamlessly integrated. That seamless integration is exactly what the director classes provide, transparently skipping over all the messy - extension API glue that binds the two languages together.

    -

    In reality, the "appropriate place" is one of only two + extension API glue that binds the two languages together.

    +

    In reality, the "appropriate place" is one of only two possibilities: C++ or Python. Once this decision is made, the rest is fairly easy. If the correct implementation is in C++, then the lowest implementation of the method in the C++ inheritance chain is called explicitly. If the correct implementation is in Python, the Python API is used to call the method of the underlying Python object (after which the usual virtual method resolution in Python automatically finds the - right implementation).

    -

    Now how does the director decide which language should handle the + right implementation).

    +

    Now how does the director decide which language should handle the method call? The basic rule is to handle the method in Python, unless there's a good reason not to. The reason for this is simple: Python has the most "extended" implementation of the method. This assertion is @@ -47983,57 +46055,57 @@ Swig::Director class. These new classes, referred to as director Python object that called the wrapper function to the pointer stored by the director. If these are the same, then the C wrapper function tells the director to resolve the method by calling up the C++ inheritance - chain, preventing an infinite loop.

    -

    One more point needs to be made about the relationship between + chain, preventing an infinite loop.

    +

    One more point needs to be made about the relationship between director classes and proxy classes. When a proxy class instance is created in Python, SWIG creates an instance of the original C++ class - and assigns it to .this. This is exactly what happens without + and assigns it to .this. This is exactly what happens without directors and is true even if directors are enabled for the particular - class in question. When a class derived from a proxy class is + class in question. When a class derived from a proxy class is created, however, SWIG then creates an instance of the corresponding C++ director class. The reason for this difference is that user-defined subclasses may override or extend methods of the original class, so the director class is needed to route calls to these methods correctly. For unmodified proxy classes, all methods are ultimately implemented in C++ so there is no need for the extra overhead involved with routing the - calls through Python.

    -

    36.5.3 Ownership and object destruction

    -

    Memory management issues are slightly more complicated with + calls through Python.

    +

    32.5.3 Ownership and object destruction

    +

    Memory management issues are slightly more complicated with directors than for proxy classes alone. Python instances hold a pointer to the associated C++ director object, and the director in turn holds a pointer back to the Python object. By default, proxy classes own their C++ director object and take care of deleting it when they are garbage - collected.

    -

    This relationship can be reversed by calling the special -__disown__() method of the proxy class. After calling this method, - the .thisown flag is set to zero, and the director class + collected.

    +

    This relationship can be reversed by calling the special +__disown__() method of the proxy class. After calling this method, + the .thisown flag is set to zero, and the director class increments the reference count of the Python object. When the director class is deleted it decrements the reference count. Assuming no outstanding references to the Python object remain, the Python object will be destroyed at the same time. This is a good thing, since directors and proxies refer to each other and so must be created and destroyed together. Destroying one without destroying the other will - likely cause your program to segfault.

    -

    To help ensure that no references to the Python object remain after - calling __disown__(), this method returns a weak reference to + likely cause your program to segfault.

    +

    To help ensure that no references to the Python object remain after + calling __disown__(), this method returns a weak reference to the Python object. Weak references are only available in Python versions 2.1 and higher, so for older versions you must explicitly - delete all references. Here is an example:

    -
    -
    + delete all references. Here is an example:

    +
    +
     class Foo {
     public:
    -    ...
    +  ...
     };
     class FooContainer {
     public:
    -    void addFoo(Foo *);
    -    ...
    +  void addFoo(Foo *);
    +  ...
     };
    -
    -
    -
    -
    +
    +
    +
    +
     >>> c = FooContainer()
     >>> a = Foo().__disown__()
     >>> c.addFoo(a)
    @@ -48041,63 +46113,63 @@ public:
     >>> b = b.__disown__()
     >>> c.addFoo(b)
     >>> c.addFoo(Foo().__disown__())
    -
    -
    -

    In this example, we are assuming that FooContainer will take care of +

    +
    +

    In this example, we are assuming that FooContainer will take care of deleting all the Foo pointers it contains at some point. Note that no - hard references to the Foo objects remain in Python.

    -

    36.5.4 Exception unrolling

    -

    With directors routing method calls to Python, and proxies routing + hard references to the Foo objects remain in Python.

    +

    32.5.4 Exception unrolling

    +

    With directors routing method calls to Python, and proxies routing them to C++, the handling of exceptions is an important concern. By default, the directors ignore exceptions that occur during method calls that are resolved in Python. To handle such exceptions correctly, it is necessary to temporarily translate them into C++ exceptions. This can be done with the %feature("director:except") directive. The following - code should suffice in most cases:

    -
    -
    + code should suffice in most cases:

    +
    +
     %feature("director:except") {
    -    if ($error != NULL) {
    -        throw Swig::DirectorMethodException();
    -    }
    +  if ($error != NULL) {
    +    throw Swig::DirectorMethodException();
    +  }
     }
    -
    -
    -

    This code will check the Python error state after each method call +

    +
    +

    This code will check the Python error state after each method call from a director into Python, and throw a C++ exception if an error occurred. This exception can be caught in C++ to implement an error handler. Currently no information about the Python error is stored in the Swig::DirectorMethodException object, but this will likely change - in the future.

    -

    It may be the case that a method call originates in Python, travels + in the future.

    +

    It may be the case that a method call originates in Python, travels up to C++ through a proxy class, and then back into Python via a director method. If an exception occurs in Python at this point, it would be nice for that exception to find its way back to the original caller. This can be done by combining a normal %exception directive - with the director:except handler shown above. Here is an - example of a suitable exception handler:

    -
    -
    + with the director:except handler shown above. Here is an
    + example of a suitable exception handler:

    +
    +
     %exception {
    -    try { $action }
    -    catch (Swig::DirectorException &e) { SWIG_fail; }
    +  try { $action }
    +  catch (Swig::DirectorException &e) { SWIG_fail; }
     }
    -
    -
    -

    The class Swig::DirectorException used in this example is actually a +

    +
    +

    The class Swig::DirectorException used in this example is actually a base class of Swig::DirectorMethodException, so it will trap this exception. Because the Python error state is still set when Swig::DirectorMethodException is thrown, Python will register the - exception as soon as the C wrapper function returns.

    -

    36.5.5 Overhead and code bloat

    -

    Enabling directors for a class will generate a new director method + exception as soon as the C wrapper function returns.

    +

    32.5.5 Overhead and code bloat

    +

    Enabling directors for a class will generate a new director method for every virtual method in the class' inheritance chain. This alone can generate a lot of code bloat for large hierarchies. Method arguments that require complex conversions to and from target language types can result in large director methods. For this reason it is recommended that you selectively enable directors only for specific - classes that are likely to be extended in Python and used in C++.

    -

    Compared to classes that do not use directors, the call routing in + classes that are likely to be extended in Python and used in C++.

    +

    Compared to classes that do not use directors, the call routing in the director methods does add some overhead. In particular, at least one dynamic cast and one extra function call occurs per method call from Python. Relative to the speed of Python execution this is probably @@ -48105,73 +46177,73 @@ public: ultimately resolves in C++ may take one extra detour through Python in order to ensure that the method does not have an extended Python implementation. This could result in a noticeable overhead in some - cases.

    -

    Although directors make it natural to mix native C++ objects with + cases.

    +

    Although directors make it natural to mix native C++ objects with Python objects (as director objects) via a common base class pointer, one should be aware of the obvious fact that method calls to Python objects will be much slower than calls to C++ objects. This situation can be optimized by selectively enabling director methods (using the %feature directive) for only those methods that are likely to be - extended in Python.

    -

    36.5.6 Typemaps

    -

    Typemaps for input and output of most of the basic types from + extended in Python.

    +

    32.5.6 Typemaps

    +

    Typemaps for input and output of most of the basic types from director classes have been written. These are roughly the reverse of the usual input and output typemaps used by the wrapper code. The typemap operation names are 'directorin', 'directorout', and 'directorargout'. The director code does not currently use any of the other kinds of typemaps. It is not clear at this point which kinds are - appropriate and need to be supported.

    -

    36.5.7 Miscellaneous

    -

    Director typemaps for STL classes are in place, and hence you should + appropriate and need to be supported.

    +

    32.5.7 Miscellaneous

    +

    Director typemaps for STL classes are in place, and hence you should be able to use std::vector, std::string, etc., as you would any other - type.

    -

    Note: The director typemaps for return types based in const - references, such as

    -
    + type.

    +

    Note: The director typemaps for return types based in const + references, such as

    +
     class Foo {
     …
    -    virtual const int& bar();
    +  virtual const int& bar();
     …
     };
    -
    -

    -

    will work only for simple call scenarios. Usually the resulting code +

    +

    +

    will work only for simple call scenarios. Usually the resulting code is neither thread or reentrant safe. Hence, the user is advised to avoid returning const references in director methods. For example, the user could modify the method interface to use lvalue return types, - wherever possible, for example

    -
    -
    + wherever possible, for example

    +
    +
     class Foo {
     …
    -    virtual int bar();
    +  virtual int bar();
     …
     };
    -
    -
    -

    If that is not possible, the user should avoid enabling the director +

    +
    +

    If that is not possible, the user should avoid enabling the director feature for reentrant, recursive or threaded member methods that return - const references.

    -

    36.6 Common customization features

    -

    The last section presented the absolute basics of C/C++ wrapping. If + const references.

    +

    32.6 Common customization features

    +

    The last section presented the absolute basics of C/C++ wrapping. If you do nothing but feed SWIG a header file, you will get an interface that mimics the behavior described. However, sometimes this isn't enough to produce a nice module. Certain types of functionality might be missing or the interface to certain functions might be awkward. This section describes some common SWIG features that are used to improve - your the interface to an extension module.

    -

    36.6.1 C/C++ helper functions

    -

    Sometimes when you create a module, it is missing certain bits of - functionality. For example, if you had a function like this

    -
    -
    + your the interface to an extension module.

    +

    32.6.1 C/C++ helper functions

    +

    Sometimes when you create a module, it is missing certain bits of + functionality. For example, if you had a function like this

    +
    +
     void set_transform(Image *im, double m[4][4]);
    -
    -
    -

    it would be accessible from Python, but there may be no easy way to - call it. For example, you might get errors like this:

    -
    -
    +
    +
    +

    it would be accessible from Python, but there may be no easy way to + call it. For example, you might get errors like this:

    +
    +
     >>> a = [
     ...   [1, 0, 0, 0],
     ...   [0, 1, 0, 0],
    @@ -48181,14 +46253,14 @@ void set_transform(Image *im, double m[4][4]);
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: Type error. Expected _p_a_4__double
    -
    -
    -

    The problem here is that there is no easy way to construct and - manipulate a suitable double [4][4] value to use. To fix this, - you can write some extra C helper functions. Just use the %inline - directive. For example:

    -
    -
    +
    +
    +

    The problem here is that there is no easy way to construct and + manipulate a suitable double [4][4] value to use. To fix this, + you can write some extra C helper functions. Just use the %inline + directive. For example:

    +
    +
     %inline %{
     /* Note: double[4][4] is equivalent to a pointer to an array double (*)[4] */
     double (*new_mat44())[4] {
    @@ -48204,11 +46276,11 @@ double mat44_get(double x[4][4], int i, int j) {
       return x[i][j];
     }
     %}
    -
    -
    -

    From Python, you could then write code like this:

    -
    -
    +
    +
    +

    From Python, you could then write code like this:

    +
    +
     >>> a = new_mat44()
     >>> mat44_set(a, 0, 0, 1.0)
     >>> mat44_set(a, 1, 1, 1.0)
    @@ -48216,19 +46288,19 @@ double mat44_get(double x[4][4], int i, int j) {
     ...
     >>> set_transform(im, a)
     >>>
    -
    -
    -

    Admittedly, this is not the most elegant looking approach. However, +

    +
    +

    Admittedly, this is not the most elegant looking approach. However, it works and it wasn't too hard to implement. It is possible to clean this up using Python code, typemaps, and other customization features - as covered in later sections.

    -

    36.6.2 Adding additional Python code

    -

    If writing support code in C isn't enough, it is also possible to - write code in Python. This code gets inserted in to the .py + as covered in later sections.

    +

    32.6.2 Adding additional Python code

    +

    If writing support code in C isn't enough, it is also possible to + write code in Python. This code gets inserted in to the .py file created by SWIG. One use of Python code might be to supply a - high-level interface to certain functions. For example:

    -
    -
    + high-level interface to certain functions. For example:

    +
    +
     void set_transform(Image *im, double x[4][4]);
     
     ...
    @@ -48242,13 +46314,13 @@ def set_transform(im, x):
         _example.set_transform(im, a)
         free_mat44(a)
     %}
    -
    -
    -

    In this example, set_transform() provides a high-level +

    +
    +

    In this example, set_transform() provides a high-level Python interface built on top of low-level helper functions. For - example, this code now seems to work:

    -
    -
    + example, this code now seems to work:

    +
    +
     >>> a = [
     ...   [1, 0, 0, 0],
     ...   [0, 1, 0, 0],
    @@ -48256,27 +46328,28 @@ def set_transform(im, x):
     ...   [0, 0, 0, 1]]
     >>> set_transform(im, a)
     >>>
    -
    -
    -

    Admittedly, this whole scheme for wrapping the two-dimension array +

    +
    +

    Admittedly, this whole scheme for wrapping the two-dimension array argument is rather ad-hoc. Besides, shouldn't a Python list or a Numeric Python array just work normally? We'll get to those examples soon enough. For now, think of this example as an illustration of what can be done without having to rely on any of the more advanced - customization features.

    -

    There is also %pythonbegin which is another directive very - similar to %pythoncode, but generates the given Python code at - the beginning of the .py file. This directive works in the - same way as %pythoncode, except the code is copied just after + customization features.

    +

    There is also %pythonbegin which is another directive very + similar to %pythoncode, but generates the given Python code at + the beginning of the .py file. This directive works in the + same way as %pythoncode, except the code is copied just after the SWIG banner (comment) at the top of the file, before any real code. This provides an opportunity to add your own description in a comment near the top of the file as well as Python imports that have to appear - at the top of the file, such as "from __future__ import" - statements.

    -

    The following shows example usage for Python 2.6 to use print - as it can in Python 3, that is, as a function instead of a statement:

    -
    -
    + at the top of the file, such as "from __future__ import"
    + statements.

    +

    The following example for Python 2.x shows how to insert code into + the generated wrapper to enable print to be used as a + Python3-compatible function instead of a statement:

    +
    +
     %pythonbegin %{
     # This module provides wrappers to the Whizz Bang library
     %}
    @@ -48285,14 +46358,14 @@ def set_transform(im, x):
     from __future__ import print_function
     print("Loading", "Whizz", "Bang", sep=' ... ')
     %}
    -
    -
    -

    which can be seen when viewing the first few lines of the generated -.py file:

    -
    -
    +
    +
    +

    The insert code can be seen at the start of the generated .py + file:

    +
    +
     # This file was automatically generated by SWIG (http://www.swig.org).
    -# Version 2.0.11
    +# Version 4.0.0
     #
     # Do not make changes to this file unless you know what you are doing--modify
     # the SWIG interface file instead.
    @@ -48302,41 +46375,41 @@ print("Loading", "Whizz", "Bang", sep=' ... ')
     from __future__ import print_function
     print("Loading", "Whizz", "Bang", sep=' ... ')
     
    -
    -
    -

    When using %pythoncode and %pythonbegin you - generally want to make sure that the block is delimited by %{ - and %}. If you delimit it with { and } then - any lines with a leading # will be handled by SWIG as +

    +
    +

    When using %pythoncode and %pythonbegin you + generally want to make sure that the block is delimited by %{ + and %}. If you delimit it with { and } then + any lines with a leading # will be handled by SWIG as preprocessor directives, when you probably meant them as Python comments. Prior to SWIG 3.0.3, invalid preprocessor directives were silently ignored, so generally using the wrong delimiters resulted in such comments not appearing in the generated output (though a comment starting with a valid preprocessor directive could cause problems, for - example: # error handling). SWIG 3.0.3 and later report an + example: # error handling). SWIG 3.0.3 and later report an error for invalid preprocessor directives, so you may have to update - existing interface files to delimit blocks of Python code correctly.

    -

    As an alternative to providing a block containing Python code, you - can include python code from a file. The code is inserted exactly as in + existing interface files to delimit blocks of Python code correctly.

    +

    As an alternative to providing a block containing Python code, you + can include Python code from a file. The code is inserted exactly as in the file, so this avoids any issues with the SWIG preprocessor. It's a good approach if you have a non-trivial chunk of Python code to insert. To use this feature you specify a filename in double quotes, for - example:

    -
    -
    + example:

    +
    +
     %pythoncode "somecode.py"
    -
    -
    -

    Sometimes you may want to replace or modify the wrapper function that - SWIG creates in the proxy .py file. The Python module in SWIG +

    +
    +

    Sometimes you may want to replace or modify the wrapper function that + SWIG creates in the proxy .py file. The Python module in SWIG provides some features that enable you to do this. First, to entirely - replace a proxy function you can use %feature("shadow"). For - example:

    -
    -
    + replace a proxy function you can use %feature("shadow"). For
    + example:

    +
    +
     %module example
     
    -// Rewrite bar() python code
    +// Rewrite bar() Python code
     
     %feature("shadow") Foo::bar(int) %{
     def bar(*args):
    @@ -48344,27 +46417,27 @@ def bar(*args):
         $action
         #do something after
     %}
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
    -
    -
    -

    where $action will be replaced by the call to the C/C++ - proper method.

    -

    Often the proxy function created by SWIG is fine, but you simply +

    +
    +

    where $action will be replaced by the call to the C/C++ + proper method.

    +

    Often the proxy function created by SWIG is fine, but you simply want to add code to it without touching the rest of the generated - function body. For these cases SWIG provides the pythonprepend - and pythonappend features which do exactly as their names - suggest. The pythonprepend feature will insert its value at - the beginning of the proxy function, and pythonappend will - insert code at the end of the proxy, just before the return statement.

    -
    -
    + function body. For these cases SWIG provides the pythonprepend
    + and pythonappend features which do exactly as their names
    + suggest. The pythonprepend feature will insert its value at
    + the beginning of the proxy function, and pythonappend will
    + insert code at the end of the proxy, just before the return statement.

    +
    +
     %module example
     
    -// Add python code to bar() 
    +// Add Python code to bar()
     
     %feature("pythonprepend") Foo::bar(int) %{
         #do something before C++ call
    @@ -48372,24 +46445,25 @@ public:
     
     %feature("pythonappend") Foo::bar(int) %{
         #do something after C++ call
    +    #the 'val' variable holds the return value
     %}
     
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
    -
    -
    -

    Notes: Usually the pythonappend and pythonprepend - features are safer to use than the shadow feature. Also, from - SWIG version 1.3.28 you can use the directive forms %pythonappend - and %pythonprepend as follows:

    -
    -
    +
    +
    +

    Notes: Usually the pythonappend and pythonprepend + features are safer to use than the shadow feature. Also, from + SWIG version 1.3.28 you can use the directive forms %pythonappend + and %pythonprepend as follows:

    +
    +
     %module example
     
    -// Add python code to bar() 
    +// Add Python code to bar()
     
     %pythonprepend Foo::bar(int) %{
         #do something before C++ call
    @@ -48397,26 +46471,27 @@ public:
     
     %pythonappend Foo::bar(int) %{
         #do something after C++ call
    +    #the 'val' variable holds the return value
     %}
     
    -    
    +
     class Foo {
     public:
    -    int bar(int x);
    +  int bar(int x);
     };
    -
    -
    -

    Note that when the underlying C++ method is overloaded, there is +

    +
    +

    Note that when the underlying C++ method is overloaded, there is only one proxy Python method for multiple C++ methods. In this case, only one of parsed methods is examined for the feature. You are better off specifying the feature without the argument list to ensure it will get used, as it will then get attached to all the overloaded C++ - methods. For example:

    -
    -
    + methods. For example:

    +
    +
     %module example
     
    -// Add python code to bar()
    +// Add Python code to bar()
     
     %pythonprepend Foo::bar %{
         #do something before C++ call
    @@ -48429,18 +46504,18 @@ public:
     
     class Foo {
     public:
    -    int bar(int x);
    -    int bar();
    +  int bar(int x);
    +  int bar();
     };
    -
    -
    -

    The same applies for overloaded constructors.

    -

    36.6.3 Class extension with %extend

    -

    One of the more interesting features of SWIG is that it can extend +

    +
    +

    The same applies for overloaded constructors.

    +

    32.6.3 Class extension with %extend

    +

    One of the more interesting features of SWIG is that it can extend structures and classes with new methods--at least in the Python - interface. Here is a simple example:

    -
    -
    + interface. Here is a simple example:

    +
    +
     %module example
     %{
     #include "someheader.h"
    @@ -48464,22 +46539,22 @@ struct Vector {
         return v;
       }
     };
    -
    -
    -

    Now, in Python

    -
    -
    +
    +
    +

    Now, in Python

    +
    +
     >>> v = example.Vector(2, 3, 4)
     >>> print v
     Vector(2, 3, 4)
     >>>
    -
    -
    -

    %extend can be used for many more tasks than this. For +

    +
    +

    %extend can be used for many more tasks than this. For example, if you wanted to overload a Python operator, you might do - this:

    -
    -
    + this:

    +
    +
     %extend Vector {
       Vector __add__(Vector *other) {
         Vector v;
    @@ -48489,32 +46564,32 @@ Vector(2, 3, 4)
         return v;
       }
     };
    -
    -
    -

    Use it like this:

    -
    -
    +
    +
    +

    Use it like this:

    +
    +
     >>> import example
     >>> v = example.Vector(2, 3, 4)
     >>> w = example.Vector(10, 11, 12)
     >>> print v+w
     Vector(12, 14, 16)
    ->>> 
    -
    -
    -

    %extend works with both C and C++ code. It does not modify +>>> +

    +
    +

    %extend works with both C and C++ code. It does not modify the underlying object in any way---the extensions only show up in the - Python interface.

    -

    36.6.4 Exception handling with %exception

    -

    If a C or C++ function throws an error, you may want to convert that - error into a Python exception. To do this, you can use the -%exception directive. %exception simply lets you rewrite - part of the generated wrapper code to include an error check.

    -

    In C, a function often indicates an error by returning a status code + Python interface.

    +

    32.6.4 Exception handling with %exception

    +

    If a C or C++ function throws an error, you may want to convert that + error into a Python exception. To do this, you can use the +%exception directive. %exception simply lets you rewrite + part of the generated wrapper code to include an error check.

    +

    In C, a function often indicates an error by returning a status code (a negative number or a NULL pointer perhaps). Here is a simple example - of how you might handle that:

    -
    -
    + of how you might handle that:

    +
    +
     %exception malloc {
       $action
       if (!result) {
    @@ -48523,22 +46598,22 @@ Vector(12, 14, 16)
       }
     }
     void *malloc(size_t nbytes);
    -
    -
    -

    In Python,

    -
    -
    +
    +
    +

    In Python,

    +
    +
     >>> a = example.malloc(2000000000)
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     MemoryError: Not enough memory
     >>>
    -
    -
    -

    If a library provides some kind of general error handling framework, - you can also use that. For example:

    -
    -
    +
    +
    +

    If a library provides some kind of general error handling framework, + you can also use that. For example:

    +
    +
     %exception {
       $action
       if (err_occurred()) {
    @@ -48546,14 +46621,14 @@ MemoryError: Not enough memory
         SWIG_fail;
       }
     }
    -
    -
    -

    No declaration name is given to %exception, it is applied - to all wrapper functions.

    -

    C++ exceptions are also easy to handle. For example, you can write - code like this:

    -
    -
    +
    +
    +

    No declaration name is given to %exception, it is applied + to all wrapper functions.

    +

    C++ exceptions are also easy to handle. For example, you can write + code like this:

    +
    +
     %exception getitem {
       try {
         $action
    @@ -48568,13 +46643,13 @@ public:
       Foo *getitem(int index);      // Exception handled added
       ...
     };
    -
    -
    -

    When raising a Python exception from C, use the -PyErr_SetString() function as shown above followed by SWIG_fail -. The following exception types can be used as the first argument.

    -
    -
    +
    +
    +

    When raising a Python exception from C, use the +PyErr_SetString() function as shown above followed by SWIG_fail +. The following exception types can be used as the first argument.

    +
    +
     PyExc_ArithmeticError
     PyExc_AssertionError
     PyExc_AttributeError
    @@ -48601,55 +46676,150 @@ PyExc_TypeError
     PyExc_UnicodeError
     PyExc_ValueError
     PyExc_ZeroDivisionError
    -
    -
    -

    SWIG_fail is a C macro which when called within the context +

    +
    +

    SWIG_fail is a C macro which when called within the context of SWIG wrapper function, will jump to the error handler code. This will call any cleanup code (freeing any temp variables) and then return from the wrapper function so that the Python interpreter can raise the Python exception. This macro should always be called after setting a - Python error in code snippets, such as typemaps and %exception -, that are ultimately generated into the wrapper function.

    -

    The language-independent exception.i library file can also - be used to raise exceptions. See the SWIG Library - chapter.

    -

    36.7 Tips and techniques

    -

    Although SWIG is largely automatic, there are certain types of + Python error in code snippets, such as typemaps and %exception +, that are ultimately generated into the wrapper function.

    +

    The language-independent exception.i library file can also + be used to raise exceptions. See the SWIG Library + chapter.

    +

    32.6.5 Optimization options

    +

    32.6.5.1 -fastproxy

    +

    The -fastproxy command line option enables faster method + calling as the call is made directly into the C/C++ layer rather than + going through a method wrapper.

    +

    Consider wrapping a C++ class:

    +
    +
    +struct Go {
    +  void callme0() {}
    +  void callme4(int a, int b, int c, int d) {}
    +  void callme8(double a, double b, double c, double d, double e, double f, double g, double i) {}
    +};
    +
    +
    +

    The default generated proxy class is:

    +
    +
    +class Go(object):
    +    def callme0(self):
    +        return _example.Go_callme0(self)
    +
    +    def callme4(self, a, b, c, d):
    +        return _example.Go_callme4(self, a, b, c, d)
    +
    +    def callme8(self, a, b, c, d, e, f, g, i):
    +        return _example.Go_callme8(self, a, b, c, d, e, f, g, i)
    +    ...
    +
    +
    +

    Each method in the Python class contains a Python proxy method which + passes the arguments on to the underlying function in the low-level + C/C++ module (_example in this case). The generated proxy class when + using -fastproxy is:

    +
    +
    +%module example
    +class Go(object):
    +    callme0 = _swig_new_instance_method(_example.Go_callme0)
    +    callme4 = _swig_new_instance_method(_example.Go_callme4)
    +    callme8 = _swig_new_instance_method(_example.Go_callme8)
    +    ...
    +
    +
    +

    where _swig_new_instance_method adds the method to the + proxy class via C API calls for direct access to the underlying + function in the low-level C/C++ module. Note that for some methods it + is not possible to generate the direct access call and so +-fastproxy is ignored. This happens, for example, when adding +additional code to Python proxy methods, such as using +%pythonprepend.

    +

    The overhead calling into C/C++ from Python is reduced slightly + using -fastproxy. Below are some timings in microseconds + calling the 3 functions in the example above. Also included in the + table for comparison is using the -builtin option covered in + the Built-in Types.

    + + + + + + +
    Method nameDefault-fastproxy-builtin
    callme00.150.090.07
    callme40.260.160.14
    callme80.320.200.17
    +

    Although the -fastproxy option results in faster code over + the default, the generated proxy code is not as user-friendly as + docstring/doxygen comments and functions with default values are not + visible in the generated Python proxy class. The -olddefs + option can rectify this.

    +

    The generated proxy class for the example above when using +-fastproxy -olddefs is:

    +
    +
    +class Go(object):
    +    def callme0(self):
    +        return _example.Go_callme0(self)
    +    callme0 = _swig_new_instance_method(_example.Go_callme0)
    +
    +    def callme4(self, a, b, c, d):
    +        return _example.Go_callme4(self, a, b, c, d)
    +    callme4 = _swig_new_instance_method(_example.Go_callme4)
    +
    +    def callme8(self, a, b, c, d, e, f, g, i):
    +        return _example.Go_callme8(self, a, b, c, d, e, f, g, i)
    +    callme8 = _swig_new_instance_method(_example.Go_callme8)
    +    ...
    +
    +
    +

    The class defines each method in two different ways. The first + definition is replaced by the second definition and so the second + definition is the one used when the method is called. While this + possibly provides the best of both worlds, the time to import the + module will be slighly slower when the class is defined due to the + additional method definitions.

    +

    The command line options mentioned above also apply to wrapped C/C++ + global functions, not just class methods.

    +

    32.7 Tips and techniques

    +

    Although SWIG is largely automatic, there are certain types of wrapping problems that require additional user input. Examples include dealing with output parameters, strings, binary data, and arrays. This - chapter discusses the common techniques for solving these problems.

    -

    36.7.1 Input and output parameters

    -

    A common problem in some C programs is handling parameters passed as - simple pointers. For example:

    -
    -
    + chapter discusses the common techniques for solving these problems.

    +

    32.7.1 Input and output parameters

    +

    A common problem in some C programs is handling parameters passed as + simple pointers. For example:

    +
    +
     void add(int x, int y, int *result) {
       *result = x + y;
     }
    -
    -
    -

    or perhaps

    -
    -
    +
    +
    +

    or perhaps

    +
    +
     int sub(int *x, int *y) {
       return *x-*y;
     }
    -
    -
    -

    The easiest way to handle these situations is to use the -typemaps.i file. For example:

    -
    -
    +
    +
    +

    The easiest way to handle these situations is to use the +typemaps.i file. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
     void add(int, int, int *OUTPUT);
     int  sub(int *INPUT, int *INPUT);
    -
    -
    -

    In Python, this allows you to pass simple values. For example:

    -
    -
    +
    +
    +

    In Python, this allows you to pass simple values. For example:

    +
    +
     >>> a = add(3, 4)
     >>> print a
     7
    @@ -48657,15 +46827,15 @@ int  sub(int *INPUT, int *INPUT);
     >>> print b
     3
     >>>
    -
    -
    -

    Notice how the INPUT parameters allow integer values to be - passed instead of pointers and how the OUTPUT parameter - creates a return result.

    -

    If you don't want to use the names INPUT or OUTPUT -, use the %apply directive. For example:

    -
    -
    +
    +
    +

    Notice how the INPUT parameters allow integer values to be + passed instead of pointers and how the OUTPUT parameter + creates a return result.

    +

    If you don't want to use the names INPUT or OUTPUT +, use the %apply directive. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
    @@ -48674,105 +46844,105 @@ int  sub(int *INPUT, int *INPUT);
     
     void add(int x, int y, int *result);
     int  sub(int *x, int *y);
    -
    -
    -

    If a function mutates one of its parameters like this,

    -
    -
    +
    +
    +

    If a function mutates one of its parameters like this,

    +
    +
     void negate(int *x) {
       *x = -(*x);
     }
    -
    -
    -

    you can use INOUT like this:

    -
    -
    +
    +
    +

    you can use INOUT like this:

    +
    +
     %include "typemaps.i"
     ...
     void negate(int *INOUT);
    -
    -
    -

    In Python, a mutated parameter shows up as a return value. For - example:

    -
    -
    +
    +
    +

    In Python, a mutated parameter shows up as a return value. For + example:

    +
    +
     >>> a = negate(3)
     >>> print a
     -3
     >>>
    -
    -
    -

    Note: Since most primitive Python objects are immutable, it is not +

    +
    +

    Note: Since most primitive Python objects are immutable, it is not possible to perform in-place modification of a Python object passed as - a parameter.

    -

    The most common use of these special typemap rules is to handle + a parameter.

    +

    The most common use of these special typemap rules is to handle functions that return more than one value. For example, sometimes a - function returns a result as well as a special error code:

    -
    -
    + function returns a result as well as a special error code:

    +
    +
     /* send message, return number of bytes sent, along with success code */
     int send_message(char *text, int len, int *success);
    -
    -
    -

    To wrap such a function, simply use the OUTPUT rule above. - For example:

    -
    -
    +
    +
    +

    To wrap such a function, simply use the OUTPUT rule above. + For example:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *success };
     ...
     int send_message(char *text, int *success);
    -
    -
    -

    When used in Python, the function will return multiple values.

    -
    -
    +
    +
    +

    When used in Python, the function will return multiple values.

    +
    +
     bytes, success = send_message("Hello World")
     if not success:
         print "Whoa!"
     else:
         print "Sent", bytes
    -
    -
    -

    Another common use of multiple return values are in query functions. - For example:

    -
    -
    +
    +
    +

    Another common use of multiple return values are in query functions. + For example:

    +
    +
     void get_dimensions(Matrix *m, int *rows, int *columns);
    -
    -
    -

    To wrap this, you might use the following:

    -
    -
    +
    +
    +

    To wrap this, you might use the following:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *rows, int *columns };
     ...
     void get_dimensions(Matrix *m, int *rows, *columns);
    -
    -
    -

    Now, in Python:

    -
    -
    +
    +
    +

    Now, in Python:

    +
    +
     >>> r, c = get_dimensions(m)
    -
    -
    -

    Be aware that the primary purpose of the typemaps.i file is - to support primitive datatypes. Writing a function like this

    -
    -
    +
    +
    +

    Be aware that the primary purpose of the typemaps.i file is + to support primitive datatypes. Writing a function like this

    +
    +
     void foo(Bar *OUTPUT);
    -
    -
    -

    may not have the intended effect since typemaps.i does not - define an OUTPUT rule for Bar.

    -

    36.7.2 Simple pointers

    -

    If you must work with simple pointers such as int * or -double * and you don't want to use typemaps.i, consider - using the cpointer.i library file. For example:

    -
    -
    +
    +
    +

    may not have the intended effect since typemaps.i does not + define an OUTPUT rule for Bar.

    +

    32.7.2 Simple pointers

    +

    If you must work with simple pointers such as int * or +double * and you don't want to use typemaps.i, consider + using the cpointer.i library file. For example:

    +
    +
     %module example
     %include "cpointer.i"
     
    @@ -48781,23 +46951,23 @@ extern void add(int x, int y, int *result);
     %}
     
     %pointer_functions(int, intp);
    -
    -
    -

    The %pointer_functions(type, name) macro generates five +

    +
    +

    The %pointer_functions(type, name) macro generates five helper functions that can be used to create, destroy, copy, assign, and - dereference a pointer. In this case, the functions are as follows:

    -
    -
    + dereference a pointer. In this case, the functions are as follows:

    +
    +
     int  *new_intp();
     int  *copy_intp(int *x);
     void  delete_intp(int *x);
     void  intp_assign(int *x, int value);
     int   intp_value(int *x);
    -
    -
    -

    In Python, you would use the functions like this:

    -
    -
    +
    +
    +

    In Python, you would use the functions like this:

    +
    +
     >>> result = new_intp()
     >>> print result
     _108fea8_p_int
    @@ -48805,58 +46975,58 @@ _108fea8_p_int
     >>> print intp_value(result)
     7
     >>>
    -
    -
    -

    If you replace %pointer_functions() by -%pointer_class(type, name), the interface is more class-like.

    -
    -
    +
    +
    +

    If you replace %pointer_functions() by +%pointer_class(type, name), the interface is more class-like.

    +
    +
     >>> result = intp()
     >>> add(3, 4, result)
     >>> print result.value()
     7
    -
    -
    -

    See the SWIG Library chapter for further - details.

    -

    36.7.3 Unbounded C Arrays

    -

    Sometimes a C function expects an array to be passed as a pointer. - For example,

    -
    -
    +
    +
    +

    See the SWIG Library chapter for further + details.

    +

    32.7.3 Unbounded C Arrays

    +

    Sometimes a C function expects an array to be passed as a pointer. + For example,

    +
    +
     int sumitems(int *first, int nitems) {
    -    int i, sum = 0;
    -    for (i = 0; i < nitems; i++) {
    -        sum += first[i];
    -    }
    -    return sum;
    +  int i, sum = 0;
    +  for (i = 0; i < nitems; i++) {
    +    sum += first[i];
    +  }
    +  return sum;
     }
    -
    -
    -

    To wrap this into Python, you need to pass an array pointer as the - first argument. A simple way to do this is to use the carrays.i - library file. For example:

    -
    -
    +
    +
    +

    To wrap this into Python, you need to pass an array pointer as the + first argument. A simple way to do this is to use the carrays.i + library file. For example:

    +
    +
     %include "carrays.i"
     %array_class(int, intArray);
    -
    -
    -

    The %array_class(type, name) macro creates wrappers for an +

    +
    +

    The %array_class(type, name) macro creates wrappers for an unbounded array object that can be passed around as a simple pointer - like int * or double *. For instance, you will be - able to do this in Python:

    -
    -
    + like int * or double *. For instance, you will be
    + able to do this in Python:

    +
    +
     >>> a = intArray(10000000)         # Array of 10-million integers
     >>> for i in xrange(10000):        # Set some values
     ...     a[i] = i
     >>> sumitems(a, 10000)
     49995000
     >>>
    -
    -
    -

    The array "object" created by %array_class() does not +

    +
    +

    The array "object" created by %array_class() does not encapsulate pointers inside a special array object. In fact, there is no bounds checking or safety of any kind (just like in C). Because of this, the arrays created by this library are extremely low-level @@ -48866,140 +47036,140 @@ int sumitems(int *first, int nitems) { to say, this approach is not going to suit all applications. On the other hand, this low-level approach is extremely efficient and well suited for applications in which you need to create buffers, package - binary data, etc.

    -

    36.7.4 String handling

    -

    If a C function has an argument of char *, then a Python - string can be passed as input. For example:

    -
    -
    + binary data, etc.

    +

    32.7.4 String handling

    +

    If a C function has an argument of char *, then a Python + string can be passed as input. For example:

    +
    +
     // C
     void foo(char *s);
    -
    -
    -
    +
    +
    +
     # Python
     >>> foo("Hello")
    -
    -
    -

    When a Python string is passed as a parameter, the C function +

    +
    +

    When a Python string is passed as a parameter, the C function receives a pointer to the raw data contained in the string. Since Python strings are immutable, it is illegal for your program to change the value. In fact, doing so will probably crash the Python - interpreter.

    -

    If your program modifies the input parameter or uses it to return - data, consider using the cstring.i library file described in - the SWIG Library chapter.

    -

    When functions return a char *, it is assumed to be a + interpreter.

    +

    If your program modifies the input parameter or uses it to return + data, consider using the cstring.i library file described in + the SWIG Library chapter.

    +

    When functions return a char *, it is assumed to be a NULL-terminated string. Data is copied into a new Python string and - returned.

    -

    If your program needs to work with binary data, you can use a + returned.

    +

    If your program needs to work with binary data, you can use a typemap to expand a Python string into a pointer/length argument pair. As luck would have it, just such a typemap is already defined. Just do - this:

    -
    -
    + this:

    +
    +
     %apply (char *STRING, int LENGTH) { (char *data, int size) };
     ...
     int parity(char *data, int size, int initial);
    -
    -
    -

    Now in Python:

    -
    -
    +
    +
    +

    Now in Python:

    +
    +
     >>> parity("e\x09ffss\x00\x00\x01\nx", 0)
    -
    -
    -

    If you need to return binary data, you might use the cstring.i - library file. The cdata.i library can also be used to extra - binary data from arbitrary pointers.

    -

    36.7.5 Default arguments

    -

    C++ default argument code generation is documented in the main -Default arguments section. There is also an optional Python specific - feature that can be used called the python:cdefaultargs -feature flag. By default, SWIG attempts to convert C++ default +

    +
    +

    If you need to return binary data, you might use the cstring.i + library file. The cdata.i library can also be used to extra + binary data from arbitrary pointers.

    +

    32.7.5 Default arguments

    +

    C++ default argument code generation is documented in the main +Default arguments section. There is also an optional Python specific + feature that can be used called the python:cdefaultargs +feature flag. By default, SWIG attempts to convert C++ default argument values into Python values and generates code into the Python - layer containing these values. For example:

    -
    -
    + layer containing these values. For example:

    +
    +
     struct CDA {
       int fff(int a = 1, bool b = false);
     };
    -
    -
    -

    From Python this can be called as follows:

    -
    -
    +
    +
    +

    From Python this can be called as follows:

    +
    +
     >>> CDA().fff()        # C++ layer receives a=1 and b=false
     >>> CDA().fff(2)       # C++ layer receives a=2 and b=false
     >>> CDA().fff(3, True) # C++ layer receives a=3 and b=true
    -
    -
    -

    The default code generation in the Python layer is:

    -
    -
    +
    +
    +

    The default code generation in the Python layer is:

    +
    +
     class CDA(object):
         ...
         def fff(self, a=1, b=False):
             return _default_args.CDA_fff(self, a, b)
    -
    -
    -

    Adding the feature:

    -
    -
    +
    +
    +

    Adding the feature:

    +
    +
     %feature("python:cdefaultargs") CDA::fff;
     struct CDA {
       int fff(int a = 1, bool b = false);
    -
    -
    -

    results in identical behaviour when called from Python, however, it - results in different code generation:

    -
    -
    +
    +
    +

    results in identical behaviour when called from Python, however, it + results in different code generation:

    +
    +
     class CDA(object):
         ...
         def fff(self, *args):
             return _default_args.CDA_fff(self, *args)
    -
    -
    -

    The default arguments are obtained in the C++ wrapper layer instead +

    +
    +

    The default arguments are obtained in the C++ wrapper layer instead of the Python layer. Some code generation modes are quite different, eg - -builtin and -fastproxy, and are unaffected by -python:cdefaultargs as the default values are always obtained from - the C++ layer.

    -

    Note that not all default arguments can be converted into a Python + -builtin and -fastproxy, and are unaffected by +python:cdefaultargs as the default values are always obtained from + the C++ layer.

    +

    Note that not all default arguments can be converted into a Python equivalent. When SWIG does not convert them, it will generate code to - obtain them from the C++ layer as if python:cdefaultargs was + obtain them from the C++ layer as if python:cdefaultargs was specified. This will happen if just one argument cannot be converted into a Python equivalent. This occurs typically when the argument is - not fully numeric, such as int(1):

    -
    -
    + not fully numeric, such as int(1):

    +
    +
     struct CDA {
       int fff(int a = int(1), bool b = false);
     };
    -
    -
    -

    Compatibility Note: SWIG-3.0.6 introduced the -python:cdefaultargs feature. Versions of SWIG prior to this varied +

    +
    +

    Compatibility Note: SWIG-3.0.6 introduced the +python:cdefaultargs feature. Versions of SWIG prior to this varied in their ability to convert C++ default values into equivalent Python - default argument values.

    -

    36.8 Typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap + default argument values.

    +

    32.8 Typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap directive. This is an advanced topic that assumes familiarity with the - Python C API as well as the material in the " -Typemaps" chapter.

    -

    Before proceeding, it should be stressed that typemaps are not a + Python C API as well as the material in the " +Typemaps" chapter.

    +

    Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect of the primitive C-Python interface or if you want to elevate your guru - status.

    -

    36.8.1 What is a typemap?

    -

    A typemap is nothing more than a code generation rule that is + status.

    +

    32.8.1 What is a typemap?

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers - from Python to C, you might define a typemap like this:

    -
    -
    + from Python to C, you might define a typemap like this:

    +
    +
     %module example
     
     %typemap(in) int {
    @@ -49009,31 +47179,31 @@ Typemaps" chapter.

    %inline %{ extern int fact(int n); %} -
    -
    -

    Typemaps are always associated with some specific aspect of code +

    +
    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of - input arguments to C/C++. The datatype int is the datatype to + input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variable prefaced by a - $ are used. The $1 variable is placeholder for a - local variable of type int. The $input variable is - the input object of type PyObject *.

    -

    When this example is compiled into a Python module, it operates as - follows:

    -
    -
    + $ are used. The $1 variable is placeholder for a
    + local variable of type int. The $input variable is
    + the input object of type PyObject *.

    +

    When this example is compiled into a Python module, it operates as + follows:

    +
    +
     >>> from example import *
     >>> fact(6)
     Received an integer : 6
     720
    -
    -
    -

    In this example, the typemap is applied to all occurrences of the -int datatype. You can refine this by supplying an optional - parameter name. For example:

    -
    -
    +
    +
    +

    In this example, the typemap is applied to all occurrences of the +int datatype. You can refine this by supplying an optional + parameter name. For example:

    +
    +
     %module example
     
     %typemap(in) int nonnegative {
    @@ -49046,18 +47216,18 @@ int datatype. You can refine this by supplying an optional
     %inline %{
     extern int fact(int nonnegative);
     %}
    -
    -
    -

    In this case, the typemap code is only attached to arguments that - exactly match int nonnegative.

    -

    The application of a typemap to specific datatypes and argument +

    +
    +

    In this case, the typemap code is only attached to arguments that + exactly match int nonnegative.

    +

    The application of a typemap to specific datatypes and argument names involves more than simple text-matching--typemaps are fully integrated into the SWIG C++ type-system. When you define a typemap for - int, that typemap applies to int and qualified - variations such as const int. In addition, the typemap system - follows typedef declarations. For example:

    -
    -
    + int, that typemap applies to int and qualified
    + variations such as const int. In addition, the typemap system
    + follows typedef declarations. For example:

    +
    +
     %typemap(in) int n {
       $1 = (int) PyLong_AsLong($input);
       printf("n = %d\n", $1);
    @@ -49066,117 +47236,117 @@ extern int fact(int nonnegative);
     typedef int Integer;
     extern int fact(Integer n);    // Above typemap is applied
     %}
    -
    -
    -

    Typemaps can also be defined for groups of consecutive arguments. - For example:

    -
    -
    +
    +
    +

    Typemaps can also be defined for groups of consecutive arguments. + For example:

    +
    +
     %typemap(in) (char *str, int len) {
       $1 = PyString_AsString($input);
       $2 = PyString_Size($input);
     };
     
     int count(char c, char *str, int len);
    -
    -
    -

    When a multi-argument typemap is defined, the arguments are always +

    +
    +

    When a multi-argument typemap is defined, the arguments are always handled as a single Python object. This allows the function to be used - like this (notice how the length parameter is omitted):

    -
    -
    + like this (notice how the length parameter is omitted):

    +
    +
     >>> example.count('e', 'Hello World')
     1
     >>>
    -
    -
    -

    36.8.2 Python typemaps

    -

    The previous section illustrated an "in" typemap for converting +

    +
    +

    32.8.2 Python typemaps

    +

    The previous section illustrated an "in" typemap for converting Python objects to C. A variety of different typemap methods are defined by the Python module. For example, to convert a C integer back into a - Python object, you might define an "out" typemap like this:

    -
    -
    + Python object, you might define an "out" typemap like this:

    +
    +
     %typemap(out) int {
         $result = PyInt_FromLong((long) $1);
     }
    -
    -
    -

    A detailed list of available methods can be found in the " -Typemaps" chapter.

    -

    However, the best source of typemap information (and examples) is +

    +
    +

    A detailed list of available methods can be found in the " +Typemaps" chapter.

    +

    However, the best source of typemap information (and examples) is probably the Python module itself. In fact, all of SWIG's default type handling is defined by typemaps. You can view these typemaps by looking at the files in the SWIG library. Just take into account that in the latest versions of swig (1.3.22+), the library files are not very pristine clear for the casual reader, as they used to be. The extensive use of macros and other ugly techniques in the latest version produce a - very powerful and consistent python typemap library, but at the cost of - simplicity and pedagogic value.

    -

    To learn how to write a simple or your first typemap, you better - take a look at the SWIG library version 1.3.20 or so.

    -

    36.8.3 Typemap variables

    -

    Within typemap code, a number of special variables prefaced with a -$ may appear. A full list of variables can be found in the " -Typemaps" chapter. This is a list of the most common variables:

    -

    $1

    -
    A C local variable corresponding to the actual type - specified in the %typemap directive. For input values, this is + very powerful and consistent Python typemap library, but at the cost of + simplicity and pedagogic value.

    +

    To learn how to write a simple or your first typemap, you better + take a look at the SWIG library version 1.3.20 or so.

    +

    32.8.3 Typemap variables

    +

    Within typemap code, a number of special variables prefaced with a +$ may appear. A full list of variables can be found in the " +Typemaps" chapter. This is a list of the most common variables:

    +

    $1

    +
    A C local variable corresponding to the actual type + specified in the %typemap directive. For input values, this is a C local variable that's supposed to hold an argument value. For output values, this is the raw result that's supposed to be returned to - Python.
    -

    $input

    -
    A PyObject * holding a raw Python object - with an argument or variable value.
    -

    $result

    -
    A PyObject * that holds the result to be - returned to Python.
    -

    $1_name

    -
    The parameter name that was matched.
    -

    $1_type

    -
    The actual C datatype matched by the typemap.
    -

    $1_ltype

    -
    An assignable version of the datatype matched by + Python.
    +

    $input

    +
    A PyObject * holding a raw Python object + with an argument or variable value.
    +

    $result

    +
    A PyObject * that holds the result to be + returned to Python.
    +

    $1_name

    +
    The parameter name that was matched.
    +

    $1_type

    +
    The actual C datatype matched by the typemap.
    +

    $1_ltype

    +
    An assignable version of the datatype matched by the typemap (a type that can appear on the left-hand-side of a C assignment operation). This type is stripped of qualifiers and may be - an altered version of $1_type. All arguments and local + an altered version of $1_type. All arguments and local variables in wrapper functions are declared using this type so that - their values can be properly assigned.
    -

    $symname

    -
    The Python name of the wrapper function being - created.
    -

    36.8.4 Useful Python Functions

    -

    When you write a typemap, you usually have to work directly with - Python objects. The following functions may prove to be useful.

    -

    Python Integer Functions

    -
    -
    + their values can be properly assigned.
    +

    $symname

    +
    The Python name of the wrapper function being + created.
    +

    32.8.4 Useful Python Functions

    +

    When you write a typemap, you usually have to work directly with + Python objects. The following functions may prove to be useful.

    +

    Python Integer Functions

    +
    +
     PyObject *PyInt_FromLong(long l);
     long      PyInt_AsLong(PyObject *);
     int       PyInt_Check(PyObject *);
    -
    -
    -

    Python Floating Point Functions

    -
    -
    +
    +
    +

    Python Floating Point Functions

    +
    +
     PyObject *PyFloat_FromDouble(double);
     double    PyFloat_AsDouble(PyObject *);
     int       PyFloat_Check(PyObject *);
    -
    -
    -

    Python String Functions

    -
    -
    +
    +
    +

    Python String Functions

    +
    +
     PyObject *PyString_FromString(char *);
     PyObject *PyString_FromStringAndSize(char *, lint len);
     int       PyString_Size(PyObject *);
     char     *PyString_AsString(PyObject *);
     int       PyString_Check(PyObject *);
    -
    -
    -

    Python List Functions

    -
    -
    +
    +
    +

    Python List Functions

    +
    +
     PyObject *PyList_New(int size);
     int       PyList_Size(PyObject *list);
     PyObject *PyList_GetItem(PyObject *list, int i);
    @@ -49189,22 +47359,22 @@ int       PyList_Sort(PyObject *list);
     int       PyList_Reverse(PyObject *list);
     PyObject *PyList_AsTuple(PyObject *list);
     int       PyList_Check(PyObject *);
    -
    -
    -

    Python Tuple Functions

    -
    -
    +
    +
    +

    Python Tuple Functions

    +
    +
     PyObject *PyTuple_New(int size);
     int       PyTuple_Size(PyObject *);
     PyObject *PyTuple_GetItem(PyObject *, int i);
     int       PyTuple_SetItem(PyObject *, int i, PyObject *item);
     PyObject *PyTuple_GetSlice(PyObject *t, int i, int j);
     int       PyTuple_Check(PyObject *);
    -
    -
    -

    Python Dictionary Functions

    -
    -
    +
    +
    +

    Python Dictionary Functions

    +
    +
     PyObject *PyDict_New();
     int       PyDict_Check(PyObject *);
     int       PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val);
    @@ -49220,33 +47390,33 @@ Py_ssize_t PyDict_Size(PyObject *p);
     int       PyDict_Update(PyObject *a, PyObject *b);
     int       PyDict_Merge(PyObject *a, PyObject *b, int override);
     PyObject* PyDict_Items(PyObject *p);
    -
    -
    -

    Python File Conversion Functions

    -
    -
    +
    +
    +

    Python File Conversion Functions

    +
    +
     PyObject *PyFile_FromFile(FILE *f);
     FILE     *PyFile_AsFile(PyObject *);
     int       PyFile_Check(PyObject *);
    -
    -
    -

    Abstract Object Interface

    -
    -
    +
    +
    +

    Abstract Object Interface

    +
    +
     write me
    -
    -
    -

    36.9 Typemap Examples

    -

    This section includes a few examples of typemaps. For more examples, - you might look at the files "python.swg" and "typemaps.i -" in the SWIG library.

    -

    36.9.1 Converting Python list to a char **

    -

    A common problem in many C programs is the processing of command + +

    +

    32.9 Typemap Examples

    +

    This section includes a few examples of typemaps. For more examples, + you might look at the files "python.swg" and "typemaps.i +" in the SWIG library.

    +

    32.9.1 Converting Python list to a char **

    +

    A common problem in many C programs is the processing of command line arguments, which are usually passed in an array of NULL terminated strings. The following SWIG interface file allows a Python list object - to be used as a char ** object.

    -
    -
    + to be used as a char ** object.

    +
    +
     %module argv
     
     // This tells SWIG to treat char ** as a special case
    @@ -49290,12 +47460,12 @@ int print_args(char **argv) {
     }
     %}
     
    -
    -
    -

    When this module is compiled, the wrapped C function now operates as - follows :

    -
    -
    +
    +
    +

    When this module is compiled, the wrapped C function now operates as + follows :

    +
    +
     >>> from argv import *
     >>> print_args(["Dave", "Mike", "Mary", "Jane", "John"])
     argv[0] = Dave
    @@ -49304,36 +47474,36 @@ argv[2] = Mary
     argv[3] = Jane
     argv[4] = John
     5
    -
    -
    -

    In the example, two different typemaps are used. The "in" typemap is +

    +
    +

    In the example, two different typemaps are used. The "in" typemap is used to receive an input argument and convert it to a C array. Since dynamic memory allocation is used to allocate memory for the array, the "freearg" typemap is used to later release this memory after the - execution of the C function.

    -

    36.9.2 Expanding a Python object into multiple - arguments

    -

    Suppose that you had a collection of C functions with arguments such - as the following:

    -
    -
    + execution of the C function.

    +

    32.9.2 Expanding a Python object into multiple + arguments

    +

    Suppose that you had a collection of C functions with arguments such + as the following:

    +
    +
     int foo(int argc, char **argv);
    -
    -
    -

    In the previous example, a typemap was written to pass a Python list - as the char **argv. This allows the function to be used from - Python as follows:

    -
    -
    +
    +
    +

    In the previous example, a typemap was written to pass a Python list + as the char **argv. This allows the function to be used from + Python as follows:

    +
    +
     >>> foo(4, ["foo", "bar", "spam", "1"])
    -
    -
    -

    Although this works, it's a little awkward to specify the argument +

    +
    +

    Although this works, it's a little awkward to specify the argument count. To fix this, a multi-argument typemap can be defined. This is not very difficult--you only have to make slight modifications to the - previous example:

    -
    -
    + previous example:

    +
    +
     %typemap(in) (int argc, char **argv) {
       /* Check if is a list */
       if (PyList_Check($input)) {
    @@ -49360,54 +47530,54 @@ int foo(int argc, char **argv);
     %typemap(freearg) (int argc, char **argv) {
       free((char *) $2);
     }
    -
    -
    -

    When writing a multiple-argument typemap, each of the types is - referenced by a variable such as $1 or $2. The +

    +
    +

    When writing a multiple-argument typemap, each of the types is + referenced by a variable such as $1 or $2. The typemap code simply fills in the appropriate values from the supplied - Python object.

    -

    With the above typemap in place, you will find it no longer + Python object.

    +

    With the above typemap in place, you will find it no longer necessary to supply the argument count. This is automatically set by - the typemap code. For example:

    -
    -
    + the typemap code. For example:

    +
    +
     >>> foo(["foo", "bar", "spam", "1"])
    -
    -
    -

    If your function is overloaded in C++, for example:

    -
    -
    +
    +
    +

    If your function is overloaded in C++, for example:

    +
    +
     int foo(int argc, char **argv);
     int foo();
    -
    -
    -

    don't forget to also provide a suitable -typecheck typemap for overloading such as:

    -
    -
    +
    +
    +

    don't forget to also provide a suitable +typecheck typemap for overloading such as:

    +
    +
     %typecheck(SWIG_TYPECHECK_STRING_ARRAY) (int argc, char **argv) {
       $1 = PyList_Check($input) ? 1 : 0;
     }
    -
    -
    -

    If you don't you'll get an error message along the lines of:

    -
    -
    +
    +
    +

    If you don't you'll get an error message along the lines of:

    +
    +
     Traceback (most recent call last):
       File "runme.py", line 3, in >module<
         example.foo(["foo", "bar", "spam", "1"])
    -NotImplementedError: Wrong number or type of arguments for overloaded function 'foo'.
    +TypeError: Wrong number or type of arguments for overloaded function 'foo'.
       Possible C/C++ prototypes are:
         foo(int, char **)
         foo()
    -
    -
    -

    36.9.3 Using typemaps to return arguments

    -

    A common problem in some C programs is that values may be returned +

    +
    +

    32.9.3 Using typemaps to return arguments

    +

    A common problem in some C programs is that values may be returned in arguments rather than in the return value of a function. For - example:

    -
    -
    + example:

    +
    +
     /* Returns a status value and two values in out1 and out2 */
     int spam(double a, double b, double *out1, double *out2) {
       ... Do a bunch of stuff ...
    @@ -49415,15 +47585,15 @@ int spam(double a, double b, double *out1, double *out2) {
       *out2 = result2;
       return status;
     }
    -
    -
    -

    A typemap can be used to handle this case as follows :

    -
    -
    +
    +
    +

    A typemap can be used to handle this case as follows :

    +
    +
     %module outarg
     
     // This tells SWIG to treat an double * argument with name 'OutValue' as
    -// an output value.  We'll append the value to the current result which 
    +// an output value.  We'll append the value to the current result which
     // is guaranteed to be a List object by SWIG.
     
     %typemap(argout) double *OutValue {
    @@ -49448,52 +47618,52 @@ int spam(double a, double b, double *out1, double *out2) {
     
     int spam(double a, double b, double *OutValue, double *OutValue);
     
    -
    -
    -

    The typemap works as follows. First, a check is made to see if any +

    +
    +

    The typemap works as follows. First, a check is made to see if any previous result exists. If so, it is turned into a tuple and the new output value is concatenated to it. Otherwise, the result is returned - normally. For the sample function spam(), there are three + normally. For the sample function spam(), there are three output values--meaning that the function will return a 3-tuple of the - results.

    -

    As written, the function must accept 4 arguments as input values, + results.

    +

    As written, the function must accept 4 arguments as input values, last two being pointers to doubles. If these arguments are only used to hold output values (and have no meaningful input value), an additional - typemap can be written. For example:

    -
    -
    + typemap can be written. For example:

    +
    +
     %typemap(in, numinputs=0) double *OutValue(double temp) {
       $1 = &temp;
     }
     
    -
    -
    -

    By specifying numinputs=0, the input value is ignored. However, +

    +
    +

    By specifying numinputs=0, the input value is ignored. However, since the argument still has to be set to some meaningful value before - calling C, it is set to point to a local variable temp. When + calling C, it is set to point to a local variable temp. When the function stores its output value, it will simply be placed in this - local variable. As a result, the function can now be used as follows:

    -
    -
    + local variable. As a result, the function can now be used as follows:

    +
    +
     >>> a = spam(4, 5)
     >>> print a
     (0, 2.45, 5.0)
     >>> x, y, z = spam(4, 5)
     >>>
    -
    -
    -

    36.9.4 Mapping Python tuples into small arrays -

    -

    In some applications, it is sometimes desirable to pass small arrays - of numbers as arguments. For example :

    -
    -
    +
    +
    +

    32.9.4 Mapping Python tuples into small arrays +

    +

    In some applications, it is sometimes desirable to pass small arrays + of numbers as arguments. For example :

    +
    +
     extern void set_direction(double a[4]);       // Set direction vector
    -
    -
    -

    This too, can be handled used typemaps as follows :

    -
    -
    +
    +
    +

    This too, can be handled used typemaps as follows :

    +
    +
     // Grab a 4 element array as a Python 4-tuple
     %typemap(in) double[4](double temp[4]) {   // temp[4] becomes a local variable
       int i;
    @@ -49509,24 +47679,24 @@ extern void set_direction(double a[4]);       // Set direction vector
       }
     }
     
    -
    -
    -

    This allows our set_direction function to be called from - Python as follows :

    -
    -
    +
    +
    +

    This allows our set_direction function to be called from + Python as follows :

    +
    +
     >>> set_direction((0.5, 0.0, 1.0, -0.25))
    -
    -
    -

    Since our mapping copies the contents of a Python tuple into a C +

    +
    +

    Since our mapping copies the contents of a Python tuple into a C array, such an approach would not be recommended for huge arrays, but - for small structures, this approach works fine.

    -

    36.9.5 Mapping sequences to C arrays

    -

    Suppose that you wanted to generalize the previous example to handle + for small structures, this approach works fine.

    +

    32.9.5 Mapping sequences to C arrays

    +

    Suppose that you wanted to generalize the previous example to handle C arrays of different sizes. To do this, you might write a typemap as - follows:

    -
    -
    + follows:

    +
    +
     // Map a Python sequence into any sized C double array
     %typemap(in) double[ANY](double temp[$1_dim0]) {
       int i;
    @@ -49550,23 +47720,23 @@ extern void set_direction(double a[4]);       // Set direction vector
       }
       $1 = &temp[0];
     }
    -
    -
    -

    In this case, the variable $1_dim0 is expanded to match the +

    +
    +

    In this case, the variable $1_dim0 is expanded to match the array dimensions actually used in the C code. This allows the typemap - to be applied to types such as:

    -
    -
    + to be applied to types such as:

    +
    +
     void foo(double x[10]);
     void bar(double a[4], double b[8]);
    -
    -
    -

    Since the above typemap code gets inserted into every wrapper +

    +
    +

    Since the above typemap code gets inserted into every wrapper function where used, it might make sense to use a helper function instead. This will greatly reduce the amount of wrapper code. For - example:

    -
    -
    + example:

    +
    +
     %{
     static int convert_darray(PyObject *input, double *ptr, int size) {
       int i;
    @@ -49598,38 +47768,38 @@ static int convert_darray(PyObject *input, double *ptr, int size) {
       }
       $1 = &temp[0];
     }
    -
    -
    -

    36.9.6 Pointer handling

    -

    Occasionally, it might be necessary to convert pointer values that +

    +
    +

    32.9.6 Pointer handling

    +

    Occasionally, it might be necessary to convert pointer values that have been stored using the SWIG typed-pointer representation. Since there are several ways in which pointers can be represented, the - following two functions are used to safely perform this conversion:

    -

    int SWIG_ConvertPtr(PyObject *obj, void **ptr, swig_type_info - *ty, int flags)

    -
    Converts a Python object obj to a C + following two functions are used to safely perform this conversion:

    +

    int SWIG_ConvertPtr(PyObject *obj, void **ptr, swig_type_info + *ty, int flags)

    +
    Converts a Python object obj to a C pointer. The result of the conversion is placed into the pointer - located at ptr. ty is a SWIG type descriptor - structure. flags is used to handle error checking and other + located at ptr. ty is a SWIG type descriptor + structure. flags is used to handle error checking and other aspects of conversion. It is the bitwise-or of several flag values - including SWIG_POINTER_EXCEPTION and SWIG_POINTER_DISOWN + including SWIG_POINTER_EXCEPTION and SWIG_POINTER_DISOWN . The first flag makes the function raise an exception on type error. The second flag additionally steals ownership of an object. Returns 0 - on success and -1 on error.
    -

    PyObject *SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int - own)

    -
    Creates a new Python pointer object. ptr - is the pointer to convert, ty is the SWIG type descriptor - structure that describes the type, and own is a flag that - indicates whether or not Python should take ownership of the pointer.
    -

    Both of these functions require the use of a special SWIG + on success and -1 on error.

    +

    PyObject *SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int + own)

    +
    Creates a new Python pointer object. ptr + is the pointer to convert, ty is the SWIG type descriptor + structure that describes the type, and own is a flag that + indicates whether or not Python should take ownership of the pointer.
    +

    Both of these functions require the use of a special SWIG type-descriptor structure. This structure contains information about the mangled name of the datatype, type-equivalence information, as well as information about converting pointer values under C++ inheritance. - For a type of Foo *, the type descriptor structure is usually - accessed as follows:

    -
    -
    + For a type of Foo *, the type descriptor structure is usually
    + accessed as follows:

    +
    +
     Foo *f;
     if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
       SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
    @@ -49637,141 +47807,272 @@ if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
     
     PyObject *obj;
     obj = SWIG_NewPointerObj(f, SWIGTYPE_p_Foo, 0);
    -
    -
    -

    In a typemap, the type descriptor should always be accessed using - the special typemap variable $1_descriptor. For example:

    -
    -
    +
    +
    +

    In a typemap, the type descriptor should always be accessed using + the special typemap variable $1_descriptor. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    If necessary, the descriptor for any type can be obtained using the -$descriptor() macro in a typemap. For example:

    -
    -
    +
    +
    +

    If necessary, the descriptor for any type can be obtained using the +$descriptor() macro in a typemap. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $descriptor(Foo *), 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    Although the pointer handling functions are primarily intended for +

    +
    +

    Although the pointer handling functions are primarily intended for manipulating low-level pointers, both functions are fully aware of - Python proxy classes. Specifically, SWIG_ConvertPtr() will - retrieve a pointer from any object that has a this attribute. - In addition, SWIG_NewPointerObj() can automatically generate a - proxy class object (if applicable).

    -

    36.10 Docstring Features

    -

    Using docstrings in Python code is becoming more and more important + Python proxy classes. Specifically, SWIG_ConvertPtr() will + retrieve a pointer from any object that has a this attribute. + In addition, SWIG_NewPointerObj() can automatically generate a + proxy class object (if applicable).

    +

    32.9.7 Memory + management when returning references to member variables

    +

    This example shows how to prevent premature garbage collection of + objects when the underlying C++ class returns a pointer or reference to + a member variable. The example is a direct equivalent to this +Java equivalent.

    +

    Consider the following C++ code:

    +
    +
    +#include <iostream>
    +struct Wheel {
    +  int size;
    +  Wheel(int sz = 0) : size(sz) {}
    +  ~Wheel() { std::cout << "~Wheel" << std::endl; }
    +};
    +
    +class Bike {
    +  Wheel wheel;
    +public:
    +  Bike(int val) : wheel(val) {}
    +  Wheel& getWheel() { return wheel; }
    +};
    +
    +
    +

    and the following usage from Python after running the code through + SWIG:

    +
    +
    +bike = Bike(10)
    +wheel = bike.getWheel()
    +print("wheel size: {}".format(wheel.size))
    +
    +del bike  # Allow bike to be garbage collected
    +print("wheel size: {}".format(wheel.size))
    +
    +
    +

    Don't be surprised that if the resulting output gives strange + results such as...

    +
    +
    +wheel size: 10
    +~Wheel
    +wheel size: 135019664
    +
    +
    +

    What has happened here is the garbage collector has collected the +Bike instance as it doesn't think it is needed any more. The proxy + instance, wheel, contains a reference to memory that was + deleted when the Bike instance was collected. In order to + prevent the garbage collector from collecting the Bike + instance, a reference to the Bike must be added to the +wheel instance.

    +

    You can do this by adding the reference when the getWheel() + method is called using one of three approaches:

    +

    The easier, but less optimized, way is to use the %pythonappend + directive (see Adding additional Python code +):

    +
    +
    +%pythonappend getWheel %{
    +  # val is the Wheel proxy, self is the Bike instance
    +  val.__bike_reference = self
    +%}
    +
    +
    +

    The code gets appended to the Python code generated for the +Bike::getWheel wrapper function, where we store the Bike + proxy instance onto the Wheel proxy instance before it is + returned to the caller as follows.

    +
    +
    +class Bike(object):
    +    ...
    +    def getWheel(self):
    +        val = _example.Bike_getWheel(self)
    +
    +        # val is the Wheel proxy, self is the Bike instance
    +        val.__bike_reference = self
    +
    +        return val
    +
    +
    +

    The second option, which performs better and is required if you use + the -builtin option, is to set the reference in the CPython + implementation:

    +
    +%extend Wheel {
    +// A reference to the parent class is added to ensure the underlying C++
    +// object is not deleted while the item is in use
    +%typemap(ret) Wheel& getWheel {
    +  PyObject *bike_reference_string = SWIG_Python_str_FromChar("__bike_reference");
    +  PyObject_SetAttr($result, bike_reference_string, $self);
    +  Py_DecRef(bike_reference_string);
    +}
    +}
    +
    +

    +

    The third approach, shown below, is an optimization of the above + approach and creates the "__bike_reference" Python string object just + once. While this looks more complex, it is just a small variation on + the above typemap plus a support function bike_reference() in + a fragment called bike_reference_function. The +bike_reference_init typemap generates code into the "init" section + for an initial call to bike_reference() when the module is + initialized and is done to create the "__bike_reference" Python string + singleton in a thread-safe manner.

    +
    +
    +%fragment("bike_reference_init", "init") {
    +  // Thread-safe initialization - initialize during Python module initialization
    +  bike_reference();
    +}
    +
    +%fragment("bike_reference_function", "header", fragment="bike_reference_init") {
    +
    +static PyObject *bike_reference() {
    +  static PyObject *bike_reference_string = SWIG_Python_str_FromChar("__bike_reference");
    +  return bike_reference_string;
    +}
    +
    +}
    +
    +%extend Wheel {
    +// A reference to the parent class is added to ensure the underlying C++
    +// object is not deleted while the item is in use
    +%typemap(ret, fragment="bike_reference_function") Wheel& getWheel %{
    +  PyObject_SetAttr($result, bike_reference(), $self);
    +%}
    +}
    +
    +
    +

    32.10 Docstring Features

    +

    Using docstrings in Python code is becoming more and more important and more tools are coming on the scene that take advantage of them, everything from full-blown documentation generators to class browsers and popup call-tips in Python-aware IDEs. Given the way that SWIG generates the proxy code by default, your users will normally get - something like "function_name(*args)" in the popup calltip of + something like "function_name(*args)" in the popup calltip of their IDE which is next to useless when the real function prototype - might be something like this:

    -
    -
    + might be something like this:

    +
    +
     bool function_name(int x, int y, Foo* foo=NULL, Bar* bar=NULL);
    -
    -
    -

    The features described in this section make it easy for you to add +

    +
    +

    The features described in this section make it easy for you to add docstrings to your modules, functions and methods that can then be used by the various tools out there to make the programming experience of - your users much simpler.

    -

    36.10.1 Module docstring

    -

    Python allows a docstring at the beginning of the .py file + your users much simpler.

    +

    32.10.1 Module docstring

    +

    Python allows a docstring at the beginning of the .py file before any other statements, and it is typically used to give a general description of the entire module. SWIG supports this by setting an - option of the %module directive. For example:

    -
    -
    + option of the %module directive. For example:

    +
    +
     %module(docstring="This is the example module's docstring") example
    -
    -
    -

    When you have more than just a line or so then you can retain the - easy readability of the %module directive by using a macro. - For example:

    -
    -
    +
    +
    +

    When you have more than just a line or so then you can retain the + easy readability of the %module directive by using a macro. + For example:

    +
    +
     %define DOCSTRING
    -"The `XmlResource` class allows program resources defining menus, 
    +"The `XmlResource` class allows program resources defining menus,
     layout of controls on a panel, etc. to be loaded from an XML file."
     %enddef
     
     %module(docstring=DOCSTRING) xrc
    -
    -
    -

    36.10.2 %feature("autodoc")

    -

    As alluded to above SWIG will generate all the function and method +

    +
    +

    32.10.2 %feature("autodoc")

    +

    As alluded to above SWIG will generate all the function and method proxy wrappers with just "*args" (or "*args, **kwargs" if the -keyword option is used) for a parameter list and will then sort out the individual parameters in the C wrapper code. This is nice and simple for the wrapper code, but makes it difficult to be programmer and tool - friendly as anyone looking at the .py file will not be able to - find out anything about the parameters that the functions accept.

    -

    But since SWIG does know everything about the function it is possible + friendly as anyone looking at the .py file will not be able to + find out anything about the parameters that the functions accept.

    +

    But since SWIG does know everything about the function it is possible to generate a docstring containing the parameter types, names and default values. Since many of the docstring tools are adopting a standard of recognizing if the first thing in the docstring is a function prototype then using that instead of what they found from - introspection, then life is good once more.

    -

    SWIG's Python module provides support for the "autodoc" feature, + introspection, then life is good once more.

    +

    SWIG's Python module provides support for the "autodoc" feature, which when attached to a node in the parse tree will cause a docstring to be generated that includes the name of the function, parameter names, default values if any, and return type if any. There are also - four levels for autodoc controlled by the value given to the feature, -%feature("autodoc", "level"). The four values for level - are covered in the following sub-sections.

    -

    36.10.2.1 %feature("autodoc", "0")

    -

    When level "0" is used then the types of the parameters will not + four levels for autodoc controlled by the value given to the feature, +%feature("autodoc", "level"). The four values for level + are covered in the following sub-sections.

    +

    32.10.2.1 %feature("autodoc", "0")

    +

    When level "0" is used then the types of the parameters will not be included in the autodoc string. For example, given this function - prototype:

    -
    -
    + prototype:

    +
    +
     %feature("autodoc", "0");
     bool function_name(int x, int y, Foo* foo=NULL, Bar* bar=NULL);
    -
    -
    -

    Then Python code like this will be generated:

    -
    -
    +
    +
    +

    Then Python code like this will be generated:

    +
    +
     def function_name(*args, **kwargs):
         """function_name(x, y, foo=None, bar=None) -> bool"""
         ...
    -
    -
    -

    36.10.2.2 %feature("autodoc", "1")

    -

    When level "1" is used then the parameter types will be +

    +
    +

    32.10.2.2 %feature("autodoc", "1")

    +

    When level "1" is used then the parameter types will be used in the autodoc string. In addition, an attempt is made to simplify the type name such that it makes more sense to the Python user. Pointer, reference and const info is removed if the associated type is - has an associated Python type (%rename's are thus shown + has an associated Python type (%rename's are thus shown correctly). This works most of the time, otherwise a C/C++ type will be used. See the next section for the "docstring" feature for tweaking the docstrings to your liking. Given the example above, then turning on the - parameter types with level "1" will result in Python code like this:

    -
    -
    + parameter types with level "1" will result in Python code like this:

    +
    +
     def function_name(*args, **kwargs):
         """function_name(int x, int y, Foo foo=None, Bar bar=None) -> bool"""
         ...
    -
    -
    -

    36.10.2.3 %feature("autodoc", "2")

    -

    Level "2" results in the function prototype as per level "0". In +

    +
    +

    32.10.2.3 %feature("autodoc", "2")

    +

    Level "2" results in the function prototype as per level "0". In addition, a line of documentation is generated for each parameter using - -numpydoc style. Using the previous example, the generated code will - be:

    -
    -
    + 
    +numpydoc style. Using the previous example, the generated code will
    + be:

    +
    +
     def function_name(*args, **kwargs):
         """
         function_name(x, y, foo=None, bar=None) -> bool
    @@ -49785,23 +48086,23 @@ def function_name(*args, **kwargs):
     
         """
         ...
    -
    -
    -

    Note that the documentation for each parameter is sourced from the +

    +
    +

    Note that the documentation for each parameter is sourced from the "doc" typemap which by default shows the C/C++ type rather than the simplified Python type name described earlier for level "1". Typemaps can of course change the output for any particular type, for example - the int x parameter:

    -
    -
    + the int x parameter:

    +
    +
     %feature("autodoc", "2");
     %typemap("doc") int x "$1_name (C++ type: $1_type) -- Input $1_name dimension"
     bool function_name(int x, int y, Foo* foo=NULL, Bar* bar=NULL);
    -
    -
    -

    resulting in

    -
    -
    +
    +
    +

    resulting in

    +
    +
     def function_name(*args, **kwargs):
         """
         function_name(x, y, foo=None, bar=None) -> bool
    @@ -49814,15 +48115,15 @@ def function_name(*args, **kwargs):
         bar: Bar *
     
         """
    -
    -
    -

    36.10.2.4 %feature("autodoc", "3")

    -

    Level "3" results in the function prototype as per level "1" but +

    +
    +

    32.10.2.4 %feature("autodoc", "3")

    +

    Level "3" results in the function prototype as per level "1" but also contains the same additional line of documentation for each parameter as per level "2". Using our earlier example again, the - generated code will be:

    -
    -
    + generated code will be:

    +
    +
     def function_name(*args, **kwargs):
         """
         function_name(int x, int y, Foo foo=None, Bar bar=None) -> bool
    @@ -49836,338 +48137,334 @@ def function_name(*args, **kwargs):
     
         """
         ...
    -
    -
    -

    36.10.2.5 %feature("autodoc", "docstring")

    -

    Finally, there are times when the automatically generated autodoc +

    +
    +

    32.10.2.5 %feature("autodoc", "docstring")

    +

    Finally, there are times when the automatically generated autodoc string will make no sense for a Python programmer, particularly when a typemap is involved. So if you give an explicit value for the autodoc feature then that string will be used in place of the automatically - generated string. For example:

    -
    -
    + generated string. For example:

    +
    +
     %feature("autodoc", "GetPosition() -> (x, y)") GetPosition;
     void GetPosition(int* OUTPUT, int* OUTPUT);
    -
    -
    -

    36.10.3 %feature("docstring")

    -

    In addition to the autodoc strings described above, you can also +

    +
    +

    32.10.3 %feature("docstring")

    +

    In addition to the autodoc strings described above, you can also attach any arbitrary descriptive text to a node in the parse tree with the "docstring" feature. When the proxy module is generated then any docstring associated with classes, function or methods are output. If an item already has an autodoc string then it is combined with the docstring and they are output together. If the docstring is all on a - single line then it is output like this::

    -
    -
    + single line then it is output like this::

    +
    +
     """This is the docstring"""
    -
    -
    -

    Otherwise, to aid readability it is output like this:

    -
    -
    +
    +
    +

    Otherwise, to aid readability it is output like this:

    +
    +
     """
     This is a multi-line docstring
     with more than one line.
     """
    -
    -
    -

    36.11 Python Packages

    -

    Python has concepts of modules and packages. Modules are separate +

    +
    +

    32.11 Python Packages

    +

    Python has concepts of modules and packages. Modules are separate units of code and may be grouped together to form a package. Packages may be nested, that is they may contain subpackages. This leads to tree-like hierarchy, with packages as intermediate nodes and modules as - leaf nodes.

    -

    The hierarchy of Python packages/modules follows the hierarchy of -*.py files found in a source tree (or, more generally, in the - Python path). Normally, the developer creates new module by placing a -*.py file somewhere under Python path; the module is then named - after that *.py file. A package is created by placing an -__init__.py file within a directory; the package is then named - after that directory. For example, the following source tree:

    -
    -
    + leaf nodes.

    +

    The hierarchy of Python packages/modules follows the hierarchy of +*.py files found in a source tree (or, more generally, in the + Python path). Normally, the developer creates new module by placing a +*.py file somewhere under Python path; the module is then named + after that *.py file. A package is created by placing an +__init__.py file within a directory; the package is then named + after that directory. For example, the following source tree:

    +
    +
     mod1.py
     pkg1/__init__.py
     pkg1/mod2.py
     pkg1/pkg2/__init__.py
     pkg1/pkg2/mod3.py
    -
    -
    -

    defines the following Python packages and modules:

    -
    -
    +
    +
    +

    defines the following Python packages and modules:

    +
    +
     pkg1            # package
     pkg1.pkg2       # package
     mod1            # module
     pkg1.mod2       # module
     pkg1.pkg2.mod3  # module
    -
    -
    -

    The purpose of an __init__.py file is two-fold. First, the - existence of __init__.py in a directory informs the Python +

    +
    +

    The purpose of an __init__.py file is two-fold. First, the + existence of __init__.py in a directory informs the Python interpreter that this directory contains a Python package. Second, the - code in __init__.py is loaded/executed automatically when the - package is initialized (when it or its submodule/subpackage gets -import'ed). By default, SWIG generates proxy Python code – one -*.py file for each *.i interface. The __init__.py + code in __init__.py is loaded/executed automatically when the + package is initialized (when it or its submodule/subpackage gets +import'ed). By default, SWIG generates proxy Python code – one +*.py file for each *.i interface. The __init__.py files, however, are not generated by SWIG. They should be created by - other means. Both files (module *.py and __init__.py) + other means. Both files (module *.py and __init__.py) should be installed in appropriate destination directories in order to - obtain a desirable package/module hierarchy.

    -

    Python3 adds another option for packages with -PEP 0420 (implicit namespace packages). Implicit namespace packages + obtain a desirable package/module hierarchy.

    +

    Python3 adds another option for packages with +PEP 0420 (implicit namespace packages). Implicit namespace packages no longer use __init__.py files. SWIG generated Python modules support - implicit namespace packages. See -36.11.5 Implicit Namespace Packages for more information.

    -

    If you place a SWIG generated module into a Python package then - there are details concerning the way SWIG -searches for the wrapper module that you may want to familiarize - yourself with.

    -

    The way Python defines its modules and packages impacts SWIG users. - Some users may need to use special features such as the package - option in the %module directive or import related command line - options. These are explained in the following sections.

    -

    36.11.1 Setting the Python package -

    -

    Using the package option in the %module directive + implicit namespace packages. See +Implicit namespace packages for more information.

    +

    You can place a SWIG generated module into a Python package or keep + as a global module, details are covered a little later in +Location of modules.

    +

    The way Python defines its modules and packages impacts SWIG users. + Some users may need to use special features such as the package + option in the %module directive or import related command line + options. These are explained in the following sections.

    +

    32.11.1 Setting the Python package +

    +

    Using the package option in the %module directive allows you to specify a Python package that the module will be in when - installed.

    -
    -
    + installed.

    +
    +
     %module(package="wx") xrc
    -
    -
    -

    This is useful when the .i file is %imported by - another .i file. By default SWIG will assume that the importer +

    +
    +

    This is useful when the .i file is %imported by + another .i file. By default SWIG will assume that the importer is able to find the importee with just the module name, but if they live in separate Python packages then this won't work. However if the - importee specifies what its package is with the %module option + importee specifies what its package is with the %module option then the Python code generated for the importer will use that package name when importing the other module and in base class declarations, - etc..

    -

    SWIG assumes that the package option provided to %module - together with the module name (that is, wx.xrc in the + etc..

    +

    SWIG assumes that the package option provided to %module + together with the module name (that is, wx.xrc in the above example) forms a fully qualified (absolute) name of a module (in Python terms). This is important especially for Python 3, where absolute imports are used by default. It's up to you to place the - generated module files (.py, .so) in appropriate - subdirectories. For example, if you have an interface file foo.i - with:

    -
    -
    + generated module files (.py, .so) in appropriate
    + subdirectories. For example, if you have an interface file foo.i
    + with:

    +
    +
     %module(package="pkg1.pkg2") foo
    -
    -
    -

    then the resulting directory layout should be

    -
    -
    +
    +
    +

    then the resulting directory layout should be

    +
    +
     pkg1/
     pkg1/__init__.py
     pkg1/pkg2/__init__.py
     pkg1/pkg2/foo.py        # (generated by SWIG)
     pkg1/pkg2/_foo.so       # (shared library built from C/C++ code generated by SWIG)
    -
    -
    -

    36.11.2 Absolute and relative imports -

    -

    Suppose, we have the following hierarchy of files:

    -
    -
    +
    +
    +

    32.11.2 Absolute and relative imports +

    +

    Suppose, we have the following hierarchy of files:

    +
    +
     pkg1/
     pkg1/__init__.py
     pkg1/mod2.py
     pkg1/pkg2/__init__.py
     pkg1/pkg2/mod3.py
    -
    -
    -

    Let the contents of pkg1/pkg2/mod3.py be

    -
    -
    +
    +
    +

    Let the contents of pkg1/pkg2/mod3.py be

    +
    +
     class M3: pass
    -
    -
    -

    We edit pkg1/mod2.py and want to import module -pkg1/pkg2/mod3.py in order to derive from class M3. We can - write appropriate Python code in several ways, for example:

    -
      -
    1. -

      Using "import <>" syntax with absolute package name:

      -
      -
      +
      +
      +

      We edit pkg1/mod2.py and want to import module +pkg1/pkg2/mod3.py in order to derive from class M3. We can + write appropriate Python code in several ways, for example:

      +
        +
      1. +

        Using "import <>" syntax with absolute package name:

        +
        +
         # pkg1/mod2.py
         import pkg1.pkg2.mod3
         class M2(pkg1.pkg2.mod3.M3): pass
        -
        -
      2. -
      3. -

        Using "import <>" syntax with package name relative to -pkg1 (only in Python 2.7 and earlier):

        -
        -
        +
        +
      4. +
      5. +

        Using "import <>" syntax with package name relative to +pkg1 (only in Python 2.7 and earlier):

        +
        +
         # pkg1/mod2.py
         import pkg2.mod3
         class M2(pkg2.mod3.M3): pass
        -
        -
      6. -
      7. -

        Using "from <> import <>" syntax (relative import syntax, - only in Python 2.5 and later):

        -
        -
        +
        +
      8. +
      9. +

        Using "from <> import <>" syntax (relative import syntax, + only in Python 2.5 and later):

        +
        +
         # pkg1/mod2.py
         from .pkg2 import mod3
         class M2(mod3.M3): pass
        -
        -
      10. -
      11. -

        Other variants, for example the following construction in order to - have the pkg2.mod3.M3 symbol available in mod2 as in - point 2 above (but now under Python 3):

        -
        -
        +
        +
      12. +
      13. +

        Other variants, for example the following construction in order to + have the pkg2.mod3.M3 symbol available in mod2 as in + point 2 above (but now under Python 3):

        +
        +
         # pkg1/mod2.py
         from . import pkg2
         from .pkg2 import mod3
         class M2(pkg2.mod3.M3): pass
        -
        -
      14. -
      -

      Now suppose we have mod2.i with

      -
      -
      +
      +
    2. +
    +

    Now suppose we have mod2.i with

    +
    +
     // mod2.i
     %module (package="pkg1") mod2
     %import "mod3.i"
     // ...
    -
    -
    -

    and mod3.i with

    -
    -
    +
    +
    +

    and mod3.i with

    +
    +
     // mod3.i
     %module (package="pkg1.pkg2") mod3
     // ...
    -
    -
    -

    By default, SWIG would generate mod2.py proxy file with -import directive as in point 1. This can be changed with the --relativeimport command line option. The -relativeimport - instructs SWIG to organize imports as in point 2 (for Python < 2.7.0) - or as in point 4 for Python 2.7.0 and newer. This is a check done at - the time the module is imported. In short, if you have mod2.i - and mod3.i as above, then without -relativeimport - SWIG will write

    -
    -
    +
    +
    +

    By default, SWIG will generate mod2.py proxy file with +import directive as in point 1. This can be changed with the +-relativeimport command line option. The -relativeimport + instructs SWIG to organize imports as in point 4 for Python 2.7.0 and + newer.

    +

    Compatibility Note: Versions of SWIG prior to SWIG-4.0.0 + supported Python < 2.7.0 and would organize the imports as in point 2 + if an older version of Python was detected at runtime.

    +

    In short, if you have mod2.i and mod3.i as above, + then without -relativeimport SWIG will write

    +
    +
     import pkg1.pkg2.mod3
    -
    -
    -

    to mod2.py proxy file, and with -relativeimport it - will write

    -
    -
    -from sys import version_info
    -if version_info >= (2, 7, 0):
    -    from . import pkg2
    -    import pkg1.pkg2.mod3
    -else:
    -    import pkg2.mod3
    -del version_info
    -
    -
    -

    You should avoid using relative imports and use absolute ones +

    +
    +

    to mod2.py proxy file, and with -relativeimport it + will write

    +
    +
    +from . import pkg2
    +from .pkg2 import mod3
    +
    +
    +

    You should avoid using relative imports and use absolute ones whenever possible. There are some cases, however, when relative imports may be necessary. The first example is, when some (legacy) Python code refers entities imported by proxy files generated by SWIG, and it assumes that the proxy file uses relative imports. Second case is, when - one puts import directives in __init__.py to import symbols + one puts import directives in __init__.py to import symbols from submodules or subpackages and the submodule depends on other - submodules (discussed later).

    -

    36.11.3 Enforcing absolute import - semantics

    -

    As you may know, there is an incompatibility in import semantics (for - the import <> syntax) between Python 2 and 3. In Python 2.4 - and earlier it is not clear whether

    -
    -
    + submodules (discussed later).

    +

    32.11.3 Enforcing absolute import + semantics

    +

    As you may know, there is an incompatibility in import semantics (for + the import <> syntax) between Python 2 and 3. In Python 2.4 + and earlier it is not clear whether

    +
    +
     import foo
    -
    -
    -

    refers to a top-level module or to another module inside the current - package. In Python 3 it always refers to a top-level module (see -PEP 328). To instruct Python 2.5 through 2.7 to use new semantics - (that is import foo is interpreted as absolute import), one - has to put the following line

    -
    -
    +
    +
    +

    refers to a top-level module or to another module inside the current + package. In Python 3 it always refers to a top-level module (see +PEP 328). To instruct Python 2.5 through 2.7 to use new semantics + (that is import foo is interpreted as absolute import), one + has to put the following line

    +
    +
     from __future__ import absolute_import
    -
    -
    -

    at the very beginning of his proxy *.py file. In SWIG, it - may be accomplished with %pythonbegin directive as follows:

    -
    -
    +
    +
    +

    at the very beginning of your proxy *.py file. In SWIG, it + may be accomplished with %pythonbegin directive as follows:

    +
    +
     %pythonbegin %{
     from __future__ import absolute_import
     %}
    -
    -
    -

    36.11.4 Importing from __init__.py -

    -

    Imports in __init__.py are handy when you want to populate a +

    +
    +

    32.11.4 Importing from __init__.py +

    +

    Imports in __init__.py are handy when you want to populate a package's namespace with names imported from other modules. In SWIG based projects this approach may also be used to split large pieces of code into smaller modules, compile them in parallel and then - re-assemble everything at runtime by importing submodules' contents in -__init__.py, for example.

    -

    Unfortunately import directives in __init__.py may cause + re-assemble everything at runtime by importing submodules' contents in +__init__.py, for example.

    +

    Unfortunately import directives in __init__.py may cause problems, especially if they refer to a package's submodules. This is caused by the way Python initializes packages. If you spot problems - with imports from __init__.py try using -relativeimport - option. Below we explain in detail one issue, for which the --relativeimport workaround may be helpful.

    -

    Consider the following example (Python 3):

    -
    -
    + with imports from __init__.py try using -relativeimport
    + option. Below we explain in detail one issue, for which the 
    +-relativeimport workaround may be helpful.

    +

    Consider the following example (Python 3):

    +
    +
     pkg1/__init__.py        # (empty)
     pkg1/pkg2/__init__.py   # (imports something from bar.py)
     pkg1/pkg2/foo.py
     pkg1/pkg2/bar.py        # (imports foo.py)
    -
    -
    -

    If the file contents are:

    -
      -
    • -

      pkg1/pkg2/__init__.py:

      -
      -
      +
      +
      +

      If the file contents are:

      +
        +
      • +

        pkg1/pkg2/__init__.py:

        +
        +
         # pkg1/pkg2/__init__.py
         from .bar import Bar
        -
        -
      • -
      • -

        pkg1/pkg2/foo.py:

        -
        -
        +
        +
      • +
      • +

        pkg1/pkg2/foo.py:

        +
        +
         # pkg1/pkg2/foo.py
         class Foo: pass
        -
        -
      • -
      • -

        pkg1/pkg2/bar.py:

        -
        -
        +
        +
      • +
      • +

        pkg1/pkg2/bar.py:

        +
        +
         # pkg1/pkg2/bar.py
         import pkg1.pkg2.foo
         class Bar(pkg1.pkg2.foo.Foo): pass
        -
        -
      • -
      -

      Now if one simply used import pkg1.pkg2, it will usually - fail:

      -
      -
      +
      +
    • +
    +

    Now if one simply used import pkg1.pkg2, it will usually + fail:

    +
    +
     >>> import pkg1.pkg2
     Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
    @@ -50176,144 +48473,266 @@ Traceback (most recent call last):
       File "./pkg1/pkg2/bar.py", line 3, in <module>
         class Bar(pkg1.pkg2.foo.Foo): pass
     AttributeError: 'module' object has no attribute 'pkg2'
    -
    -
    -

    Surprisingly, if we execute the import pkg1.pkg2 directive +

    +
    +

    Surprisingly, if we execute the import pkg1.pkg2 directive for the second time, it succeeds. The reason seems to be following: - when Python spots the from .bar import Bar directive in -pkg1/pkg2/__init__.py it starts loading pkg1/pkg2/bar.py. - This module imports pkg1.pkg2.foo in turn and tries to use -pkg1.pkg2.foo.Foo, but the package pkg1 is not fully + when Python spots the from .bar import Bar directive in +pkg1/pkg2/__init__.py it starts loading pkg1/pkg2/bar.py. + This module imports pkg1.pkg2.foo in turn and tries to use +pkg1.pkg2.foo.Foo, but the package pkg1 is not fully initialized yet (the initialization procedure is actually in progress) - and it seems like the effect of the already seen import - pkg1.pkg2.pkg3.foo is "delayed" or ignored. Exactly the same may - happen to a proxy module generated by SWIG.

    -

    One workaround for this case is to use a relative import in -pkg1/pkg2/bar.py. If we change bar.py to be:

    -
    -
    + and it seems like the effect of the already seen import
    + pkg1.pkg2.pkg3.foo is "delayed" or ignored. Exactly the same may
    + happen to a proxy module generated by SWIG.

    +

    One workaround for this case is to use a relative import in +pkg1/pkg2/bar.py. If we change bar.py to be:

    +
    +
     from .pkg3 import foo
     class Bar(foo.Foo): pass
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     from . import pkg3
     from .pkg3 import foo
     class Bar(pkg3.foo.Foo): pass
    -
    -
    -

    then the example works again. With SWIG, you need to enable the --relativeimport option in order to have the above workaround in - effect (note, that the Python 2 case also needs the -relativeimport - workaround).

    -

    36.11.5 Implicit - Namespace Packages

    -

    Python 3.3 introduced -PEP 0420 which implements implicit namespace packages. In a +

    +
    +

    then the example works again. With SWIG, you need to enable the +-relativeimport option in order to have the above workaround in + effect (note, that the Python 2 case also needs the -relativeimport + workaround).

    +

    32.11.5 Implicit + namespace packages

    +

    Python 3.3 introduced +PEP 0420 which implements implicit namespace packages. In a nutshell, implicit namespace packages remove the requirement of an __init__.py file and allow packages to be split across multiple PATH - elements. For example:

    -
    -
    + elements. For example:

    +
    +
     /fragment1/pkg1/mod1.py
     /fragment2/pkg1/mod2.py
     /fragment3/pkg1/mod3.py
    -
    -
    -

    If PYTHONPATH is set to "/fragment1:/fragment2:/fragment3", then +

    +
    +

    If PYTHONPATH is set to "/fragment1:/fragment2:/fragment3", then mod1, mod2 and mod3 will be part of pkg1. This allows for splitting of packages into separate pieces. This can be useful for SWIG generated - wrappers in the following way.

    -

    Suppose you create a SWIG wrapper for a module called robin. The + wrappers in the following way.

    +

    Suppose you create a SWIG wrapper for a module called robin. The SWIG generated code consists of two files robin.py and _robin.so. You wish to make these modules part of a subpackage (brave.sir). With implicit namespace packages you can place these files in the following - configurations:

    -

    Using PYTHONPATH="/some/path"

    -
    -
    + configurations:

    +

    Using PYTHONPATH="/some/path"

    +
    +
     /some/path/brave/sir/robin.py
     /some/path/brave/sir/_robin.so
    -
    -
    -

    Using PYTHONPATH="/some/path:/some/other/path"

    -
    +
    +
    +

    Using PYTHONPATH="/some/path:/some/other/path"

    +
     /some/path/brave/sir/robin.py
     /some/other/path/brave/sir/_robin.so
    -
    -

    -

    Finally suppose that your pure python code is stored in a .zip file +

    +

    +

    Finally suppose that your pure Python code is stored in a .zip file or some other way (database, web service connection, etc). Python can load the robin.py module using a custom importer. But the _robin.so module will need to be located on a file system. Implicit namespace packages make this possible. For example, using - PYTHONPATH="/some/path/foo.zip:/some/other/path"

    -

    Contents of foo.zip

    -
    -
    + PYTHONPATH="/some/path/foo.zip:/some/other/path"

    +

    Contents of foo.zip

    +
    +
     brave/
     brave/sir/
     brave/sir/robin.py
    -
    -
    -

    File system contents

    -
    -
    +
    +
    +

    File system contents

    +
    +
     /some/other/path/brave/sir/_robin.so
    -
    -
    -

    Support for implicit namespace packages was added to python-3.3. The - zipimporter requires python-3.5.1 or newer to work with subpackages.

    -

    Compatibility Note: Support for implicit namespace packages - was added in SWIG-3.0.9.

    -

    36.11.6 Searching for the wrapper - module

    -

    When SWIG creates wrappers from an interface file, say foo.i, two - Python modules are created. There is a pure Python module module - (foo.py) and C/C++ code which is built and linked into a dynamically - (or statically) loaded low-level module _foo (see the -Preliminaries section for details). So, the interface file really +

    +
    +

    Support for implicit namespace packages was added to python-3.3. The + zipimporter requires python-3.5.1 or newer to work with subpackages.

    +

    Compatibility Note: Support for implicit namespace packages + was added in SWIG-3.0.9.

    +

    32.11.6 Location of modules

    +

    When SWIG creates wrappers from an interface file, say foo.i, two + Python modules are created. There is a pure Python module (foo.py) and + C/C++ code which is compiled and linked into a dynamically (or + statically) loaded low-level module _foo (see the +Preliminaries section for details). So, the interface file really defines two Python modules. How these two modules are loaded is covered - next.

    -

    The pure Python module needs to load the C/C++ module in order to - link to the wrapped C/C++ methods. To do this it must make some - assumptions about what package the C/C++ module may be located in. The - approach the pure Python module uses to find the C/C++ module is as - follows:

    -
      -
    1. -

      The pure Python module, foo.py, tries to load the C/C++ module, _foo, - from the same package foo.py is located in. The package name is - determined from the __name__ attribute given to foo.py by the - Python loader that imported foo.py. If foo.py is not in a package then - _foo is loaded as a global module.

      -
    2. -
    3. -

      If the above import of _foo results in an ImportError being thrown, - then foo.py makes a final attempt to load _foo as a global module.

      -
    4. -
    -

    The Python code implementing the loading logic described above is - quite complex to handle multiple versions of Python, but it can be - replaced with custom code. This is not recommended unless you - understand the full intricacies of importing Python modules. The custom - code can be specified by setting the moduleimport option of - the %module directive with the appropriate import code. For - example:

    -
    -
    + next.

    +

    The pure Python module needs to load the C/C++ module in order to + call the wrapped C/C++ methods. To do this it must make some + assumptions about the location of the C/C++ module. There are two + configurations that are supported by default.

    +
      +
    1. +

      Both modules in the same package

      +
    2. +
    3. +

      Both modules are global

      +
    4. +
    +

    Additional configurations are supported but require custom import + code.

    +

    The following sub-sections look more closely at the two default + configurations as well as some customized configurations. An input + interface file, foo.i, results in the two modules foo.py and _foo.so + for each of the configurations.

    +

    32.11.6.1 Both + modules in the same package

    +

    In this configuration, the pure Python module, foo.py, tries to load + the C/C++ module, _foo, from the same package foo.py is located in. The + package name is determined from the __package__ attribute if + available, see PEP + 366. Otherwise it is derived from the __name__ attribute + given to foo.py by the Python loader that imported foo.py. The + interface file for this configuration would contain:

    +
    +
    +%module(package="mypackage") foo
    +
    +
    +

    The location of the files could be as follows:

    +
    +
    +/dir/mypackage/foo.py
    +/dir/mypackage/__init__.py
    +/dir/mypackage/_foo.so
    +
    +
    +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    +
    +
    +from mypackage import foo
    +
    +
    +

    32.11.6.2 Both + modules are global

    +

    In this configuration, there are no packages. If foo.py is not in a + package, that is, it is a global module, then _foo is loaded as a + global module. The interface file for this configuration would contain:

    +
    +
    +%module foo
    +
    +
    +

    The location of the files could be as follows:

    +
    +
    +/dir/foo.py
    +/dir/_foo.so
    +
    +
    +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    +
    +
    +import foo
    +
    +
    +

    32.11.6.3 Split + modules custom configuration

    +

    In this non-standard 'split module' configuration, the pure Python + module is in a package and the low level C/C++ module is global. This + configuration is not generally recommended and is not supported by + default as it needs a custom configuration. The module import code + customization required is via the moduleimport attribute in + the %module directive. The next sub-section elaborates further + on this. The interface file for this split module configuration would + contain:

    +
    +
    +%module(package="mypackage", moduleimport="import _foo") foo
    +
    +
    +

    When using -builtin, use the following instead (the reasons + are also covered shortly in the next sub-section):

    +
    +
    +%module(package="mypackage", moduleimport="from _foo import *") foo
    +
    +
    +

    The location of the files could be as follows:

    +
    +
    +/dir/mypackage/foo.py
    +/dir/mypackage/__init__.py
    +/dir/_foo.so
    +
    +
    +

    Assuming /dir/ is in PYTHONPATH, the module can be imported using

    +
    +
    +from mypackage import foo
    +
    +
    +

    Compatibility Note: Versions of SWIG prior to SWIG-4.0.0 + supported split modules without the above customization. However, this + had to be removed as the default import code often led to confusion due + to obfuscation of genuine Python ImportError problems. Using + one of the two default configurations is the recommended approach now.

    +

    32.11.6.4 More on customizing + the module import code

    +

    The Python code implementing the default import logic is shown + below. It supports the two configurations described earlier, that is, + either both modules are in a package or loading both as global modules. + The code is generated into the pure Python module, foo.py, and merely + imports the low-level _foo module.

    +
    +
    +if __package__ or '.' in __name__:
    +    from . import _foo
    +else:
    +    import _foo
    +
    +
    +

    This import code implementation is non-trivial but it can be + replaced with custom code providing opportunities to make it simpler + and/or more flexible. This is not normally recommended though unless + you have a good understanding of the intricacies of importing Python + modules. The custom code can be specified by setting the +moduleimport option of the %module directive with the + appropriate import code. For example:

    +
    +
     %module(moduleimport="import _foo") foo
    -
    -
    -

    The special variable $module will also be expanded into the - low-level C/C++ module name, _foo in the case above. When you - have more than just a line or so then you can retain the easy - readability of the %module directive by using a macro. For - example:

    -
    -
    +
    +
    +

    This will replace the default import logic above and generate the + following into the pure Python module, foo.py:

    +
    +
    +import _foo
    +
    +
    +

    In fact the above is a simplification customization for the + configuration where both modules are global; it removes the logic for + also handling the modules being in a package.

    +

    There is a special variable, $module, which is expanded + into the low-level C/C++ module name, _foo in the case above. + The identical output would be generated if instead the following had + been used:

    +
    +
    +%module(moduleimport="import $module") foo
    +
    +
    +

    When you have many lines you can retain the easy readability of the +%module directive by using a macro. For example:

    +
    +
     %define MODULEIMPORT
     "
     print 'Loading low-level module $module'
    @@ -50323,267 +48742,244 @@ print 'Module has loaded'
     %enddef
     
     %module(moduleimport=MODULEIMPORT) foo
    -
    -
    -

    Now let's consider an example using the SWIG default loading logic. - Suppose foo.i is compiled into foo.py and _foo.so. Assuming /dir is on - PYTHONPATH, then the two modules can be installed and used in the - following ways:

    -

    36.11.6.1 Both - modules in the same package

    -

    Both modules are in one package:

    -
    -
    -/dir/package/foo.py
    -/dir/package/__init__.py
    -/dir/package/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -from package import foo
    -
    -
    -

    36.11.6.2 Split - modules

    -

    The pure python module is in a package and the C/C++ module is - global:

    -
    -
    -/dir/package/foo.py
    -/dir/package/__init__.py
    -/dir/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -from package import foo
    -
    -
    -

    36.11.6.3 Both - modules are global

    -

    Both modules are global:

    -
    -
    -/dir/foo.py
    -/dir/_foo.so
    -
    -
    -

    And imported with

    -
    -
    -import foo
    -
    -
    -

    If _foo is statically linked into an embedded Python interpreter, - then it may or may not be in a Python package. This depends in the - exact way the module was loaded statically. The above search order will - still be used for statically loaded modules. So, one may place the - module either globally or in a package as desired.

    -

    36.11.6.4 Statically linked C - modules

    -

    It is strongly recommended to use dynamically linked modules for the +

    +
    +

    This will of course generate the following into the pure Python + module:

    +
    +
    +print 'Loading low-level module $module'
    +import _foo
    +print 'Module has loaded'
    +
    +
    +

    When using the -builtin option, the link between the pure + Python module and the low-level C/C++ module is slightly different as + all the objects from the low-level module are imported directly into + the pure Python module. The default import loading code is thus + different:

    +
    +
    +if __package__ or '.' in __name__:
    +    from ._foo import *
    +else:
    +    from _foo import *
    +
    +
    +

    Any customizations must import the code in a similar manner. The + best way to support both with and without -builtin is to make + use of the SWIGPYTHON_BUILTIN macro which is defined when +-builtin is specified. The following will do this for the +split modules case above.

    +
    +
    +#if defined(SWIGPYTHON_BUILTIN) /* defined when using -builtin */
    +%module(package="mypackage", moduleimport="from $module import *") foo
    +#else
    +%module(package="mypackage", moduleimport="import $module") foo
    +#endif
    +
    +
    +

    32.11.6.5 Statically linked C + modules

    +

    It is strongly recommended to use dynamically linked modules for the C portion of your pair of Python modules. If for some reason you still need to link the C module of the pair of Python modules generated by SWIG into your interpreter, then this section provides some details on how this impacts the pure Python modules ability to locate the other - part of the pair. Please also see the Static - Linking section.

    -

    When Python is extended with C code the Python interpreter needs to + part of the pair. Please also see the Static + Linking section.

    +

    When Python is extended with C code the Python interpreter needs to be informed about details of the new C functions that have been linked into the executable. The code to do this is created by SWIG and is automatically called in the correct way when the module is dynamically loaded. However when the code is not dynamically loaded (because it is statically linked) Then the initialization method for the module created by SWIG is not called automatically and the Python interpreter - has no idea that the new SWIG C module exists.

    -

    Before Python 3, one could simply call the init method created by + has no idea that the new SWIG C module exists.

    +

    Before Python 3, one could simply call the init method created by SWIG which would have normally been called when the shared object was dynamically loaded. The specific name of this method is not given here - because statically linked modules are not encouraged with SWIG ( -Static Linking). However one can find this init function in the C - file generated by SWIG.

    -

    If you are really keen on static linking there are two ways to + because statically linked modules are not encouraged with SWIG ( +Static Linking). However one can find this init function in the C + file generated by SWIG.

    +

    If you are really keen on static linking there are two ways to initialize the SWIG generated C module with the init method. Which way you use depends on what version of Python your module is being linked with. Python 2 and Python 3 treat this init function differently. And the way they treat it affects how the pure Python module will be able - to locate the C module.

    -

    The details concerning this are covered completly in the - documentation for Python itself. Links to the relavent sections follow:

    - -

    There are two keys things to understand. The first is that in Python + to locate the C module.

    +

    The details concerning this are covered completely in the + documentation for Python itself. Links to the relevant sections follow:

    + +

    There are two keys things to understand. The first is that in Python 2 the init() function returns void. In Python 3 the init() function - returns a PyObject * which points to the new module. Secondly, when you - call the init() method manually, you are the Python importer. So, you - determine which package the C module will be located in.

    -

    So, if you are using Python 3 it is important that you follow what is + returns a PyObject * which points to the new module. Secondly, + when you call the init() method manually, you are the Python importer. + So, you determine which package the C module will be located in.

    +

    So, if you are using Python 3 it is important that you follow what is described in the Python documentation linked above. In particular, you - can't simply call the init() function generated by SWIG and cast the - PyObject pointer it returns over the side. If you do then Python 3 will - have no idea that your C module exists and the pure Python half of your - wrapper will not be able to find it. You need to register your module - with the Python interpreter as described in the Python docs.

    -

    With Python 2 things are somewhat more simple. In this case the init - function returns void. Calling it will register your new C module as a - global module. The pure Python part of the SWIG wrapper will be - able to find it because it tries both the pure Python module it is part - of and the global module. If you wish not to have the statically linked - module be a global module then you will either need to refer to the - Python documentation on how to do this (remember you are now the Python - importer) or use dynamic linking.

    -

    36.12 Python 3 Support

    -

    SWIG is able to support Python 3.0. The wrapper code generated by - SWIG can be compiled with both Python 2.x or 3.0. Further more, by - passing the -py3 command line option to SWIG, wrapper code + can't simply call the init() function generated by SWIG and cast the +PyObject pointer it returns over the side. If you do then Python 3 + will have no idea that your C module exists and the pure Python half of + your wrapper will not be able to find it. You need to register your + module with the Python interpreter as described in the Python docs.

    +

    With Python 2 things are somewhat more simple. In this case the + init() function returns void. Calling it will register your new C + module as a global module. The pure Python part of the SWIG + wrapper will be able to find it because it tries both the pure Python + module it is part of and the global module. If you wish not to have the + statically linked module be a global module then you will either need + to refer to the Python documentation on how to do this (remember you + are now the Python importer) or use dynamic linking.

    +

    32.12 Python 3 Support

    +

    SWIG is able to support Python 3.x. The wrapper code generated by + SWIG can be compiled with both Python 2.x or 3.x. Further more, by + passing the -py3 command line option to SWIG, wrapper code with some Python 3 specific features can be generated (see below - subsections for details of these features). The -py3 option - also disables some incompatible features for Python 3, such as --classic.

    -

    There is a list of known-to-be-broken features in Python 3:

    -
      -
    • No more support for FILE* typemaps, because PyFile_AsFile has been - dropped in Python 3.
    • -
    • The -apply command line option is removed and generating - code using apply() is no longer supported.
    • -
    -

    The following are Python 3.0 new features that are currently - supported by SWIG.

    -

    36.12.1 Function annotation

    -

    The -py3 option will enable function annotation support. - When used SWIG is able to generate proxy method definitions like this:

    -
    -
    + subsections for details of these features).

    +

    There is a list of known-to-be-broken features in Python 3:

    +
      +
    • No more support for FILE* typemaps, because PyFile_AsFile has been + dropped in Python 3.
    • +
    • The -apply command line option is removed and generating + code using apply() is no longer supported.
    • +
    +

    The following are Python 3 new features that are currently supported + by SWIG.

    +

    32.12.1 Function annotation

    +

    The -py3 option will enable function annotation support. + When used SWIG is able to generate proxy method definitions like this:

    +
    +
       def foo(self, bar : "int"=0) -> "void" : ...
    -
    -
    -

    Also, even if without passing SWIG the -py3 option, the - parameter list still could be generated:

    -
    -
    +
    +
    +

    Also, even if without passing SWIG the -py3 option, the + parameter list still could be generated:

    +
    +
       def foo(self, bar=0): ...
    -
    -
    -

    But for overloaded function or method, the parameter list would - fallback to *args or self, *args, and **kwargs +

    +
    +

    But for overloaded function or method, the parameter list would + fallback to *args or self, *args, and **kwargs may be append depend on whether you enabled the keyword argument. This fallback is due to all overloaded functions share the same function in - SWIG generated proxy class.

    -

    For detailed usage of function annotation, see -PEP 3107.

    -

    36.12.2 Buffer interface

    -

    Buffer protocols were revised in Python 3. SWIG also gains a series - of new typemaps to support buffer interfaces. These typemap macros are - defined in pybuffer.i, which must be included in order to use - them. By using these typemaps, your wrapped function will be able to - accept any Python object that exposes a suitable buffer interface.

    -

    For example, the get_path() function puts the path string - into the memory pointed to by its argument:

    -
    -
    + SWIG generated proxy class.

    +

    For detailed usage of function annotation, see +PEP 3107.

    +

    32.12.2 Buffer interface

    +

    SWIG has a series of typemaps to support buffer interfaces. These + typemap macros are defined in pybuffer.i, which must be + included in order to use them. By using these typemaps, your wrapped + function will be able to accept any Python object that exposes a + suitable buffer interface.

    +

    For example, the get_path() function puts the path string + into the memory pointed to by its argument:

    +
    +
     void get_path(char *s);
    -
    -
    -

    Then you can write a typemap like this: (the following example is - applied to both Python 3.0 and 2.6, since the bytearray type - is backported to 2.6.

    -
    -
    +
    +
    +

    Then you can write a typemap like this: (the following example is + applied to both Python 2 and 3, since the bytearray type was + backported to 2.6.

    +
    +
     %include <pybuffer.i>
     %pybuffer_mutable_string(char *str);
    -void get_path(char *s);
    -
    -
    -

    And then on the Python side the wrapped get_path could be - used in this way:

    -
    -
    +void get_path(char *str);
    +
    +
    +

    And then on the Python side the wrapped get_path could be + used in this way:

    +
    +
     >>> p = bytearray(10)
     >>> get_path(p)
     >>> print(p)
     bytearray(b'/Foo/Bar/\x00')
    -
    -
    -

    The macros defined in pybuffer.i are similar to those in -cstring.i:

    -

    %pybuffer_mutable_binary(parm, size_parm)

    -
    -

    The macro can be used to generate a typemap which maps a buffer of - an object to a pointer provided by parm and a size argument - provided by size_parm. For example:

    -
    -
    +
    +
    +

    The macros defined in pybuffer.i are similar to those in +cstring.i:

    +

    %pybuffer_mutable_binary(parm, size_parm)

    +
    +

    The macro can be used to generate a typemap which maps a buffer of + an object to a pointer provided by parm and a size argument + provided by size_parm. For example:

    +
    +
     %pybuffer_mutable_binary(char *str, size_t size);
     ...
     int snprintf(char *str, size_t size, const char *format, ...);
    -
    -
    -

    In Python:

    -
    -
    +
    +
    +

    In Python:

    +
    +
     >>> buf = bytearray(6)
     >>> snprintf(buf, "Hello world!")
     >>> print(buf)
     bytearray(b'Hello\x00')
    ->>> 
    -
    -
    -

    %pybuffer_mutable_string(parm)

    -
    -

    This typemap macro requires the buffer to be a zero terminated - string, and maps the pointer of the buffer to parm. For - example:

    -
    -
    +>>>
    +
    +
    +

    %pybuffer_mutable_string(parm)

    +
    +

    This typemap macro requires the buffer to be a zero terminated + string, and maps the pointer of the buffer to parm. For + example:

    +
    +
     %pybuffer_mutable_string(char *str);
     ...
     size_t make_upper(char *str);
    -
    -
    -

    In Python:

    -
    -
    +
    +
    +

    In Python:

    +
    +
     >>> buf = bytearray(b'foo\x00')
     >>> make_upper(buf)
     >>> print(buf)
     bytearray(b'FOO\x00')
     >>>
    -
    -
    -

    Both %pybuffer_mutable_binary and -%pybuffer_mutable_string require the provided buffer to be mutable, - eg. they can accept a bytearray type but can't accept an - immutable byte type.

    -
    -

    %pybuffer_binary(parm, size_parm)

    -
    -

    This macro maps an object's buffer to a pointer parm and a - size size_parm. It is similar to %pybuffer_mutable_binary -, except the %pybuffer_binary an accept both mutable and +

    +
    +

    Both %pybuffer_mutable_binary and +%pybuffer_mutable_string require the provided buffer to be mutable, + eg. they can accept a bytearray type but can't accept an + immutable byte type.

    + +

    %pybuffer_binary(parm, size_parm)

    +
    +

    This macro maps an object's buffer to a pointer parm and a + size size_parm. It is similar to %pybuffer_mutable_binary +, except the %pybuffer_binary can accept both mutable and immutable buffers. As a result, the wrapped function should not modify - the buffer.

    -
    -

    %pybuffer_string(parm)

    -
    -

    This macro maps an object's buffer as a string pointer parm -. It is similar to %pybuffer_mutable_string but the buffer + the buffer.

    +
    +

    %pybuffer_string(parm)

    +
    +

    This macro maps an object's buffer as a string pointer parm +. It is similar to %pybuffer_mutable_string but the buffer could be both mutable and immutable. And your function should not - modify the buffer.

    -
    -

    36.12.3 Abstract base classes

    -

    By including pyabc.i and using the -py3 command + modify the buffer.

    + +

    32.12.3 Abstract base classes

    +

    By including pyabc.i and using the -py3 command line option when calling SWIG, the proxy classes of the STL containers - will automatically gain an appropriate abstract base class. For - example, the following SWIG interface:

    -
    -
    + will automatically gain an appropriate abstract base class from the 
    +collections.abc module. For example, the following SWIG interface:

    +
    +
     %include <pyabc.i>
     %include <std_map.i>
     %include <std_list.i>
    @@ -50592,95 +48988,118 @@ namespace std {
       %template(Mapii) map<int, int>;
       %template(IntList) list<int>;
     }
    -
    -
    -

    will generate a Python proxy class Mapii inheriting from -collections.MutableMap and a proxy class IntList - inheriting from collections.MutableSequence.

    -

    pyabc.i also provides a macro %pythonabc that - could be used to define an abstract base class for your own C++ class:

    -
    -
    -%pythonabc(MySet, collections.MutableSet);
    -
    -
    -

    For details of abstract base class, please see -PEP 3119.

    -

    36.12.4 Byte string output conversion

    -

    By default, any byte string (char* or std::string) +

    +
    +

    will generate a Python proxy class Mapii inheriting from +collections.abc.MutableMap and a proxy class IntList + inheriting from collections.abc.MutableSequence.

    +

    pyabc.i also provides a macro %pythonabc that + could be used to define an abstract base class for your own C++ class:

    +
    +
    +%pythonabc(MySet, collections.abc.MutableSet);
    +
    +
    +

    For details of abstract base class, please see +PEP 3119.

    +

    Compatibility Note: SWIG-4.0.0 changed the base classes to + use the collections.abc module instead of collections + due to the deprecation of the classes in the collections + module in Python 3.7. The collections.abc module was + introduced in Python 3.3 and hence this feature requires Python 3.3 or + later.

    +

    32.12.4 Byte string output conversion

    +

    By default, any byte string (char* or std::string) returned from C or C++ code is decoded to text as UTF-8. This decoding - uses the surrogateescape error handler under Python 3.1 or + uses the surrogateescape error handler under Python 3.1 or higher -- this error handler decodes invalid byte sequences to high surrogate characters in the range U+DC80 to U+DCFF. As an example, consider the following SWIG interface, which exposes a byte string that - cannot be completely decoded as UTF-8:

    -
    -
    + cannot be completely decoded as UTF-8:

    +
    +
     %module example
     
    -%include <std_string.i>
    -
     %inline %{
     
    -const char* non_utf8_c_str(void) {
    -        return "h\xe9llo w\xc3\xb6rld";
    +const char * non_utf8_c_str(void) {
    +  return "h\xe9llo w\xc3\xb6rld";
    +}
    +
    +void instring(const char *s) {
    +  ...
     }
     
     %}
    -
    -
    -

    When this method is called from Python 3, the return value is the - following text string:

    -
    -
    +
    +
    +

    Note that "\xe9" is an invalid UTF-8 encoding, but "\xc3\xb6" is + valid. When this method is called from Python 3, the return value is + the following text string:

    +
    +
     >>> s = example.non_utf8_c_str()
     >>> s
     'h\udce9llo wörld'
    -
    -
    -

    Since the C string contains bytes that cannot be decoded as UTF-8, +

    +
    +

    Since the C string contains bytes that cannot be decoded as UTF-8, those raw bytes are represented as high surrogate characters that can - be used to obtain the original byte sequence:

    -
    -
    + be used to obtain the original byte sequence:

    +
    +
     >>> b = s.encode('utf-8', errors='surrogateescape')
     >>> b
     b'h\xe9llo w\xc3\xb6rld'
    -
    -
    -

    One can then attempt a different encoding, if desired (or simply +

    +
    +

    One can then attempt a different encoding, if desired (or simply leave the byte string as a raw sequence of bytes for use in binary - protocols):

    -
    -
    + protocols):

    +
    +
     >>> b.decode('latin-1')
     'héllo wörld'
    -
    -
    -

    Note, however, that text strings containing surrogate characters are - rejected with the default strict codec error handler. For - example:

    -
    -
    +
    +
    +

    Note, however, that text strings containing surrogate characters are + rejected with the default strict codec error handler. For + example:

    +
    +
     >>> with open('test', 'w') as f:
     ...     print(s, file=f)
     ...
     Traceback (most recent call last):
       File "<stdin>", line 2, in <module>
     UnicodeEncodeError: 'utf-8' codec can't encode character '\udce9' in position 1: surrogates not allowed
    -
    -
    -

    This requires the user to check most strings returned by SWIG +

    +
    +

    This requires the user to check most strings returned by SWIG bindings, but the alternative is for a non-UTF8 byte string to be - completely inaccessible in Python 3 code.

    -

    For more details about the surrogateescape error handler, - please see PEP 383 -.

    -

    In some cases, users may wish to instead handle all byte strings as - bytes objects in Python 3. This can be accomplished by adding -SWIG_PYTHON_STRICT_BYTE_CHAR to the generated code:

    -
    -
    + completely inaccessible in Python 3 code.

    +

    For more details about the surrogateescape error handler, + please see PEP 383 +.

    +

    When Python 3 strings are passed to the C/C++ layer, they are + expected to be valid UTF8 Unicode strings too. For example, when the +instring method above is wrapped and called, any invalid UTF8 + Unicode code strings will result in a TypeError because the attempted + conversion fails:

    +
    +
    +>>> example.instring('h\xe9llo')
    +>>> example.instring('h\udce9llo')
    +Traceback (most recent call last):
    +  File "<stdin>", line 1, in <module>
    +TypeError: in method 'instring', argument 1 of type 'char const *'
    +
    +
    +

    In some cases, users may wish to instead handle all byte strings as + bytes objects in Python 3. This can be accomplished by adding +SWIG_PYTHON_STRICT_BYTE_CHAR to the generated code:

    +
    +
     %module char_to_bytes
     %begin %{
     #define SWIG_PYTHON_STRICT_BYTE_CHAR
    @@ -50689,13 +49108,13 @@ SWIG_PYTHON_STRICT_BYTE_CHAR to the generated code:

    char *charstring(char *s) { return s; } -
    -
    -

    This will modify the behavior so that only Python 3 bytes objects +

    +
    +

    This will modify the behavior so that only Python 3 bytes objects will be accepted and converted to a C/C++ string, and any string - returned from C/C++ will be converted to a bytes object in Python 3:

    -
    -
    + returned from C/C++ will be converted to a bytes object in Python 3:

    +
    +
     >>> from char_to_bytes import *
     >>> charstring(b"hi") # Byte string
     b'hi'
    @@ -50703,19 +49122,19 @@ b'hi'
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: in method 'charstring', argument 1 of type 'char *'
    -
    -
    -

    Note that in Python 2, defining SWIG_PYTHON_STRICT_BYTE_CHAR +

    +
    +

    Note that in Python 2, defining SWIG_PYTHON_STRICT_BYTE_CHAR has no effect, since strings in Python 2 are equivalent to Python 3 bytes objects. However, there is a similar capability to force - unicode-only handling for wide characters C/C++ strings (wchar_t * - or std::wstring types) in Python 2. By default, in Python 2 + unicode-only handling for wide characters C/C++ strings (wchar_t * + or std::wstring types) in Python 2. By default, in Python 2 both strings and unicode strings are converted to C/C++ wide strings, and returned wide strings are converted to a Python unicode string. To - instead only convert unicode strings to wide strings, users can add -SWIG_PYTHON_STRICT_UNICODE_WCHAR to the generated code:

    -
    -
    + instead only convert unicode strings to wide strings, users can add 
    +SWIG_PYTHON_STRICT_UNICODE_WCHAR to the generated code:

    +
    +
     %module wchar_to_unicode
     %begin %{
     #define SWIG_PYTHON_STRICT_UNICODE_WCHAR
    @@ -50724,12 +49143,12 @@ SWIG_PYTHON_STRICT_UNICODE_WCHAR to the generated code:

    wchar_t *wcharstring(wchar_t *s) { return s; } -
    -
    -

    This ensures that only unicode strings are accepted by wcharstring - in both Python 2 and Python 3:

    -
    -
    +
    +
    +

    This ensures that only unicode strings are accepted by wcharstring + in both Python 2 and Python 3:

    +
    +
     >>> from wchar_to_unicode import *
     >>> wcharstring(u"hi") # Unicode string
     u'hi'
    @@ -50737,33 +49156,33 @@ u'hi'
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: in method 'charstring', argument 1 of type 'wchar_t *'
    -
    -
    -

    By defining both SWIG_PYTHON_STRICT_BYTE_CHAR and -SWIG_PYTHON_STRICT_UNICODE_WCHAR, Python wrapper code can support +

    +
    +

    By defining both SWIG_PYTHON_STRICT_BYTE_CHAR and +SWIG_PYTHON_STRICT_UNICODE_WCHAR, Python wrapper code can support overloads taking both std::string (as Python bytes) and std::wstring - (as Python unicode).

    -

    36.12.5 Python 2 Unicode

    -

    A Python 3 string is a Unicode string so by default a Python 3 + (as Python unicode).

    +

    32.12.5 Python 2 Unicode

    +

    A Python 3 string is a Unicode string so by default a Python 3 string that contains Unicode characters passed to C/C++ will be - accepted and converted to a C/C++ string (char * or -std::string types). A Python 2 string is not a unicode string by + accepted and converted to a C/C++ string (char * or +std::string types). A Python 2 string is not a unicode string by default and should a Unicode string be passed to C/C++ it will fail to - convert to a C/C++ string (char * or std::string + convert to a C/C++ string (char * or std::string types). The Python 2 behavior can be made more like Python 3 by - defining SWIG_PYTHON_2_UNICODE when compiling the generated - C/C++ code. By default when the following is wrapped:

    -
    -
    + defining SWIG_PYTHON_2_UNICODE when compiling the generated
    + C/C++ code. By default when the following is wrapped:

    +
    +
     %module unicode_strings
     char *charstring(char *s) {
       return s;
     }
    -
    -
    -

    An error will occur when using Unicode strings in Python 2:

    -
    -
    +
    +
    +

    An error will occur when using Unicode strings in Python 2:

    +
    +
     >>> from unicode_strings import *
     >>> charstring("hi")
     'hi'
    @@ -50771,12 +49190,12 @@ char *charstring(char *s) {
     Traceback (most recent call last):
       File "<stdin>", line 1, in ?
     TypeError: in method 'charstring', argument 1 of type 'char *'
    -
    -
    -

    When the SWIG_PYTHON_2_UNICODE macro is added to the - generated code:

    -
    -
    +
    +
    +

    When the SWIG_PYTHON_2_UNICODE macro is added to the + generated code:

    +
    +
     %module unicode_strings
     %begin %{
     #define SWIG_PYTHON_2_UNICODE
    @@ -50785,24 +49204,103 @@ TypeError: in method 'charstring', argument 1 of type 'char *'
     char *charstring(char *s) {
       return s;
     }
    -
    -
    -

    Unicode strings will be successfully accepted and converted from - UTF-8, but note that they are returned as a normal Python 2 string:

    -
    -
    +
    +
    +

    Unicode strings will be successfully accepted and converted from + UTF-8, but note that they are returned as a normal Python 2 string:

    +
    +
     >>> from unicode_strings import *
     >>> charstring("hi")
     'hi'
     >>> charstring(u"hi")
     'hi'
     >>>
    -
    -
    -

    Note that defining both SWIG_PYTHON_2_UNICODE and -SWIG_PYTHON_STRICT_BYTE_CHAR at the same time is not allowed, since +

    +
    +

    Note that defining both SWIG_PYTHON_2_UNICODE and +SWIG_PYTHON_STRICT_BYTE_CHAR at the same time is not allowed, since the first is allowing unicode conversion and the second is explicitly - prohibiting it.

    + prohibiting it.

    +

    32.13 Support for Multithreaded + Applications

    +

    By default, SWIG does not enable support for multithreaded Python + applications. More specifically, the Python wrappers generated by SWIG + will not release the Python's interpreter's Global Interpreter Lock + (GIL) when wrapped C/C++ code is entered. Hence, while any of the + wrapped C/C++ code is executing, the Python interpreter will not be + able to run any other threads, even if the wrapped C/C++ code is + waiting in a blocking call for something like network or disk IO. + Fortunately, SWIG does have the ability to enable multithreaded support + and automatic release of the GIL either for all wrapped code in a + module or on a more selective basis. The user interface for this is + described in the next section.

    +

    32.13.1 UI for Enabling Multithreading + Support

    +

    The user interface is as follows:

    +
      +
    1. +

      Module thread support can be enabled in two ways:

      +
        +
      • +

        The -threads SWIG Python option at the command line (or in +setup.py):

        +
        +
        $ swig -python -threads example.i
        +
      • +
      • +

        The threads module option in the *.i template file:

        +
        +
        %module("threads"=1)
        +
      • +
      +
    2. +
    3. +

      You can disable thread support for a given method:

      +
      +
      %feature("nothread") method;
      +
      or
      +
      %nothread method;
      +
    4. +
    5. +

      You can partially disable thread support for a given method:

      +
        +
      • +

        To disable the C++/Python thread protection:

        +
        +
        %feature("nothreadblock") method;
        +
        or
        +
        %nothreadblock method;
        +
      • +
      • +

        To disable the Python/C++ thread protection

        +
        +
        %feature("nothreadallow") method;
        +
        or
        +
        %nothreadallow method;
        +
      • +
      +
    6. +
    +

    32.13.2 Multithread Performance +

    +

    For the curious about performance, here are some numbers for the + profiletest.i test, which is used to check the speed of the wrapped + code:

    + + + + + + + +
    Thread ModeExecution Time (sec)Comment
    Single Threaded9.6no "-threads" option given
    Fully Multithreaded15.5"-threads" option = + 'allow' + 'block'
    No Thread block12.2only 'allow'
    No Thread Allow13.6only block'
    +

    Fully threaded code decreases the wrapping performance by around + 60%. If that is important to your application, you can tune each method + using the different 'nothread', 'nothreadblock' or 'nothreadallow' + features as needed. Note that for some methods deactivating the 'thread + block' or 'thread allow' code is not an option, so, be careful.

    @@ -50816,773 +49314,803 @@ SWIG_PYTHON_STRICT_BYTE_CHAR at the same time is not allowed, since
    -

    37 SWIG and R

    +

    33 SWIG and R

    - + -

    R is a GPL'ed open source statistical and plotting environment. - Information about R can be found at -www.r-project.org. The R bindings are under active development. They +

    R is a GPL'ed open source statistical and plotting environment. + Information about R can be found at +www.r-project.org. The R bindings are under active development. They have been used to compile and run an R interface to QuantLib running on Mandriva Linux with gcc. The R bindings also work on Microsoft Windows - using Visual C++.

    -

    37.1 Bugs

    -

    Currently the following features are not implemented or broken:

    -
      -
    • Garbage collection of created objects
    • -
    • C Array wrappings
    • -
    -

    37.2 Using R and SWIG

    -

    To use R and SWIG in C mode, execute the following commands where - example.c is the name of the file with the functions in them

    -
    -
    + using Visual C++.

    +

    33.1 Bugs

    +

    Currently the following features are not implemented or broken:

    +
      +
    • Garbage collection of created objects
    • +
    • C Array wrappings
    • +
    +

    33.2 Using R and SWIG

    +

    To use R and SWIG in C mode, execute the following commands where + example.c is the name of the file with the functions in them

    +
    +
     swig -r example.i
     R CMD SHLIB example_wrap.c example.c
    -
    -
    -

    The corresponding options for C++ mode are

    -
    -
    +
    +
    +

    The corresponding options for C++ mode are

    +
    +
     swig -c++ -r -o example_wrap.cpp example.i
     R CMD SHLIB example_wrap.cpp example.cpp
    -
    -
    -

    Note that R is sensitive to the names of the files. The name of the +

    +
    +

    Note that R is sensitive to the names of the files. The name of the wrapper file must be the name of the library unless you use the -o - option to R when building the library, for example:

    -
    -
    + option to R when building the library, for example:

    +
    +
     swig -c++ -r -o example_wrap.cpp example.i
     R CMD SHLIB -o example.so example_wrap.cpp example.cpp
    -
    -
    -

    R is also sensitive to the name of the file extension in C and C++ +

    +
    +

    R is also sensitive to the name of the file extension in C and C++ mode. In C++ mode, the file extension must be .cpp rather than .cxx for the R compile command to recognize it. If your C++ code is in a file using something other than a .cpp extension, then it may still work - using PKG_LIBS:

    -
    -
    + using PKG_LIBS:

    +
    +
     swig -c++ -r -o example_wrap.cpp example.i
     PKG_LIBS="example.cxx" R CMD SHLIB -o example example_wrap.cpp
    -
    -
    -

    The commands produces two files. A dynamic shared object file called +

    +
    +

    The commands produces two files. A dynamic shared object file called example.so, or example.dll, and an R wrapper file called example.R. To - load these files, start up R and type in the following commands

    -
    -
    + load these files, start up R and type in the following commands

    +
    +
     dyn.load(paste("example", .Platform$dynlib.ext, sep=""))
     source("example.R")
     cacheMetaData(1)
    -
    -
    The cacheMetaData(1) will cause R to refresh its object tables. +
    +
    The cacheMetaData(1) will cause R to refresh its object tables. Without it, inheritance of wrapped objects may fail. -

    These two files can be loaded in any order

    -

    If you are compiling code yourself (not using R itself), there are a - few things to watch out for:

    -
      -
    • The output shared library name (to the left of the file extension) +

      These two files can be loaded in any order

      +

      If you are compiling code yourself (not using R itself), there are a + few things to watch out for:

      +
        +
      • The output shared library name (to the left of the file extension) MUST match the module name, or alternatively, you can also set the -package NAME command line argument. See swig -r -help for more - information
      • -
      • If you do not set the output file name appropriately, you might see - errors like
        -
        + information
      • +
      • If you do not set the output file name appropriately, you might see + errors like
        +
         > fact(4)
         Error in .Call("R_swig_fact", s_arg1, as.logical(.copy), PACKAGE = "example") :
           "R_swig_fact" not available for .Call() for package "example"
        -
        -
      • -
      • Make sure the architecture of the shared library(x64 for instance), + +
      • +
      • Make sure the architecture of the shared library(x64 for instance), matches the architecture of the R program you want to load your shared - library into
      • -
      -

      37.3 Precompiling large R files

      + library into
    • +
    +

    33.3 Precompiling large R files

    In cases where the R file is large, one make save a lot of loading time by precompiling the R wrapper. This can be done by creating the file makeRData.R which contains the following -
    +
     source('BigFile.R')
     save(list=ls(all=TRUE), file="BigFile.RData", compress=TRUE)
     q(save="no")
    -
    +
    This will generate a compiled R file called BigFile.RData that will save a large amount of loading time. -

    37.4 General policy

    -

    The general policy of the module is to treat the C/C++ as a basic +

    33.4 General policy

    +

    The general policy of the module is to treat the C/C++ as a basic wrapping over the underlying functions and rely on the R type system to - provide R syntax.

    -

    37.5 Language conventions

    -

    getitem and setitem use C++ conventions (i.e. zero based indices). [ + provide R syntax.

    +

    33.5 Language conventions

    +

    getitem and setitem use C++ conventions (i.e. zero based indices). [ -

    -

    37.6 C++ classes

    -

    C++ objects are implemented as external pointer objects with the +

    +

    33.6 C++ classes

    +

    C++ objects are implemented as external pointer objects with the class being the mangled name of the class. The C++ classes are encapsulated as an SEXP with an external pointer type. The class is the mangled name of the class. The nice thing about R is that is allows you to keep track of the pointer object which removes the necessity for a - lot of the proxy class baggage you see in other languages.

    -

    37.7 Enumerations

    -

    enumerations are characters which are then converted back and forth - to ints before calling the C routines. All of the enumeration code is - done in R.

    + lot of the proxy class baggage you see in other languages.

    +

    33.7 Enumerations

    +

    R doesn't have a native enumeration type. Enumerations are + represented as character strings in R, with calls to R functions that + convert back and forth between integers. The details of enumeration + names and contents are stored in hidden R environments, which are named + according the the enumeration name - for example, an enumeration + colour:

    +
    +enum colour { red=-1, blue, green = 10 };
    +
    +
    will be initialized by the following call in R:
    +
    +defineEnumeration("_colour",
    + .values=c("red" = .Call('R_swig_colour_red_get',FALSE, PACKAGE='enum_thorough'),
    +"blue" = .Call('R_swig_colour_blue_get',FALSE, PACKAGE='enum_thorough'),
    +"green" = .Call('R_swig_colour_green_get',FALSE, PACKAGE='enum_thorough')))
    +
    +
    +

    +

    which will create an environment named .__E___colour. The + enumeration values are initialised via calls to C/C++ code, allowing + complex values for enumerations to be used. Calls to the C/C++ code + require the compiled library to be loaded, so a delayedAssign + is employed within defineEnumeration in order to allow the + code to be easily used in R packages. The user typically does not need + to access the enumeration lookup functions or know the name of the + enumeration type used by R. Attributes containing the type information + are attached by swig to functions requiring enumeration arguments or + returning enumeration values, and those attributes are used to identify + and access the appropriate environments and thus translate between + characters and integers. The relevant functions, for debugging + purposes, are enumToInteger and enumFromInteger. + Anonymous enumerations are ignored by the binding generation process, + leaving no way of accessing the value of anonymous enumerations from R + code.


    -

    38 SWIG and Ruby

    +

    34 SWIG and Ruby

    -
    - -
    +
    + +
    -

    This chapter describes SWIG's support of Ruby.

    -

    38.1 Preliminaries

    -

    SWIG 3.0 is known to work with Ruby versions 1.8 and later. Given +

    This chapter describes SWIG's support of Ruby.

    +

    34.1 Preliminaries

    +

    SWIG 3.0 is known to work with Ruby versions 1.8 and later. Given the choice, you should use the latest stable version of Ruby. You should also determine if your system supports shared libraries and dynamic loading. SWIG will work with or without dynamic loading, but - the compilation process will vary.

    -

    This chapter covers most SWIG features, but in less depth than is + the compilation process will vary.

    +

    This chapter covers most SWIG features, but in less depth than is found in earlier chapters. At the very least, make sure you also read - the "SWIG Basics" chapter. It is also assumed that - the reader has a basic understanding of Ruby.

    -

    38.1.1 Running SWIG

    -

    To build a Ruby module, run SWIG using the -ruby option:

    -
    -
    $ swig -ruby example.i
    -
    -
    -

    If building a C++ extension, add the -c++ option:

    -
    -
    $ swig -c++ -ruby example.i
    -
    -
    -

    This creates a file example_wrap.c (example_wrap.cxx + the "SWIG Basics" chapter. It is also assumed that + the reader has a basic understanding of Ruby.

    +

    34.1.1 Running SWIG

    +

    To build a Ruby module, run SWIG using the -ruby option:

    +
    +
    $ swig -ruby example.i
    +
    +
    +

    If building a C++ extension, add the -c++ option:

    +
    +
    $ swig -c++ -ruby example.i
    +
    +
    +

    This creates a file example_wrap.c (example_wrap.cxx if compiling a C++ extension) that contains all of the code needed to build a Ruby extension module. To finish building the module, you need - to compile this file and link it with the rest of your program.

    -

    38.1.2 Getting the right header files

    -

    In order to compile the wrapper code, the compiler needs the -ruby.h header file and its dependencies, notably ruby/config.h + to compile this file and link it with the rest of your program.

    +

    34.1.2 Getting the right header files

    +

    In order to compile the wrapper code, the compiler needs the +ruby.h header file and its dependencies, notably ruby/config.h which is found in a different, architecture-dependent, directory. The best way to find the compiler options needed to compile the code is to - ask Ruby itself:

    -
    -
    $ ruby -rrbconfig -e 'puts "-I#{RbConfig::CONFIG[%q{rubyhdrdir}]} -I#{RbConfig::CONFIG[%q{rubyarchhdrdir}]}"'
    + ask Ruby itself:

    +
    +
    $ ruby -rrbconfig -e 'puts "-I#{RbConfig::CONFIG[%q{rubyhdrdir}]} -I#{RbConfig::CONFIG[%q{rubyarchhdrdir}]}"'
     -I/usr/include/ruby-2.1.0 -I/usr/include/x86_64-linux-gnu/ruby-2.1.0
    -
    -
    -

    38.1.3 Compiling a dynamic module

    -

    Ruby extension modules are typically compiled into shared libraries +

    +
    +

    34.1.3 Compiling a dynamic module

    +

    Ruby extension modules are typically compiled into shared libraries that the interpreter loads dynamically at runtime. Since the exact commands for doing this vary from platform to platform, your best bet - is to follow the steps described in the README.EXT file from - the Ruby distribution:

    -
      -
    1. -

      Create a file called extconf.rb that looks like the - following:

      -
      -
      require 'mkmf'
      -create_makefile('example')
      -
    2. -
    3. -

      Type the following to build the extension:

      -
      -
      + is to follow the steps described in the README.EXT file from
      + the Ruby distribution:

      +
        +
      1. +

        Create a file called extconf.rb that looks like the + following:

        +
        +
        require 'mkmf'
        +create_makefile('example')
        +
      2. +
      3. +

        Type the following to build the extension:

        +
        +
         $ ruby extconf.rb
         $ make
         $ make install
        -    
        -
      4. -
      -

      Of course, there is the problem that mkmf does not work correctly on +

      +
    4. +
    +

    Of course, there is the problem that mkmf does not work correctly on all platforms, e.g, HPUX. If you need to add your own make rules to the - file that extconf.rb produces, you can add this:

    -
    -
    open("Makefile", "a") { |mf|
    + file that extconf.rb produces, you can add this:

    +
    +
    open("Makefile", "a") { |mf|
      puts <<EOM
      # Your make rules go here
      EOM
     }
    -
    -
    -

    to the end of the extconf.rb file. If for some reason you +

    +
    +

    to the end of the extconf.rb file. If for some reason you don't want to use the standard approach, you'll need to determine the correct compiler and linker flags for your build platform. For example, - assuming you have code you need to link to in a file called -example.c, a typical sequence of commands for the Linux operating - system would look something like this:

    -
    -
    $ swig -ruby example.i
    + assuming you have code you need to link to in a file called 
    +example.c, a typical sequence of commands for the Linux operating
    + system would look something like this:

    +
    +
    $ swig -ruby example.i
     $ gcc -O2 -fPIC -c example.c
     $ gcc -O2 -fPIC -c example_wrap.c -I/usr/include/ruby-2.1.0
     $ gcc -shared example.o example_wrap.o -o example.so
    -
    -
    -

    The -fPIC option tells GCC to generate position-independent code +

    +
    +

    The -fPIC option tells GCC to generate position-independent code (PIC) which is required for most architectures (it's not vital on x86, but still a good idea as it allows code pages from the library to be shared between processes). Other compilers may need a different option - specified instead of -fPIC.

    -

    If in doubt, consult the manual pages for your compiler and linker - to determine the correct set of options. You might also check the -SWIG Wiki for additional information.

    -

    38.1.4 Using your module

    -

    Ruby module names must be capitalized, but the convention for - Ruby feature names is to use lowercase names. So, for example, - the Etc extension module is imported by requiring the etc - feature:

    -
    -
    # The feature name begins with a lowercase letter...
    + specified instead of -fPIC.

    +

    If in doubt, consult the manual pages for your compiler and linker + to determine the correct set of options. You might also check the +SWIG Wiki for additional information.

    +

    34.1.4 Using your module

    +

    Ruby module names must be capitalized, but the convention for + Ruby feature names is to use lowercase names. So, for example, + the Etc extension module is imported by requiring the etc + feature:

    +
    +
    # The feature name begins with a lowercase letter...
     require 'etc'
     
     # ... but the module name begins with an uppercase letter
     puts "Your login name: #{Etc.getlogin}"
    -
    -
    -

    To stay consistent with this practice, you should always specify a - lowercase module name with SWIG's %module directive. SWIG +

    +
    +

    To stay consistent with this practice, you should always specify a + lowercase module name with SWIG's %module directive. SWIG will automatically correct the resulting Ruby module name for your - extension. So for example, a SWIG interface file that begins with:

    -
    -
    %module example
    -
    -

    will result in an extension module using the feature name "example" - and Ruby module name "Example".

    -

    38.1.5 Static linking

    -

    An alternative approach to dynamic linking is to rebuild the Ruby + extension. So for example, a SWIG interface file that begins with:

    +
    +
    %module example
    +
    +

    will result in an extension module using the feature name "example" + and Ruby module name "Example".

    +

    34.1.5 Static linking

    +

    An alternative approach to dynamic linking is to rebuild the Ruby interpreter with your extension module added to it. In the past, this approach was sometimes necessary due to limitations in dynamic loading support on certain machines. However, the situation has improved greatly over the last few years and you should not consider this - approach unless there is really no other option.

    -

    The usual procedure for adding a new module to Ruby involves finding - the Ruby source, adding an entry to the ext/Setup file, adding + approach unless there is really no other option.

    +

    The usual procedure for adding a new module to Ruby involves finding + the Ruby source, adding an entry to the ext/Setup file, adding your directory to the list of extensions in the file, and finally - rebuilding Ruby.

    -

    38.1.6 Compilation of C++ extensions

    -

    On most machines, C++ extension modules should be linked using the - C++ compiler. For example:

    -
    -
    + rebuilding Ruby.

    +

    34.1.6 Compilation of C++ extensions

    +

    On most machines, C++ extension modules should be linked using the + C++ compiler. For example:

    +
    +
     $ swig -c++ -ruby example.i
     $ g++ -fPIC -c example.cxx
     $ g++ -fPIC -c example_wrap.cxx -I/usr/include/ruby-2.1.0
     $ g++ -shared example.o example_wrap.o -o example.so
    -
    -
    -

    If you've written an extconf.rb script to automatically - generate a Makefile for your C++ extension module, keep in - mind that (as of this writing) Ruby still uses gcc and not -g++ as its linker. As a result, the required C++ runtime library +

    +
    +

    If you've written an extconf.rb script to automatically + generate a Makefile for your C++ extension module, keep in + mind that (as of this writing) Ruby still uses gcc and not +g++ as its linker. As a result, the required C++ runtime library support will not be automatically linked into your extension module and it may fail to load on some platforms. A workaround for this problem is - use the mkmf module's append_library() method to add + use the mkmf module's append_library() method to add one of the C++ runtime libraries to the list of libraries linked into - your extension, e.g.

    -
    -
    require 'mkmf'
    + your extension, e.g.

    +
    +
    require 'mkmf'
     $libs = append_library($libs, "supc++")
    -create_makefile('example')
    -
    -

    38.2 Building Ruby Extensions under Windows 95/NT -

    -

    Building a SWIG extension to Ruby under Windows 95/NT is roughly +create_makefile('example')

    +
    +

    34.2 Building Ruby Extensions under Windows 95/NT +

    +

    Building a SWIG extension to Ruby under Windows 95/NT is roughly similar to the process used with Unix. Normally, you will want to produce a DLL that can be loaded into the Ruby interpreter. For all - recent versions of Ruby, the procedure described above (i.e. using an -extconf.rb script) will work with Windows as well; you should be - able to build your code into a DLL by typing:

    -
    -
    + recent versions of Ruby, the procedure described above (i.e. using an 
    +extconf.rb script) will work with Windows as well; you should be
    + able to build your code into a DLL by typing:

    +
    +
     C:\swigtest> ruby extconf.rb
     C:\swigtest> nmake
     C:\swigtest> nmake install
    -
    -
    -

    The remainder of this section covers the process of compiling +

    +
    +

    The remainder of this section covers the process of compiling SWIG-generated Ruby extensions with Microsoft Visual C++ 6 (i.e. within the Developer Studio IDE, instead of using the command line tools). In order to build extensions, you may need to download the source distribution to the Ruby package, as you will need the Ruby header - files.

    -

    38.2.1 Running SWIG from Developer Studio

    -

    If you are developing your application within Microsoft developer + files.

    +

    34.2.1 Running SWIG from Developer Studio

    +

    If you are developing your application within Microsoft developer studio, SWIG can be invoked as a custom build option. The process - roughly follows these steps :

    -
      -
    • Open up a new workspace and use the AppWizard to select a DLL - project.
    • -
    • Add both the SWIG interface file (the .i file), any supporting C + roughly follows these steps :

      +
        +
      • Open up a new workspace and use the AppWizard to select a DLL + project.
      • +
      • Add both the SWIG interface file (the .i file), any supporting C files, and the name of the wrapper file that will be created by SWIG - (i.e. example_wrap.c). Note : If using C++, choose a different - suffix for the wrapper file such as example_wrap.cxx. Don't + (i.e. example_wrap.c). Note : If using C++, choose a different + suffix for the wrapper file such as example_wrap.cxx. Don't worry if the wrapper file doesn't exist yet--Developer Studio will keep - a reference to it around.
      • -
      • Select the SWIG interface file and go to the settings menu. Under - settings, select the "Custom Build" option.
      • -
      • Enter "SWIG" in the description field.
      • -
      • Enter "swig -ruby -o $(ProjDir)\$(InputName)_wrap.c - $(InputPath)" in the "Build command(s) field". You may have to - include the path to swig.exe.
      • -
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output - files(s) field".
      • -
      • Next, select the settings for the entire project and go to the + a reference to it around.
      • +
      • Select the SWIG interface file and go to the settings menu. Under + settings, select the "Custom Build" option.
      • +
      • Enter "SWIG" in the description field.
      • +
      • Enter "swig -ruby -o $(ProjDir)\$(InputName)_wrap.c + $(InputPath)" in the "Build command(s) field". You may have to + include the path to swig.exe.
      • +
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output + files(s) field".
      • +
      • Next, select the settings for the entire project and go to the C/C++ tab and select the Preprocessor category. Add NT=1 to the Preprocessor definitions. This must be set else you will get compilation errors. Also add IMPORT to the preprocessor definitions, else you may get runtime errors. Also add the include directories for - your Ruby installation under "Additional include directories".
      • -
      • Next, select the settings for the entire project and go to the Link + your Ruby installation under "Additional include directories".
      • +
      • Next, select the settings for the entire project and go to the Link tab and select the General category. Set the name of the output file to match the name of your Ruby module (i.e.. example.dll). Next add the Ruby library file to your link libraries under Object/Library modules. For example "mswin32-ruby16.lib. You also need to add the path to the - library under the Input tab - Additional library path.
      • -
      • Build your project.
      • -
      -

      Now, assuming all went well, SWIG will be automatically invoked when + library under the Input tab - Additional library path.

    • +
    • Build your project.
    • +
    +

    Now, assuming all went well, SWIG will be automatically invoked when you build your project. Any changes made to the interface file will result in SWIG being automatically invoked to produce a new version of the wrapper file. To run your new Ruby extension, simply run Ruby and - use the require command as normal. For example if you have - this ruby file run.rb:

    -
    -
    # file: run.rb
    + use the require command as normal. For example if you have
    + this ruby file run.rb:

    +
    +
    # file: run.rb
     require 'Example'
     
     # Call a c function
    -print "Foo = ", Example.Foo, "\n"
    -
    -

    Ensure the dll just built is in your path or current directory, then - run the Ruby script from the DOS/Command prompt:

    -
    -
    +print "Foo = ", Example.Foo, "\n"
    +
    +

    Ensure the dll just built is in your path or current directory, then + run the Ruby script from the DOS/Command prompt:

    +
    +
     C:\swigtest> ruby run.rb
     Foo = 3.0
    -
    -
    -

    38.3 The Ruby-to-C/C++ Mapping

    -

    This section describes the basics of how SWIG maps C or C++ - declarations in your SWIG interface files to Ruby constructs.

    -

    38.3.1 Modules

    -

    The SWIG %module directive specifies the name of the Ruby - module. If you specify:

    -
    -
    %module example
    -
    -

    then everything is wrapped into a Ruby module named Example +

    +
    +

    34.3 The Ruby-to-C/C++ Mapping

    +

    This section describes the basics of how SWIG maps C or C++ + declarations in your SWIG interface files to Ruby constructs.

    +

    34.3.1 Modules

    +

    The SWIG %module directive specifies the name of the Ruby + module. If you specify:

    +
    +
    %module example
    +
    +

    then everything is wrapped into a Ruby module named Example that is nested directly under the global module. You can specify a more deeply nested module by specifying the fully-qualified module name in - quotes, e.g.

    -
    -
    %module "foo::bar::spam"
    -
    -

    An alternate method of specifying a nested module name is to use the - -prefix option on the SWIG command line. The prefix that you + quotes, e.g.

    +
    +
    %module "foo::bar::spam"
    +
    +

    An alternate method of specifying a nested module name is to use the + -prefix option on the SWIG command line. The prefix that you specify with this option will be prepended to the module name specified - with the %module directive in your SWIG interface file. So for - example, this declaration at the top of your SWIG interface file:

    -
    -
    %module "foo::bar::spam"
    -
    -

    will result in a nested module name of Foo::Bar::Spam, but - you can achieve the - - same effect by specifying:

    -
    -
    %module spam
    -
    -

    and then running SWIG with the -prefix command line option:

    -
    -
    + with the %module directive in your SWIG interface file. So for
    + example, this declaration at the top of your SWIG interface file:

    +
    +
    %module "foo::bar::spam"
    +
    +

    will result in a nested module name of Foo::Bar::Spam, but + you can achieve the same + effect by specifying:

    +
    +
    %module spam
    +
    +

    and then running SWIG with the -prefix command line option:

    +
    +
     $ swig -ruby -prefix "foo::bar::" example.i
    -
    -
    -

    Starting with SWIG 1.3.20, you can also choose to wrap everything - into the global module by specifying the -globalmodule option - on the SWIG command line, i.e.

    -
    -
    +
    +
    +

    Starting with SWIG 1.3.20, you can also choose to wrap everything + into the global module by specifying the -globalmodule option + on the SWIG command line, i.e.

    +
    +
     $ swig -ruby -globalmodule example.i
    -
    -
    -

    Note that this does not relieve you of the requirement of specifying - the SWIG module name with the %module directive (or the --module command-line option) as described earlier.

    -

    When choosing a module name, do not use the same name as a built-in +

    +
    +

    Note that this does not relieve you of the requirement of specifying + the SWIG module name with the %module directive (or the +-module command-line option) as described earlier.

    +

    When choosing a module name, do not use the same name as a built-in Ruby command or standard module name, as the results may be - unpredictable. Similarly, if you're using the -globalmodule + unpredictable. Similarly, if you're using the -globalmodule option to wrap everything into the global module, take care that the names of your constants, classes and methods don't conflict with any of - Ruby's built-in names.

    -

    38.3.2 Functions

    -

    Global functions are wrapped as Ruby module methods. For example, - given the SWIG interface file example.i:

    -
    -
    %module example
    + Ruby's built-in names.

    +

    34.3.2 Functions

    +

    Global functions are wrapped as Ruby module methods. For example, + given the SWIG interface file example.i:

    +
    +
    %module example
     
    -int fact(int n);
    -
    -

    and C source file example.c:

    -
    -
    int fact(int n) {
    +int fact(int n);
    +
    +

    and C source file example.c:

    +
    +
    int fact(int n) {
       if (n == 0)
       return 1;
       return (n * fact(n-1));
    -}
    -
    -

    SWIG will generate a method fact in the Example module - that can be used like so:

    -
    -
    $ irb
    -irb(main):001:0> require 'example'
    +}
    +
    +

    SWIG will generate a method fact in the Example module + that can be used like so:

    +
    +
    $ irb
    +irb(main):001:0> require 'example'
     true
    -irb(main):002:0> Example.fact(4)
    -24
    -
    -

    38.3.3 Variable Linking

    -

    C/C++ global variables are wrapped as a pair of singleton methods +irb(main):002:0> Example.fact(4) +24

    +
    +

    34.3.3 Variable Linking

    +

    C/C++ global variables are wrapped as a pair of singleton methods for the module: one to get the value of the global variable and one to set it. For example, the following SWIG interface file declares two - global variables:

    -
    -
    // SWIG interface file with global variables
    + global variables:

    +
    +
    // SWIG interface file with global variables
     %module example
     ...
     %inline %{
       extern int variable1;
       extern double Variable2;
     %}
    -...
    -
    -

    Now look at the Ruby interface:

    -
    -
    $ irb
    -irb(main):001:0> require 'Example'
    +...
    +
    +

    Now look at the Ruby interface:

    +
    +
    $ irb
    +irb(main):001:0> require 'Example'
     true
    -irb(main):002:0> Example.variable1 = 2
    +irb(main):002:0> Example.variable1 = 2
     2
    -irb(main):003:0> Example.Variable2 = 4 * 10.3
    +irb(main):003:0> Example.Variable2 = 4 * 10.3
     41.2
    -irb(main):004:0> Example.Variable2
    -41.2
    -
    -

    If you make an error in variable assignment, you will receive an - error message. For example:

    -
    -
    irb(main):005:0> Example.Variable2 = "hello"
    +irb(main):004:0> Example.Variable2
    +41.2
    +
    +

    If you make an error in variable assignment, you will receive an + error message. For example:

    +
    +
    irb(main):005:0> Example.Variable2 = "hello"
     TypeError: no implicit conversion to float from string
     from (irb):5:in `Variable2='
    -from (irb):5
    -
    -

    If a variable is declared as const, it is wrapped as a +from (irb):5

    +
    +

    If a variable is declared as const, it is wrapped as a read-only variable. Attempts to modify its value will result in an - error.

    -

    To make ordinary variables read-only, you can also use the -%immutable directive. For example:

    -
    -
    %immutable;
    + error.

    +

    To make ordinary variables read-only, you can also use the +%immutable directive. For example:

    +
    +
    %immutable;
     %inline %{
       extern char *path;
     %}
    -%mutable;
    -
    -

    The %immutable directive stays in effect until it is - explicitly disabled using %mutable.

    -

    38.3.4 Constants

    -

    C/C++ constants are wrapped as module constants initialized to the - appropriate value. To create a constant, use #define or the -%constant directive. For example:

    -
    -
    #define PI 3.14159
    +%mutable;
    +
    +

    The %immutable directive stays in effect until it is + explicitly disabled using %mutable.

    +

    34.3.4 Constants

    +

    C/C++ constants are wrapped as module constants initialized to the + appropriate value. To create a constant, use #define or the +%constant directive. For example:

    +
    +
    #define PI 3.14159
     #define VERSION "1.0"
     
     %constant int FOO = 42;
     %constant const char *path = "/usr/local";
     
    -const int BAR = 32;
    -
    -

    Remember to use the :: operator in Ruby to get at these constant - values, e.g.

    -
    -
    $ irb
    -irb(main):001:0> require 'Example'
    +const int BAR = 32;
    +
    +

    Remember to use the :: operator in Ruby to get at these constant + values, e.g.

    +
    +
    $ irb
    +irb(main):001:0> require 'Example'
     true
    -irb(main):002:0> Example::PI
    -3.14159
    -
    -

    38.3.5 Pointers

    -

    "Opaque" pointers to arbitrary C/C++ types (i.e. types that aren't +irb(main):002:0> Example::PI +3.14159

    +
    +

    34.3.5 Pointers

    +

    "Opaque" pointers to arbitrary C/C++ types (i.e. types that aren't explicitly declared in your SWIG interface file) are wrapped as data objects. So, for example, consider a SWIG interface file containing - only the declarations:

    -
    -
    Foo *get_foo();
    -void set_foo(Foo *foo);
    -
    -

    For this case, the get_foo() method returns an instance of an - internally generated Ruby class:

    -
    -
    irb(main):001:0> foo = Example::get_foo()
    -#<SWIG::TYPE_p_Foo:0x402b1654>
    -
    -

    A NULL pointer is always represented by the Ruby nil - object.

    -

    38.3.6 Structures

    -

    C/C++ structs are wrapped as Ruby classes, with accessor methods + only the declarations:

    +
    +
    Foo *get_foo();
    +void set_foo(Foo *foo);
    +
    +

    For this case, the get_foo() method returns an instance of an + internally generated Ruby class:

    +
    +
    irb(main):001:0> foo = Example::get_foo()
    +#<SWIG::TYPE_p_Foo:0x402b1654>
    +
    +

    A NULL pointer is always represented by the Ruby nil + object.

    +

    34.3.6 Structures

    +

    C/C++ structs are wrapped as Ruby classes, with accessor methods (i.e. "getters" and "setters") for all of the struct members. For - example, this struct declaration:

    -
    -
    struct Vector {
    + example, this struct declaration:

    +
    +
    struct Vector {
       double x, y;
    -};
    -
    -

    gets wrapped as a Vector class, with Ruby instance methods -x, x=, y and y=. These methods can be - used to access structure data from Ruby as follows:

    -
    -
    $ irb
    -irb(main):001:0> require 'Example'
    +};
    +
    +

    gets wrapped as a Vector class, with Ruby instance methods +x, x=, y and y=. These methods can be + used to access structure data from Ruby as follows:

    +
    +
    $ irb
    +irb(main):001:0> require 'Example'
     true
    -irb(main):002:0> f = Example::Vector.new
    +irb(main):002:0> f = Example::Vector.new
     #<Example::Vector:0x4020b268>
    -irb(main):003:0> f.x = 10
    +irb(main):003:0> f.x = 10
     nil
    -irb(main):004:0> f.x
    -10.0
    -
    -

    Similar access is provided for unions and the public data members of - C++ classes.

    -

    const members of a structure are read-only. Data members can - also be forced to be read-only using the %immutable directive - (in C++, private may also be used). For example:

    -
    -
    struct Foo {
    +irb(main):004:0> f.x
    +10.0
    +
    +

    Similar access is provided for unions and the public data members of + C++ classes.

    +

    const members of a structure are read-only. Data members can + also be forced to be read-only using the %immutable directive + (in C++, private may also be used). For example:

    +
    +
    struct Foo {
       ...
       %immutable;
       int x; /* Read-only members */
       char *name;
       %mutable;
       ...
    -};
    -
    -

    When char * members of a structure are wrapped, the - contents are assumed to be dynamically allocated using malloc - or new (depending on whether or not SWIG is run with the --c++ option). When the structure member is set, the old contents +};

    +
    +

    When char * members of a structure are wrapped, the + contents are assumed to be dynamically allocated using malloc + or new (depending on whether or not SWIG is run with the +-c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior - you want, you will have to use a typemap (described shortly).

    -

    Array members are normally wrapped as read-only. For example, this - code:

    -
    -
    struct Foo {
    + you want, you will have to use a typemap (described shortly).

    +

    Array members are normally wrapped as read-only. For example, this + code:

    +
    +
    struct Foo {
       int x[50];
    -};
    -
    -

    produces a single accessor function like this:

    -
    -
    int *Foo_x_get(Foo *self) {
    +};
    +
    +

    produces a single accessor function like this:

    +
    +
    int *Foo_x_get(Foo *self) {
       return self->x;
    -};
    -
    -

    If you want to set an array member, you will need to supply a - "memberin" typemap described in the -section on typemaps. As a special case, SWIG does generate code to - set array members of type char (allowing you to store a Ruby - string in the structure).

    -

    When structure members are wrapped, they are handled as pointers. For - example,

    -
    -
    struct Foo {
    +};
    +
    +

    If you want to set an array member, you will need to supply a + "memberin" typemap described in the +section on typemaps. As a special case, SWIG does generate code to + set array members of type char (allowing you to store a Ruby + string in the structure).

    +

    When structure members are wrapped, they are handled as pointers. For + example,

    +
    +
    struct Foo {
       ...
     };
     
     struct Bar {
       Foo f;
    -};
    -
    -

    generates accessor functions such as this:

    -
    -
    Foo *Bar_f_get(Bar *b) {
    +};
    +
    +

    generates accessor functions such as this:

    +
    +
    Foo *Bar_f_get(Bar *b) {
       return &b->f;
     }
     
     void Bar_f_set(Bar *b, Foo *val) {
       b->f = *val;
    -}
    -
    -

    38.3.7 C++ classes

    -

    Like structs, C++ classes are wrapped by creating a new Ruby class +}

    +
    +

    34.3.7 C++ classes

    +

    Like structs, C++ classes are wrapped by creating a new Ruby class of the same name with accessor methods for the public class member data. Additionally, public member functions for the class are wrapped as Ruby instance methods, and public static member functions are - wrapped as Ruby singleton methods. So, given the C++ class declaration:

    -
    -
    class List {
    + wrapped as Ruby singleton methods. So, given the C++ class declaration:

    +
    +
    class List {
     public:
       List();
       ~List();
    @@ -51592,19 +50120,19 @@ public:
       char *get(int n);
       int length;
       static void print(List *l);
    -};
    -
    -

    SWIG would create a List class with:

    -
      -
    • instance methods search, insert, remove, and - get;
    • -
    • instance methods length and length= (to get and set - the value of the length data member); and,
    • -
    • a print singleton method for the class.
    • -
    -

    In Ruby, these functions are used as follows:

    -
    -
    require 'Example'
    +};
    +
    +

    SWIG would create a List class with:

    +
      +
    • instance methods search, insert, remove, and + get;
    • +
    • instance methods length and length= (to get and set + the value of the length data member); and,
    • +
    • a print singleton method for the class.
    • +
    +

    In Ruby, these functions are used as follows:

    +
    +
    require 'Example'
     
     l = Example::List.new
     
    @@ -51617,96 +50145,96 @@ l.length()
     Lager
     Stout
     Ale
    -3
    -
    -

    38.3.8 C++ Inheritance

    -

    The SWIG type-checker is fully aware of C++ inheritance. Therefore, - if you have classes like this:

    -
    -
    class Parent {
    +3
    +
    +

    34.3.8 C++ Inheritance

    +

    The SWIG type-checker is fully aware of C++ inheritance. Therefore, + if you have classes like this:

    +
    +
    class Parent {
       ...
     };
     
     class Child : public Parent {
       ...
    -};
    -
    -

    those classes are wrapped into a hierarchy of Ruby classes that +};

    +
    +

    those classes are wrapped into a hierarchy of Ruby classes that reflect the same inheritance structure. All of the usual Ruby utility - methods work normally:

    -
    -
    irb(main):001:0> c = Child.new
    + methods work normally:

    +
    +
    irb(main):001:0> c = Child.new
     #<Bar:0x4016efd4>
    -irb(main):002:0> c.instance_of? Child
    +irb(main):002:0> c.instance_of? Child
     true
    -irb(main):003:0> b.instance_of? Parent
    +irb(main):003:0> b.instance_of? Parent
     false
    -irb(main):004:0> b.is_a? Child
    +irb(main):004:0> b.is_a? Child
     true
    -irb(main):005:0> b.is_a? Parent
    +irb(main):005:0> b.is_a? Parent
     true
    -irb(main):006:0> Child < Parent
    +irb(main):006:0> Child < Parent
     true
    -irb(main):007:0> Child > Parent
    -false
    -
    -

    Furthermore, if you have a function like this:

    -
    -
    void spam(Parent *f);
    -
    -

    then the function spam() accepts Parent* or a - pointer to any class derived from Parent.

    -

    Until recently, the Ruby module for SWIG didn't support multiple +irb(main):007:0> Child > Parent +false

    +
    +

    Furthermore, if you have a function like this:

    +
    +
    void spam(Parent *f);
    +
    +

    then the function spam() accepts Parent* or a + pointer to any class derived from Parent.

    +

    Until recently, the Ruby module for SWIG didn't support multiple inheritance, and this is still the default behavior. This doesn't mean that you can't wrap C++ classes which inherit from multiple base - classes; it simply means that only the first base class listed + classes; it simply means that only the first base class listed in the class declaration is considered, and any additional base classes are ignored. As an example, consider a SWIG interface file with a - declaration like this:

    -
    -
    class Derived : public Base1, public Base2
    + declaration like this:

    +
    +
    class Derived : public Base1, public Base2
     {
       ...
    -};
    -
    -

    For this case, the resulting Ruby class (Derived) will only - consider Base1 as its superclass. It won't inherit any of -Base2's member functions or data and it won't recognize Base2 - as an "ancestor" of Derived (i.e. the is_a? +};

    +
    +

    For this case, the resulting Ruby class (Derived) will only + consider Base1 as its superclass. It won't inherit any of +Base2's member functions or data and it won't recognize Base2 + as an "ancestor" of Derived (i.e. the is_a? relationship would fail). When SWIG processes this interface file, - you'll see a warning message like:

    -
    -
    example.i:5: Warning 802: Warning for Derived: Base Base2 ignored.
    -Multiple inheritance is not supported in Ruby.
    -
    -

    Starting with SWIG 1.3.20, the Ruby module for SWIG provides limited + you'll see a warning message like:

    +
    +
    example.i:5: Warning 802: Warning for Derived: Base Base2 ignored.
    +Multiple inheritance is not supported in Ruby.
    +
    +

    Starting with SWIG 1.3.20, the Ruby module for SWIG provides limited support for multiple inheritance. Because the approach for dealing with multiple inheritance introduces some limitations, this is an optional - feature that you can activate with the -minherit command-line - option:

    -
    -
    + feature that you can activate with the -minherit command-line
    + option:

    +
    +
     $ swig -c++ -ruby -minherit example.i
    -
    -
    -

    Using our previous example, if your SWIG interface file contains a - declaration like this:

    -
    -
    class Derived : public Base1, public Base2
    +
    +
    +

    Using our previous example, if your SWIG interface file contains a + declaration like this:

    +
    +
    class Derived : public Base1, public Base2
     {
       ...
    -};
    -
    -

    and you run SWIG with the -minherit command-line option, - then you will end up with a Ruby class Derived that appears to - "inherit" the member data and functions from both Base1 and -Base2. What actually happens is that three different top-level - classes are created, with Ruby's Object class as their - superclass. Each of these classes defines a nested module named -Impl, and it's in these nested Impl modules that the - actual instance methods for the classes are defined, i.e.

    -
    -
    class Base1
    +};
    +
    +

    and you run SWIG with the -minherit command-line option, + then you will end up with a Ruby class Derived that appears to + "inherit" the member data and functions from both Base1 and +Base2. What actually happens is that three different top-level + classes are created, with Ruby's Object class as their + superclass. Each of these classes defines a nested module named +Impl, and it's in these nested Impl modules that the + actual instance methods for the classes are defined, i.e.

    +
    +
    class Base1
       module Impl
       # Define Base1 methods here
       end
    @@ -51727,153 +50255,153 @@ class Derived
       # Define Derived methods here
       end
       include Impl
    -end
    -
    -

    Observe that after the nested Impl module for a class is - defined, it is mixed-in to the class itself. Also observe that the -Derived::Impl module first mixes-in its base classes' Impl - modules, thus "inheriting" all of their behavior.

    -

    The primary drawback is that, unlike the default mode of operation, - neither Base1 nor Base2 is a true superclass of -Derived anymore:

    -
    -
    obj = Derived.new
    +end
    +
    +

    Observe that after the nested Impl module for a class is + defined, it is mixed-in to the class itself. Also observe that the +Derived::Impl module first mixes-in its base classes' Impl + modules, thus "inheriting" all of their behavior.

    +

    The primary drawback is that, unlike the default mode of operation, + neither Base1 nor Base2 is a true superclass of +Derived anymore:

    +
    +
    obj = Derived.new
     obj.is_a? Base1 # this will return false...
    -obj.is_a? Base2 # ... and so will this
    -
    -

    In most cases, this is not a serious problem since objects of type -Derived will otherwise behave as though they inherit from both -Base1 and Base2 (i.e. they exhibit -"Duck Typing").

    -

    38.3.9 C++ Overloaded Functions

    -

    C++ overloaded functions, methods, and constructors are mostly - supported by SWIG. For example, if you have two functions like this:

    -
    -
    void foo(int);
    -void foo(char *c);
    -
    -

    You can use them in Ruby in a straightforward manner:

    -
    -
    irb(main):001:0> foo(3) # foo(int)
    -irb(main):002:0> foo("Hello") # foo(char *c)
    -
    -

    Similarly, if you have a class like this,

    -
    -
    class Foo {
    +obj.is_a? Base2 # ... and so will this
    +
    +

    In most cases, this is not a serious problem since objects of type +Derived will otherwise behave as though they inherit from both +Base1 and Base2 (i.e. they exhibit +"Duck Typing").

    +

    34.3.9 C++ Overloaded Functions

    +

    C++ overloaded functions, methods, and constructors are mostly + supported by SWIG. For example, if you have two functions like this:

    +
    +
    void foo(int);
    +void foo(char *c);
    +
    +

    You can use them in Ruby in a straightforward manner:

    +
    +
    irb(main):001:0> foo(3) # foo(int)
    +irb(main):002:0> foo("Hello") # foo(char *c)
    +
    +

    Similarly, if you have a class like this,

    +
    +
    class Foo {
     public:
       Foo();
       Foo(const Foo &);
       ...
    -};
    -
    -

    you can write Ruby code like this:

    -
    -
    irb(main):001:0> f = Foo.new # Create a Foo
    -irb(main):002:0> g = Foo.new(f) # Copy f
    -
    -

    Overloading support is not quite as flexible as in C++. Sometimes - there are methods that SWIG can't disambiguate. For example:

    -
    -
    void spam(int);
    -void spam(short);
    -
    -

    or

    -
    -
    void foo(Bar *b);
    -void foo(Bar &b);
    -
    -

    If declarations such as these appear, you will get a warning message - like this:

    -
    -
    +};
    +
    +

    you can write Ruby code like this:

    +
    +
    irb(main):001:0> f = Foo.new # Create a Foo
    +irb(main):002:0> g = Foo.new(f) # Copy f
    +
    +

    Overloading support is not quite as flexible as in C++. Sometimes + there are methods that SWIG can't disambiguate. For example:

    +
    +
    void spam(int);
    +void spam(short);
    +
    +

    or

    +
    +
    void foo(Bar *b);
    +void foo(Bar &b);
    +
    +

    If declarations such as these appear, you will get a warning message + like this:

    +
    +
     example.i:12: Warning 509: Overloaded method spam(short) effectively ignored,
     example.i:11: Warning 509: as it is shadowed by spam(int).
    -
    -
    -

    To fix this, you either need to ignore or rename one of the methods. - For example:

    -
    -
    %rename(spam_short) spam(short);
    +
    +
    +

    To fix this, you either need to ignore or rename one of the methods. + For example:

    +
    +
    %rename(spam_short) spam(short);
     ...
     void spam(int); 
    -void spam(short); // Accessed as spam_short
    -
    -

    or

    -
    -
    %ignore spam(short);
    +void spam(short); // Accessed as spam_short
    +
    +

    or

    +
    +
    %ignore spam(short);
     ...
     void spam(int); 
    -void spam(short); // Ignored
    -
    -

    SWIG resolves overloaded functions and methods using a +void spam(short); // Ignored

    +
    +

    SWIG resolves overloaded functions and methods using a disambiguation scheme that ranks and sorts declarations according to a set of type-precedence rules. The order in which declarations appear in the input does not matter except in situations where ambiguity - arises--in this case, the first declaration takes precedence.

    -

    Please refer to the "SWIG and C++" chapter - for more information about overloading.

    -

    38.3.10 C++ Operators

    -

    For the most part, overloaded operators are handled automatically by + arises--in this case, the first declaration takes precedence.

    +

    Please refer to the "SWIG and C++" chapter + for more information about overloading.

    +

    34.3.10 C++ Operators

    +

    For the most part, overloaded operators are handled automatically by SWIG and do not require any special treatment on your part. So if your - class declares an overloaded addition operator, e.g.

    -
    -
    class Complex {
    + class declares an overloaded addition operator, e.g.

    +
    +
    class Complex {
       ...
       Complex operator+(Complex &);
       ...
    -};
    -
    -

    the resulting Ruby class will also support the addition (+) method - correctly.

    -

    For cases where SWIG's built-in support is not sufficient, C++ - operators can be wrapped using the %rename directive +};

    +
    +

    the resulting Ruby class will also support the addition (+) method + correctly.

    +

    For cases where SWIG's built-in support is not sufficient, C++ + operators can be wrapped using the %rename directive (available on SWIG 1.3.10 and later releases). All you need to do is - give the operator the name of a valid Ruby identifier. For example:

    -
    -
    %rename(add_complex) operator+(Complex &, Complex &);
    + give the operator the name of a valid Ruby identifier. For example:

    +
    +
    %rename(add_complex) operator+(Complex &, Complex &);
     ...
    -Complex operator+(Complex &, Complex &);
    -
    -

    Now, in Ruby, you can do this:

    -
    -
    a = Example::Complex.new(2, 3)
    +Complex operator+(Complex &, Complex &);
    +
    +

    Now, in Ruby, you can do this:

    +
    +
    a = Example::Complex.new(2, 3)
     b = Example::Complex.new(4, -1)
    -c = Example.add_complex(a, b)
    -
    -

    More details about wrapping C++ operators into Ruby operators is - discussed in the section on - operator overloading.

    -

    38.3.11 C++ namespaces

    -

    SWIG is aware of C++ namespaces, but namespace names do not appear +c = Example.add_complex(a, b)

    +
    +

    More details about wrapping C++ operators into Ruby operators is + discussed in the section on + operator overloading.

    +

    34.3.11 C++ namespaces

    +

    SWIG is aware of C++ namespaces, but namespace names do not appear in the module nor do namespaces result in a module that is broken up - into submodules or packages. For example, if you have a file like this,

    -
    -
    %module example
    + into submodules or packages. For example, if you have a file like this,

    +
    +
    %module example
     
     namespace foo {
       int fact(int n);
       struct Vector {
         double x, y, z;
       };
    -};
    -
    -

    it works in Ruby as follows:

    -
    -
    irb(main):001:0> require 'example'
    +};
    +
    +

    it works in Ruby as follows:

    +
    +
    irb(main):001:0> require 'example'
     true
    -irb(main):002:0> Example.fact(3)
    +irb(main):002:0> Example.fact(3)
     6
    -irb(main):003:0> v = Example::Vector.new
    +irb(main):003:0> v = Example::Vector.new
     #<Example::Vector:0x4016f4d4>
    -irb(main):004:0> v.x = 3.4
    +irb(main):004:0> v.x = 3.4
     3.4
    -irb(main):004:0> v.y
    -0.0
    -
    -

    If your program has more than one namespace, name conflicts (if any) - can be resolved using %rename For example:

    -
    -
    %rename(Bar_spam) Bar::spam;
    +irb(main):004:0> v.y
    +0.0
    +
    +

    If your program has more than one namespace, name conflicts (if any) + can be resolved using %rename For example:

    +
    +
    %rename(Bar_spam) Bar::spam;
     
     namespace Foo {
       int spam();
    @@ -51881,21 +50409,21 @@ namespace Foo {
     
     namespace Bar {
       int spam();
    -}
    -
    -

    If you have more than one namespace and your want to keep their +}

    +
    +

    If you have more than one namespace and your want to keep their symbols separate, consider wrapping them as separate SWIG modules. For example, make the module name the same as the namespace and create extension modules for each namespace separately. If your program utilizes thousands of small deeply nested namespaces each with - identical symbol names, well, then you get what you deserve.

    -

    38.3.12 C++ templates

    -

    C++ templates don't present a huge problem for SWIG. However, in + identical symbol names, well, then you get what you deserve.

    +

    34.3.12 C++ templates

    +

    C++ templates don't present a huge problem for SWIG. However, in order to create wrappers, you have to tell SWIG to create wrappers for - a particular template instantiation. To do this, you use the -%template directive. For example:

    -
    -
    %module example
    + a particular template instantiation. To do this, you use the 
    +%template directive. For example:

    +
    +
    %module example
     
     %{
     #include "pair.h"
    @@ -51912,50 +50440,50 @@ struct pair {
       ~pair();
     };
     
    -%template(Pairii) pair<int, int>;
    -
    -

    In Ruby:

    -
    -
    irb(main):001:0> require 'example'
    +%template(Pairii) pair<int, int>;
    +
    +

    In Ruby:

    +
    +
    irb(main):001:0> require 'example'
     true
    -irb(main):002:0> p = Example::Pairii.new(3, 4)
    +irb(main):002:0> p = Example::Pairii.new(3, 4)
     #<Example:Pairii:0x4016f4df>
    -irb(main):003:0> p.first
    +irb(main):003:0> p.first
     3
    -irb(main):004:0> p.second
    -4
    -
    -

    38.3.13 C++ Standard Template Library (STL) -

    -

    On a related note, the standard SWIG library contains a number of +irb(main):004:0> p.second +4

    +
    +

    34.3.13 C++ Standard Template Library (STL) +

    +

    On a related note, the standard SWIG library contains a number of modules that provide typemaps for standard C++ library classes (such as - std::pair, std::string and std::vector). + std::pair, std::string and std::vector). These library modules don't provide wrappers around the templates themselves, but they do make it convenient for users of your extension module to pass Ruby objects (such as arrays and strings) to wrapped C++ code that expects instances of standard C++ templates. For example, suppose the C++ library you're wrapping has a function that expects a - vector of floats:

    -
    -
    %module example
    + vector of floats:

    +
    +
    %module example
     
    -float sum(const std::vector<float>& values);
    -
    -

    Rather than go through the hassle of writing an "in" typemap to +float sum(const std::vector<float>& values);

    +
    +

    Rather than go through the hassle of writing an "in" typemap to convert an array of Ruby numbers into a std::vector<float>, you can - just use the std_vector.i module from the standard SWIG - library:

    -
    -
    %module example
    + just use the std_vector.i module from the standard SWIG
    + library:

    +
    +
    %module example
     
     %include std_vector.i
    -float sum(const std::vector<float>& values);
    -
    -

    Ruby's STL wrappings provide additional methods to make them behave - more similarly to Ruby's native classes.

    -

    Thus, you can do, for example:

    -
    -
    v = IntVector.new
    +float sum(const std::vector<float>& values);
    +
    +

    Ruby's STL wrappings provide additional methods to make them behave + more similarly to Ruby's native classes.

    +

    Thus, you can do, for example:

    +
    +
    v = IntVector.new
     v << 2
     v << 3
     v << 4
    @@ -51965,14 +50493,14 @@ v.each { |x| puts x }
     3
     4
     v.delete_if { |x| x == 3 }
    -=> [2, 4]
    -
    -

    The SWIG Ruby module provides also the ability for all the STL +=> [2, 4]

    +
    +

    The SWIG Ruby module provides also the ability for all the STL containers to carry around Ruby native objects (Fixnum, Classes, etc) making them act almost like Ruby's own Array, Hash, etc. To do that, - you need to define a container that contains a swig::GC_VALUE, like:

    -
    -
    + you need to define a container that contains a swig::GC_VALUE, like:

    +
    +
     %module nativevector
     
     %{
    @@ -51980,12 +50508,12 @@ std::vector< swig::GC_VALUE > NativeVector;
     %}
     
     %template(NativeVector) std::vector< swig::GC_VALUE >;
    -
    -
    -

    This vector can then contain any Ruby object, making them almost - identical to Ruby's own Array class.

    -
    -
    require 'nativevector'
    +
    +
    +

    This vector can then contain any Ruby object, making them almost + identical to Ruby's own Array class.

    +
    +
    require 'nativevector'
     include NativeVector
     
     v = NativeVector.new
    @@ -51999,39 +50527,39 @@ v << A.new
     
     puts v
     => [1, [1, 2], 'hello', #<A:0x245325>]
    -
    -
    -

    Obviously, there is a lot more to template wrapping than shown in - these examples. More details can be found in the -SWIG and C++ chapter.

    -

    38.3.14 C++ STL Functors

    -

    Some containers in the STL allow you to modify their default behavior +

    +
    +

    Obviously, there is a lot more to template wrapping than shown in + these examples. More details can be found in the +SWIG and C++ chapter.

    +

    34.3.14 C++ STL Functors

    +

    Some containers in the STL allow you to modify their default behavior by using so called functors or function objects. Functors are often - just a very simple struct with operator() redefined or an + just a very simple struct with operator() redefined or an actual C/C++ function. This allows you, for example, to always keep the - sort order of a STL container to your liking.

    -

    The Ruby STL mappings allows you to modify those containers that + sort order of a STL container to your liking.

    +

    The Ruby STL mappings allows you to modify those containers that support functors using Ruby procs or methods, instead. Currently, this - includes std::set, set::map, std::multiset - and std::multimap.

    -

    The functors in swig are called swig::UnaryFunction and -swig::BinaryFunction. For C++ predicates (ie. functors that must - return bool as a result) swig::UnaryPredicate and -swig::BinaryPredicate are provided.

    -

    As an example, if given this swig file:

    -
    -
    + includes std::set, set::map, std::multiset
    + and std::multimap.

    +

    The functors in swig are called swig::UnaryFunction and +swig::BinaryFunction. For C++ predicates (ie. functors that must + return bool as a result) swig::UnaryPredicate and +swig::BinaryPredicate are provided.

    +

    As an example, if given this swig file:

    +
    +
     %module intset;
     
     %include <std_set.i>
     
     %template(IntSet) std::set< int, swig::BinaryPredicate >;
    -
    -
    -

    You can then use the set from Ruby with or without a proc object as a - predicate:

    -
    -
    +
    +
    +

    You can then use the set from Ruby with or without a proc object as a + predicate:

    +
    +
     require 'intset'
     include Intset
     
    @@ -52041,7 +50569,7 @@ a << 1
     a << 2
     a << 3
     a
    -=> [1, 2, 3]
    +=> [1, 2, 3]
     
     # Custom sorting behavior defined by a Ruby proc
     b = IntSet.new( proc { |a, b| a > b } )
    @@ -52049,57 +50577,57 @@ b << 1
     b << 2
     b << 3
     b
    -=>  [3, 2, 1]
    -
    -
    -

    38.3.15 C++ STL Iterators

    -

    The STL is well known for the use of iterators. There are a number of +=> [3, 2, 1] +

    +
    +

    34.3.15 C++ STL Iterators

    +

    The STL is well known for the use of iterators. There are a number of iterators possible with different properties, but in general there are two main categories: const iterators and non-const iterators. The const iterators can access and not modify the values they point at, while the - non-const iterators can both read and modify the values.

    -

    The Ruby STL wrappings support both type of iterators by using a - proxy class in-between. This proxy class is swig::Iterator or -swig::ConstIterator. Derived from them are template classes that + non-const iterators can both read and modify the values.

    +

    The Ruby STL wrappings support both type of iterators by using a + proxy class in-between. This proxy class is swig::Iterator or +swig::ConstIterator. Derived from them are template classes that need to be initialized with the actual iterator for the container you are wrapping and often times with the beginning and ending points of - the iteration range.

    -

    The SWIG STL library already provides typemaps to all the standard + the iteration range.

    +

    The SWIG STL library already provides typemaps to all the standard containers to do this wrapping automatically for you, but if you have your own STL-like iterator, you will need to write your own typemap for - them. For out typemaps, the special functions make_const_iterator - and make_nonconst_iterator are provided.

    -

    These can be used either like:

    -
    -
    + them. For out typemaps, the special functions make_const_iterator
    + and make_nonconst_iterator are provided.

    +

    These can be used either like:

    +
    +
     make_const_iterator( iterator, rubyclass );
     make_const_iterator( iterator, iterator_begin, iterator_end, rubyclass );
    -
    -
    -

    The iterators support a next() and previous() +

    +
    +

    The iterators support a next() and previous() member function to just change the iterator without returning anything. - previous() should obviously only be used for bidirectional + previous() should obviously only be used for bidirectional iterators. You can also advance the iterator multiple steps by using - standard math operations like +=.

    -

    The value the iterator points at can be accessed with value() - -- this is equivalent to dereferencing it with *i. For - non-const iterators, a value=() function is also provided + standard math operations like +=.

    +

    The value the iterator points at can be accessed with value() + -- this is equivalent to dereferencing it with *i. For + non-const iterators, a value=() function is also provided which allows you to change the value pointed by the iterator. This is - equivalent to the C++ construct of dereferencing and assignment, like -*i = something.

    -

    Thus, given say a vector class of doubles defined as:

    -
    -
    + equivalent to the C++ construct of dereferencing and assignment, like 
    +*i = something.

    +

    Thus, given say a vector class of doubles defined as:

    +
    +
     %module doublevector
     
     %include std_vector.i
     
     %template(DoubleVector) std::vector<double>;
    -
    -
    -

    Its iterator can then be used from Ruby like:

    -
    -
    +
    +
    +

    Its iterator can then be used from Ruby like:

    +
    +
     require 'doublevector'
     include Doublevector
     
    @@ -52120,129 +50648,129 @@ while i != e
       i.next
     end
     i
    ->> [3, 4, 5 ]
    -
    -
    -

    If you'd rather have STL classes without any iterators, you should - define -DSWIG_NO_EXPORT_ITERATOR_METHODS when running swig.

    -

    38.3.16 C++ Smart Pointers

    -

    38.3.16.1 The shared_ptr - Smart Pointer

    -

    The C++11 standard provides std::shared_ptr which was - derived from the Boost implementation, boost::shared_ptr. Both +>> [3, 4, 5 ] +

    +
    +

    If you'd rather have STL classes without any iterators, you should + define -DSWIG_NO_EXPORT_ITERATOR_METHODS when running swig.

    +

    34.3.16 C++ Smart Pointers

    +

    34.3.16.1 The shared_ptr + Smart Pointer

    +

    The C++11 standard provides std::shared_ptr which was + derived from the Boost implementation, boost::shared_ptr. Both of these are available for Ruby in the SWIG library and usage is - outlined in the shared_ptr smart - pointer library section.

    -

    38.3.16.2 Generic Smart - Pointers

    -

    In certain C++ programs, it is common to use classes that have been + outlined in the shared_ptr smart + pointer library section.

    +

    34.3.16.2 Generic Smart + Pointers

    +

    In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use - of a template class that implements operator->() like this:

    -
    -
    template<class T> class SmartPtr {
    + of a template class that implements operator->() like this:

    +
    +
    template<class T> class SmartPtr {
       ...
       T *operator->();
       ...
    -}
    -
    -

    Then, if you have a class like this,

    -
    -
    class Foo {
    +}
    +
    +

    Then, if you have a class like this,

    +
    +
    class Foo {
     public:
       int x;
       int bar();
    -};
    -
    -

    A smart pointer would be used in C++ as follows:

    -
    -
    SmartPtr<Foo> p = CreateFoo(); // Created somehow (not shown)
    +};
    +
    +

    A smart pointer would be used in C++ as follows:

    +
    +
    SmartPtr<Foo> p = CreateFoo(); // Created somehow (not shown)
     ...
     p->x = 3; // Foo::x
    -int y = p->bar(); // Foo::bar
    -
    -

    To wrap this in Ruby, simply tell SWIG about the SmartPtr - class and the low-level Foo object. Make sure you instantiate -SmartPtr using %template if necessary. For example:

    -
    -
    %module example
    +int y = p->bar(); // Foo::bar
    +
    +

    To wrap this in Ruby, simply tell SWIG about the SmartPtr + class and the low-level Foo object. Make sure you instantiate +SmartPtr using %template if necessary. For example:

    +
    +
    %module example
     ...
     %template(SmartPtrFoo) SmartPtr<Foo>;
    -...
    -
    -

    Now, in Ruby, everything should just "work":

    -
    -
    irb(main):001:0> p = Example::CreateFoo() # Create a smart-pointer somehow
    +...
    +
    +

    Now, in Ruby, everything should just "work":

    +
    +
    irb(main):001:0> p = Example::CreateFoo() # Create a smart-pointer somehow
     #<Example::SmartPtrFoo:0x4016f4df>
    -irb(main):002:0> p.x = 3 # Foo::x
    +irb(main):002:0> p.x = 3 # Foo::x
     3
    -irb(main):003:0> p.bar() # Foo::bar
    -
    -

    If you ever need to access the underlying pointer returned by -operator->() itself, simply use the __deref__() method. - For example:

    -
    -
    irb(main):004:0> f = p.__deref__() # Returns underlying Foo *
    -
    -

    38.3.17 Cross-Language Polymorphism

    -

    SWIG's Ruby module supports cross-language polymorphism (a.k.a. the +irb(main):003:0> p.bar() # Foo::bar

    +
    +

    If you ever need to access the underlying pointer returned by +operator->() itself, simply use the __deref__() method. + For example:

    +
    +
    irb(main):004:0> f = p.__deref__() # Returns underlying Foo *
    +
    +

    34.3.17 Cross-Language Polymorphism

    +

    SWIG's Ruby module supports cross-language polymorphism (a.k.a. the "directors" feature) similar to that for SWIG's Python module. Rather - than duplicate the information presented in the -Python chapter, this section just notes the differences that you - need to be aware of when using this feature with Ruby.

    -

    38.3.17.1 Exception Unrolling

    -

    Whenever a C++ director class routes one of its virtual member + than duplicate the information presented in the +Python chapter, this section just notes the differences that you + need to be aware of when using this feature with Ruby.

    +

    34.3.17.1 Exception Unrolling

    +

    Whenever a C++ director class routes one of its virtual member function calls to a Ruby instance method, there's always the possibility that an exception will be raised in the Ruby code. By default, those exceptions are ignored, which simply means that the exception will be exposed to the Ruby interpreter. If you would like to - change this behavior, you can use the %feature("director:except") + change this behavior, you can use the %feature("director:except") directive to indicate what action should be taken when a Ruby exception - is raised. The following code should suffice in most cases:

    -
    -
    %feature("director:except") {
    + is raised. The following code should suffice in most cases:

    +
    +
    %feature("director:except") {
       throw Swig::DirectorMethodException($error);
    -}
    -
    -

    When this feature is activated, the call to the Ruby instance method - is "wrapped" using the rb_rescue2() function from Ruby's C +}

    +
    +

    When this feature is activated, the call to the Ruby instance method + is "wrapped" using the rb_rescue2() function from Ruby's C API. If any Ruby exception is raised, it will be caught here and a C++ - exception is raised in its place.

    -

    38.4 Naming

    -

    Ruby has several common naming conventions. Constants are generally + exception is raised in its place.

    +

    34.4 Naming

    +

    Ruby has several common naming conventions. Constants are generally in upper case, module and class names are in camel case and methods are - in lower case with underscores. For example:

    -
    -
      -
    • MATH::PI is a constant name
    • -
    • MyClass is a class name
    • -
    • my_method is a method name
    • -
    -
    -

    Prior to version 1.3.28, SWIG did not support these Ruby conventions. + in lower case with underscores. For example:

    +
    +
      +
    • MATH::PI is a constant name
    • +
    • MyClass is a class name
    • +
    • my_method is a method name
    • +
    +
    +

    Prior to version 1.3.28, SWIG did not support these Ruby conventions. The only modifications it made to names was to capitalize the first - letter of constants (which includes module and class names).

    -

    SWIG 1.3.28 introduces the new -autorename command line parameter. + letter of constants (which includes module and class names).

    +

    SWIG 1.3.28 introduces the new -autorename command line parameter. When this parameter is specified, SWIG will automatically change constant, class and method names to conform with the standard Ruby - naming conventions. For example:

    -
    -
    $ swig -ruby -autorename example.i
    -
    -
    -

    To disable renaming use the -noautorename command line option.

    -

    Since this change significantly changes the wrapper code generated by + naming conventions. For example:

    +
    +
    $ swig -ruby -autorename example.i
    +
    +
    +

    To disable renaming use the -noautorename command line option.

    +

    Since this change significantly changes the wrapper code generated by SWIG, it is turned off by default in SWIG 1.3.28. However, it is - planned to become the default option in future releases.

    -

    38.4.1 Defining Aliases

    -

    It's a fairly common practice in the Ruby built-ins and standard - library to provide aliases for method names. For example, - Array#size is an alias for Array#length. If you would + planned to become the default option in future releases.

    +

    34.4.1 Defining Aliases

    +

    It's a fairly common practice in the Ruby built-ins and standard + library to provide aliases for method names. For example, + Array#size is an alias for Array#length. If you would like to provide an alias for one of your class' instance methods, one - approach is to use SWIG's %extend directive to add a new + approach is to use SWIG's %extend directive to add a new method of the aliased name that calls the original function. For - example:

    -
    -
    class MyArray {
    + example:

    +
    +
    class MyArray {
     public:
       // Construct an empty array
       MyArray();
    @@ -52257,12 +50785,12 @@ public:
         return $self->length();
       }
     }
    - 
    -
    -

    A better solution is to use the %alias directive (unique to - SWIG's Ruby module). The previous example could then be rewritten as:

    -
    -
    // MyArray#size is an alias for MyArray#length
    + 
    +
    +

    A better solution is to use the %alias directive (unique to + SWIG's Ruby module). The previous example could then be rewritten as:

    +
    +
    // MyArray#size is an alias for MyArray#length
     %alias MyArray::length "size";
     
     class MyArray {
    @@ -52272,226 +50800,226 @@ public:
      
       // Return the size of this array
       size_t length() const;
    -};
    -
    -

    Multiple aliases can be associated with a method by providing a - comma-separated list of aliases to the %alias directive, e.g.

    -
    -
    %alias MyArray::length "amount, quantity, size";
    -
    -

    From an end-user's standpoint, there's no functional difference +};

    +
    +

    Multiple aliases can be associated with a method by providing a + comma-separated list of aliases to the %alias directive, e.g.

    +
    +
    %alias MyArray::length "amount, quantity, size";
    +
    +

    From an end-user's standpoint, there's no functional difference between these two approaches; i.e. they should get the same result from - calling either MyArray#size or MyArray#length. - However, when the %alias directive is used, SWIG doesn't need + calling either MyArray#size or MyArray#length. + However, when the %alias directive is used, SWIG doesn't need to generate all of the wrapper code that's usually associated with - added methods like our MyArray::size() example.

    -

    Note that the %alias directive is implemented using SWIG's + added methods like our MyArray::size() example.

    +

    Note that the %alias directive is implemented using SWIG's "features" mechanism and so the same name matching rules used for other - kinds of features apply (see the chapter on -"Customization Features") for more details).

    -

    38.4.2 Predicate Methods

    -

    Ruby methods that return a boolean value and end in a question mark + kinds of features apply (see the chapter on +"Customization Features") for more details).

    +

    34.4.2 Predicate Methods

    +

    Ruby methods that return a boolean value and end in a question mark are known as predicate methods. Examples of predicate methods in - standard Ruby classes include Array#empty? (which returns -true for an array containing no elements) and - Object#instance_of? (which returns true if the object is + standard Ruby classes include Array#empty? (which returns +true for an array containing no elements) and + Object#instance_of? (which returns true if the object is an instance of the specified class). For consistency with Ruby conventions, methods that return boolean values should be marked as - predicate methods.

    -

    One cumbersome solution to this problem is to rename the method - (using SWIG's %rename directive) and provide a custom typemap - that converts the function's actual return type to Ruby's true - or false. For example:

    -
    -
    %rename("is_it_safe?") is_it_safe();
    + predicate methods.

    +

    One cumbersome solution to this problem is to rename the method + (using SWIG's %rename directive) and provide a custom typemap + that converts the function's actual return type to Ruby's true + or false. For example:

    +
    +
    %rename("is_it_safe?") is_it_safe();
     
     %typemap(out) int is_it_safe "$result = ($1 != 0) ? Qtrue : Qfalse;";
     
    -int is_it_safe();
    -
    -

    A better solution is to use the %predicate directive +int is_it_safe();

    +
    +

    A better solution is to use the %predicate directive (unique to SWIG's Ruby module) to designate a method as a predicate - method. For the previous example, this would look like:

    -
    -
    %predicate is_it_safe();
    + method. For the previous example, this would look like:

    +
    +
    %predicate is_it_safe();
     
    -int is_it_safe();
    -
    -

    This method would be invoked from Ruby code like this:

    -
    -
    irb(main):001:0> Example::is_it_safe?
    -true
    -
    -

    The %predicate directive is implemented using SWIG's +int is_it_safe();

    +
    +

    This method would be invoked from Ruby code like this:

    +
    +
    irb(main):001:0> Example::is_it_safe?
    +true
    +
    +

    The %predicate directive is implemented using SWIG's "features" mechanism and so the same name matching rules used for other - kinds of features apply (see the chapter on -"Customization Features") for more details).

    -

    38.4.3 Bang Methods

    -

    Ruby methods that modify an object in-place and end in an + kinds of features apply (see the chapter on +"Customization Features") for more details).

    +

    34.4.3 Bang Methods

    +

    Ruby methods that modify an object in-place and end in an exclamation mark are known as bang methods. An example of a bang method - is Array#sort! which changes the ordering of items in an - array. Contrast this with Array#sort, which returns a copy of + is Array#sort! which changes the ordering of items in an + array. Contrast this with Array#sort, which returns a copy of the array with the items sorted instead of modifying the original array. For consistency with Ruby conventions, methods that modify - objects in place should be marked as bang methods.

    -

    Bang methods can be marked using the %bang directive which + objects in place should be marked as bang methods.

    +

    Bang methods can be marked using the %bang directive which is unique to the Ruby module and was introduced in SWIG 1.3.28. For - example:

    -
    -
    %bang sort(int arr[]);
    + example:

    +
    +
    %bang sort(int arr[]);
     
    -int sort(int arr[]); 
    -
    -

    This method would be invoked from Ruby code like this:

    -
    -
    irb(main):001:0> Example::sort!(arr)
    -
    -

    The %bang directive is implemented using SWIG's "features" +int sort(int arr[]);

    +
    +

    This method would be invoked from Ruby code like this:

    +
    +
    irb(main):001:0> Example::sort!(arr)
    +
    +

    The %bang directive is implemented using SWIG's "features" mechanism and so the same name matching rules used for other kinds of - features apply (see the chapter on -"Customization Features") for more details).

    -

    38.4.4 Getters and Setters

    -

    Often times a C++ library will expose properties through getter and - setter methods. For example:

    -
    -
    class Foo {
    + features apply (see the chapter on 
    +"Customization Features") for more details).

    +

    34.4.4 Getters and Setters

    +

    Often times a C++ library will expose properties through getter and + setter methods. For example:

    +
    +
    class Foo {
       Foo() {}
       int getValue() { return value_; }
       void setValue(int value) { value_ = value; }
     
     private:
       int value_;
    -};
    -
    -

    By default, SWIG will expose these methods to Ruby as get_value - and set_value. However, it more natural for these methods to - be exposed in Ruby as value and value=. That allows - the methods to be used like this:

    -
    -
    irb(main):001:0> foo = Foo.new()
    -irb(main):002:0> foo.value = 5
    -irb(main):003:0> puts foo.value
    -
    -

    This can be done by using the %rename directive:

    -
    -
    %rename("value") Foo::getValue();
    -%rename("value=") Foo::setValue(int value);
    -
    -

    38.5 Input and output parameters

    -

    A common problem in some C programs is handling parameters passed as - simple pointers. For example:

    -
    -
    void add(int x, int y, int *result) {
    +};
    +
    +

    By default, SWIG will expose these methods to Ruby as get_value + and set_value. However, it more natural for these methods to + be exposed in Ruby as value and value=. That allows + the methods to be used like this:

    +
    +
    irb(main):001:0> foo = Foo.new()
    +irb(main):002:0> foo.value = 5
    +irb(main):003:0> puts foo.value
    +
    +

    This can be done by using the %rename directive:

    +
    +
    %rename("value") Foo::getValue();
    +%rename("value=") Foo::setValue(int value);
    +
    +

    34.5 Input and output parameters

    +

    A common problem in some C programs is handling parameters passed as + simple pointers. For example:

    +
    +
    void add(int x, int y, int *result) {
       *result = x + y;
    -}
    -
    -

    or

    -
    -
    +}
    +
    +

    or

    +
    +
     int sub(int *x, int *y) {
       return *x-*y;
    -}
    -
    -

    The easiest way to handle these situations is to use the -typemaps.i file. For example:

    -
    -
    %module Example
    +}
    +
    +

    The easiest way to handle these situations is to use the +typemaps.i file. For example:

    +
    +
    %module Example
     %include "typemaps.i"
     
     void add(int, int, int *OUTPUT);
    -int sub(int *INPUT, int *INPUT);
    -
    -

    In Ruby, this allows you to pass simple values. For example:

    -
    -
    a = Example.add(3, 4)
    +int sub(int *INPUT, int *INPUT);
    +
    +

    In Ruby, this allows you to pass simple values. For example:

    +
    +
    a = Example.add(3, 4)
     puts a
     7
     b = Example.sub(7, 4)
     puts b
    -3
    -
    -

    Notice how the INPUT parameters allow integer values to be - passed instead of pointers and how the OUTPUT parameter - creates a return result.

    -

    If you don't want to use the names INPUT or OUTPUT, - use the %apply directive. For example:

    -
    -
    %module Example
    +3
    +
    +

    Notice how the INPUT parameters allow integer values to be + passed instead of pointers and how the OUTPUT parameter + creates a return result.

    +

    If you don't want to use the names INPUT or OUTPUT, + use the %apply directive. For example:

    +
    +
    %module Example
     %include "typemaps.i"
     
     %apply int *OUTPUT { int *result };
     %apply int *INPUT { int *x, int *y};
     
     void add(int x, int y, int *result);
    -int sub(int *x, int *y);
    -
    -

    If a function mutates one of its parameters like this,

    -
    -
    void negate(int *x) {
    +int sub(int *x, int *y);
    +
    +

    If a function mutates one of its parameters like this,

    +
    +
    void negate(int *x) {
      *x = -(*x);
    -}
    -
    -

    you can use INOUT like this:

    -
    -
    %include "typemaps.i"
    +}
    +
    +

    you can use INOUT like this:

    +
    +
    %include "typemaps.i"
     ...
    -void negate(int *INOUT);
    -
    -

    In Ruby, a mutated parameter shows up as a return value. For example:

    -
    -
    a = Example.negate(3)
    +void negate(int *INOUT);
    +
    +

    In Ruby, a mutated parameter shows up as a return value. For example:

    +
    +
    a = Example.negate(3)
     print a
    --3
    -
    -

    The most common use of these special typemap rules is to handle +-3

    +
    +

    The most common use of these special typemap rules is to handle functions that return more than one value. For example, sometimes a - function returns a result as well as a special error code:

    -
    -
    /* send message, return number of bytes sent, success code, and error_code */
    -int send_message(char *text, int *success, int *error_code);
    -
    -

    To wrap such a function, simply use the OUTPUT rule above. - For example:

    -
    -
    %module example
    + function returns a result as well as a special error code:

    +
    +
    /* send message, return number of bytes sent, success code, and error_code */
    +int send_message(char *text, int *success, int *error_code);
    +
    +

    To wrap such a function, simply use the OUTPUT rule above. + For example:

    +
    +
    %module example
     %include "typemaps.i"
     ...
    -int send_message(char *, int *OUTPUT, int *OUTPUT);
    -
    -

    When used in Ruby, the function will return an array of multiple - values.

    -
    -
    bytes, success, error_code = send_message("Hello World")
    +int send_message(char *, int *OUTPUT, int *OUTPUT);
    +
    +

    When used in Ruby, the function will return an array of multiple + values.

    +
    +
    bytes, success, error_code = send_message("Hello World")
     if not success
       print "error #{error_code} : in send_message"
     else
       print "Sent", bytes
    -end
    -
    -

    Another way to access multiple return values is to use the -%apply rule. In the following example, the parameters rows and - columns are related to SWIG as OUTPUT values through the use - of %apply

    -
    -
    %module Example
    +end
    +
    +

    Another way to access multiple return values is to use the +%apply rule. In the following example, the parameters rows and + columns are related to SWIG as OUTPUT values through the use + of %apply

    +
    +
    %module Example
     %include "typemaps.i"
     %apply int *OUTPUT { int *rows, int *columns };
     ...
    -void get_dimensions(Matrix *m, int *rows, int*columns);
    -
    -

    In Ruby:

    -
    -
    r, c = Example.get_dimensions(m)
    -
    -

    38.6 Exception handling

    -

    38.6.1 Using the %exception directive

    -

    The SWIG %exception directive can be used to define a +void get_dimensions(Matrix *m, int *rows, int*columns);

    +
    +

    In Ruby:

    +
    +
    r, c = Example.get_dimensions(m)
    +
    +

    34.6 Exception handling

    +

    34.6.1 Using the %exception directive

    +

    The SWIG %exception directive can be used to define a user-definable exception handler that can convert C/C++ errors into - Ruby exceptions. The chapter on Customization - Features contains more details, but suppose you have a C++ class - like the following :

    -
    -
    class DoubleArray {
    + Ruby exceptions. The chapter on Customization
    + Features contains more details, but suppose you have a C++ class
    + like the following :

    +
    +
    class DoubleArray {
     private:
       int n;
       double *ptr;
    @@ -52528,13 +51056,13 @@ public:
           throw RangeError();
         }
       }
    -};
    -
    -

    Since several methods in this class can throw an exception for an +};

    +
    +

    Since several methods in this class can throw an exception for an out-of-bounds access, you might want to catch this in the Ruby - extension by writing the following in an interface file:

    -
    -
    %exception {
    + extension by writing the following in an interface file:

    +
    +
    %exception {
       try {
         $action
       }
    @@ -52546,18 +51074,18 @@ public:
     
     class DoubleArray {
       ...
    -};
    -
    -

    The exception handling code is inserted directly into generated +};

    +
    +

    The exception handling code is inserted directly into generated wrapper functions. When an exception handler is defined, errors can be caught and used to gracefully raise a Ruby exception instead of forcing - the entire program to terminate with an uncaught error.

    -

    As shown, the exception handling code will be added to every wrapper + the entire program to terminate with an uncaught error.

    +

    As shown, the exception handling code will be added to every wrapper function. Because this is somewhat inefficient, you might consider refining the exception handler to only apply to specific methods like - this:

    -
    -
    %exception getitem {
    + this:

    +
    +
    %exception getitem {
       try {
         $action
       } catch (const RangeError&) {
    @@ -52573,24 +51101,24 @@ class DoubleArray {
         static VALUE cpperror = rb_define_class("CPPError", rb_eStandardError);
         rb_raise(cpperror, "Range error in setitem.");
       }
    -}
    -
    -

    In this case, the exception handler is only attached to methods and - functions named getitem and setitem.

    -

    Since SWIG's exception handling is user-definable, you are not - limited to C++ exception handling. See the chapter on -Customization Features for more examples.

    -

    38.6.2 Handling Ruby Blocks

    -

    One of the highlights of Ruby and most of its standard library is the +}

    +
    +

    In this case, the exception handler is only attached to methods and + functions named getitem and setitem.

    +

    Since SWIG's exception handling is user-definable, you are not + limited to C++ exception handling. See the chapter on +Customization Features for more examples.

    +

    34.6.2 Handling Ruby Blocks

    +

    One of the highlights of Ruby and most of its standard library is the use of blocks, which allow the easy creation of continuations and other niceties. Blocks in ruby are also often used to simplify the passing of - many arguments to a class.

    -

    In order to make your class constructor support blocks, you can take + many arguments to a class.

    +

    In order to make your class constructor support blocks, you can take advantage of the %exception directive, which will get run after the C++ - class' constructor was called.

    -

    For example, this yields the class over after its construction:

    -
    -
    class Window
    + class' constructor was called.

    +

    For example, this yields the class over after its construction:

    +
    +
    class Window
     {
     public:
       Window(int x, int y, int w, int h);
    @@ -52603,21 +51131,21 @@ public:
       if (rb_block_given_p()) {
         rb_yield(self);
       }
    -}
    -
    -

    Then, in ruby, it can be used like:

    -
    -
    +}
    +
    +

    Then, in ruby, it can be used like:

    +
    +
     Window.new(0, 0, 360, 480) { |w|
       w.color = Fltk::RED
       w.border = false
     }
    -
    -
    -

    For other methods, you can usually use a dummy parameter with a - special in typemap, like:

    -
    -
    +
    +
    +

    For other methods, you can usually use a dummy parameter with a + special in typemap, like:

    +
    +
     //
     // original function was:
     //
    @@ -52632,78 +51160,78 @@ Window.new(0, 0, 360, 480) { |w|
     %extend {
       void func(int x, int RUBY_YIELD_SELF );
     }
    -
    -
    -

    For more information on typemaps, see Typemaps -.

    -

    38.6.3 Raising exceptions

    -

    There are three ways to raise exceptions from C++ code to Ruby.

    -

    The first way is to use SWIG_exception(int code, const char *msg) +

    +
    +

    For more information on typemaps, see Typemaps +.

    +

    34.6.3 Raising exceptions

    +

    There are three ways to raise exceptions from C++ code to Ruby.

    +

    The first way is to use SWIG_exception(int code, const char *msg) . The following table shows the mappings from SWIG error codes to Ruby - exceptions:

    -
    - - - - - - - - - - - - - - - - -
    SWIG_MemoryError
    -rb_eNoMemError
    SWIG_IOError
    rb_eIOError
    -
    SWIG_RuntimeError
    -rb_eRuntimeError
    SWIG_IndexError
    -rb_eIndexError
    SWIG_TypeError
    -rb_eTypeError
    SWIG_DivisionByZero
    -rb_eZeroDivError
    SWIG_OverflowError
    -rb_eRangeError
    SWIG_SyntaxError
    -rb_eSyntaxError
    SWIG_ValueError
    -rb_eArgError
    SWIG_SystemError
    -rb_eFatal
    SWIG_AttributeError
    -rb_eRuntimeError
    SWIG_NullReferenceError
    -rb_eNullReferenceError*
    SWIG_ObjectPreviouslyDeletedError
    -
    rb_eObjectPreviouslyDeleted*
    SWIG_UnknownError
    -rb_eRuntimeError
    * These error classes are - created by SWIG and are not built-in Ruby exception classes
    -
    -

    The second way to raise errors is to use SWIG_Raise(obj, type, - desc). Obj is a C++ instance of an exception class, type is a + exceptions:

    +
    + + + + + + + + + + + + + + + + +
    SWIG_MemoryError
    +rb_eNoMemError
    SWIG_IOError
    rb_eIOError
    +
    SWIG_RuntimeError
    +rb_eRuntimeError
    SWIG_IndexError
    +rb_eIndexError
    SWIG_TypeError
    +rb_eTypeError
    SWIG_DivisionByZero
    +rb_eZeroDivError
    SWIG_OverflowError
    +rb_eRangeError
    SWIG_SyntaxError
    +rb_eSyntaxError
    SWIG_ValueError
    +rb_eArgError
    SWIG_SystemError
    +rb_eFatal
    SWIG_AttributeError
    +rb_eRuntimeError
    SWIG_NullReferenceError
    +rb_eNullReferenceError*
    SWIG_ObjectPreviouslyDeletedError
    +
    rb_eObjectPreviouslyDeleted*
    SWIG_UnknownError
    +rb_eRuntimeError
    * These error classes are + created by SWIG and are not built-in Ruby exception classes
    +
    +

    The second way to raise errors is to use SWIG_Raise(obj, type, + desc). Obj is a C++ instance of an exception class, type is a string specifying the type of exception (for example, "MyError") and - desc is the SWIG description of the exception class. For example:

    -
    -
    + desc is the SWIG description of the exception class. For example:

    +
    +
     %raise(SWIG_NewPointerObj(e, SWIGTYPE_p_AssertionFailedException, 0), ":AssertionFailedException", SWIGTYPE_p_AssertionFailedException);
    -
    -
    -

    This is useful when you want to pass the current exception object +

    +
    +

    This is useful when you want to pass the current exception object directly to Ruby, particularly when the object is an instance of class - marked as an %exceptionclass (see the next section for more - information).

    -

    Last, you can raise an exception by directly calling Ruby's C api. - This is done by invoking the rb_raise() function. The first - argument passed to rb_raise() is the exception type. You can + marked as an %exceptionclass (see the next section for more + information).

    +

    Last, you can raise an exception by directly calling Ruby's C api. + This is done by invoking the rb_raise() function. The first + argument passed to rb_raise() is the exception type. You can raise a custom exception type or one of the built-in Ruby exception - types.

    -

    38.6.4 Exception classes

    -

    Starting with SWIG 1.3.28, the Ruby module supports the -%exceptionclass directive, which is used to identify C++ classes - that are used as exceptions. Classes that are marked with the -%exceptionclass directive are exposed in Ruby as child classes of -rb_eRuntimeError. This allows C++ exceptions to be directly mapped + types.

    +

    34.6.4 Exception classes

    +

    Starting with SWIG 1.3.28, the Ruby module supports the +%exceptionclass directive, which is used to identify C++ classes + that are used as exceptions. Classes that are marked with the +%exceptionclass directive are exposed in Ruby as child classes of +rb_eRuntimeError. This allows C++ exceptions to be directly mapped to Ruby exceptions, providing for a more natural integration between - C++ code and Ruby code.

    -
    -
    %exceptionclass CustomError;
    + C++ code and Ruby code.

    +
    +
    %exceptionclass CustomError;
     
     %inline %{
       class CustomError { };
    @@ -52712,69 +51240,69 @@ rb_eRuntimeError. This allows C++ exceptions to be directly mapped
       public:
         void test() { throw CustomError; }
       };
    -%}
    -
    -

    From Ruby you can now call this method like this:

    -
    -
    foo = Foo.new
    +%}
    +
    +

    From Ruby you can now call this method like this:

    +
    +
    foo = Foo.new
     begin
       foo.test()
     rescue CustomError => e
       puts "Caught custom error"
    -end 
    -
    -

    For another example look at swig/Examples/ruby/exception_class.

    -

    38.7 Typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap +end

    +
    +

    For another example look at swig/Examples/ruby/exception_class.

    +

    34.7 Typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap directive. This is an advanced topic that assumes familiarity with the - Ruby C API as well as the material in the "Typemaps -" chapter.

    -

    Before proceeding, it should be stressed that typemaps are not a + Ruby C API as well as the material in the "Typemaps +" chapter.

    +

    Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect - of the primitive C-Ruby interface.

    -

    38.7.1 What is a typemap?

    -

    A typemap is nothing more than a code generation rule that is + of the primitive C-Ruby interface.

    +

    34.7.1 What is a typemap?

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. The general form of this declaration - is as follows ( parts enclosed in [...] are optional ):

    -
    -
    + is as follows ( parts enclosed in [...] are optional ):

    +
    +
     %typemap( method [, modifiers...] ) typelist code;
    -
    -
    -

    method is a simply a name that specifies what kind of - typemap is being defined. It is usually a name like "in", -"out", or "argout" (or its director variations). The - purpose of these methods is described later.

    -

    modifiers is an optional comma separated list of -name="value" values. These are sometimes to attach extra - information to a typemap and is often target-language dependent.

    -

    typelist is a list of the C++ type patterns that the - typemap will match. The general form of this list is as follows:

    -
    -
    typelist : typepattern [, typepattern, typepattern, ... ] ;
    +
    +
    +

    method is a simply a name that specifies what kind of + typemap is being defined. It is usually a name like "in", +"out", or "argout" (or its director variations). The + purpose of these methods is described later.

    +

    modifiers is an optional comma separated list of +name="value" values. These are sometimes to attach extra + information to a typemap and is often target-language dependent.

    +

    typelist is a list of the C++ type patterns that the + typemap will match. The general form of this list is as follows:

    +
    +
    typelist : typepattern [, typepattern, typepattern, ... ] ;
     
     typepattern : type [ (parms) ]
       | type name [ (parms) ]
    -  | ( typelist ) [ (parms) ]
    -
    -

    Each type pattern is either a simple type, a simple type and + | ( typelist ) [ (parms) ]

    +
    +

    Each type pattern is either a simple type, a simple type and argument name, or a list of types in the case of multi-argument typemaps. In addition, each type pattern can be parameterized with a list of temporary variables (parms). The purpose of these variables - will be explained shortly.

    -

    code specifies the C code used in the typemap. It can take - any one of the following forms:

    -
    -
    code : { ... }
    + will be explained shortly.

    +

    code specifies the C code used in the typemap. It can take + any one of the following forms:

    +
    +
    code : { ... }
       | " ... "
    -  | %{ ... %}
    -
    -

    For example, to convert integers from Ruby to C, you might define a - typemap like this:

    -
    -
    %module example
    +  | %{ ... %}
    +
    +

    For example, to convert integers from Ruby to C, you might define a + typemap like this:

    +
    +
    %module example
     
     %typemap(in) int {
       $1 = (int) NUM2INT($input);
    @@ -52783,35 +51311,35 @@ typepattern : type [ (parms) ]
     
     %inline %{
       extern int fact(int n);
    -%}
    -
    -

    Typemaps are always associated with some specific aspect of code +%}

    +
    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of - input arguments to C/C++. The datatype int is the datatype to + input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variables prefaced by - a $ are used. The $1 variable is placeholder for a - local variable of type int. The $input variable is - the input Ruby object.

    -

    When this example is compiled into a Ruby module, the following - sample code:

    -
    -
    require 'example'
    + a $ are used. The $1 variable is placeholder for a
    + local variable of type int. The $input variable is
    + the input Ruby object.

    +

    When this example is compiled into a Ruby module, the following + sample code:

    +
    +
    require 'example'
     
    -puts Example.fact(6)
    -
    -

    prints the result:

    -
    -
    +puts Example.fact(6)
    +
    +

    prints the result:

    +
    +
     Received an integer : 6
     720
    -
    -
    -

    In this example, the typemap is applied to all occurrences of the -int datatype. You can refine this by supplying an optional - parameter name. For example:

    -
    -
    %module example
    +
    +
    +

    In this example, the typemap is applied to all occurrences of the +int datatype. You can refine this by supplying an optional + parameter name. For example:

    +
    +
    %module example
     
     %typemap(in) int n {
       $1 = (int) NUM2INT($input);
    @@ -52820,51 +51348,51 @@ int datatype. You can refine this by supplying an optional
     
     %inline %{
       extern int fact(int n);
    -%}
    -
    -

    In this case, the typemap code is only attached to arguments that - exactly match "int n".

    -

    The application of a typemap to specific datatypes and argument names +%}

    +
    +

    In this case, the typemap code is only attached to arguments that + exactly match "int n".

    +

    The application of a typemap to specific datatypes and argument names involves more than simple text-matching--typemaps are fully integrated - into the SWIG type-system. When you define a typemap for int, - that typemap applies to int and qualified variations such as -const int. In addition, the typemap system follows typedef - declarations. For example:

    -
    -
    %typemap(in) int n {
    + into the SWIG type-system. When you define a typemap for int,
    + that typemap applies to int and qualified variations such as 
    +const int. In addition, the typemap system follows typedef
    + declarations. For example:

    +
    +
    %typemap(in) int n {
       $1 = (int) NUM2INT($input);
       printf("n = %d\n", $1);
     }
     
     typedef int Integer;
    -extern int fact(Integer n); // Above typemap is applied
    -
    -

    However, the matching of typedef only occurs in one - direction. If you defined a typemap for Integer, it is not - applied to arguments of type int.

    -

    Typemaps can also be defined for groups of consecutive arguments. For - example:

    -
    -
    %typemap(in) (char *str, int len) {
    +extern int fact(Integer n); // Above typemap is applied
    +
    +

    However, the matching of typedef only occurs in one + direction. If you defined a typemap for Integer, it is not + applied to arguments of type int.

    +

    Typemaps can also be defined for groups of consecutive arguments. For + example:

    +
    +
    %typemap(in) (char *str, int len) {
       $1 = StringValuePtr($input);
       $2 = (int) RSTRING($input)->len;
     };
     
    -int count(char c, char *str, int len);
    -
    -

    When a multi-argument typemap is defined, the arguments are always - handled as a single Ruby object. This allows the function count - to be used as follows (notice how the length parameter is omitted):

    -
    -
    puts Example.count('o', 'Hello World')
    -2
    -
    -

    38.7.2 Typemap scope

    -

    Once defined, a typemap remains in effect for all of the +int count(char c, char *str, int len);

    +
    +

    When a multi-argument typemap is defined, the arguments are always + handled as a single Ruby object. This allows the function count + to be used as follows (notice how the length parameter is omitted):

    +
    +
    puts Example.count('o', 'Hello World')
    +2
    +
    +

    34.7.2 Typemap scope

    +

    Once defined, a typemap remains in effect for all of the declarations that follow. A typemap may be redefined for different - sections of an input file. For example:

    -
    -
    // typemap1
    + sections of an input file. For example:

    +
    +
    // typemap1
     %typemap(in) int {
       ...
     }
    @@ -52877,16 +51405,16 @@ int gcd(int x, int y); // typemap1
       ...
     }
     
    -int isprime(int); // typemap2
    -
    -

    One exception to the typemap scoping rules pertains to the -%extend declaration. %extend is used to attach new +int isprime(int); // typemap2

    +
    +

    One exception to the typemap scoping rules pertains to the +%extend declaration. %extend is used to attach new declarations to a class or structure definition. Because of this, all - of the declarations in an %extend block are subject to the + of the declarations in an %extend block are subject to the typemap rules that are in effect at the point where the class itself is - defined. For example:

    -
    -
    class Foo {
    + defined. For example:

    +
    +
    class Foo {
       ...
     };
     
    @@ -52897,60 +51425,60 @@ int isprime(int); // typemap2
    %extend Foo { int blah(int x); // typemap has no effect. Declaration is attached to Foo which // appears before the %typemap declaration. -};
    -
    -

    38.7.3 Copying a typemap

    -

    A typemap is copied by using assignment. For example:

    -
    -
    %typemap(in) Integer = int;
    -
    -

    or this:

    -
    -
    %typemap(in) Integer, Number, int32_t = int;
    -
    -

    Types are often managed by a collection of different typemaps. For - example:

    -
    -
    %typemap(in) int { ... }
    +};
    +
    +

    34.7.3 Copying a typemap

    +

    A typemap is copied by using assignment. For example:

    +
    +
    %typemap(in) Integer = int;
    +
    +

    or this:

    +
    +
    %typemap(in) Integer, Number, int32_t = int;
    +
    +

    Types are often managed by a collection of different typemaps. For + example:

    +
    +
    %typemap(in) int { ... }
     %typemap(out) int { ... }
     %typemap(varin) int { ... }
    -%typemap(varout) int { ... }
    -
    -

    To copy all of these typemaps to a new type, use %apply. - For example:

    -
    -
    %apply int { Integer }; // Copy all int typemaps to Integer
    -%apply int { Integer, Number }; // Copy all int typemaps to both Integer and Number
    -
    -

    The patterns for %apply follow the same rules as for -%typemap. For example:

    -
    -
    %apply int *output { Integer *output }; // Typemap with name
    -%apply (char *buf, int len) { (char *buffer, int size) }; // Multiple arguments
    -
    -

    38.7.4 Deleting a typemap

    -

    A typemap can be deleted by simply defining no code. For example:

    -
    -
    %typemap(in) int; // Clears typemap for int
    +%typemap(varout) int { ... }
    +
    +

    To copy all of these typemaps to a new type, use %apply. + For example:

    +
    +
    %apply int { Integer }; // Copy all int typemaps to Integer
    +%apply int { Integer, Number }; // Copy all int typemaps to both Integer and Number
    +
    +

    The patterns for %apply follow the same rules as for +%typemap. For example:

    +
    +
    %apply int *output { Integer *output }; // Typemap with name
    +%apply (char *buf, int len) { (char *buffer, int size) }; // Multiple arguments
    +
    +

    34.7.4 Deleting a typemap

    +

    A typemap can be deleted by simply defining no code. For example:

    +
    +
    %typemap(in) int; // Clears typemap for int
     %typemap(in) int, long, short; // Clears typemap for int, long, short
    -%typemap(in) int *output; 
    -
    -

    The %clear directive clears all typemaps for a given type. - For example:

    -
    -
    %clear int; // Removes all types for int
    -%clear int *output, long *output;
    -
    -

    Note: Since SWIG's default behavior is defined by typemaps, - clearing a fundamental type like int will make that type +%typemap(in) int *output; + +

    The %clear directive clears all typemaps for a given type. + For example:

    +
    +
    %clear int; // Removes all types for int
    +%clear int *output, long *output;
    +
    +

    Note: Since SWIG's default behavior is defined by typemaps, + clearing a fundamental type like int will make that type unusable unless you also define a new set of typemaps immediately after - the clear operation.

    -

    38.7.5 Placement of typemaps -

    -

    Typemap declarations can be declared in the global scope, within a - C++ namespace, and within a C++ class. For example:

    -
    -
    %typemap(in) int {
    + the clear operation.

    +

    34.7.5 Placement of typemaps +

    +

    Typemap declarations can be declared in the global scope, within a + C++ namespace, and within a C++ class. For example:

    +
    +
    %typemap(in) int {
       ...
     }
     
    @@ -52967,23 +51495,23 @@ public:
       %typemap(out) const_reference {
         ...
       }
    -};
    -
    -

    When a typemap appears inside a namespace or class, it stays in +};

    +
    +

    When a typemap appears inside a namespace or class, it stays in effect until the end of the SWIG input (just like before). However, the - typemap takes the local scope into account. Therefore, this code

    -
    -
    namespace std {
    + typemap takes the local scope into account. Therefore, this code

    +
    +
    namespace std {
       class string;
       %typemap(in) string {
         ...
       }
    -}
    -
    -

    is really defining a typemap for the type std::string. You - could have code like this:

    -
    -
    namespace std {
    +}
    +
    +

    is really defining a typemap for the type std::string. You + could have code like this:

    +
    +
    namespace std {
       class string;
       %typemap(in) string { /* std::string */
       ...
    @@ -52995,137 +51523,137 @@ namespace Foo {
       %typemap(in) string { /* Foo::string */
       ...
       }
    -}
    -
    -

    In this case, there are two completely distinct typemaps that apply - to two completely different types (std::string and -Foo::string).

    -

    It should be noted that for scoping to work, SWIG has to know that -string is a typename defined within a particular namespace. In this - example, this is done using the class declaration class string - .

    -

    38.7.6 Ruby typemaps

    -

    The following list details all of the typemap methods that can be - used by the Ruby module:

    -

    38.7.6.1 "in" typemap

    -

    Converts Ruby objects to input function arguments. For example:

    -
    -
    %typemap(in) int {
    +}
    +
    +

    In this case, there are two completely distinct typemaps that apply + to two completely different types (std::string and +Foo::string).

    +

    It should be noted that for scoping to work, SWIG has to know that +string is a typename defined within a particular namespace. In this + example, this is done using the class declaration class string + .

    +

    34.7.6 Ruby typemaps

    +

    The following list details all of the typemap methods that can be + used by the Ruby module:

    +

    34.7.6.1 "in" typemap

    +

    Converts Ruby objects to input function arguments. For example:

    +
    +
    %typemap(in) int {
       $1 = NUM2INT($input);
    -}
    -
    -

    The following special variables are available:

    -
    - - - - - - - - -
    $input Input object holding value to be converted.
    $symname Name of function/method being wrapped
    $1...n Argument being sent to the function
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype - matched by the typemap.
    -
    -

    This is probably the most commonly redefined typemap because it can - be used to implement customized conversions.

    -

    In addition, the "in" typemap allows the number of converted - arguments to be specified. For example:

    -
    -
    // Ignored argument.
    +}
    +
    +

    The following special variables are available:

    +
    + + + + + + + + +
    $input Input object holding value to be converted.
    $symname Name of function/method being wrapped
    $1...n Argument being sent to the function
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype + matched by the typemap.
    +
    +

    This is probably the most commonly redefined typemap because it can + be used to implement customized conversions.

    +

    In addition, the "in" typemap allows the number of converted + arguments to be specified. For example:

    +
    +
    // Ignored argument.
     %typemap(in, numinputs=0) int *out (int temp) {
       $1 = &temp;
    -}
    -
    -

    At this time, only zero or one arguments may be converted.

    -

    38.7.6.2 "typecheck" typemap

    -

    The "typecheck" typemap is used to support overloaded functions and +}

    +
    +

    At this time, only zero or one arguments may be converted.

    +

    34.7.6.2 "typecheck" typemap

    +

    The "typecheck" typemap is used to support overloaded functions and methods. It merely checks an argument to see whether or not it matches - a specific type. For example:

    -
    -
    %typemap(typecheck, precedence=SWIG_TYPECHECK_INTEGER) int {
    + a specific type. For example:

    +
    +
    %typemap(typecheck, precedence=SWIG_TYPECHECK_INTEGER) int {
       $1 = FIXNUM_P($input) ? 1 : 0;
    -}
    -
    -

    For typechecking, the $1 variable is always a simple integer that is +}

    +
    +

    For typechecking, the $1 variable is always a simple integer that is set to 1 or 0 depending on whether or not the input argument is the - correct type.

    -

    If you define new "in" typemaps and your program uses + correct type.

    +

    If you define new "in" typemaps and your program uses overloaded methods, you should also define a collection of "typecheck" typemaps. More details about this follow in a later section on - "Typemaps and Overloading."

    -

    38.7.6.3 "out" typemap

    -

    Converts return value of a C function to a Ruby object.

    -
    -
    %typemap(out) int {
    + "Typemaps and Overloading."

    +

    34.7.6.3 "out" typemap

    +

    Converts return value of a C function to a Ruby object.

    +
    +
    %typemap(out) int {
       $result = INT2NUM( $1 );
     }
    -
    -
    -

    The following special variables are available.

    -
    - - - - - - - - -
    $result Result object returned to target language.
    $symname Name of function/method being wrapped
    $1...n Argument being wrapped
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype - matched by the typemap.
    -
    -

    38.7.6.4 "arginit" typemap

    -

    The "arginit" typemap is used to set the initial value of a function +

    +
    +

    The following special variables are available.

    +
    + + + + + + + + +
    $result Result object returned to target language.
    $symname Name of function/method being wrapped
    $1...n Argument being wrapped
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype + matched by the typemap.
    +
    +

    34.7.6.4 "arginit" typemap

    +

    The "arginit" typemap is used to set the initial value of a function argument--before any conversion has occurred. This is not normally necessary, but might be useful in highly specialized applications. For - example:

    -
    -
    // Set argument to NULL before any conversion occurs
    + example:

    +
    +
    // Set argument to NULL before any conversion occurs
     %typemap(arginit) int *data {
       $1 = NULL;
    -}
    -
    -

    38.7.6.5 "default" typemap

    -

    The "default" typemap is used to turn an argument into a default - argument. For example:

    -
    -
    %typemap(default) int flags {
    +}
    +
    +

    34.7.6.5 "default" typemap

    +

    The "default" typemap is used to turn an argument into a default + argument. For example:

    +
    +
    %typemap(default) int flags {
       $1 = DEFAULT_FLAGS;
     }
     ...
    -int foo(int x, int y, int flags);
    -
    -

    The primary use of this typemap is to either change the wrapping of +int foo(int x, int y, int flags);

    +
    +

    The primary use of this typemap is to either change the wrapping of default arguments or specify a default argument in a language where they aren't supported (like C). Target languages that do not support optional arguments, such as Java and C#, effectively ignore the value - specified by this typemap as all arguments must be given.

    -

    Once a default typemap has been applied to an argument, all - arguments that follow must have default values. See the - Default/optional arguments section for further information on - default argument wrapping.

    -

    38.7.6.6 "check" typemap

    -

    The "check" typemap is used to supply value checking code during - argument conversion. The typemap is applied after arguments - have been converted. For example:

    -
    -
    %typemap(check) int positive {
    + specified by this typemap as all arguments must be given.

    +

    Once a default typemap has been applied to an argument, all + arguments that follow must have default values. See the + Default/optional arguments section for further information on + default argument wrapping.

    +

    34.7.6.6 "check" typemap

    +

    The "check" typemap is used to supply value checking code during + argument conversion. The typemap is applied after arguments + have been converted. For example:

    +
    +
    %typemap(check) int positive {
       if ($1 <= 0) {
         SWIG_exception(SWIG_ValueError, "Expected positive value.");
       }
    -}
    -
    -

    38.7.6.7 "argout" typemap

    -

    The "argout" typemap is used to return values from arguments. This +}

    +
    +

    34.7.6.7 "argout" typemap

    +

    The "argout" typemap is used to return values from arguments. This is most commonly used to write wrappers for C/C++ functions that need to return multiple values. The "argout" typemap is almost always combined with an "in" typemap---possibly to ignore the input value. For - example:

    -
    -
    /* Set the input argument to point to a temporary variable */
    + example:

    +
    +
    /* Set the input argument to point to a temporary variable */
     %typemap(in, numinputs=0) int *out (int temp) {
       $1 = &temp;
     }
    @@ -53133,31 +51661,31 @@ int foo(int x, int y, int flags);
    %typemap(argout, fragment="output_helper") int *out { // Append output value $1 to $result (assuming a single integer in this case) $result = output_helper( $result, INT2NUM(*$1) ); -}
    -
    -

    The following special variables are available.

    -
    - - - - -
    $result Result object returned to target language.
    $input The original input object passed.
    $symname Name of function/method being wrapped.
    -
    -

    The code supplied to the "argout" typemap is always placed after the +} + +

    The following special variables are available.

    +
    + + + + +
    $result Result object returned to target language.
    $input The original input object passed.
    $symname Name of function/method being wrapped.
    +
    +

    The code supplied to the "argout" typemap is always placed after the "out" typemap. If multiple return values are used, the extra return - values are often appended to return value of the function.

    -

    Output helper is a fragment that usually defines a macro to some - function like SWIG_Ruby_AppendOutput.

    -

    See the typemaps.i library for examples.

    -

    38.7.6.8 "freearg" typemap

    -

    The "freearg" typemap is used to cleanup argument data. It is only + values are often appended to return value of the function.

    +

    Output helper is a fragment that usually defines a macro to some + function like SWIG_Ruby_AppendOutput.

    +

    See the typemaps.i library for examples.

    +

    34.7.6.8 "freearg" typemap

    +

    The "freearg" typemap is used to cleanup argument data. It is only used when an argument might have allocated resources that need to be cleaned up when the wrapper function exits. The "freearg" typemap usually cleans up argument resources allocated by the "in" typemap. For - example:

    -
    -
    // Get a list of integers
    + example:

    +
    +
    // Get a list of integers
     %typemap(in) int *items {
       int nitems = Length($input); 
       $1 = (int *) malloc(sizeof(int)*nitems);
    @@ -53165,19 +51693,19 @@ width="100%">
     // Free the list 
     %typemap(freearg) int *items {
       free($1);
    -}
    -
    -

    The "freearg" typemap inserted at the end of the wrapper function, +}

    +
    +

    The "freearg" typemap inserted at the end of the wrapper function, just before control is returned back to the target language. This code - is also placed into a special variable $cleanup that may be + is also placed into a special variable $cleanup that may be used in other typemaps whenever a wrapper function needs to abort - prematurely.

    -

    38.7.6.9 "newfree" typemap

    -

    The "newfree" typemap is used in conjunction with the %newobject + prematurely.

    +

    34.7.6.9 "newfree" typemap

    +

    The "newfree" typemap is used in conjunction with the %newobject directive and is used to deallocate memory used by the return result of - a function. For example:

    -
    -
    %typemap(newfree) string * {
    + a function. For example:

    +
    +
    %typemap(newfree) string * {
       delete $1;
     }
     %typemap(out) string * {
    @@ -53187,51 +51715,51 @@ width="100%">
     
     %newobject foo;
     ...
    -string *foo();
    -
    -

    See Object ownership and - %newobject for further details.

    -

    38.7.6.10 "memberin" typemap

    -

    The "memberin" typemap is used to copy data from an already - converted input value into a structure member. It is typically - used to handle array members and other special cases. For example:

    -
    -
    %typemap(memberin) int [4] {
    +string *foo();
    +
    +

    See Object ownership and + %newobject for further details.

    +

    34.7.6.10 "memberin" typemap

    +

    The "memberin" typemap is used to copy data from an already + converted input value into a structure member. It is typically + used to handle array members and other special cases. For example:

    +
    +
    %typemap(memberin) int [4] {
       memmove($1, $input, 4*sizeof(int));
    -}
    -
    -

    It is rarely necessary to write "memberin" typemaps---SWIG already +}

    +
    +

    It is rarely necessary to write "memberin" typemaps---SWIG already provides a default implementation for arrays, strings, and other - objects.

    -

    38.7.6.11 "varin" typemap

    -

    The "varin" typemap is used to convert objects in the target + objects.

    +

    34.7.6.11 "varin" typemap

    +

    The "varin" typemap is used to convert objects in the target language to C for the purposes of assigning to a C/C++ global variable. - This is implementation specific.

    -

    38.7.6.12 "varout" typemap

    -

    The "varout" typemap is used to convert a C/C++ object to an object + This is implementation specific.

    +

    34.7.6.12 "varout" typemap

    +

    The "varout" typemap is used to convert a C/C++ object to an object in the target language when reading a C/C++ global variable. This is - implementation specific.

    -

    38.7.6.13 "throws" typemap

    -

    The "throws" typemap is only used when SWIG parses a C++ method with - an exception specification or has the %catches feature + implementation specific.

    +

    34.7.6.13 "throws" typemap

    +

    The "throws" typemap is only used when SWIG parses a C++ method with + an exception specification or has the %catches feature attached to the method. It provides a default mechanism for handling C++ methods that have declared the exceptions they will throw. The purpose of this typemap is to convert a C++ exception into an error or exception in the target language. It is slightly different to the other typemaps as it is based around the exception type rather than the type - of a parameter or variable. For example:

    -
    -
    %typemap(throws) const char * %{
    + of a parameter or variable. For example:

    +
    +
    %typemap(throws) const char * %{
       rb_raise(rb_eRuntimeError, $1);
       SWIG_fail;
     %}
    -void bar() throw (const char *);
    -
    -

    As can be seen from the generated code below, SWIG generates an +void bar() throw (const char *);

    +
    +

    As can be seen from the generated code below, SWIG generates an exception handler with the catch block comprising the "throws" typemap - content.

    -
    -
    ...
    + content.

    +
    +
    ...
     try {
       bar();
     }
    @@ -53239,297 +51767,297 @@ catch(char const *_e) {
       rb_raise(rb_eRuntimeError, _e);
       SWIG_fail;
     }
    -...
    -
    -

    Note that if your methods do not have an exception specification yet +...

    +
    +

    Note that if your methods do not have an exception specification yet they do throw exceptions, SWIG cannot know how to deal with them. For a - neat way to handle these, see the -Exception handling with %exception section.

    -

    38.7.6.14 directorin typemap

    -

    Converts C++ objects in director member functions to ruby objects. It + neat way to handle these, see the +Exception handling with %exception section.

    +

    34.7.6.14 directorin typemap

    +

    Converts C++ objects in director member functions to ruby objects. It is roughly the opposite of the "in" typemap, making its typemap rule - often similar to the "out" typemap.

    -
    -
    + often similar to the "out" typemap.

    +
    +
     %typemap(directorin) int {
       $result = INT2NUM($1);
     }
    -
    -
    -

    The following special variables are available.

    -
    - - - - - - - - - -
    $result Result object returned to target language.
    $symname Name of function/method being wrapped
    $1...n Argument being wrapped
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype - matched by the typemap.
    this C++ this, referring to the class itself.
    -
    -

    38.7.6.15 directorout typemap

    -

    Converts Ruby objects in director member functions to C++ objects. It +

    +
    +

    The following special variables are available.

    +
    + + + + + + + + + +
    $result Result object returned to target language.
    $symname Name of function/method being wrapped
    $1...n Argument being wrapped
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype + matched by the typemap.
    this C++ this, referring to the class itself.
    +
    +

    34.7.6.15 directorout typemap

    +

    Converts Ruby objects in director member functions to C++ objects. It is roughly the opposite of the "out" typemap, making its rule often - similar to the "in" typemap.

    -
    -
    + similar to the "in" typemap.

    +
    +
     %typemap(directorout) int {
       $result = NUM2INT($1);
     }
    -
    -
    -

    The following special variables are available:

    -
    - - - - - - - - - -
    $inputRuby object being sent to the function
    $symnameName of function/method being wrapped
    $1...nArgument being sent to the function
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype - matched by the typemap.
    this C++ this, referring to the class itself.
    -
    -

    Currently, the directorout nor the out typemap support the option -numoutputs, but the Ruby module provides that functionality through +

    +
    +

    The following special variables are available:

    +
    + + + + + + + + + +
    $inputRuby object being sent to the function
    $symnameName of function/method being wrapped
    $1...nArgument being sent to the function
    $1_name Name of the argument (if provided)
    $1_type The actual C datatype matched by the typemap.
    $1_ltype The assignable version of the C datatype + matched by the typemap.
    this C++ this, referring to the class itself.
    +
    +

    Currently, the directorout nor the out typemap support the option +numoutputs, but the Ruby module provides that functionality through a %feature directive. Thus, a function can be made to return "nothing" - if you do:

    -
    -
    + if you do:

    +
    +
     %feature("numoutputs", "0") MyClass::function;
    -
    -
    -

    This feature can be useful if a function returns a status code, which - you want to discard but still use the typemap to raise an exception.

    -

    38.7.6.16 directorargout - typemap

    -

    Output argument processing in director member functions.

    -
    -
    +
    +
    +

    This feature can be useful if a function returns a status code, which + you want to discard but still use the typemap to raise an exception.

    +

    34.7.6.16 directorargout + typemap

    +

    Output argument processing in director member functions.

    +
    +
     %typemap(directorargout,
     fragment="output_helper") int {
       $result = output_helper( $result, NUM2INT($1) );
     }
    -
    -
    -

    The following special variables are available:

    -
    - - - - - - - - - - -
    $resultResult that the director function returns
    $inputRuby object being sent to the function
    $symnamename of the function/method being wrapped
    $1...nArgument being sent to the function
    $1_nameName of the argument (if provided)
    $1_typeThe actual C datatype matched by the typemap
    $1_ltypeThe assignable version of the C datatype - matched by the typemap
    thisC++ this, referring to the instance of the class - itself
    -
    -

    38.7.6.17 ret typemap

    -

    Cleanup of function return values

    -

    38.7.6.18 globalin typemap

    -

    Setting of C global variables

    -

    38.7.7 Typemap variables

    -

    Within a typemap, a number of special variables prefaced with a -$ may appear. A full list of variables can be found in the " -Typemaps" chapter. This is a list of the most common variables:

    -

    $1

    -
    A C local variable corresponding to the actual type - specified in the %typemap directive. For input values, this is +
    +
    +

    The following special variables are available:

    +
    + + + + + + + + + + +
    $resultResult that the director function returns
    $inputRuby object being sent to the function
    $symnamename of the function/method being wrapped
    $1...nArgument being sent to the function
    $1_nameName of the argument (if provided)
    $1_typeThe actual C datatype matched by the typemap
    $1_ltypeThe assignable version of the C datatype + matched by the typemap
    thisC++ this, referring to the instance of the class + itself
    +
    +

    34.7.6.17 ret typemap

    +

    Cleanup of function return values

    +

    34.7.6.18 globalin typemap

    +

    Setting of C global variables

    +

    34.7.7 Typemap variables

    +

    Within a typemap, a number of special variables prefaced with a +$ may appear. A full list of variables can be found in the " +Typemaps" chapter. This is a list of the most common variables:

    +

    $1

    +
    A C local variable corresponding to the actual type + specified in the %typemap directive. For input values, this is a C local variable that is supposed to hold an argument value. For output values, this is the raw result that is supposed to be returned - to Ruby.
    -

    $input

    -
    A VALUE holding a raw Ruby object with an - argument or variable value.
    -

    $result

    -
    A VALUE that holds the result to be - returned to Ruby.
    -

    $1_name

    -
    The parameter name that was matched.
    -

    $1_type

    -
    The actual C datatype matched by the typemap.
    -

    $1_ltype

    -
    An assignable version of the datatype matched by the + to Ruby.
    +

    $input

    +
    A VALUE holding a raw Ruby object with an + argument or variable value.
    +

    $result

    +
    A VALUE that holds the result to be + returned to Ruby.
    +

    $1_name

    +
    The parameter name that was matched.
    +

    $1_type

    +
    The actual C datatype matched by the typemap.
    +

    $1_ltype

    +
    An assignable version of the datatype matched by the typemap (a type that can appear on the left-hand-side of a C assignment operation). This type is stripped of qualifiers and may be an altered - version of $1_type. All arguments and local variables in + version of $1_type. All arguments and local variables in wrapper functions are declared using this type so that their values can - be properly assigned.
    -

    $symname

    -
    The Ruby name of the wrapper function being created.
    -

    38.7.8 Useful Functions

    -

    When you write a typemap, you usually have to work directly with + be properly assigned. +

    $symname

    +
    The Ruby name of the wrapper function being created.
    +

    34.7.8 Useful Functions

    +

    When you write a typemap, you usually have to work directly with Ruby objects. The following functions may prove to be useful. (These - functions plus many more can be found in Programming Ruby - book, by David Thomas and Andrew Hunt.)

    -

    In addition, we list equivalent functions that SWIG defines, which + functions plus many more can be found in Programming Ruby + book, by David Thomas and Andrew Hunt.)

    +

    In addition, we list equivalent functions that SWIG defines, which provide a language neutral conversion (these functions are defined for each swig language supported). If you are trying to create a swig file that will work under multiple languages, it is recommended you stick to the swig functions instead of the native Ruby functions. That should help you avoid having to rewrite a lot of typemaps across multiple - languages.

    -

    38.7.8.1 C Datatypes to Ruby Objects

    -
    - - - - - - - - -
    RUBYSWIG
    INT2NUM(long or int)SWIG_From_int(int x) int - to Fixnum or Bignum
    INT2FIX(long or int) int to Fixnum (faster - than INT2NUM)
    CHR2FIX(char)SWIG_From_char(char x) char to - Fixnum
    rb_str_new2(char*)SWIG_FromCharPtrAndSize(char*, - size_t) char* to String
    rb_float_new(double)SWIG_From_double(double), -
    SWIG_From_float(float)
    float/double to Float
    -
    -

    38.7.8.2 Ruby Objects to C Datatypes

    -

    Here, while the Ruby versions return the value directly, the SWIG - versions do not, but return a status value to indicate success ( -SWIG_OK). While more akward to use, this allows you to write - typemaps that report more helpful error messages, like:

    -
    -
    + languages.

    +

    34.7.8.1 C Datatypes to Ruby Objects

    +
    + + + + + + + + +
    RUBYSWIG
    INT2NUM(long or int)SWIG_From_int(int x) int + to Fixnum or Bignum
    INT2FIX(long or int) int to Fixnum (faster + than INT2NUM)
    CHR2FIX(char)SWIG_From_char(char x) char to + Fixnum
    rb_str_new2(char*)SWIG_FromCharPtrAndSize(char*, + size_t) char* to String
    rb_float_new(double)SWIG_From_double(double), +
    SWIG_From_float(float)
    float/double to Float
    +
    +

    34.7.8.2 Ruby Objects to C Datatypes

    +

    Here, while the Ruby versions return the value directly, the SWIG + versions do not, but return a status value to indicate success ( +SWIG_OK). While more awkward to use, this allows you to write + typemaps that report more helpful error messages, like:

    +
    +
     %typemap(in) size_t (int ok)
       ok = SWIG_AsVal_size_t($input, &$1);
       if (!SWIG_IsOK(ok)) {
         SWIG_exception_fail(SWIG_ArgError(ok), Ruby_Format_TypeError( "$1_name", "$1_type", "$symname", $argnum, $input));
       }
     }
    -
    -
    - - - - - - - - - - - - - - - -
    int NUM2INT(Numeric)SWIG_AsVal_int(VALUE, int*)
    int FIX2INT(Numeric)SWIG_AsVal_int(VALUE, int*)
    unsigned int NUM2UINT(Numeric) -SWIG_AsVal_unsigned_SS_int(VALUE, int*)
    unsigned int FIX2UINT(Numeric) -SWIG_AsVal_unsigned_SS_int(VALUE, int*)
    long NUM2LONG(Numeric)SWIG_AsVal_long(VALUE, long*)
    long FIX2LONG(Numeric)SWIG_AsVal_long(VALUE, long*)
    unsigned long FIX2ULONG(Numeric) -SWIG_AsVal_unsigned_SS_long(VALUE, unsigned long*)
    char NUM2CHR(Numeric or String)SWIG_AsVal_char(VALUE, - int*)
    char * StringValuePtr(String) -SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc)
    char * rb_str2cstr(String, int*length)
    double NUM2DBL(Numeric)(double) SWIG_AsVal_int(VALUE) - or similar
    -
    -

    38.7.8.3 Macros for VALUE

    -

    RSTRING_LEN(str)

    -
    length of the Ruby string
    -

    RSTRING_PTR(str)

    -
    pointer to string storage
    -

    RARRAY_LEN(arr)

    -
    length of the Ruby array
    -

    RARRAY(arr)->capa

    -
    capacity of the Ruby array
    -

    RARRAY_PTR(arr)

    -
    pointer to array storage
    -

    38.7.8.4 Exceptions

    -

    void rb_raise(VALUE exception, const char *fmt, ...)

    -
    Raises an exception. The given format string fmt - and remaining arguments are interpreted as with printf().
    -

    void rb_fatal(const char *fmt, ...)

    -
    Raises a fatal exception, terminating the process. +
    +
    + + + + + + + + + + + + + + + +
    int NUM2INT(Numeric)SWIG_AsVal_int(VALUE, int*)
    int FIX2INT(Numeric)SWIG_AsVal_int(VALUE, int*)
    unsigned int NUM2UINT(Numeric) +SWIG_AsVal_unsigned_SS_int(VALUE, int*)
    unsigned int FIX2UINT(Numeric) +SWIG_AsVal_unsigned_SS_int(VALUE, int*)
    long NUM2LONG(Numeric)SWIG_AsVal_long(VALUE, long*)
    long FIX2LONG(Numeric)SWIG_AsVal_long(VALUE, long*)
    unsigned long FIX2ULONG(Numeric) +SWIG_AsVal_unsigned_SS_long(VALUE, unsigned long*)
    char NUM2CHR(Numeric or String)SWIG_AsVal_char(VALUE, + int*)
    char * StringValuePtr(String) +SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc)
    char * rb_str2cstr(String, int*length)
    double NUM2DBL(Numeric)(double) SWIG_AsVal_int(VALUE) + or similar
    +
    +

    34.7.8.3 Macros for VALUE

    +

    RSTRING_LEN(str)

    +
    length of the Ruby string
    +

    RSTRING_PTR(str)

    +
    pointer to string storage
    +

    RARRAY_LEN(arr)

    +
    length of the Ruby array
    +

    RARRAY(arr)->capa

    +
    capacity of the Ruby array
    +

    RARRAY_PTR(arr)

    +
    pointer to array storage
    +

    34.7.8.4 Exceptions

    +

    void rb_raise(VALUE exception, const char *fmt, ...)

    +
    Raises an exception. The given format string fmt + and remaining arguments are interpreted as with printf().
    +

    void rb_fatal(const char *fmt, ...)

    +
    Raises a fatal exception, terminating the process. No rescue blocks are called, but ensure blocks will be called. The - given format string fmt and remaining arguments are interpreted - as with printf().
    -

    void rb_bug(const char *fmt, ...)

    -
    Terminates the process immediately -- no handlers - of any sort will be called. The given format string fmt and - remaining arguments are interpreted as with printf(). You - should call this function only if a fatal bug has been exposed.
    -

    void rb_sys_fail(const char *msg)

    -
    Raises a platform-specific exception corresponding - to the last known system error, with the given string msg.
    -

    VALUE rb_rescue(VALUE (*body)(VALUE), VALUE args, - VALUE(*rescue)(VALUE, VALUE), VALUE rargs)

    -
    Executes body with the given args. If - a StandardError exception is raised, then execute rescue - with the given rargs.
    -

    VALUE rb_ensure(VALUE(*body)(VALUE), VALUE args, - VALUE(*ensure)(VALUE), VALUE eargs)

    -
    Executes body with the given args. - Whether or not an exception is raised, execute ensure with the - given rargs after body has completed.
    -

    VALUE rb_protect(VALUE (*body)(VALUE), VALUE args, int *result) -

    -
    Executes body with the given args and - returns nonzero in result if any exception was raised.
    -

    void rb_notimplement()

    -
    Raises a NotImpError exception to indicate + given format string fmt and remaining arguments are interpreted + as with printf().
    +

    void rb_bug(const char *fmt, ...)

    +
    Terminates the process immediately -- no handlers + of any sort will be called. The given format string fmt and + remaining arguments are interpreted as with printf(). You + should call this function only if a fatal bug has been exposed.
    +

    void rb_sys_fail(const char *msg)

    +
    Raises a platform-specific exception corresponding + to the last known system error, with the given string msg.
    +

    VALUE rb_rescue(VALUE (*body)(VALUE), VALUE args, + VALUE(*rescue)(VALUE, VALUE), VALUE rargs)

    +
    Executes body with the given args. If + a StandardError exception is raised, then execute rescue + with the given rargs.
    +

    VALUE rb_ensure(VALUE(*body)(VALUE), VALUE args, + VALUE(*ensure)(VALUE), VALUE eargs)

    +
    Executes body with the given args. + Whether or not an exception is raised, execute ensure with the + given rargs after body has completed.
    +

    VALUE rb_protect(VALUE (*body)(VALUE), VALUE args, int *result) +

    +
    Executes body with the given args and + returns nonzero in result if any exception was raised.
    +

    void rb_notimplement()

    +
    Raises a NotImpError exception to indicate that the enclosed function is not implemented yet, or not available on - this platform.
    -

    void rb_exit(int status)

    -
    Exits Ruby with the given status. Raises a -SystemExit exception and calls registered exit functions and - finalizers.
    -

    void rb_warn(const char *fmt, ...)

    -
    Unconditionally issues a warning message to - standard error. The given format string fmt and remaining - arguments are interpreted as with printf().
    -

    void rb_warning(const char *fmt, ...)

    -
    Conditionally issues a warning message to standard - error if Ruby was invoked with the -w flag. The given format - string fmt and remaining arguments are interpreted as with -printf().
    -

    38.7.8.5 Iterators

    -

    void rb_iter_break()

    -
    Breaks out of the enclosing iterator block.
    -

    VALUE rb_each(VALUE obj)

    -
    Invokes the each method of the given - obj.
    -

    VALUE rb_yield(VALUE arg)

    -
    Transfers execution to the iterator block in the - current context, passing arg as an argument. Multiple values may - be passed in an array.
    -

    int rb_block_given_p()

    -
    Returns true if yield would + this platform.
    +

    void rb_exit(int status)

    +
    Exits Ruby with the given status. Raises a +SystemExit exception and calls registered exit functions and + finalizers.
    +

    void rb_warn(const char *fmt, ...)

    +
    Unconditionally issues a warning message to + standard error. The given format string fmt and remaining + arguments are interpreted as with printf().
    +

    void rb_warning(const char *fmt, ...)

    +
    Conditionally issues a warning message to standard + error if Ruby was invoked with the -w flag. The given format + string fmt and remaining arguments are interpreted as with +printf().
    +

    34.7.8.5 Iterators

    +

    void rb_iter_break()

    +
    Breaks out of the enclosing iterator block.
    +

    VALUE rb_each(VALUE obj)

    +
    Invokes the each method of the given + obj.
    +

    VALUE rb_yield(VALUE arg)

    +
    Transfers execution to the iterator block in the + current context, passing arg as an argument. Multiple values may + be passed in an array.
    +

    int rb_block_given_p()

    +
    Returns true if yield would execute a block in the current context; that is, if a code block was - passed to the current method and is available to be called.
    -

    VALUE rb_iterate(VALUE (*method)(VALUE), VALUE args, VALUE - (*block)(VALUE, VALUE), VALUE arg2)

    -
    Invokes method with argument args and - block block. A yield from that method will invoke - block with the argument given to yield, and a second - argument arg2.
    -

    VALUE rb_catch(const char *tag, VALUE (*proc)(VALUE, VALUE), - VALUE value)

    -
    Equivalent to Ruby's catch.
    -

    void rb_throw(const char *tag, VALUE value)

    -
    Equivalent to Ruby's throw.
    -

    38.7.9 Typemap Examples

    -

    This section includes a few examples of typemaps. For more examples, - you might look at the examples in the Example/ruby directory.

    -

    38.7.10 Converting a Ruby array to a char **

    -

    A common problem in many C programs is the processing of command - line arguments, which are usually passed in an array of NULL + passed to the current method and is available to be called. +

    VALUE rb_iterate(VALUE (*method)(VALUE), VALUE args, VALUE + (*block)(VALUE, VALUE), VALUE arg2)

    +
    Invokes method with argument args and + block block. A yield from that method will invoke + block with the argument given to yield, and a second + argument arg2.
    +

    VALUE rb_catch(const char *tag, VALUE (*proc)(VALUE, VALUE), + VALUE value)

    +
    Equivalent to Ruby's catch.
    +

    void rb_throw(const char *tag, VALUE value)

    +
    Equivalent to Ruby's throw.
    +

    34.7.9 Typemap Examples

    +

    This section includes a few examples of typemaps. For more examples, + you might look at the examples in the Example/ruby directory.

    +

    34.7.10 Converting a Ruby array to a char **

    +

    A common problem in many C programs is the processing of command + line arguments, which are usually passed in an array of NULL terminated strings. The following SWIG interface file allows a Ruby - Array instance to be used as a char ** object.

    -
    -
    %module argv
    + Array instance to be used as a char ** object.

    +
    +
    %module argv
     
     // This tells SWIG to treat char ** as a special case
     %typemap(in) char ** {
    @@ -53563,279 +52091,279 @@ int print_args(char **argv) {
       }
       return i;
     }
    -%}
    -
    -

    When this module is compiled, the wrapped C function now operates as - follows :

    -
    -
    require 'Argv'
    +%}
    +
    +

    When this module is compiled, the wrapped C function now operates as + follows :

    +
    +
    require 'Argv'
     Argv.print_args(["Dave", "Mike", "Mary", "Jane", "John"])
     argv[0] = Dave
     argv[1] = Mike
     argv[2] = Mary
     argv[3] = Jane
    -argv[4] = John
    -
    -

    In the example, two different typemaps are used. The "in" typemap is +argv[4] = John

    +
    +

    In the example, two different typemaps are used. The "in" typemap is used to receive an input argument and convert it to a C array. Since dynamic memory allocation is used to allocate memory for the array, the "freearg" typemap is used to later release this memory after the - execution of the C function.

    -

    38.7.11 Collecting arguments in a hash

    -

    Ruby's solution to the "keyword arguments" capability of some other + execution of the C function.

    +

    34.7.11 Collecting arguments in a hash

    +

    Ruby's solution to the "keyword arguments" capability of some other languages is to allow the programmer to pass in one or more key-value pairs as arguments to a function. All of those key-value pairs are - collected in a single Hash argument that's presented to the + collected in a single Hash argument that's presented to the function. If it makes sense, you might want to provide similar functionality for your Ruby interface. For example, suppose you'd like to wrap this C function that collects information about people's vital - statistics:

    -
    -
    void setVitalStats(const char *person, int nattributes, const char **names, int *values);
    -
    -

    and you'd like to be able to call it from Ruby by passing in an - arbitrary number of key-value pairs as inputs, e.g.

    -
    -
    setVitalStats("Fred", 
    + statistics:

    +
    +
    void setVitalStats(const char *person, int nattributes, const char **names, int *values);
    +
    +

    and you'd like to be able to call it from Ruby by passing in an + arbitrary number of key-value pairs as inputs, e.g.

    +
    +
    setVitalStats("Fred", 
       'weight' => 270, 
       'age' => 42 
    -)
    -
    -

    To make this work, you need to write a typemap that expects a Ruby -Hash as its input and somehow extracts the last three arguments ( -nattributes, names and values) needed by your C - function. Let's start with the basics:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    +)
    +
    +

    To make this work, you need to write a typemap that expects a Ruby +Hash as its input and somehow extracts the last three arguments ( +nattributes, names and values) needed by your C + function. Let's start with the basics:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
     }
    - 
    -
    -

    This %typemap directive tells SWIG that we want to match +

    +
    +

    This %typemap directive tells SWIG that we want to match any function declaration that has the specified types and names of arguments somewhere in the argument list. The fact that we specified - the argument names (nattributes, names and values) + the argument names (nattributes, names and values) in our typemap is significant; this ensures that SWIG won't try to - apply this typemap to other functions it sees that happen to + apply this typemap to other functions it sees that happen to have a similar declaration with different argument names. The arguments - that appear in the second set of parentheses (keys_arr, i -, key and val) define local variables that our typemap - will need.

    -

    Since we expect the input argument to be a Hash, let's next - add a check for that:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    + that appear in the second set of parentheses (keys_arr, i
    +, key and val) define local variables that our typemap
    + will need.

    +

    Since we expect the input argument to be a Hash, let's next + add a check for that:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
    -    Check_Type($input, T_HASH);
    -}
    -
    -

    Check_Type() is just a macro (defined in the Ruby header + Check_Type($input, T_HASH); +}

    +
    +

    Check_Type() is just a macro (defined in the Ruby header files) that confirms that the input argument is of the correct type; if - it isn't, an exception will be raised.

    -

    The next task is to determine how many key-value pairs are present in - the hash; we'll assign this number to the first typemap argument ( -$1). This is a little tricky since the Ruby/C API doesn't provide a + it isn't, an exception will be raised.

    +

    The next task is to determine how many key-value pairs are present in + the hash; we'll assign this number to the first typemap argument ( +$1). This is a little tricky since the Ruby/C API doesn't provide a public function for querying the size of a hash, but we can get around - that by calling the hash's size method directly and converting - its result to a C int value:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    + that by calling the hash's size method directly and converting
    + its result to a C int value:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    -}
    -
    -

    So now we know the number of attributes. Next we need to initialize - the second and third typemap arguments (i.e. the two C arrays) to -NULL and set the stage for extracting the keys and values from the - hash:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
    +}
    +
    +

    So now we know the number of attributes. Next we need to initialize + the second and third typemap arguments (i.e. the two C arrays) to +NULL and set the stage for extracting the keys and values from the + hash:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    -    $2 = NULL;
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
    +    $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -    }
    -}
    -
    -

    There are a number of ways we could extract the keys and values from - the input hash, but the simplest approach is to first call the hash's - keys method (which returns a Ruby array of the keys) and then start - looping over the elements in that array:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    +    }
    +}
    +
    +

    There are a number of ways we could extract the keys and values from + the input hash, but the simplest approach is to first call the hash's + keys method (which returns a Ruby array of the keys) and then start + looping over the elements in that array:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
    -      }
    +      }
         }
    -}
    -
    -

    Recall that keys_arr and i are local variables for - this typemap. For each element in the keys_arr array, we want to +}

    +
    +

    Recall that keys_arr and i are local variables for + this typemap. For each element in the keys_arr array, we want to get the key itself, as well as the value corresponding to that key in - the hash:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    + the hash:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
    -        key = rb_ary_entry(keys_arr, i);
    -        val = rb_hash_aref($input, key);
    +        key = rb_ary_entry(keys_arr, i);
    +        val = rb_hash_aref($input, key);
           }
         }
    -}
    -
    -

    To be safe, we should again use the Check_Type() macro to - confirm that the key is a String and the value is a Fixnum -:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    +}
    +
    +

    To be safe, we should again use the Check_Type() macro to + confirm that the key is a String and the value is a Fixnum +:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
         Check_Type($input, T_HASH);
    -    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
         $2 = NULL;
         $3 = NULL;
         if ($1 > 0) {
           $2 = (char **) malloc($1*sizeof(char *));
           $3 = (int *) malloc($1*sizeof(int));
    -      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
           for (i = 0; i < $1; i++) {
             key = rb_ary_entry(keys_arr, i);
             val = rb_hash_aref($input, key);
    -        Check_Type(key, T_STRING);
    -        Check_Type(val, T_FIXNUM);
    +        Check_Type(key, T_STRING);
    +        Check_Type(val, T_FIXNUM);
           }
         }
    -}
    -
    -

    Finally, we can convert these Ruby objects into their C equivalents - and store them in our local C arrays:

    -
    -
    %typemap(in) (int nattributes, const char **names, const int *values)
    +}
    +
    +

    Finally, we can convert these Ruby objects into their C equivalents + and store them in our local C arrays:

    +
    +
    %typemap(in) (int nattributes, const char **names, const int *values)
       (VALUE keys_arr, int i, VALUE key, VALUE val) {
       Check_Type($input, T_HASH);
    -  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
    +  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
       $2 = NULL;
       $3 = NULL;
       if ($1 > 0) {
         $2 = (char **) malloc($1*sizeof(char *));
         $3 = (int *) malloc($1*sizeof(int));
    -    keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
    +    keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
         for (i = 0; i < $1; i++) {
           key = rb_ary_entry(keys_arr, i);
           val = rb_hash_aref($input, key);
           Check_Type(key, T_STRING);
           Check_Type(val, T_FIXNUM);
    -      $2[i] = StringValuePtr(key);
    -      $3[i] = NUM2INT(val);
    +      $2[i] = StringValuePtr(key);
    +      $3[i] = NUM2INT(val);
         }
       }
    -}
    -
    -

    We're not done yet. Since we used malloc() to dynamically - allocate the memory used for the names and values +}

    +
    +

    We're not done yet. Since we used malloc() to dynamically + allocate the memory used for the names and values arguments, we need to provide a corresponding "freearg" typemap to free that memory so that there is no memory leak. Fortunately, this typemap - is a lot easier to write:

    -
    -
    %typemap(freearg) (int nattributes, const char **names, const int *values) {
    + is a lot easier to write:

    +
    +
    %typemap(freearg) (int nattributes, const char **names, const int *values) {
       free((void *) $2);
       free((void *) $3);
    -}
    -
    -

    All of the code for this example, as well as a sample Ruby program - that uses the extension, can be found in the Examples/ruby/hashargs - directory of the SWIG distribution.

    -

    38.7.12 Pointer handling

    -

    Occasionally, it might be necessary to convert pointer values that +}

    +
    +

    All of the code for this example, as well as a sample Ruby program + that uses the extension, can be found in the Examples/ruby/hashargs + directory of the SWIG distribution.

    +

    34.7.12 Pointer handling

    +

    Occasionally, it might be necessary to convert pointer values that have been stored using the SWIG typed-pointer representation. Since there are several ways in which pointers can be represented, the - following two functions are used to safely perform this conversion:

    -

    int SWIG_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, - int flags)

    -
    Converts a Ruby object obj to a C pointer - whose address is ptr (i.e. ptr is a pointer to a - pointer). The third argument, ty, is a pointer to a SWIG type - descriptor structure. If ty is not NULL, that type + following two functions are used to safely perform this conversion:

    +

    int SWIG_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, + int flags)

    +
    Converts a Ruby object obj to a C pointer + whose address is ptr (i.e. ptr is a pointer to a + pointer). The third argument, ty, is a pointer to a SWIG type + descriptor structure. If ty is not NULL, that type information is used to validate type compatibility and other aspects of - the type conversion. If flags is non-zero, any type errors - encountered during this validation result in a Ruby TypeError - exception being raised; if flags is zero, such type errors will - cause SWIG_ConvertPtr() to return -1 but not raise an - exception. If ty is NULL, no type-checking is - performed.
    -

    VALUE SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int own) -

    -
    Creates a new Ruby pointer object. Here, ptr - is the pointer to convert, ty is the SWIG type descriptor - structure that describes the type, and own is a flag that + the type conversion. If flags is non-zero, any type errors + encountered during this validation result in a Ruby TypeError + exception being raised; if flags is zero, such type errors will + cause SWIG_ConvertPtr() to return -1 but not raise an + exception. If ty is NULL, no type-checking is + performed.
    +

    VALUE SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int own) +

    +
    Creates a new Ruby pointer object. Here, ptr + is the pointer to convert, ty is the SWIG type descriptor + structure that describes the type, and own is a flag that indicates whether or not Ruby should take ownership of the pointer (i.e. whether Ruby should free this data when the corresponding Ruby - instance is garbage-collected).
    -

    Both of these functions require the use of a special SWIG + instance is garbage-collected).

    +

    Both of these functions require the use of a special SWIG type-descriptor structure. This structure contains information about the mangled name of the datatype, type-equivalence information, as well as information about converting pointer values under C++ inheritance. - For a type of Foo *, the type descriptor structure is usually - accessed as follows:

    -
    -
    Foo *foo;
    + For a type of Foo *, the type descriptor structure is usually
    + accessed as follows:

    +
    +
    Foo *foo;
     SWIG_ConvertPtr($input, (void **) &foo, SWIGTYPE_p_Foo, 1);
     
     VALUE obj;
    -obj = SWIG_NewPointerObj(f, SWIGTYPE_p_Foo, 0);
    -
    -

    In a typemap, the type descriptor should always be accessed using - the special typemap variable $1_descriptor. For example:

    -
    -
    %typemap(in) Foo * {
    +obj = SWIG_NewPointerObj(f, SWIGTYPE_p_Foo, 0);
    +
    +

    In a typemap, the type descriptor should always be accessed using + the special typemap variable $1_descriptor. For example:

    +
    +
    %typemap(in) Foo * {
       SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 1);
    -}
    -
    -

    38.7.12.1 Ruby Datatype Wrapping

    -

    VALUE Data_Wrap_Struct(VALUE class, void (*mark)(void *), void - (*free)(void *), void *ptr)

    -
    Given a pointer ptr to some C data, and the - two garbage collection routines for this data (mark and free -), return a VALUE for the Ruby object.
    -

    VALUE Data_Make_Struct(VALUE class, c-type, void - (*mark)(void *), void (*free)(void *), c-type *ptr)

    -
    Allocates a new instance of a C data type c-type -, assigns it to the pointer ptr, then wraps that pointer with -Data_Wrap_Struct() as above.
    -

    Data_Get_Struct(VALUE obj, c-type, c-type *ptr) -

    -
    Retrieves the original C pointer of type c-type - from the data object obj and assigns that pointer to ptr.
    -

    38.7.13 Example: STL Vector to Ruby Array

    -

    Another use for macros and type maps is to create a Ruby array from a +}

    +
    +

    34.7.12.1 Ruby Datatype Wrapping

    +

    VALUE Data_Wrap_Struct(VALUE class, void (*mark)(void *), void + (*free)(void *), void *ptr)

    +
    Given a pointer ptr to some C data, and the + two garbage collection routines for this data (mark and free +), return a VALUE for the Ruby object.
    +

    VALUE Data_Make_Struct(VALUE class, c-type, void + (*mark)(void *), void (*free)(void *), c-type *ptr)

    +
    Allocates a new instance of a C data type c-type +, assigns it to the pointer ptr, then wraps that pointer with +Data_Wrap_Struct() as above.
    +

    Data_Get_Struct(VALUE obj, c-type, c-type *ptr) +

    +
    Retrieves the original C pointer of type c-type + from the data object obj and assigns that pointer to ptr.
    +

    34.7.13 Example: STL Vector to Ruby Array

    +

    Another use for macros and type maps is to create a Ruby array from a STL vector of pointers. In essence, copy of all the pointers in the vector into a Ruby array. The use of the macro is to make the typemap so generic that any vector with pointers can use the type map. The following is an example of how to construct this type of macro/typemap and should give insight into constructing similar typemaps for other - STL structures:

    -
    -
    %define PTR_VECTOR_TO_RUBY_ARRAY(vectorclassname, classname)
    + STL structures:

    +
    +
    %define PTR_VECTOR_TO_RUBY_ARRAY(vectorclassname, classname)
     %typemap(out) vectorclassname &, const vectorclassname & {
       VALUE arr = rb_ary_new2($1->size());
       vectorclassname::iterator i = $1->begin(), iend = $1->end();
    @@ -53850,17 +52378,17 @@ Data_Wrap_Struct() as above.
    rb_ary_push(arr, Data_Wrap_Struct(c ## classname.klass, 0, 0, *i)); $result = arr; } -%enddef
    -
    -

    Note, that the "c ## classname.klass" is used in the - preprocessor step to determine the actual object from the class name.

    -

    To use the macro with a class Foo, the following is used:

    -
    -
    PTR_VECTOR_TO_RUBY_ARRAY(vector<foo *="">, Foo)
    -
    -

    It is also possible to create a STL vector of Ruby objects:

    -
    -
    %define RUBY_ARRAY_TO_PTR_VECTOR(vectorclassname, classname)
    +%enddef
    +
    +

    Note, that the "c ## classname.klass" is used in the + preprocessor step to determine the actual object from the class name.

    +

    To use the macro with a class Foo, the following is used:

    +
    +
    PTR_VECTOR_TO_RUBY_ARRAY(vector<foo *="">, Foo)
    +
    +

    It is also possible to create a STL vector of Ruby objects:

    +
    +
    %define RUBY_ARRAY_TO_PTR_VECTOR(vectorclassname, classname)
     %typemap(in) vectorclassname &, const vectorclassname & {
       Check_Type($input, T_ARRAY);
       vectorclassname *vec = new vectorclassname;
    @@ -53879,12 +52407,12 @@ Data_Wrap_Struct() as above.
    %typemap(freearg) vectorclassname &, const vectorclassname & { delete $1; } -%enddef - -

    It is also possible to create a Ruby array from a vector of static - data types:

    -
    -
    %define VECTOR_TO_RUBY_ARRAY(vectorclassname, classname)
    +%enddef
    +
    +

    It is also possible to create a Ruby array from a vector of static + data types:

    +
    +
    %define VECTOR_TO_RUBY_ARRAY(vectorclassname, classname)
     %typemap(out) vectorclassname &, const vectorclassname & {
       VALUE arr = rb_ary_new2($1->size()); 
       vectorclassname::iterator i = $1->begin(), iend = $1->end();
    @@ -53899,192 +52427,192 @@ Data_Wrap_Struct() as above.
    rb_ary_push(arr, Data_Wrap_Struct(c ## classname.klass, 0, 0, &(*i))); $result = arr; } -%enddef - Note that this is mostly an example of typemaps. If you want to +%enddef + Note that this is mostly an example of typemaps. If you want to use the STL with ruby, you are advised to use the standard swig STL library, which does much more than this. Refer to the section called - the C++ Standard Template Library. -

    38.8 Docstring Features

    -

    Using ri and rdoc web pages in Ruby libraries is a common practice. + the C++ Standard Template Library. +

    34.8 Docstring Features

    +

    Using ri and rdoc web pages in Ruby libraries is a common practice. Given the way that SWIG generates the extensions by default, your users will normally not get any documentation for it, even if they run 'rdoc' - on the resulting .c or .cxx file.

    -

    The features described in this section make it easy for you to add + on the resulting .c or .cxx file.

    +

    The features described in this section make it easy for you to add rdoc strings to your modules, functions and methods that can then be read by Ruby's rdoc tool to generate html web pages, ri documentation, - Windows chm file and an .xml description.

    -

    rdoc can then be run from a console or shell window on a swig - generated file.

    -

    For example, to generate html web pages from a C++ file, you'd do:

    -
    -
    + Windows chm file and an .xml description.

    +

    rdoc can then be run from a console or shell window on a swig + generated file.

    +

    For example, to generate html web pages from a C++ file, you'd do:

    +
    +
     $ rdoc -E cxx=c -f html file_wrap.cxx
    -
    -
    -

    To generate ri documentation from a c wrap file, you could do:

    -
    -
    +
    +
    +

    To generate ri documentation from a c wrap file, you could do:

    +
    +
     $ rdoc -r file_wrap.c
    -
    -
    -

    38.8.1 Module docstring

    -

    Ruby allows a docstring at the beginning of the file before any +

    +
    +

    34.8.1 Module docstring

    +

    Ruby allows a docstring at the beginning of the file before any other statements, and it is typically used to give a general description of the entire module. SWIG supports this by setting an - option of the %module directive. For example:

    -
    -
    %module(docstring="This is the example module's docstring") example
    -
    -

    When you have more than just a line or so then you can retain the - easy readability of the %module directive by using a macro. - For example:

    -
    -
    %define DOCSTRING
    + option of the %module directive. For example:

    +
    +
    %module(docstring="This is the example module's docstring") example
    +
    +

    When you have more than just a line or so then you can retain the + easy readability of the %module directive by using a macro. + For example:

    +
    +
    %define DOCSTRING
     "The `XmlResource` class allows program resources defining menus, 
     layout of controls on a panel, etc. to be loaded from an XML file."
     %enddef
     
    -%module(docstring=DOCSTRING) xrc
    -
    -

    38.8.2 %feature("autodoc")

    -

    Since SWIG does know everything about the function it wraps, it is +%module(docstring=DOCSTRING) xrc

    +
    +

    34.8.2 %feature("autodoc")

    +

    Since SWIG does know everything about the function it wraps, it is possible to generate an rdoc containing the parameter types, names and default values. Since Ruby ships with one of the best documentation - systems of any language, it makes sense to take advantage of it.

    -

    SWIG's Ruby module provides support for the "autodoc" feature, which + systems of any language, it makes sense to take advantage of it.

    +

    SWIG's Ruby module provides support for the "autodoc" feature, which when attached to a node in the parse tree will cause an rdoc comment to be generated in the wrapper file that includes the name of the function, parameter names, default values if any, and return type if any. There are also several options for autodoc controlled by the value - given to the feature, described below.

    -

    38.8.2.1 %feature("autodoc", "0")

    -

    When the "0" option is given then the types of the parameters will - not be included in the autodoc string. For example, given this - function prototype:

    -
    -
    %feature("autodoc", "0");
    -bool function_name(int x, int y, Foo* foo=NULL, Bar* bar=NULL);
    -
    -

    Then Ruby code like this will be generated:

    -
    -
    function_name(x, y, foo=nil, bar=nil) -> bool
    -  ...
    -
    -

    38.8.2.2 %feature("autodoc", "1")

    -

    When the "1" option is used then the parameter types will + given to the feature, described below.

    +

    34.8.2.1 %feature("autodoc", "0")

    +

    When the "0" option is given then the types of the parameters will + not be included in the autodoc string. For example, given this + function prototype:

    +
    +
    %feature("autodoc", "0");
    +bool function_name(int x, int y, Foo* foo=NULL, Bar* bar=NULL);
    +
    +

    Then Ruby code like this will be generated:

    +
    +
    function_name(x, y, foo=nil, bar=nil) -> bool
    +  ...
    +
    +

    34.8.2.2 %feature("autodoc", "1")

    +

    When the "1" option is used then the parameter types will be used in the rdoc string. In addition, an attempt is made to simplify the type name such that it makes more sense to the Ruby user. Pointer, - reference and const info is removed, %rename's are evaluated, + reference and const info is removed, %rename's are evaluated, etc. (This is not always successful, but works most of the time. See the next section for what to do when it doesn't.) Given the example above, then turning on the parameter types with the "1" option will - result in rdoc code like this:

    -
    -
    function_name(int x, int y, Foo foo=nil, Bar bar=nil) -> bool
    -  ...
    -
    -

    38.8.2.3 %feature("autodoc", "2")

    -

    When the "2" option is used then the parameter types will not be + result in rdoc code like this:

    +
    +
    function_name(int x, int y, Foo foo=nil, Bar bar=nil) -> bool
    +  ...
    +
    +

    34.8.2.3 %feature("autodoc", "2")

    +

    When the "2" option is used then the parameter types will not be used in the rdoc string. However, they will be listed in full after the function. Given the example above, then turning on the parameter types - with the "2" option will result in Ruby code like this:

    -

    38.8.2.4 %feature("autodoc", "3") -

    -

    When the "3" option is used then the function will be documented + with the "2" option will result in Ruby code like this:

    +

    34.8.2.4 %feature("autodoc", "3") +

    +

    When the "3" option is used then the function will be documented using a combination of "1" and "2" above. Given the example above, then turning on the parameter types with the "2" option will result in Ruby - code like this:

    -
    -
    function_name(int x, int y, Foo foo=nil, Bar bar=nil) -> bool
    + code like this:

    +
    +
    function_name(int x, int y, Foo foo=nil, Bar bar=nil) -> bool
     
     Parameters:
             x - int
             y - int
             foo - Foo
    -        bar - Bar
    -
    -

    38.8.2.5 %feature("autodoc", "docstring")

    -

    Finally, there are times when the automatically generated autodoc + bar - Bar

    +
    +

    34.8.2.5 %feature("autodoc", "docstring")

    +

    Finally, there are times when the automatically generated autodoc string will make no sense for a Ruby programmer, particularly when a typemap is involved. So if you give an explicit value for the autodoc feature then that string will be used in place of the automatically - generated string. For example:

    -
    -
    %feature("autodoc", "GetPosition() -> (x, y)") GetPosition;
    -void GetPosition(int* OUTPUT, int* OUTPUT);
    -
    -

    38.8.3 %feature("docstring")

    -

    In addition to the autodoc strings described above, you can also + generated string. For example:

    +
    +
    %feature("autodoc", "GetPosition() -> (x, y)") GetPosition;
    +void GetPosition(int* OUTPUT, int* OUTPUT);
    +
    +

    34.8.3 %feature("docstring")

    +

    In addition to the autodoc strings described above, you can also attach any arbitrary descriptive text to a node in the parse tree with the "docstring" feature. When the proxy module is generated then any docstring associated with classes, function or methods are output. If an item already has an autodoc string then it is combined with the - docstring and they are output together.

    -

    38.9 Advanced Topics

    -

    38.9.1 Operator overloading

    -

    SWIG allows operator overloading with, by using the %extend - or %rename commands in SWIG and the following operator names - (derived from Python):

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    General
    __repr__ inspect
    __str__ to_s
    __cmp__ <=>
    __hash__ hash
    __nonzero__ nonzero?
    Callable
    __call__ call
    Collection
    __len__ length
    __getitem__ []
    __setitem__ []=
    Numeric
    __add__ +
    __sub__ -
    __mul__ *
    __div__ /
    __mod__ %
    __divmod__ divmod
    __pow__ **
    __lshift__ <<
    __rshift__ >>
    __and__ &
    __xor__ ^
    __or__ |
    __neg__ -@
    __pos__ +@
    __abs__ abs
    __invert__ ~
    __int__ to_i
    __float__ to_f
    __coerce__ coerce
    Additions in 1.3.13
    __lt__ <
    __le__ <=
    __eq__ ==
    __gt__ >
    __ge__ >=
    -
    -

    Note that although SWIG supports the __eq__ magic method + docstring and they are output together.

    +

    34.9 Advanced Topics

    +

    34.9.1 Operator overloading

    +

    SWIG allows operator overloading with, by using the %extend + or %rename commands in SWIG and the following operator names + (derived from Python):

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    General
    __repr__ inspect
    __str__ to_s
    __cmp__ <=>
    __hash__ hash
    __nonzero__ nonzero?
    Callable
    __call__ call
    Collection
    __len__ length
    __getitem__ []
    __setitem__ []=
    Numeric
    __add__ +
    __sub__ -
    __mul__ *
    __div__ /
    __mod__ %
    __divmod__ divmod
    __pow__ **
    __lshift__ <<
    __rshift__ >>
    __and__ &
    __xor__ ^
    __or__ |
    __neg__ -@
    __pos__ +@
    __abs__ abs
    __invert__ ~
    __int__ to_i
    __float__ to_f
    __coerce__ coerce
    Additions in 1.3.13
    __lt__ <
    __le__ <=
    __eq__ ==
    __gt__ >
    __ge__ >=
    +
    +

    Note that although SWIG supports the __eq__ magic method name for defining an equivalence operator, there is no separate method - for handling inequality since Ruby parses the expression a != - b as !(a == b).

    -

    38.9.2 Creating Multi-Module Packages

    -

    The chapter on Working with Modules discusses + for handling inequality since Ruby parses the expression a != + b as !(a == b).

    +

    34.9.2 Creating Multi-Module Packages

    +

    The chapter on Working with Modules discusses the basics of creating multi-module extensions with SWIG, and in particular the considerations for sharing runtime type information - among the different modules.

    -

    As an example, consider one module's interface file (shape.i -) that defines our base class:

    -
    -
    %module shape
    + among the different modules.

    +

    As an example, consider one module's interface file (shape.i +) that defines our base class:

    +
    +
    %module shape
     
     %{
     #include "Shape.h"
    @@ -54099,12 +52627,12 @@ protected:
     public:
       double getX() const;
       double getY() const;
    -};
    -
    -

    We also have a separate interface file (circle.i) that - defines a derived class:

    -
    -
    %module circle
    +};
    +
    +

    We also have a separate interface file (circle.i) that + defines a derived class:

    +
    +
    %module circle
     
     %{
     #include "Shape.h"
    @@ -54120,18 +52648,18 @@ protected:
     public:
       Circle(double x, double y, double r);
       double getRadius() const;
    -};
    -
    -

    We'll start by building the Shape extension module:

    -
    -
    $ swig -c++ -ruby shape.i
    -
    -
    -

    SWIG generates a wrapper file named shape_wrap.cxx. To +};

    +
    +

    We'll start by building the Shape extension module:

    +
    +
    $ swig -c++ -ruby shape.i
    +
    +
    +

    SWIG generates a wrapper file named shape_wrap.cxx. To compile this into a dynamically loadable extension for Ruby, prepare an - extconf.rb script using this template:

    -
    -
    require 'mkmf'
    + extconf.rb script using this template:

    +
    +
    require 'mkmf'
     
     # Since the SWIG runtime support library for Ruby
     # depends on the Ruby library, make sure it's in the list
    @@ -54139,55 +52667,55 @@ public:
     $libs = append_library($libs, Config::CONFIG['RUBY_INSTALL_NAME'])
     
     # Create the makefile
    -create_makefile('shape')
    -
    -

    Run this script to create a Makefile and then type make - to build the shared library:

    -
    -
    $ ruby extconf.rb
    +create_makefile('shape')
    +
    +

    Run this script to create a Makefile and then type make + to build the shared library:

    +
    +
    $ ruby extconf.rb
     creating Makefile
    -$ make
    +$ make
     g++ -fPIC -g -O2 -I. -I/usr/include/ruby-2.1.0 \
     -I. -c shape_wrap.cxx
     gcc -shared -L/usr/local/lib -o shape.so shape_wrap.o -L. \
    --lruby -lruby -lc
    -
    -

    Note that depending on your installation, the outputs may be +-lruby -lruby -lc

    +
    +

    Note that depending on your installation, the outputs may be slightly different; these outputs are those for a Linux-based development environment. The end result should be a shared library - (here, shape.so) containing the extension module code. Now - repeat this process in a separate directory for the Circle - module:

    -
      -
    1. Run SWIG to generate the wrapper code (circle_wrap.cxx);
    2. -
    3. Write an extconf.rb script that your end-users can use to - create a platform-specific Makefile for the extension;
    4. -
    5. Build the shared library for this extension by typing make -.
    6. -
    -

    Once you've built both of these extension modules, you can test them - interactively in IRB to confirm that the Shape and Circle - modules are properly loaded and initialized:

    -
    -
    $ irb
    -irb(main):001:0> require 'shape'
    + (here, shape.so) containing the extension module code. Now
    + repeat this process in a separate directory for the Circle
    + module:

    +
      +
    1. Run SWIG to generate the wrapper code (circle_wrap.cxx);
    2. +
    3. Write an extconf.rb script that your end-users can use to + create a platform-specific Makefile for the extension;
    4. +
    5. Build the shared library for this extension by typing make +.
    6. +
    +

    Once you've built both of these extension modules, you can test them + interactively in IRB to confirm that the Shape and Circle + modules are properly loaded and initialized:

    +
    +
    $ irb
    +irb(main):001:0> require 'shape'
     true
    -irb(main):002:0> require 'circle'
    +irb(main):002:0> require 'circle'
     true
    -irb(main):003:0> c = Circle::Circle.new(5, 5, 20)
    +irb(main):003:0> c = Circle::Circle.new(5, 5, 20)
     #<Circle::Circle:0xa097208>
    -irb(main):004:0> c.kind_of? Shape::Shape
    +irb(main):004:0> c.kind_of? Shape::Shape
     true
    -irb(main):005:0> c.getX()
    -5.0
    -
    -

    38.9.3 Specifying Mixin Modules

    -

    The Ruby language doesn't support multiple inheritance, but it does - allow you to mix one or more modules into a class using Ruby's -include method. For example, if you have a Ruby class that defines - an each instance method, e.g.

    -
    -
    class Set
    +irb(main):005:0> c.getX()
    +5.0
    +
    +

    34.9.3 Specifying Mixin Modules

    +

    The Ruby language doesn't support multiple inheritance, but it does + allow you to mix one or more modules into a class using Ruby's +include method. For example, if you have a Ruby class that defines + an each instance method, e.g.

    +
    +
    class Set
       def initialize
       @members = []
       end
    @@ -54195,27 +52723,27 @@ include method. For example, if you have a Ruby class that defines
       def each
       @members.each { |m| yield m }
       end
    -end
    -
    -

    then you can mix-in Ruby's Enumerable module to easily add - a lot of functionality to your class:

    -
    -
    class Set
    -  include Enumerable
    +end
    +
    +

    then you can mix-in Ruby's Enumerable module to easily add + a lot of functionality to your class:

    +
    +
    class Set
    +  include Enumerable
       def initialize
         @members = []
       end
       def each
         @members.each { |m| yield m }
       end
    -end
    -
    -

    To get the same benefit for your SWIG-wrapped classes, you can use - the %mixin directive to specify the names of one or more +end

    +
    +

    To get the same benefit for your SWIG-wrapped classes, you can use + the %mixin directive to specify the names of one or more modules that should be mixed-in to a class. For the above example, the - SWIG interface specification might look like this:

    -
    -
    %mixin Set "Enumerable";
    + SWIG interface specification might look like this:

    +
    +
    %mixin Set "Enumerable";
     
     class Set {
     public:
    @@ -54224,78 +52752,78 @@ public:
      
       // Iterates through set members
       void each();
    -};
    -
    -

    Multiple modules can be mixed into a class by providing a - comma-separated list of module names to the %mixin directive, - e.g.

    -
    -
    %mixin Set "Fee, Fi, Fo, Fum";
    -
    -

    Note that the %mixin directive is implemented using SWIG's +};

    +
    +

    Multiple modules can be mixed into a class by providing a + comma-separated list of module names to the %mixin directive, + e.g.

    +
    +
    %mixin Set "Fee, Fi, Fo, Fum";
    +
    +

    Note that the %mixin directive is implemented using SWIG's "features" mechanism and so the same name matching rules used for other - kinds of features apply (see the chapter on -"Customization Features") for more details).

    -

    38.10 Memory Management

    -

    One of the most common issues in generating SWIG bindings for Ruby is + kinds of features apply (see the chapter on +"Customization Features") for more details).

    +

    34.10 Memory Management

    +

    One of the most common issues in generating SWIG bindings for Ruby is proper memory management. The key to proper memory management is clearly defining whether a wrapper Ruby object owns the underlying C - struct or C++ class. There are two possibilities:

    -
      -
    • The Ruby object is responsible for freeing the C struct or C++ - object
    • -
    • The Ruby object should not free the C struct or C++ object because - it will be freed by the underlying C or C++ code
    • -
    -

    To complicate matters, object ownership may transfer from Ruby to C++ + struct or C++ class. There are two possibilities:

    +
      +
    • The Ruby object is responsible for freeing the C struct or C++ + object
    • +
    • The Ruby object should not free the C struct or C++ object because + it will be freed by the underlying C or C++ code
    • +
    +

    To complicate matters, object ownership may transfer from Ruby to C++ (or vice versa) depending on what function or methods are invoked. Clearly, developing a SWIG wrapper requires a thorough understanding of - how the underlying library manages memory.

    -

    38.10.1 Mark and Sweep Garbage Collector

    -

    Ruby uses a mark and sweep garbage collector. When the garbage + how the underlying library manages memory.

    +

    34.10.1 Mark and Sweep Garbage Collector

    +

    Ruby uses a mark and sweep garbage collector. When the garbage collector runs, it finds all the "root" objects, including local variables, global variables, global constants, hardware registers and the C stack. For each root object, the garbage collector sets its mark - flag to true and calls rb_gc_mark on the object. The job of -rb_gc_mark is to recursively mark all the objects that a Ruby + flag to true and calls rb_gc_mark on the object. The job of +rb_gc_mark is to recursively mark all the objects that a Ruby object has a reference to (ignoring those objects that have already been marked). Those objects, in turn, may reference other objects. This process will continue until all active objects have been "marked." After the mark phase comes the sweep phase. In the sweep phase, all - objects that have not been marked will be garbage collected.

    -

    The Ruby C/API provides extension developers two hooks into the + objects that have not been marked will be garbage collected.

    +

    The Ruby C/API provides extension developers two hooks into the garbage collector - a "mark" function and a "sweep" function. By - default these functions are set to NULL.

    -

    If a C struct or C++ class references any other Ruby objects, then it + default these functions are set to NULL.

    +

    If a C struct or C++ class references any other Ruby objects, then it must provide a "mark" function. The "mark" function should identify any referenced Ruby objects by calling the rb_gc_mark function for each one. Unsurprisingly, this function will be called by the Ruby garbage - during the "mark" phase.

    -

    During the sweep phase, Ruby destroys any unused objects. If any + during the "mark" phase.

    +

    During the sweep phase, Ruby destroys any unused objects. If any memory has been allocated in creating the underlying C struct or C++ struct, then a "free" function must be defined that deallocates this - memory.

    -

    38.10.2 Object Ownership

    -

    As described above, memory management depends on clearly defining who + memory.

    +

    34.10.2 Object Ownership

    +

    As described above, memory management depends on clearly defining who is responsible for freeing the underlying C struct or C++ class. If the Ruby object is responsible for freeing the C++ object, then a "free" function must be registered for the object. If the Ruby object is not responsible for freeing the underlying memory, then a "free" function - must not be registered for the object.

    -

    For the most part, SWIG takes care of memory management issues. The - rules it uses are:

    -
      -
    • When calling a C++ object's constructor from Ruby, SWIG will assign + must not be registered for the object.

      +

      For the most part, SWIG takes care of memory management issues. The + rules it uses are:

      +
        +
      • When calling a C++ object's constructor from Ruby, SWIG will assign a "free" function thereby making the Ruby object responsible for - freeing the C++ object
      • -
      • When calling a C++ member function that returns a pointer, SWIG + freeing the C++ object
      • +
      • When calling a C++ member function that returns a pointer, SWIG will not assign a "free" function thereby making the underlying library - responsible for freeing the object.
      • -
      -

      To make this clearer, let's look at an example. Assume we have a Foo - and a Bar class.

      -
      -
      /* File "RubyOwernshipExample.h" */
      + responsible for freeing the object.
    • +
    +

    To make this clearer, let's look at an example. Assume we have a Foo + and a Bar class.

    +
    +
    /* File "RubyOwernshipExample.h" */
     
     class Foo
     {
    @@ -54313,54 +52841,54 @@ public:
       Foo* get_foo() { return foo_; }
       Foo* get_new_foo() { return new Foo; }
       void set_foo(Foo *foo) { delete foo_; foo_ = foo; }
    -};
    -
    -

    First, consider this Ruby code:

    -
    -
    foo = Foo.new
    -
    -

    In this case, the Ruby code calls the underlying Foo C++ - constructor, thus creating a new foo object. By default, SWIG +}; + +

    First, consider this Ruby code:

    +
    +
    foo = Foo.new
    +
    +

    In this case, the Ruby code calls the underlying Foo C++ + constructor, thus creating a new foo object. By default, SWIG will assign the new Ruby object a "free" function. When the Ruby object is garbage collected, the "free" function will be called. It in turn - will call Foo's destructor.

    -

    Next, consider this code:

    -
    -
    bar = Bar.new
    -foo = bar.get_foo()
    -
    -

    In this case, the Ruby code calls a C++ member function, get_foo + will call Foo's destructor.

    +

    Next, consider this code:

    +
    +
    bar = Bar.new
    +foo = bar.get_foo()
    +
    +

    In this case, the Ruby code calls a C++ member function, get_foo . By default, SWIG will not assign the Ruby object a "free" function. - Thus, when the Ruby object is garbage collected the underlying C++ -foo object is not affected.

    -

    Unfortunately, the real world is not as simple as the examples above. - For example:

    -
    -
    bar = Bar.new
    -foo = bar.get_new_foo()
    -
    -

    In this case, the default SWIG behavior for calling member functions + Thus, when the Ruby object is garbage collected the underlying C++ +foo object is not affected.

    +

    Unfortunately, the real world is not as simple as the examples above. + For example:

    +
    +
    bar = Bar.new
    +foo = bar.get_new_foo()
    +
    +

    In this case, the default SWIG behavior for calling member functions is incorrect. The Ruby object should assume ownership of the returned - object. This can be done by using the %newobject directive. See - Object ownership and %newobject for more information.

    -

    The SWIG default mappings are also incorrect in this case:

    -
    -
    foo = Foo.new
    + object. This can be done by using the %newobject directive. See 
    + Object ownership and %newobject for more information.

    +

    The SWIG default mappings are also incorrect in this case:

    +
    +
    foo = Foo.new
     bar = Bar.new
    -bar.set_foo(foo)
    -
    -

    Without modification, this code will cause a segmentation fault. When - the Ruby foo object goes out of scope, it will free the - underlying C++ foo object. However, when the Ruby bar object +bar.set_foo(foo)

    +
    +

    Without modification, this code will cause a segmentation fault. When + the Ruby foo object goes out of scope, it will free the + underlying C++ foo object. However, when the Ruby bar object goes out of scope, it will call the C++ bar destructor which will also - free the C++ foo object. The problem is that object ownership - is transferred from the Ruby object to the C++ object when the -set_foo method is called. This can be done by using the special - DISOWN type map, which was added to the Ruby bindings in SWIG-1.3.26.

    -

    Thus, a correct SWIG interface file correct mapping for these classes - is:

    -
    -
    /* File RubyOwnershipExample.i */
    + free the C++ foo object. The problem is that object ownership
    + is transferred from the Ruby object to the C++ object when the 
    +set_foo method is called. This can be done by using the special
    + DISOWN type map, which was added to the Ruby bindings in SWIG-1.3.26.

    +

    Thus, a correct SWIG interface file correct mapping for these classes + is:

    +
    +
    /* File RubyOwnershipExample.i */
     
     %module RubyOwnershipExample
     
    @@ -54383,22 +52911,22 @@ public:
       ~Bar();
       Foo* get_foo();
     
    -  %newobject get_new_foo;
    +  %newobject get_new_foo;
       Foo* get_new_foo();
     
    -  %apply SWIGTYPE *DISOWN {Foo *foo};
    +  %apply SWIGTYPE *DISOWN {Foo *foo};
       void set_foo(Foo *foo);
    -  %clear Foo *foo;
    +  %clear Foo *foo;
     };
    -
    -
    -

    This code can be seen in swig/examples/ruby/tracking.

    -

    38.10.3 Object Tracking

    -

    The remaining parts of this section will use the class library shown +

    +
    +

    This code can be seen in swig/examples/ruby/tracking.

    +

    34.10.3 Object Tracking

    +

    The remaining parts of this section will use the class library shown below to illustrate different memory management techniques. The class - library models a zoo and the animals it contains.

    -
    -
    %module zoo
    + library models a zoo and the animals it contains.

    +
    +
    %module zoo
     
     %{
     #include <string>
    @@ -54461,184 +52989,184 @@ public:
       Animal* get_animal(size_t i) const {
         return animals[i]; 
       }
    -};
    -
    -

    Let's say you SWIG this code and then run IRB:

    -
    -
    $ irb
    -irb(main):001:0> require 'example'
    +};
    +
    +

    Let's say you SWIG this code and then run IRB:

    +
    +
    $ irb
    +irb(main):001:0> require 'example'
     => true
     
    -irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
    +irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
     => #<Example::Animal:0x2be3820>
     
    -irb(main):004:0> tiger1.get_name()
    +irb(main):004:0> tiger1.get_name()
     => "tiger1"
     
    -irb(main):003:0> zoo = Example::Zoo.new()
    +irb(main):003:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2be0a60>
     
    -irb(main):006:0> zoo.add_animal(tiger)
    +irb(main):006:0> zoo.add_animal(tiger)
     => nil
     
    -irb(main):007:0> zoo.get_num_animals()
    +irb(main):007:0> zoo.get_num_animals()
     => 1
     
    -irb(main):007:0> tiger2 = zoo.remove_animal(0)
    +irb(main):007:0> tiger2 = zoo.remove_animal(0)
     => #<Example::Animal:0x2bd4a18>
     
    -irb(main):008:0> tiger2.get_name()
    +irb(main):008:0> tiger2.get_name()
     => "tiger1"
     
    -irb(main):009:0> tiger1.equal?(tiger2)
    +irb(main):009:0> tiger1.equal?(tiger2)
     => false
    -
    -
    -

    Pay particular attention to the code tiger1.equal?(tiger2). +

    +
    +

    Pay particular attention to the code tiger1.equal?(tiger2). Note that the two Ruby objects are not the same - but they reference - the same underlying C++ object. This can cause problems. For example:

    -
    -
    irb(main):010:0> tiger1 = nil
    + the same underlying C++ object. This can cause problems. For example:

    +
    +
    irb(main):010:0> tiger1 = nil
     => nil
     
    -irb(main):011:0> GC.start
    +irb(main):011:0> GC.start
     => nil
     
    -irb(main):012:0> tiger2.get_name()
    +irb(main):012:0> tiger2.get_name()
     (irb):12: [BUG] Segmentation fault
    -
    -
    -

    After the garbage collector runs, as a result of our call to -GC.start, callingtiger2.get_name() causes a segmentation - fault. The problem is that when tiger1 is garbage collected, - it frees the underlying C++ object. Thus, when tiger2 calls - the get_name() method it invokes it on a destroyed object.

    -

    This problem can be avoided if SWIG enforces a one-to-one mapping +

    +
    +

    After the garbage collector runs, as a result of our call to +GC.start, callingtiger2.get_name() causes a segmentation + fault. The problem is that when tiger1 is garbage collected, + it frees the underlying C++ object. Thus, when tiger2 calls + the get_name() method it invokes it on a destroyed object.

    +

    This problem can be avoided if SWIG enforces a one-to-one mapping between Ruby objects and C++ classes. This can be done via the use of - the %trackobjects functionality available in SWIG-1.3.26. and - later.

    -

    When the %trackobjects is turned on, SWIG automatically + the %trackobjects functionality available in SWIG-1.3.26. and + later.

    +

    When the %trackobjects is turned on, SWIG automatically keeps track of mappings between C++ objects and Ruby objects. Note that enabling object tracking causes a slight performance degradation. Test results show this degradation to be about 3% to 5% when creating and - destroying 100,000 animals in a row.

    -

    Since %trackobjects is implemented as a %feature, + destroying 100,000 animals in a row.

    +

    Since %trackobjects is implemented as a %feature, it uses the same name matching rules as other kinds of features (see - the chapter on "Customization Features") + the chapter on "Customization Features") . Thus it can be applied on a class-by-class basis if needed. To fix - the example above:

    -
    -
    %module example
    + the example above:

    +
    +
    %module example
     
     %{
     #include "example.h"
     %}
     
    -/* Tell SWIG that create_animal creates a new object */
    -%newobject Zoo::create_animal;
    +/* Tell SWIG that create_animal creates a new object */
    +%newobject Zoo::create_animal;
     
    -/* Tell SWIG to keep track of mappings between C/C++ structs/classes. */
    -%trackobjects;
    +/* Tell SWIG to keep track of mappings between C/C++ structs/classes. */
    +%trackobjects;
     
    -%include "example.h"
    -
    -

    When this code runs we see:

    -
    -
    $ irb
    -irb(main):001:0> require 'example'
    +%include "example.h"
    +
    +

    When this code runs we see:

    +
    +
    $ irb
    +irb(main):001:0> require 'example'
     => true
     
    -irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
    +irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
     => #<Example::Animal:0x2be37d8>
     
    -irb(main):003:0> zoo = Example::Zoo.new()
    +irb(main):003:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2be0a18>
     
    -irb(main):004:0> zoo.add_animal(tiger1)
    +irb(main):004:0> zoo.add_animal(tiger1)
     => nil
     
    -irb(main):006:0> tiger2 = zoo.remove_animal(0)
    +irb(main):006:0> tiger2 = zoo.remove_animal(0)
     => #<Example::Animal:0x2be37d8>
     
    -irb(main):007:0> tiger1.equal?(tiger2)
    +irb(main):007:0> tiger1.equal?(tiger2)
     => true
     
    -irb(main):008:0> tiger1 = nil
    +irb(main):008:0> tiger1 = nil
     => nil
     
    -irb(main):009:0> GC.start
    +irb(main):009:0> GC.start
     => nil
     
    -irb(main):010:0> tiger.get_name()
    +irb(main):010:0> tiger.get_name()
     => "tiger1"
    -irb(main):011:0>
    -
    -

    For those who are interested, object tracking is implemented by +irb(main):011:0>

    +
    +

    For those who are interested, object tracking is implemented by storing Ruby objects in a hash table and keying them on C++ pointers. - The underlying API is:

    -
    -
    static void SWIG_RubyAddTracking(void* ptr, VALUE object);
    + The underlying API is:

    +
    +
    static void SWIG_RubyAddTracking(void* ptr, VALUE object);
     static VALUE SWIG_RubyInstanceFor(void* ptr) ;
     static void SWIG_RubyRemoveTracking(void* ptr);
    -static void SWIG_RubyUnlinkObjects(void* ptr);
    -
    -

    When an object is created, SWIG will automatically call the -SWIG_RubyAddTracking method. Similarly, when an object is deleted, - SWIG will call the SWIG_RubyRemoveTracking. When an object is - returned to Ruby from C++, SWIG will use the SWIG_RubyInstanceFor +static void SWIG_RubyUnlinkObjects(void* ptr);

    +
    +

    When an object is created, SWIG will automatically call the +SWIG_RubyAddTracking method. Similarly, when an object is deleted, + SWIG will call the SWIG_RubyRemoveTracking. When an object is + returned to Ruby from C++, SWIG will use the SWIG_RubyInstanceFor method to ensure a one-to-one mapping from Ruby to C++ objects. Last, - the RubyUnlinkObjects method unlinks a Ruby object from its - underlying C++ object.

    -

    In general, you will only need to use the SWIG_RubyInstanceFor + the RubyUnlinkObjects method unlinks a Ruby object from its + underlying C++ object.

    +

    In general, you will only need to use the SWIG_RubyInstanceFor , which is required for implementing mark functions as shown below. However, if you implement your own free functions (see below) you may - also have to call the SWIG_RubyRemoveTracking and -RubyUnlinkObjects methods.

    -

    38.10.4 Mark Functions

    -

    With a bit more testing, we see that our class library still has - problems. For example:

    -
    -
    $ irb
    -irb(main):001:0> require 'example'
    + also have to call the SWIG_RubyRemoveTracking and 
    +RubyUnlinkObjects methods.

    +

    34.10.4 Mark Functions

    +

    With a bit more testing, we see that our class library still has + problems. For example:

    +
    +
    $ irb
    +irb(main):001:0> require 'example'
     => true
     
    -irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
    +irb(main):002:0> tiger1 = Example::Animal.new("tiger1")
     => #<Example::Animal:0x2bea6a8>
     
    -irb(main):003:0> zoo = Example::Zoo.new()
    +irb(main):003:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2be7960>
     
    -irb(main):004:0> zoo.add_animal(tiger1)
    +irb(main):004:0> zoo.add_animal(tiger1)
     => nil
     
    -irb(main):007:0> tiger1 = nil
    +irb(main):007:0> tiger1 = nil
     => nil
     
    -irb(main):007:0> GC.start
    +irb(main):007:0> GC.start
     => nil
     
    -irb(main):005:0> tiger2 = zoo.get_animal(0)
    -(irb):12: [BUG] Segmentation fault
    -
    -

    The problem is that Ruby does not know that the zoo object +irb(main):005:0> tiger2 = zoo.get_animal(0) +(irb):12: [BUG] Segmentation fault

    +
    +

    The problem is that Ruby does not know that the zoo object contains a reference to a Ruby object. Thus, when Ruby garbage collects - tiger1 it frees the underlying C++ object.

    -

    This can be fixed by implementing a mark function as - described above in the Mark and Sweep Garbage - Collector section. You can specify a mark function by using the -%markfunc directive. Since the %markfunc directive is + tiger1 it frees the underlying C++ object.

    +

    This can be fixed by implementing a mark function as + described above in the Mark and Sweep Garbage + Collector section. You can specify a mark function by using the +%markfunc directive. Since the %markfunc directive is implemented using SWIG's' "features" mechanism it uses the same name - matching rules as other kinds of features (see the chapter on -"Customization Features" for more details).

    -

    A mark function takes a single argument, which is a pointer - to the C++ object being marked; it should, in turn, call -rb_gc_mark() for any instances that are reachable from the current - object. The mark function for our Zoo class should therefore + matching rules as other kinds of features (see the chapter on +"Customization Features" for more details).

    +

    A mark function takes a single argument, which is a pointer + to the C++ object being marked; it should, in turn, call +rb_gc_mark() for any instances that are reachable from the current + object. The mark function for our Zoo class should therefore loop over all of the C++ animal objects in the zoo object, look up - their Ruby object equivalent, and then call rb_gc_mark(). One - possible implementation is:

    -
    -
    %module example
    + their Ruby object equivalent, and then call rb_gc_mark(). One
    + possible implementation is:

    +
    +
    %module example
     
     %{
     #include "example.h"
    @@ -54646,10 +53174,10 @@ rb_gc_mark() for any instances that are reachable from the current
     
     /* Keep track of mappings between C/C++ structs/classes
      and Ruby objects so we can implement a mark function. */
    -%trackobjects;
    +%trackobjects;
     
     /* Specify the mark function */
    -%markfunc Zoo "mark_Zoo";
    +%markfunc Zoo "mark_Zoo";
     
     %include "example.h"
     
    @@ -54671,71 +53199,71 @@ static void mark_Zoo(void* ptr) {
         }
       }
     }
    -%}
    -
    -

    Note the mark function is dependent on the -SWIG_RUBY_InstanceFor method, and thus requires that -%trackobjects is enabled. For more information, please refer to the - ruby_track_objects.i test case in the SWIG test suite.

    -

    When this code is compiled we now see:

    -
    -
    $ irb
    -irb(main):002:0> tiger1=Example::Animal.new("tiger1")
    +%}
    +
    +

    Note the mark function is dependent on the +SWIG_RUBY_InstanceFor method, and thus requires that +%trackobjects is enabled. For more information, please refer to the + ruby_track_objects.i test case in the SWIG test suite.

    +

    When this code is compiled we now see:

    +
    +
    $ irb
    +irb(main):002:0> tiger1=Example::Animal.new("tiger1")
     => #<Example::Animal:0x2be3bf8>
     
    -irb(main):003:0> Example::Zoo.new()
    +irb(main):003:0> Example::Zoo.new()
     => #<Example::Zoo:0x2be1780>
     
    -irb(main):004:0> zoo = Example::Zoo.new()
    +irb(main):004:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2bde9c0>
     
    -irb(main):005:0> zoo.add_animal(tiger1)
    +irb(main):005:0> zoo.add_animal(tiger1)
     => nil
     
    -irb(main):009:0> tiger1 = nil
    +irb(main):009:0> tiger1 = nil
     => nil
     
    -irb(main):010:0> GC.start
    +irb(main):010:0> GC.start
     => nil
    -irb(main):014:0> tiger2 = zoo.get_animal(0)
    +irb(main):014:0> tiger2 = zoo.get_animal(0)
     => #<Example::Animal:0x2be3bf8>
     
    -irb(main):015:0> tiger2.get_name()
    +irb(main):015:0> tiger2.get_name()
     => "tiger1"
    -irb(main):016:0>
    -
    -

    This code can be seen in swig/examples/ruby/mark_function.

    -

    38.10.5 Free Functions

    -

    By default, SWIG creates a "free" function that is called when a Ruby +irb(main):016:0>

    +
    +

    This code can be seen in swig/examples/ruby/mark_function.

    +

    34.10.5 Free Functions

    +

    By default, SWIG creates a "free" function that is called when a Ruby object is garbage collected. The free function simply calls the C++ - object's destructor.

    -

    However, sometimes an appropriate destructor does not exist or + object's destructor.

    +

    However, sometimes an appropriate destructor does not exist or special processing needs to be performed before the destructor is called. Therefore, SWIG allows you to manually specify a "free" - function via the use of the %freefunc directive. The -%freefunc directive is implemented using SWIG's' "features" + function via the use of the %freefunc directive. The +%freefunc directive is implemented using SWIG's' "features" mechanism and so the same name matching rules used for other kinds of - features apply (see the chapter on -"Customization Features") for more details).

    -

    IMPORTANT ! - If you define your own free function, then you must + features apply (see the chapter on +"Customization Features") for more details).

    +

    IMPORTANT ! - If you define your own free function, then you must ensure that you call the underlying C++ object's destructor. In addition, if object tracking is activated for the object's class, you - must also call the SWIG_RubyRemoveTracking function (of course + must also call the SWIG_RubyRemoveTracking function (of course call this before you destroy the C++ object). Note that it is harmless to call this method if object tracking if off so it is advised to - always call it.

    -

    Note there is a subtle interaction between object ownership and free + always call it.

    +

    Note there is a subtle interaction between object ownership and free functions. A custom defined free function will only be called if the Ruby object owns the underlying C++ object. This also to Ruby objects which are created, but then transfer ownership to C++ objects via the - use of the disown typemap described above.

    -

    To show how to use the %freefunc directive, let's slightly + use of the disown typemap described above.

    +

    To show how to use the %freefunc directive, let's slightly change our example. Assume that the zoo object is responsible for - freeing any animal that it contains. This means that the -Zoo::add_animal function should be marked with a DISOWN - typemap and the destructor should be updated as below:

    -
    -
    + freeing any animal that it contains. This means that the 
    +Zoo::add_animal function should be marked with a DISOWN
    + typemap and the destructor should be updated as below:

    +
    +
     Zoo::~Zoo() {
       IterType iter = this->animals.begin();
       IterType end = this->animals.end();
    @@ -54745,45 +53273,45 @@ Zoo::~Zoo() {
         delete animal;
       }
     }
    -
    -
    -

    When we use these objects in IRB we see:

    -
    -
    $irb
    -irb(main):002:0> require 'example'
    +
    +
    +

    When we use these objects in IRB we see:

    +
    +
    $irb
    +irb(main):002:0> require 'example'
     => true
     
    -irb(main):003:0> zoo = Example::Zoo.new()
    +irb(main):003:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2be0fe8>
     
    -irb(main):005:0> tiger1 = Example::Animal.new("tiger1")
    +irb(main):005:0> tiger1 = Example::Animal.new("tiger1")
     => #<Example::Animal:0x2bda760>
     
    -irb(main):006:0> zoo.add_animal(tiger1)
    +irb(main):006:0> zoo.add_animal(tiger1)
     => nil
     
    -irb(main):007:0> zoo = nil
    +irb(main):007:0> zoo = nil
     => nil
     
    -irb(main):008:0> GC.start
    +irb(main):008:0> GC.start
     => nil
     
    -irb(main):009:0> tiger1.get_name()
    +irb(main):009:0> tiger1.get_name()
     (irb):12: [BUG] Segmentation fault
    -
    -
    -

    The error happens because the C++ animal object is freed - when the zoo object is freed. Although this error is +

    +
    +

    The error happens because the C++ animal object is freed + when the zoo object is freed. Although this error is unavoidable, we can at least prevent the segmentation fault. To do this requires enabling object tracking and implementing a custom free - function that calls the SWIG_RubyUnlinkObjects function for - each animal object that is destroyed. The SWIG_RubyUnlinkObjects + function that calls the SWIG_RubyUnlinkObjects function for + each animal object that is destroyed. The SWIG_RubyUnlinkObjects function notifies SWIG that a Ruby object's underlying C++ object is no longer valid. Once notified, SWIG will intercept any calls from the existing Ruby object to the destroyed C++ object and raise an - exception.

    -
    -
    %module example
    + exception.

    +
    +
    %module example
     
     %{
     #include "example.h"
    @@ -54823,294 +53351,294 @@ irb(main):009:0> tiger1.get_name()
         /* Now free the zoo which will free the animals it contains */
         delete zoo;
       }
    -%} 
    -
    -

    Now when we use these objects in IRB we see:

    -
    -
    $irb
    -irb(main):002:0> require 'example'
    +%} 
    +
    +

    Now when we use these objects in IRB we see:

    +
    +
    $irb
    +irb(main):002:0> require 'example'
     => true
     
    -irb(main):003:0> zoo = Example::Zoo.new()
    +irb(main):003:0> zoo = Example::Zoo.new()
     => #<Example::Zoo:0x2be0fe8>
     
    -irb(main):005:0> tiger1 = Example::Animal.new("tiger1")
    +irb(main):005:0> tiger1 = Example::Animal.new("tiger1")
     => #<Example::Animal:0x2bda760>
     
    -irb(main):006:0> zoo.add_animal(tiger1)
    +irb(main):006:0> zoo.add_animal(tiger1)
     => nil
     
    -irb(main):007:0> zoo = nil
    +irb(main):007:0> zoo = nil
     => nil
     
    -irb(main):008:0> GC.start
    +irb(main):008:0> GC.start
     => nil
     
    -irb(main):009:0> tiger1.get_name()
    +irb(main):009:0> tiger1.get_name()
     RuntimeError: This Animal * already released
      from (irb):10:in `get_name'
      from (irb):10
    -irb(main):011:0>
    -
    -

    Notice that SWIG can now detect the underlying C++ object has been - freed, and thus raises a runtime exception.

    -

    This code can be seen in swig/examples/ruby/free_function.

    -

    38.10.6 Embedded Ruby and the C++ Stack

    -

    As has been said, the Ruby GC runs and marks objects before its sweep +irb(main):011:0>

    +
    +

    Notice that SWIG can now detect the underlying C++ object has been + freed, and thus raises a runtime exception.

    +

    This code can be seen in swig/examples/ruby/free_function.

    +

    34.10.6 Embedded Ruby and the C++ Stack

    +

    As has been said, the Ruby GC runs and marks objects before its sweep phase. When the garbage collector is called, it will also try to mark any Ruby objects (VALUE) it finds in the machine registers and in the - C++ stack.

    -

    The stack is basically the history of the functions that have been + C++ stack.

    +

    The stack is basically the history of the functions that have been called and also contains local variables, such as the ones you define - whenever you do inside a function:

    -
    VALUE obj;
    -

    For ruby to determine where its stack space begins, during + whenever you do inside a function:

    +
    VALUE obj;
    +

    For ruby to determine where its stack space begins, during initialization a normal Ruby interpreter will call the ruby_init() function which in turn will call a function called Init_stack or similar. This function will store a pointer to the location where the - stack points at that point in time.

    -

    ruby_init() is presumed to always be called within the main() + stack points at that point in time.

    +

    ruby_init() is presumed to always be called within the main() function of your program and whenever the GC is called, ruby will assume that the memory between the current location in memory and the pointer that was stored previously represents the stack, which may contain local (and temporary) VALUE ruby objects. Ruby will then be - careful not to remove any of those objects in that location.

    -

    So far so good. For a normal Ruby session, all the above is - completely transparent and magic to the extensions developer.

    -

    However, with an embedded Ruby, it may not always be possible to + careful not to remove any of those objects in that location.

    +

    So far so good. For a normal Ruby session, all the above is + completely transparent and magic to the extensions developer.

    +

    However, with an embedded Ruby, it may not always be possible to modify main() to make sure ruby_init() is called there. As such, ruby_init() will likely end up being called from within some other function. This can lead Ruby to measure incorrectly where the stack begins and can result in Ruby incorrectly collecting those temporary VALUE objects that are created once another function is called. The end - result: random crashes and segmentation faults.

    -

    This problem will often be seen in director functions that are used - for callbacks, for example.

    -

    To solve the problem, SWIG can now generate code with director + result: random crashes and segmentation faults.

    +

    This problem will often be seen in director functions that are used + for callbacks, for example.

    +

    To solve the problem, SWIG can now generate code with director functions containing the optional macros SWIG_INIT_STACK and SWIG_RELEASE_STACK. These macros will try to force Ruby to reinitialize the beginning of the stack the first time a director function is called. This will lead Ruby to measure and not collect any VALUE - objects defined from that point on.

    -

    To mark functions to either reset the ruby stack or not, you can use:

    -
    -
    + objects defined from that point on.

    +

    To mark functions to either reset the ruby stack or not, you can use:

    +
    +
     %initstack Class::memberfunction;   // only re-init the stack in this director method
     %ignorestack Class::memberfunction; // do not re-init the stack in this director method
     %initstack Class;                   // init the stack on all the methods of this class
     %initstack;                         // all director functions will re-init the stack
    -
    -

    -

    39 SWIG and Scilab

    +
    +

    +

    35 SWIG and Scilab

    - + -

    Scilab is a scientific software package for numerical computations +

    Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications that is mostly compatible with MATLAB. More - information can be found at -www.scilab.org.

    -

    This chapter explains how to use SWIG for Scilab. After this + information can be found at +www.scilab.org.

    +

    This chapter explains how to use SWIG for Scilab. After this introduction, you should be able to generate with SWIG a Scilab - external module from a C/C++ library.

    -

    39.1 Preliminaries

    -

    SWIG for Scilab supports Linux. Other operating sytems haven't been - tested.

    -

    Scilab is supported from version 5.3.3 onwards. The forthcoming - version 6, as of January 2015, is also supported.

    -

    SWIG for Scilab supports C language. C++ is partially supported. See - A basic tour of C/C++ wrapping for - further details.

    -

    39.2 Running SWIG

    -

    Let's see how to use SWIG for Scilab on a small example. -
    In this example we bind from C a function and a global variable - into Scilab. The SWIG interface (stored in a file named example.i -), is the following:

    -
    -
    + external module from a C/C++ library.

    +

    35.1 Preliminaries

    +

    SWIG for Scilab supports Linux. Other operating systems haven't been + tested.

    +

    Scilab is supported from version 5.3.3 onwards. The forthcoming + version 6, as of January 2015, is also supported.

    +

    SWIG for Scilab supports C language. C++ is partially supported. See + A basic tour of C/C++ wrapping for + further details.

    +

    35.2 Running SWIG

    +

    Let's see how to use SWIG for Scilab on a small example. +
    In this example we bind from C a function and a global variable + into Scilab. The SWIG interface (stored in a file named example.i +), is the following:

    +
    +
     %module example
     
     %inline %{
     double Foo = 3.0;
     
     int fact(int n) {
    -    if (n < 0) {
    -        return 0;
    -    }
    -    else if (n == 0) {
    -        return 1;
    -    }
    -    else {
    -        return n * fact(n-1);
    -    }
    +  if (n < 0) {
    +    return 0;
    +  }
    +  else if (n == 0) {
    +    return 1;
    +  }
    +  else {
    +    return n * fact(n-1);
    +  }
     }
     %}
    -
    -
    -

    Note: a code in an %inline section is both parsed and - wrapped by SWIG, and inserted as is in the wrapper source file.

    -

    39.2.1 Generating - the module

    -

    The module is generated using the swig executable and its --scilab option.

    -
    -
    +
    +
    +

    Note: a code in an %inline section is both parsed and + wrapped by SWIG, and inserted as is in the wrapper source file.

    +

    35.2.1 Generating + the module

    +

    The module is generated using the swig executable and its +-scilab option.

    +
    +
     $ swig -scilab example.i
    -
    -
    -

    This command generates two files:

    -
      -
    • example_wrap.c: a C source file containing the wrapping - code and also here the wrapped code (the fact() and Foo - definitions)
    • -
    • loader.sce: a Scilab script used to load the module into - Scilab
    • -
    -

    Note: if the following error is returned:

    -
    -
    +
    +
    +

    This command generates two files:

    +
      +
    • example_wrap.c: a C source file containing the wrapping + code and also here the wrapped code (the fact() and Foo + definitions)
    • +
    • loader.sce: a Scilab script used to load the module into + Scilab
    • +
    +

    Note: if the following error is returned:

    +
    +
     :1: Error: Unable to find 'swig.swg'
     :3: Error: Unable to find 'scilab.swg'
    -
    -
    -

    it may be because the SWIG library is not found. Check the -SWIG_LIB environment variable or your SWIG installation.

    -

    Note: SWIG for Scilab can work in two modes related to the way the - module is built, see the Building - modes section for details. This example uses the builder - mode.

    -

    The swig executable has several other command line options - you can use. See Scilab command - line options for further details.

    -

    39.2.2 Building the - module

    -

    To be loaded in Scilab, the wrapper has to be built into a dynamic - module (or shared library).

    -

    The commands to compile and link the wrapper (with gcc) - into the shared library libexample.so are:

    -
    -
    +
    +
    +

    it may be because the SWIG library is not found. Check the +SWIG_LIB environment variable or your SWIG installation.

    +

    Note: SWIG for Scilab can work in two modes related to the way the + module is built, see the Building + modes section for details. This example uses the builder + mode.

    +

    The swig executable has several other command line options + you can use. See Scilab command + line options for further details.

    +

    35.2.2 Building the + module

    +

    To be loaded in Scilab, the wrapper has to be built into a dynamic + module (or shared library).

    +

    The commands to compile and link the wrapper (with gcc) + into the shared library libexample.so are:

    +
    +
     $ gcc -fPIC -c -I/usr/local/include/scilab example_wrap.c
     $ gcc -shared example_wrap.o -o libexample.so
    -
    -
    -

    Note: we supposed in this example that the path to the Scilab - include directory is /usr/local/include/scilab (which is the +

    +
    +

    Note: we supposed in this example that the path to the Scilab + include directory is /usr/local/include/scilab (which is the case in a Debian environment), this should be changed for another - environment.

    -

    39.2.3 Loading the - module

    -

    Loading a module is done by running the loader script in Scilab:

    -
    -
    + environment.

    +

    35.2.3 Loading the + module

    +

    Loading a module is done by running the loader script in Scilab:

    +
    +
     --> exec loader.sce
    -
    -
    -

    Scilab should output the following messages:

    -
    -
    +
    +
    +

    Scilab should output the following messages:

    +
    +
     Shared archive loaded.
     Link done.
    -
    -
    -

    which means that Scilab has successfully loaded the shared library. - The module functions and other symbols are now available in Scilab.

    -

    39.2.4 Using the module -

    -

    In Scilab, the function fact() is simply called as - following:

    -
    -
    +
    +
    +

    which means that Scilab has successfully loaded the shared library. + The module functions and other symbols are now available in Scilab.

    +

    35.2.4 Using the module +

    +

    In Scilab, the function fact() is simply called as + following:

    +
    +
     --> fact(5)
     ans  =
     
         120.
    -
    -
    -

    For the Foo global variable, the accessors need to be used:

    +
    +

    For the Foo global variable, the accessors need to be used:

    -
    +
     --> Foo_get
     ans  =
     
    @@ -55122,59 +53650,65 @@ ans  =
     ans  =
     
         4.
    -
    -

    -

    Note: for conciseness, we assume in the subsequent Scilab code +

    +

    +

    Note: for conciseness, we assume in the subsequent Scilab code examples that the modules have been beforehand built and loaded in - Scilab.

    -

    39.2.5 Scilab command line - options

    -

    The following table lists the Scilab specific command line options - in addition to the generic SWIG options:

    - - - - - - - - - -
    -builderGenerate the Scilab builder script
    -buildercflags <cflags>Add <cflags> to the - builder compiler flags
    -builderldflags <ldflags>Add <ldlags> to the - builder linker flags
    -buildersources <files>Add the (comma - separated) files <files> to the builder sources
    -builderverbositylevel <level>Set the build - verbosity level to <level> (default 0: off, 2: high)
    -builderflagscript <file>Use the Scilab script - <file> to configure the compiler and linker flags
    -gatewayxml <gateway_id>Generate the gateway - XML with the given <gateway_id>
    -

    These options can be displayed with:

    -
    -
    + Scilab.

    +

    35.2.5 Scilab command line + options

    +

    The following table lists the Scilab specific command line options + in addition to the generic SWIG options:

    + + + + + + + + + + +
    -builderGenerate the Scilab builder script
    -buildercflags <cflags>Add <cflags> to the + builder compiler flags
    -builderldflags <ldflags>Add <ldlags> to the + builder linker flags
    -buildersources <files>Add the (comma + separated) files <files> to the builder sources
    -builderverbositylevel <level>Set the build + verbosity level to <level> (default 0: off, 2: high)
    -builderflagscript <file>Use the Scilab script + <file> to configure the compiler and linker flags
    -gatewayxml <gateway_id>Generate the gateway + XML with the given <gateway_id>
    -targetversionGenerate for Scilab target + (major) version
    +

    These options can be displayed with:

    +
    +
     $ swig -scilab -help
    -
    -
    -

    39.3 A basic tour of C/C++ wrapping

    -

    39.3.1 Overview

    -

    SWIG for Scilab provides only a low-level C interface for Scilab - (see Scripting Languages for the general +

    +
    +

    35.3 A basic tour of C/C++ wrapping

    +

    35.3.1 Overview

    +

    SWIG for Scilab provides only a low-level C interface for Scilab + (see Scripting Languages for the general approach to wrapping). This means that functions, structs, classes, variables, etc... are interfaced through C functions. These C functions are mapped as Scilab functions. There are a few exceptions, such as constants and enumerations, which can be wrapped directly as Scilab - variables.

    -

    39.3.2 Identifiers

    -

    In Scilab 5.x, identifier names are composed of 24 characters - maximum (this limitation should disappear from Scilab 6.0 onwards). -
    Thus long function or variable names may be truncated and this can - cause ambiguities.

    -

    This happens especially when wrapping structs/classes, for which the - wrapped function name is composed of the struct/class name and field - names. In these cases, the %rename - directive can be used to choose a different Scilab name.

    -

    39.3.3 Functions

    -

    Functions are wrapped as new Scilab built-in functions. For example:

    -
    -
    + variables.

    +

    35.3.2 Identifiers

    +

    In Scilab 5.x, identifier names are composed of 24 characters + maximum (this limitation disappears from Scilab 6.0 onwards). +
    By default, variable, member, and function names longer than 24 + characters are truncated, and a warning is produced for each + truncation.

    +

    This can cause ambiguities, especially when wrapping structs/classes, + for which the wrapped function name is composed of the struct/class + name and field names. In these cases, the +%rename directive can be used to choose a different Scilab name.

    +

    Note: truncations can be disabled by specifying the target version 6 + of Scilab in the targetversion argument (i.e. +-targetversion 6).

    +

    35.3.3 Functions

    +

    Functions are wrapped as new Scilab built-in functions. For example:

    +
    +
     %module example
     
     %inline %{
    @@ -55185,32 +53719,32 @@ int fact(int n) {
         return 1;
     }
     %}
    -
    -
    -

    creates a built-in function fact(n) in Scilab:

    -
    -
    +
    +
    +

    creates a built-in function fact(n) in Scilab:

    +
    +
     --> fact(4)
     ans  =
     
         24.
    -
    -
    -

    39.3.3.1 Argument passing

    -

    In the above example, the function parameter is a primitive type and +

    +
    +

    35.3.3.1 Argument passing

    +

    In the above example, the function parameter is a primitive type and is marshalled by value. So this function is wrapped without any additional customization. Argument values are converted between C types and Scilab types through type mappings. There are several default type - mappings for primitive and complex types, described later in the -Scilab typemaps section.

    -

    When a parameter is not passed by value, such as a pointer or + mappings for primitive and complex types, described later in the +Scilab typemaps section.

    +

    When a parameter is not passed by value, such as a pointer or reference, SWIG does not know if it is an input, output (or both) - parameter. The INPUT, OUTPUT, INOUT typemaps defined in the -typemaps.i library can be used to specify this.

    -

    Let's see this on two simple functions: sub() which has an - output parameter, and inc(), which as input/output parameter:

    -
    -
    + parameter. The INPUT, OUTPUT, INOUT typemaps defined in the 
    +typemaps.i library can be used to specify this.

    +

    Let's see this on two simple functions: sub() which has an + output parameter, and inc(), which as input/output parameter:

    +
    +
     %module example
     
     %include <typemaps.i>
    @@ -55226,12 +53760,12 @@ void inc(int *x, int *delta) {
       *x = *x + *delta;
     }
     %}
    -
    -
    -

    In Scilab, parameters are passed by value. The output (and inout) - parameters are returned as the result of the functions:

    -
    -
    +
    +
    +

    In Scilab, parameters are passed by value. The output (and inout) + parameters are returned as the result of the functions:

    +
    +
     --> sub(5, 3)
      ans  =
     
    @@ -55241,18 +53775,18 @@ void inc(int *x, int *delta) {
      ans  =
     
         7.
    -
    -
    -

    39.3.3.2 Multiple output arguments

    -

    A C function can have several output parameters. They can all be +

    +
    +

    35.3.3.2 Multiple output arguments

    +

    A C function can have several output parameters. They can all be returned as results of the wrapped function as Scilab supports multiple - return values from a function when using the typemaps.i + return values from a function when using the typemaps.i library. If the C function itself returns a result, this is returned - first before the parameter outputs.

    -

    The example below shows this for a C function returning 2 values and - a result:

    -
    -
    + first before the parameter outputs.

    +

    The example below shows this for a C function returning 2 values and + a result:

    +
    +
     %module example
     
     %include <typemaps.i>
    @@ -55270,10 +53804,10 @@ int divide(int n, int d, int *OUTPUT, int *OUTPUT);
         }
       }
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> [ret, q, r] = divide(20, 6)
      r  =
     
    @@ -55284,17 +53818,17 @@ int divide(int n, int d, int *OUTPUT, int *OUTPUT);
      ret  =
     
         1.
    -
    -
    -

    39.3.4 Global variables -

    -

    Global variables are manipulated through generated accessor - functions. For example, for a given Foo global variable, SWIG - actually generates two functions: Foo_get() to get the value - of Foo, and Foo_set() to set the value. These - functions are used as following:

    -
    -
    +
    +
    +

    35.3.4 Global variables +

    +

    Global variables are manipulated through generated accessor + functions. For example, for a given Foo global variable, SWIG + actually generates two functions: Foo_get() to get the value + of Foo, and Foo_set() to set the value. These + functions are used as following:

    +
    +
     --> exec loader.sce;
     --> c = Foo_get();
     
    @@ -55309,13 +53843,13 @@ c =
     ans  =
     
         4.
    -
    -
    -

    It works for variables of primitive type, but also for non-primitive +

    +
    +

    It works for variables of primitive type, but also for non-primitive types: arrays, and structs/classes which are described later. For now, - an example with two global primitive arrays x and y is shown:

    -
    -
    + an example with two global primitive arrays x and y is shown:

    +
    +
     %module example
     
     %inline %{
    @@ -55331,11 +53865,11 @@ void initArrays()
         y[i] = 1.0f;
     }
     %}
    -
    -
    -

    It works the same:

    -
    -
    +
    +
    +

    It works the same:

    +
    +
     --> exec loader.sce
     
     --> initArrays();
    @@ -55349,15 +53883,15 @@ void initArrays()
      ans  =
     
         0.    0.1    0.2    0.3    0.4    0.5    0.6
    -
    -
    -

    39.3.5 Constants and - enumerations

    -

    39.3.5.1 Constants

    -

    There is not any constant in Scilab. By default, C/C++ constants are - wrapped as getter functions. For example, for the following constants:

    -
    -
    +
    +
    +

    35.3.5 Constants and + enumerations

    +

    35.3.5.1 Constants

    +

    There is not any constant in Scilab. By default, C/C++ constants are + wrapped as getter functions. For example, for the following constants:

    +
    +
     %module example
     #define    ICONST      42
     #define    FCONST      2.1828
    @@ -55365,11 +53899,11 @@ void initArrays()
     #define    CCONST2     '\n'
     #define    SCONST      "Hello World"
     #define    SCONST2     "\"Hello World\""
    -
    -
    -

    the following getter functions are generated:

    -
    -
    +
    +
    +

    the following getter functions are generated:

    +
    +
     --> exec loader.sce;
     --> ICONST_get();
      ans  =
    @@ -55413,17 +53947,17 @@ void initArrays()
      ans  =
     
         3.14
    -
    -
    -

    There is another mode in which constants are wrapped as Scilab +

    +
    +

    There is another mode in which constants are wrapped as Scilab variables. The variables are easier to use than functions, but the - drawback is that variables are not constant and so can be modified.

    -

    This mode can be enabled/disabled at any time in the interface file - with %scilabconst(), which works like all the other -%feature directives. Use the argument value "1" to enable and "0" to - disable this mode. For example in this mode the previous constants:

    -
    -
    + drawback is that variables are not constant and so can be modified.

    +

    This mode can be enabled/disabled at any time in the interface file + with %scilabconst(), which works like all the other +%feature directives. Use the argument value "1" to enable and "0" to + disable this mode. For example in this mode the previous constants:

    +
    +
     %module example
     
     %scilabconst(1);
    @@ -55433,11 +53967,11 @@ void initArrays()
     #define    CCONST2     '\n'
     #define    SCONST      "Hello World"
     #define    SCONST2     "\"Hello World\""
    -
    -
    -

    are mapped to Scilab variables, with the same name:

    -
    -
    +
    +
    +

    are mapped to Scilab variables, with the same name:

    +
    +
     --> exec loader.sce;
     --> ICONST
      ans  =
    @@ -55481,21 +54015,21 @@ void initArrays()
      ans  =
     
         3.14
    -
    -
    -

    39.3.5.2 Enumerations

    -

    The wrapping of enums is the same as for constants. By default, +

    +
    +

    35.3.5.2 Enumerations

    +

    The wrapping of enums is the same as for constants. By default, enums are wrapped as getter functions. For example, with the following - enumeration:

    -
    -
    %module example
    + enumeration:

    +
    +
    %module example
     typedef enum { RED, BLUE, GREEN } color;
    -
    -
    -

    a getter function will be generated for each value of the - enumeration:

    -
    -
    +
    +
    +

    a getter function will be generated for each value of the + enumeration:

    +
    +
     --> exec loader.sce;
     --> RED_get()
      ans  =
    @@ -55511,18 +54045,18 @@ typedef enum { RED, BLUE, GREEN } color;
      ans  =
     
         2.
    -
    -
    -

    The %scilabconst() feature is also available for - enumerations:

    -
    -
    %module example
    +
    +
    +

    The %scilabconst() feature is also available for + enumerations:

    +
    +
    %module example
     %scilabconst(1) color;
     typedef enum { RED, BLUE, GREEN } color;
    -
    -
    -
    -
    +
    +
    +
    +
     --> exec loader.sce;
     --> RED
      ans  =
    @@ -55539,39 +54073,39 @@ typedef enum { RED, BLUE, GREEN } color;
     
         2.
     
    -
    -
    -

    39.3.6 Pointers

    -

    Pointers are supported by SWIG. A pointer can be returned from a +

    +
    +

    35.3.6 Pointers

    +

    Pointers are supported by SWIG. A pointer can be returned from a wrapped C/C++ function, stored in a Scilab variable, and used in input - argument of another C/C++ function.

    -

    Also, thanks to the SWIG runtime which stores informations about + argument of another C/C++ function.

    +

    Also, thanks to the SWIG runtime which stores information about types, pointer types are tracked between exchanges Scilab and the native code. Indeed pointer types are stored alongside the pointer - adress. A pointer is mapped to a Scilab structure ( -tlist), which contains as fields the pointer address and the pointer + address. A pointer is mapped to a Scilab structure ( +tlist), which contains as fields the pointer address and the pointer type (in fact a pointer to the type information structure in the SWIG runtime). -
    Why a native pointer is not mapped to a Scilab pointer (type name: - "pointer", type ID: 128) ? The big advantage of mapping to a tlist +
    Why a native pointer is not mapped to a Scilab pointer (type name: + "pointer", type ID: 128) ? The big advantage of mapping to a tlist is that it exposes a new type for the pointer in Scilab, type which can - be acessed in Scilab with the -typeof function, and manipulated using the -overloading mechanism.

    -

    Notes:

    -
      -
    • type tracking needs the SWIG runtime to be first initialized with - the appropriate function (see the -Module initialization section).
    • -
    • for any reason, if a wrapped pointer type is unknown (or if the SWIG + be acessed in Scilab with the +typeof function, and manipulated using the +overloading mechanism.

      +

      Notes:

      +
        +
      • type tracking needs the SWIG runtime to be first initialized with + the appropriate function (see the +Module initialization section).
      • +
      • for any reason, if a wrapped pointer type is unknown (or if the SWIG runtime is not initialized), SWIG maps it to a Scilab pointer. Also, a Scilab pointer is always accepted as a pointer argument of a wrapped - function. The drawaback is that pointer type is lost.
      • -
      -

      Following is an example of the wrapping of the C FILE* - pointer:

      -
      -
      + function. The drawaback is that pointer type is lost.
    • +
    +

    Following is an example of the wrapping of the C FILE* + pointer:

    +
    +
     %module example
     
     %{
    @@ -55581,11 +54115,11 @@ Module initialization section).
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    These functions can be used the same way as in C from Scilab:

    -
    -
    +
    +
    +

    These functions can be used the same way as in C from Scilab:

    +
    +
     --> example_Init();
     
     --> f = fopen("junk", "w");
    @@ -55596,27 +54130,27 @@ int fclose(FILE *);
     
     --> fputs("Hello World", f);
     --> fclose(f);
    -
    -
    -

    Note: the type name _p_FILE which means "pointer to FILE".

    -

    The user of a pointer is responsible for freeing it or, like in the + + +

    Note: the type name _p_FILE which means "pointer to FILE".

    +

    The user of a pointer is responsible for freeing it or, like in the example, closing any resources associated with it (just as is required - in a C program).

    -

    39.3.6.1 Utility - functions

    -

    As a scripting language, Scilab does not provide functions to + in a C program).

    +

    35.3.6.1 + Utility functions

    +

    As a scripting language, Scilab does not provide functions to manipulate pointers. However, in some cases it can be useful, such as - for testing or debugging.

    -

    SWIG comes with two pointer utility functions:

    -
      -
    • SWIG_this(): returns the address value of a pointer
    • -
    • SWIG_ptr(): creates a pointer from an address value
    • -
    -

    Note: a pointer created by SWIG_ptr() does not have any - type and is mapped as a Scilab pointer.

    -

    Following we use the utility functions on the previous example:

    -
    -
    + for testing or debugging.

    +

    SWIG comes with two pointer utility functions:

    +
      +
    • SWIG_this(): returns the address value of a pointer
    • +
    • SWIG_ptr(): creates a pointer from an address value
    • +
    +

    Note: a pointer created by SWIG_ptr() does not have any + type and is mapped as a Scilab pointer.

    +

    Following we use the utility functions on the previous example:

    +
    +
     --> f = fopen("junk", "w");
     --> fputs("Hello", f);
     --> addr = SWIG_this(f)
    @@ -55632,59 +54166,59 @@ ans  =
     
     --> fputs(" World", p);
     --> fclose(f);
    -
    -
    -

    39.3.6.2 Null - pointers:

    -

    Using the previous SWIG_this() and SWIG_ptr(), it - is possible to create and check null pointers:

    -
    -
    +
    +
    +

    35.3.6.2 Null + pointers:

    +

    Using the previous SWIG_this() and SWIG_ptr(), it + is possible to create and check null pointers:

    +
    +
     --> p = SWIG_ptr(0);
     --> SWIG_this(p) == 0
      ans  =
     
         T
    -
    -
    -

    39.3.7 Structures

    -

    Structs exist in Scilab, but C structs are not (at least in this +

    +
    +

    35.3.7 Structures

    +

    Structs exist in Scilab, but C structs are not (at least in this version of SWIG) mapped to Scilab structs. A C structure is wrapped through low-level accessor functions, i.e. functions that give access to the member variables of this structure. In Scilab, a structure is manipulated through a pointer which is passed as an argument to the - accessor functions.

    -

    Let's see it on an example of a struct with two members:

    -
    -
    + accessor functions.

    +

    Let's see it on an example of a struct with two members:

    +
    +
     %module example
     
     %inline %{
     
     typedef struct {
    -    int x;
    -    int arr[4];
    +  int x;
    +  int arr[4];
     } Foo;
     
     %}
    -
    -
    -

    Several functions are generated:

    -
      -
    • a constructor function new_Foo() which returns a pointer to - a newly created struct Foo.
    • -
    • two member getter functions Foo_x_get(), Foo_arr_get() -, to get the values of x and y for the struct pointer - (provided as the first parameter to these functions)
    • -
    • two member setter functions Foo_x_set(), Foo_arr_set() -, to set the values of x and y for the struct pointer - (provided as the first parameter to these functions).
    • -
    • a destructor function delete_Foo() to release the struct - pointer.
    • -
    -

    Usage example:

    -
    -
    +
    +
    +

    Several functions are generated:

    +
      +
    • a constructor function new_Foo() which returns a pointer to + a newly created struct Foo.
    • +
    • two member getter functions Foo_x_get(), Foo_arr_get() +, to get the values of x and y for the struct pointer + (provided as the first parameter to these functions)
    • +
    • two member setter functions Foo_x_set(), Foo_arr_set() +, to set the values of x and y for the struct pointer + (provided as the first parameter to these functions).
    • +
    • a destructor function delete_Foo() to release the struct + pointer.
    • +
    +

    Usage example:

    +
    +
     --> f = new_Foo();
     --> Foo_x_set(f, 100);
     --> Foo_x_get(f)
    @@ -55699,12 +54233,12 @@ ans  =
         0.    1.    2.    3.
     
     --> delete_Foo(f);
    -
    -
    -

    Members of a structure that are also structures are also accepted - and wrapped as a pointer:

    -
    -
    +
    +
    +

    Members of a structure that are also structures are also accepted + and wrapped as a pointer:

    +
    +
     %module example
     
     %inline %{
    @@ -55718,10 +54252,10 @@ typedef struct {
     } Foo;
     
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> b = new_Bar();
     --> Bar_x_set(b, 20.);
     
    @@ -55733,13 +54267,13 @@ typedef struct {
     ans  =
     
         20.
    -
    -
    -

    Note: the pointer to the struct works as described in -Pointers. For example, the type of the struct pointer can be get - with typeof, as following:

    -
    -
    +
    +
    +

    Note: the pointer to the struct works as described in +Pointers. For example, the type of the struct pointer can be get + with typeof, as following:

    +
    +
     --> example_Init();
     --> b = new_Bar();
     --> typeof(b)
    @@ -55747,16 +54281,16 @@ Pointers. For example, the type of the struct pointer can be get
     
         _p_Bar
     --> delete_Bar(b);
    -
    -
    -

    39.3.8 C++ classes

    -

    Classes do not exist in Scilab. The classes are wrapped the same way +

    +
    +

    35.3.8 C++ classes

    +

    Classes do not exist in Scilab. The classes are wrapped the same way as structs. Low-level accessor functions are generated for class members. Also, constructor and destructor functions are generated to - create and destroy an instance of the class.

    -

    For example, the following class:

    -
    -
    + create and destroy an instance of the class.

    +

    For example, the following class:

    +
    +
     %module example
     
     %inline %{
    @@ -55775,11 +54309,11 @@ public:
     };
     
     %}
    -
    -
    -

    can be used in Scilab like this:

    -
    -
    +
    +
    +

    can be used in Scilab like this:

    +
    +
     --> p1 = Point_new(3, 5);
     --> p2 = Point_new(1, 2);
     --> p1.distance(p2)
    @@ -55789,15 +54323,15 @@ ans  =
     
     --> delete_Point(p1);
     --> delete_Point(p2);
    -
    -
    -

    Note: like structs, class pointers are mapped as described in -Pointers. Let's give an example which shows that each class pointer - type is a new type in Scilab that can be used for example (through -overloading) to implement a custom print for the Point - class:

    -
    -
    +
    +
    +

    Note: like structs, class pointers are mapped as described in +Pointers. Let's give an example which shows that each class pointer + type is a new type in Scilab that can be used for example (through +overloading) to implement a custom print for the Point + class:

    +
    +
     --> function %_p_Point_p(p)
     -->     mprintf('[%d, %d]\n', Point_x_get(p), Point_y_get(p));
     --> endfunction
    @@ -55809,22 +54343,22 @@ overloading) to implement a custom print for the Point
     [1, 2]
     
     --> delete_Point(p);
    -
    -
    -

    39.3.9 C++ inheritance

    -

    Inheritance is supported. SWIG knows the inheritance relationship - between classes.

    -

    A function is only generated for the class in which it is actually +

    +
    +

    35.3.9 C++ inheritance

    +

    Inheritance is supported. SWIG knows the inheritance relationship + between classes.

    +

    A function is only generated for the class in which it is actually declared. But if one of its parameters is a class, any instance of a - derived class is accepted as the argument.

    -

    This mechanism also applies for accessor functions: they are + derived class is accepted as the argument.

    +

    This mechanism also applies for accessor functions: they are generated only in the class in which they are defined. But any instance of a derived class can be used as the argument to these accessor - functions.

    -

    For example, let's take a base class Shape and two derived - classes Circle and Square:

    -
    -
    + functions.

    +

    For example, let's take a base class Shape and two derived + classes Circle and Square:

    +
    +
     %module example
     
     %inline %{
    @@ -55851,14 +54385,14 @@ public:
     };
     
     %}
    -
    -
    -

    To set the location of the Circle, we have to use the - function set_location() of the parent Shape. But we - can use either use the get_perimeter() function of the parent - class or the derived class:

    -
    -
    +
    +
    +

    To set the location of the Circle, we have to use the + function set_location() of the parent Shape. But we + can use either use the get_perimeter() function of the parent + class or the derived class:

    +
    +
     --> c = new_Circle(3);
     
     --> Shape_set_location(c, 2, 3);
    @@ -55876,29 +54410,30 @@ public:
      ans  =
     
         18.84
    -
    -
    -

    39.3.10 C++ overloading -

    -

    As explained in 6.15 SWIG - provides support for overloaded functions and constructors.

    -

    As SWIG knows pointer types, the overloading works also with pointer - types, here is is an example with a function magnify - overloaded for the previous classes Shape and Circle:

    -
    -
    +
    +
    +

    35.3.10 C++ overloading +

    +

    As explained in Overloaded + functions and methods SWIG provides support for overloaded + functions and constructors.

    +

    As SWIG knows pointer types, the overloading works also with pointer + types, here is an example with a function magnify overloaded + for the previous classes Shape and Circle:

    +
    +
     %module example
     
     void magnify(Square *square, double factor) {
    -    square->size *= factor;
    +  square->size *= factor;
     };
     
     void magnify(Circle *circle, double factor) {
    -    square->radius *= factor;
    +  square->radius *= factor;
     };
    -
    -
    -
    +
    +
    +
     --> example_Init();
     --> c = new_Circle(3);
     --> s = new_Square(2);
    @@ -55913,14 +54448,14 @@ void magnify(Circle *circle, double factor) {
      ans  =
     
        20;
    -
    -
    -

    39.3.11 - Pointers, references, values, and arrays

    -

    In C++ objects can be passed by value, pointer, reference, or by an - array:

    -
    -
    +
    +
    +

    35.3.11 + Pointers, references, values, and arrays

    +

    In C++ objects can be passed by value, pointer, reference, or by an + array:

    +
    +
     %module example
     
     %{
    @@ -55941,12 +54476,12 @@ void spam3(Foo f)   { sciprint("%d\n", f.x); }    // Pass by value
     void spam4(Foo f[]) { sciprint("%d\n", f[0].x); } // Array of objects
     
     %}
    -
    -
    -

    In SWIG, there is no real distinction between these. So in Scilab, - it is perfectly legal to do this:

    -
    -
    +
    +
    +

    In SWIG, there is no real distinction between these. So in Scilab, + it is perfectly legal to do this:

    +
    +
     --> f = new_Foo()
     --> spam1(f)
     3
    @@ -55956,29 +54491,29 @@ void spam4(Foo f[]) { sciprint("%d\n", f[0].x); } // Array of objects
     3
     --> spam4(f)
     3
    -
    -
    -

    Similar behaviour occurs for return values. For example, if you had - functions like this:

    -
    -
    +
    +
    +

    Similar behaviour occurs for return values. For example, if you had + functions like this:

    +
    +
     Foo *spam5();
     Foo &spam6();
     Foo  spam7();
    -
    -
    -

    All these functions will return a pointer to an instance of Foo -. As the function spam7 returns a value, new instance of -Foo has to be allocated, and a pointer on this instance is - returned.

    -

    39.3.12 C++ templates

    -

    As in other languages, function and class templates are supported in - SWIG Scilab.

    -

    You have to tell SWIG to create wrappers for a particular template - instantiation. The %template directive is used for this - purpose. For example:

    -
    -
    +
    +
    +

    All these functions will return a pointer to an instance of Foo +. As the function spam7 returns a value, new instance of +Foo has to be allocated, and a pointer on this instance is + returned.

    +

    35.3.12 C++ templates

    +

    As in other languages, function and class templates are supported in + SWIG Scilab.

    +

    You have to tell SWIG to create wrappers for a particular template + instantiation. The %template directive is used for this + purpose. For example:

    +
    +
     %module example
     
     template<class T1, class T2, class T3>
    @@ -55992,11 +54527,11 @@ struct triplet {
     };
     
     %template(IntTriplet) triplet<int, int, int>;
    -
    -
    -

    Then in Scilab:

    -
    -
    +
    +
    +

    Then in Scilab:

    +
    +
     --> t = new_IntTriplet(3, 4, 1);
     
     --> IntTriplet_first_get(t)
    @@ -56015,20 +54550,20 @@ struct triplet {
         1.
     
     --> delete_IntTriplet(t);
    -
    -
    -

    More details on template support can be found in the -templates documentation.

    -

    39.3.13 C++ operators

    -

    C++ operators are partially supported. Operator overloading exists +

    +
    +

    More details on template support can be found in the +templates documentation.

    +

    35.3.13 C++ operators

    +

    C++ operators are partially supported. Operator overloading exists in Scilab, but a C++ operator is not (in this version) wrapped by SWIG as a Scilab operator, but as a function. It is not automatic, you have - to rename each operator (with the instruction %rename) with - the suitable wrapper name.

    -

    Let's see it with an example of class with two operators + - and double():

    -
    -
    + to rename each operator (with the instruction %rename) with
    + the suitable wrapper name.

    +

    Let's see it with an example of class with two operators + + and double():

    +
    +
     %module example
     
     %rename(plus) operator +;
    @@ -56052,10 +54587,10 @@ private:
     };
     
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> c1 = new_Complex(3, 7);
     
     --> c2 = Complex_plus(c, new_Complex(1, 1));
    @@ -56064,15 +54599,15 @@ private:
      ans  =
     
         4.
    -
    -
    -

    39.3.14 C++ namespaces

    -

    SWIG is aware of C++ namespaces, but does not use it for wrappers. +

    +
    +

    35.3.14 C++ namespaces

    +

    SWIG is aware of C++ namespaces, but does not use it for wrappers. The module is not broken into submodules, nor do namespace appear in functions names. All the namespaces are all flattened in the module. - For example with one namespace Foo:

    -
    -
    + For example with one namespace Foo:

    +
    +
     %module example
     
     %inline %{
    @@ -56092,12 +54627,12 @@ namespace foo {
     
     %}
     
    -
    -
    -

    In Scilab, there is no need to the specify the Foo - namespace:

    -
    -
    +
    +
    +

    In Scilab, there is no need to the specify the Foo + namespace:

    +
    +
     --> fact(3)
      ans  =
     
    @@ -56109,12 +54644,12 @@ namespace foo {
      ans  =
     
        0.
    -
    -
    -

    If your program has more than one namespace, name conflicts can be - resolved using %rename. For example:

    -
    -
    +
    +
    +

    If your program has more than one namespace, name conflicts can be + resolved using %rename. For example:

    +
    +
     %rename(Bar_spam) Bar::spam;
     
     namespace Foo {
    @@ -56124,16 +54659,16 @@ namespace Foo {
     namespace Bar {
       int spam();
     }
    -
    -
    -

    Note: the nspace feature is not - supported.

    -

    39.3.15 C++ exceptions

    -

    Scilab does not natively support exceptions, but has errors. When an +

    +
    +

    Note: the nspace feature is not + supported.

    +

    35.3.15 C++ exceptions

    +

    Scilab does not natively support exceptions, but has errors. When an exception is thrown, SWIG catches it, and sets a Scilab error. An error - message is displayed in Scilab. For example:

    -
    -
    + message is displayed in Scilab. For example:

    +
    +
     %module example
     
     %inline %{
    @@ -56141,20 +54676,20 @@ void throw_exception() throw(char const *) {
       throw "Bye world !";
     }
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     -->throw_exception()
       !--error 999
    -SWIG/Scilab: Exception (char const *) occured: Bye world !
    -
    -
    -

    Scilab has a try-catch mechanism (and a similar instruction - execstr()) to handle exceptions. It can be used with the -lasterror() function as following:

    -
    -
    +SWIG/Scilab: Exception (char const *) occurred: Bye world !
    +
    +
    +

    Scilab has a try-catch mechanism (and a similar instruction + execstr()) to handle exceptions. It can be used with the +lasterror() function as following:

    +
    +
     --> execstr('throw_exception()', 'errcatch');
      ans  =
     
    @@ -56163,16 +54698,16 @@ lasterror() function as following:

    --> lasterror() ans = - SWIG/Scilab: Exception (char const *) occured: Bye world ! -
    -
    -

    If the function has a throw exception specification, SWIG + SWIG/Scilab: Exception (char const *) occurred: Bye world ! +

    +
    +

    If the function has a throw exception specification, SWIG can automatically map the exception type and set an appropriate Scilab error message. It works for a few primitive types, and also for STL - exceptions (the library std_except.i has to be included to get - the STL exception support):

    -
    -
    + exceptions (the library std_except.i has to be included to get
    + the STL exception support):

    +
    +
     %module example
     
     %include <std_except.i>
    @@ -56187,85 +54722,85 @@ void throw_stl_invalid_arg(int i) throw(std::invalid_argument) {
         throw std::invalid_argument("argument is negative.");
     }
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> throw_int();
                 !--error 999
    -SWIG/Scilab: Exception (int) occured: 12
    +SWIG/Scilab: Exception (int) occurred: 12
     
     -->throw_stl_invalid_arg(-1);
                               !--error 999
     SWIG/Scilab: ValueError: argument is negative.
    -
    -
    -

    More complex or custom exception types require specific exception +

    +
    +

    More complex or custom exception types require specific exception typemaps to be implemented in order to specifically handle a thrown - type. See the SWIG C++ documentation for more - details.

    -

    39.3.16 C++ STL

    -

    The Standard Template Library (STL) is partially supported. See -STL for more details.

    -

    39.4 Type mappings and libraries

    -

    39.4.1 Default primitive - type mappings

    -

    The following table provides the equivalent Scilab type for C/C++ - primitive types.

    -
    - - - - - - - - - - - - - - - - - -
    C/C++ typeScilab type
    boolboolean
    charstring
    signed chardouble or int8
    unsigned chardouble or uint8
    shortdouble or int16
    unsigned shortdouble or uint16
    intdouble or int32
    unsigned intdouble or uint32
    longdouble or int32
    unsigned longdouble or uint32
    signed long longnot supported in Scilab 5.x
    unsigned long longnot supported in Scilab 5.x
    floatdouble
    doubledouble
    char * or char[]string
    -
    -

    Notes:

    -
      -
    • In Scilab the double type is far more used than any integer - type. This is why integer values (int32, uint32, ...) - are automatically converted to Scilab double values when + type. See the SWIG C++ documentation for more + details.

      +

      35.3.16 C++ STL

      +

      The Standard Template Library (STL) is partially supported. See +STL for more details.

      +

      35.4 Type mappings and libraries

      +

      35.4.1 Default primitive + type mappings

      +

      The following table provides the equivalent Scilab type for C/C++ + primitive types.

      +
      + + + + + + + + + + + + + + + + + +
      C/C++ typeScilab type
      boolboolean
      charstring
      signed chardouble or int8
      unsigned chardouble or uint8
      shortdouble or int16
      unsigned shortdouble or uint16
      intdouble or int32
      unsigned intdouble or uint32
      longdouble or int32
      unsigned longdouble or uint32
      signed long longnot supported in Scilab 5.x
      unsigned long longnot supported in Scilab 5.x
      floatdouble
      doubledouble
      char * or char[]string
      +
      +

      Notes:

      +
        +
      • In Scilab the double type is far more used than any integer + type. This is why integer values (int32, uint32, ...) + are automatically converted to Scilab double values when marshalled from C into Scilab. Additionally on input to a C function, - Scilab double values are converted into the related integer - type.
      • -
      • When an integer is expected, if the input is a double, the value + Scilab double values are converted into the related integer + type.
      • +
      • When an integer is expected, if the input is a double, the value must be an integer, i.e. it must not have any decimal part, otherwise a - SWIG value error occurs.
      • -
      • In SWIG for Scilab 5.x, the long long type is not + SWIG value error occurs.
      • +
      • In SWIG for Scilab 5.x, the long long type is not supported, since Scilab 5.x does not have a 64-bit integer type. The default behaviour is for SWIG to generate code that will give a runtime - error if long long type arguments are used from Scilab.
      • -
      -

      39.4.2 Arrays

      -

      Typemaps are available by default for arrays. Primitive type arrays + error if long long type arguments are used from Scilab.

    • +
    +

    35.4.2 Arrays

    +

    Typemaps are available by default for arrays. Primitive type arrays are automatically converted to/from Scilab matrices. Typemaps are also - provided to handle members of a struct or class that are arrays.

    -

    In input, the matrix is usually one-dimensional (it can be either a + provided to handle members of a struct or class that are arrays.

    +

    In input, the matrix is usually one-dimensional (it can be either a row or column vector). But it can also be a two-dimensional matrix. Warning: in Scilab, the values are column-major ordered, unlike in C, - which is row-major ordered.

    -

    The type mappings used for arrays is the same for primitive types, - described earlier. This - means that, if needed, a Scilab double vector is converted in + which is row-major ordered.

    +

    The type mappings used for arrays is the same for primitive types, + described earlier. This + means that, if needed, a Scilab double vector is converted in input into the related C integer array and this C integer array is - automatically converted on output into a Scilab double vector. - Note that unlike scalars, no control is done for arrays when a -double is converted into an integer.

    -

    The following example illustrates all this:

    -
    -
    + automatically converted on output into a Scilab double vector.
    + Note that unlike scalars, no control is done for arrays when a 
    +double is converted into an integer.

    +

    The following example illustrates all this:

    +
    +
     %module example
     
     %#include <stdio.h>
    @@ -56279,10 +54814,10 @@ void printArray(int values[], int len) {
       }
     }
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> printArray([0 1 2 3], 4)
     [ 0  1  2  3 ]
     
    @@ -56294,16 +54829,16 @@ void printArray(int values[], int len) {
     
     --> printArray([0; 1; 2; 3], 4)
     [ 0  1  2  3 ]
    -
    -
    -

    39.4.3 - Pointer-to-pointers

    -

    There are no specific typemaps for pointer-to-pointers, they are are - mapped as pointers in Scilab.

    -

    Pointer-to-pointers are sometimes used to implement matrices in C. - The following is a an example of this:

    -
    -
    +
    +
    +

    35.4.3 + Pointer-to-pointers

    +

    There are no specific typemaps for pointer-to-pointers, they are + mapped as pointers in Scilab.

    +

    Pointer-to-pointers are sometimes used to implement matrices in C. + The following is an example of this:

    +
    +
     %module example
     %inline %{
     
    @@ -56342,11 +54877,11 @@ void print_matrix(double **M, int nbRows, int nbCols) {
     }
     
     %}
    -
    -
    -

    These functions are used like this in Scilab:

    -
    -
    +
    +
    +

    These functions are used like this in Scilab:

    +
    +
     --> m = create_matrix();
     
     --> print_matrix(m);
    @@ -56359,45 +54894,45 @@ void print_matrix(double **M, int nbRows, int nbCols) {
      ans  =
     
         5.
    -
    -
    -

    39.4.4 Matrices

    -

    The matrix.i library provides a set of typemaps which can +

    +
    +

    35.4.4 Matrices

    +

    The matrix.i library provides a set of typemaps which can be useful when working with one-dimensional and two-dimensional - matrices.

    -

    In order to use this library, just include it in the interface file:

    -
    -
    + matrices.

    +

    In order to use this library, just include it in the interface file:

    +
    +
       %include <matrix.i>
    -
    -
    -

    Several typemaps are available for the common Scilab matrix types:

    -
      -
    • double
    • -
    • int
    • -
    • char *
    • -
    • bool
    • -
    -

    For example: for a matrix of int, we have the typemaps, for - input:

    -
      -
    • (int *IN, int IN_ROWCOUNT, int IN_COLCOUNT)
    • -
    • (int IN_ROWCOUNT, int IN_COLCOUNT, int *IN)
    • -
    • (int *IN, int IN_SIZE)
    • -
    • (int IN_SIZE, int *IN)
    • -
    -

    and output:

    -
      -
    • (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT)
    • -
    • (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT)
    • -
    • (int **OUT, int *OUT_SIZE)
    • -
    • (int *OUT_SIZE, int **OUT)
    • -
    -

    They marshall a Scilab matrix type into the appropriate 2 or 3 C +

    +
    +

    Several typemaps are available for the common Scilab matrix types:

    +
      +
    • double
    • +
    • int
    • +
    • char *
    • +
    • bool
    • +
    +

    For example: for a matrix of int, we have the typemaps, for + input:

    +
      +
    • (int *IN, int IN_ROWCOUNT, int IN_COLCOUNT)
    • +
    • (int IN_ROWCOUNT, int IN_COLCOUNT, int *IN)
    • +
    • (int *IN, int IN_SIZE)
    • +
    • (int IN_SIZE, int *IN)
    • +
    +

    and output:

    +
      +
    • (int **OUT, int *OUT_ROWCOUNT, int *OUT_COLCOUNT)
    • +
    • (int *OUT_ROWCOUNT, int *OUT_COLCOUNT, int **OUT)
    • +
    • (int **OUT, int *OUT_SIZE)
    • +
    • (int *OUT_SIZE, int **OUT)
    • +
    +

    They marshall a Scilab matrix type into the appropriate 2 or 3 C parameters. The following is an example using the typemaps in this - library:

    -
    -
    + library:

    +
    +
     %module example
     
     %include <matrix.i>
    @@ -56419,81 +54954,81 @@ void absolute(int *matrix, int matrixNbRow, int matrixNbCol,
     }
     
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> absolute([-0 1 -2; 3 4 -5])
      ans  =
     
         0.    1.    2.
         3.    4.    5.
    -
    -
    -

    The remarks made earlier for arrays also apply here:

    -
      -
    • The values of matrices in Scilab are column-major orderered,
    • -
    • There is no control while converting double values to - integers, double values are truncated without any checking or - warning.
    • -
    -

    39.4.5 STL

    -

    The STL library wraps some containers defined in the STL (Standard +

    +
    +

    The remarks made earlier for arrays also apply here:

    +
      +
    • The values of matrices in Scilab are column-major orderered,
    • +
    • There is no control while converting double values to + integers, double values are truncated without any checking or + warning.
    • +
    +

    35.4.5 STL

    +

    The STL library wraps some containers defined in the STL (Standard Template Library), so that they can be manipulated in Scilab. This library also provides the appropriate typemaps to use the containers in - functions and variables.

    -

    The list of wrapped sequence containers are:

    -
      -
    • std::vector
    • -
    • std::list
    • -
    • std::deque
    • -
    -

    And associative containers are:

    -
      -
    • std::set
    • -
    • std::multiset
    • -
    -

    Typemaps are available for the following container types:

    -
      -
    • double
    • -
    • float
    • -
    • int
    • -
    • string
    • -
    • bool
    • -
    • pointer
    • -
    -

    Containers of other item types are not supported. Using them does + functions and variables.

    +

    The list of wrapped sequence containers are:

    +
      +
    • std::vector
    • +
    • std::list
    • +
    • std::deque
    • +
    +

    And associative containers are:

    +
      +
    • std::set
    • +
    • std::multiset
    • +
    +

    Typemaps are available for the following container types:

    +
      +
    • double
    • +
    • float
    • +
    • int
    • +
    • string
    • +
    • bool
    • +
    • pointer
    • +
    +

    Containers of other item types are not supported. Using them does not break compilation, but provokes a runtime error. Containers of enum - are not supported yet.

    -

    In order to use the STL, the library must first be included in the - SWIG interface file:

    -
    -
    + are not supported yet.

    +

    In order to use the STL, the library must first be included in the + SWIG interface file:

    +
    +
     %include <stl.i>
    -
    -
    -

    Then for each container used, the appropriate template must be - instantiated, in the std namespace:

    -
    +
    +
    +

    Then for each container used, the appropriate template must be + instantiated, in the std namespace:

    +
     namespace std {
         %template(IntVector)    vector<int>;
         %template(DoubleVector) vector<double>;
     }
    -
    -

    -

    Additionally, the module initialization function has to be executed - first in Scilab, so that all the types are known to Scilab. See the -Module initialization section for more details.

    -

    Because in Scilab matrices exist for basic types only, a sequence +

    +

    +

    Additionally, the module initialization function has to be executed + first in Scilab, so that all the types are known to Scilab. See the +Module initialization section for more details.

    +

    Because in Scilab matrices exist for basic types only, a sequence container of pointers is mapped to a Scilab list. For other item types (double, int, string...) the sequence container is mapped to a Scilab - matrix.

    -

    The first example below shows how to create a vector (of int + matrix.

    +

    The first example below shows how to create a vector (of int ) in Scilab, add some values to the vector and pass it as an argument of a function. It also shows, thanks to the typemaps, that we can also - pass a Scilab matrix of values directly into the function:

    -
    -
    + pass a Scilab matrix of values directly into the function:

    +
    +
     %module example
     
     %include <stl.i>
    @@ -56513,10 +55048,10 @@ double average(std::vector<int> v) {
     }
     
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> example_Init();
     
     --> v = new_IntVector();
    @@ -56536,13 +55071,13 @@ double average(std::vector<int> v) {
         2.5
     
     --> delete_IntVector();
    -
    -
    -

    In the second example, a set of struct (Person) is wrapped. +

    +
    +

    In the second example, a set of struct (Person) is wrapped. A function performs a search in this set, and returns a subset. As one - can see, the result in Scilab is a list of pointers:

    -
    -
    + can see, the result in Scilab is a list of pointers:

    +
    +
     %module example
     
     %include <stl.i>
    @@ -56579,10 +55114,10 @@ std::set<PersonPtr> findPersonsByAge(std::set<PersonPtr> persons, in
     }
     
     %}
    -
    -
    -
    -
    +
    +
    +
    +
     --> example_Init();
     
     --> joe = new_Person("Joe", 25);
    @@ -56612,120 +55147,120 @@ ans  =
         Joe
     
     --> delete_PersonPtrSet(p);
    -
    -
    -

    39.5 Module initialization -

    -

    The wrapped module contains an initialization function to:

    -
      -
    • initialize the SWIG runtime, needed for pointer type tracking or - when working with the STL
    • -
    • initialize the module constants and enumerations declared with -%scilabconst()
    • -
    -

    This initialization function should be executed at the start of a - script, before the wrapped library has to be used.

    -

    The function has the name of the module suffixed by _Init. - For example, to initialize the module example:

    -
    -
    +
    +
    +

    35.5 Module initialization +

    +

    The wrapped module contains an initialization function to:

    +
      +
    • initialize the SWIG runtime, needed for pointer type tracking or + when working with the STL
    • +
    • initialize the module constants and enumerations declared with +%scilabconst()
    • +
    +

    This initialization function should be executed at the start of a + script, before the wrapped library has to be used.

    +

    The function has the name of the module suffixed by _Init. + For example, to initialize the module example:

    +
    +
     --> example_Init();
    -
    -
    -

    39.6 Building modes

    -

    The mechanism to load an external module in Scilab is called - Dynamic Link and works with dynamic modules (or shared libraries, -.so files).

    -

    To produce a dynamic module, when generating the wrapper, there are - two possibilities, or build modes:

    -
      -
    • the nobuilder mode, this is the default mode in SWIG. The - user is responsible of the build.
    • -
    • the builder mode. In this mode, Scilab is responsible of - building.
    • -
    -

    39.6.1 No-builder - mode

    -

    In this mode, used by default, SWIG generates the wrapper sources, - which have to be manually compiled and linked. A loader script -loader.sce is also produced, this one is executed further in Scilab - to load the module.

    -

    This mode is the best option to use when you have to integrate the - module build into a larger build process.

    -

    39.6.2 Builder mode

    -

    In this mode, in addition to the wrapper sources, SWIG produces a - builder Scilab script (builder.sce), which is executed in - Scilab to build the module. In a few words, the Scilab ilib_build() +

    +
    +

    35.6 Building modes

    +

    The mechanism to load an external module in Scilab is called + Dynamic Link and works with dynamic modules (or shared libraries, +.so files).

    +

    To produce a dynamic module, when generating the wrapper, there are + two possibilities, or build modes:

    +
      +
    • the nobuilder mode, this is the default mode in SWIG. The + user is responsible of the build.
    • +
    • the builder mode. In this mode, Scilab is responsible of + building.
    • +
    +

    35.6.1 No-builder + mode

    +

    In this mode, used by default, SWIG generates the wrapper sources, + which have to be manually compiled and linked. A loader script +loader.sce is also produced, this one is executed further in Scilab + to load the module.

    +

    This mode is the best option to use when you have to integrate the + module build into a larger build process.

    +

    35.6.2 Builder mode

    +

    In this mode, in addition to the wrapper sources, SWIG produces a + builder Scilab script (builder.sce), which is executed in + Scilab to build the module. In a few words, the Scilab ilib_build() command is used, which produces the shared library file, and the loader - script loader.sce (and also a cleaner script cleaner.sce -).

    -

    An advantage of this mode is that it hides all the complexity of the + script loader.sce (and also a cleaner script cleaner.sce +).

    +

    An advantage of this mode is that it hides all the complexity of the build and other platform issues. Also it allows the module to conform to a Scilab external module convention which is that an external module - should be simply built by calling a builder script.

    -

    The builder mode is activated with the -builder SWIG + should be simply built by calling a builder script.

    +

    The builder mode is activated with the -builder SWIG option. In this mode, the following SWIG options may be used to setup - the build:

    -
      -
    • -buildersources: to add sources to the build - (several files must be separated by a comma)
    • -
    • -buildercflags: to add flags to the builder compiler - flags, for example to set library dependencies include paths
    • -
    • -builderldflags: to add flags to the linker flags, - for example to set library dependency names and paths
    • -
    -

    Let's give an example how to build a module example, - composed of two sources, and using a library dependency:

    -
      -
    • the sources are baa1.c and baa2.c (and are stored - in in the current directory)
    • -
    • the library is libfoo in /opt/foo (headers stored - in /opt/foo/include, and shared library in /opt/foo/lib -)
    • -
    -

    The command is:

    -
    -
    + the build:

    +
      +
    • -buildersources: to add sources to the build + (several files must be separated by a comma)
    • +
    • -buildercflags: to add flags to the builder compiler + flags, for example to set library dependencies include paths
    • +
    • -builderldflags: to add flags to the linker flags, + for example to set library dependency names and paths
    • +
    +

    Let's give an example how to build a module example, + composed of two sources, and using a library dependency:

    +
      +
    • the sources are baa1.c and baa2.c (and are stored + in the current directory)
    • +
    • the library is libfoo in /opt/foo (headers stored + in /opt/foo/include, and shared library in /opt/foo/lib +)
    • +
    +

    The command is:

    +
    +
     $ swig -scilab -builder -buildercflags -I/opt/foo/include -builderldflags "-L/opt/foo/lib -lfoo" -buildersources baa1.cxx, baa2.cxx example.i
    -
    -
    -

    39.7 Generated scripts

    -

    In this part we give some details about the generated Scilab - scripts.

    -

    39.7.1 Builder - script

    -

    builder.sce is the name of the builder script generated by - SWIG in builder mode. It contains code like this:

    -
    -
    +
    +
    +

    35.7 Generated scripts

    +

    In this part we give some details about the generated Scilab + scripts.

    +

    35.7.1 Builder + script

    +

    builder.sce is the name of the builder script generated by + SWIG in builder mode. It contains code like this:

    +
    +
     ilib_name = "examplelib";
     files = ["example_wrap.c"];
     libs = [];
     table = ["fact", "_wrap_fact";"Foo_set", "_wrap_Foo_set";"Foo_get", "_wrap_Foo_get";];
     ilib_build(ilib_name, table, files, libs);
    -
    -
    -

    ilib_build(lib_name, table, files, libs) is used to create +

    +
    +

    ilib_build(lib_name, table, files, libs) is used to create shared libraries, and to generate a loader file used to dynamically - load the shared library into Scilab.

    -
      -
    • ilib_name: a character string, the generic name of - the library without path and extension.
    • -
    • files: string matrix containing objects files needed - for shared library creation.
    • -
    • libs: string matrix containing extra libraries - needed for shared library creation.
    • -
    • table: two column string matrix containing a table - of pairs of 'scilab function name', 'C function name'.
    • -
    -

    39.7.2 Loader - script

    -

    The loader script is used to load in Scilab all the module + load the shared library into Scilab.

    +
      +
    • ilib_name: a character string, the generic name of + the library without path and extension.
    • +
    • files: string matrix containing objects files needed + for shared library creation.
    • +
    • libs: string matrix containing extra libraries + needed for shared library creation.
    • +
    • table: two column string matrix containing a table + of pairs of 'scilab function name', 'C function name'.
    • +
    +

    35.7.2 Loader + script

    +

    The loader script is used to load in Scilab all the module functions. When loaded, these functions can be used as other Scilab - functions.

    -

    The loader script loader.sce contains code similar to:

    -
    -
    + functions.

    +

    The loader script loader.sce contains code similar to:

    +
    +
     // ------------------------------------------------------
     // generated by builder.sce: Please do not edit this file
     // ------------------------------------------------------
    @@ -56741,176 +55276,177 @@ clear libexamplelib_path;
     clear list_functions;
     clear get_file_path;
     // ------------------------------------------------------
    -
    -
    -

    addinter(files, spname, fcts) performs dynamic linking of a - compiled C interface function.

    -
      -
    • files: a character string or a vector of character +
    +
    +

    addinter(files, spname, fcts) performs dynamic linking of a + compiled C interface function.

    +
      +
    • files: a character string or a vector of character strings defining the object files (containing the C interface - functions) to link with.
    • -
    • spname: a character string. Name of interface - routine entry point.
    • -
    • fcts: vector of character strings. The name of new - Scilab function.
    • -
    -

    39.8 Other resources

    -
      -
    • Example use cases can be found in the Examples/scilab - directory.
    • -
    • The test suite in the Examples/test-suite/scilab can be - another source of useful use cases.
    • -
    • The -Scilab API is used in the generated code and is a useful reference - when examining the output.
    • -
    • This -guide describes the Scilab external modules structure and files, in - particular the files that are generated by SWIG for Scilab.
    • -
    + functions) to link with. +
  • spname: a character string. Name of interface + routine entry point.
  • +
  • fcts: vector of character strings. The name of new + Scilab function.
  • + +

    35.8 Other resources

    +
      +
    • Example use cases can be found in the Examples/scilab + directory.
    • +
    • The test suite in the Examples/test-suite/scilab can be + another source of useful use cases.
    • +
    • The +Scilab API is used in the generated code and is a useful reference + when examining the output.
    • +
    • This +guide describes the Scilab external modules structure and files, in + particular the files that are generated by SWIG for Scilab.
    • +

    -

    40 SWIG and Tcl

    +

    36 SWIG and Tcl

    - + -

    Caution: This chapter is under repair!

    -

    This chapter discusses SWIG's support of Tcl. SWIG currently +

    Caution: This chapter is under repair!

    +

    This chapter discusses SWIG's support of Tcl. SWIG currently requires Tcl 8.0 or a later release. Earlier releases of SWIG supported - Tcl 7.x, but this is no longer supported.

    -

    40.1 Preliminaries

    -

    To build a Tcl module, run SWIG using the -tcl option :

    -
    -
    + Tcl 7.x, but this is no longer supported.

    +

    36.1 Preliminaries

    +

    To build a Tcl module, run SWIG using the -tcl or -tcl8 + option :

    +
    +
     $ swig -tcl example.i
    -
    -
    -

    If building a C++ extension, add the -c++ option:

    -
    -
    +
    +
    +

    If building a C++ extension, add the -c++ option:

    +
    +
     $ swig -c++ -tcl example.i
    -
    -
    -

    This creates a file example_wrap.c or example_wrap.cxx +

    +
    +

    This creates a file example_wrap.c or example_wrap.cxx that contains all of the code needed to build a Tcl extension module. To finish building the module, you need to compile this file and link - it with the rest of your program.

    -

    40.1.1 Getting the right header files

    -

    In order to compile the wrapper code, the compiler needs the -tcl.h header file. This file is usually contained in the directory

    -
    -
    + it with the rest of your program.

    +

    36.1.1 Getting the right header files

    +

    In order to compile the wrapper code, the compiler needs the +tcl.h header file. This file is usually contained in the directory

    +
    +
     /usr/local/include
    -
    -
    -

    Be aware that some Tcl versions install this header file with a +

    +
    +

    Be aware that some Tcl versions install this header file with a version number attached to it. If this is the case, you should probably - make a symbolic link so that tcl.h points to the correct - header file.

    -

    40.1.2 Compiling a dynamic module

    -

    The preferred approach to building an extension module is to compile + make a symbolic link so that tcl.h points to the correct + header file.

    +

    36.1.2 Compiling a dynamic module

    +

    The preferred approach to building an extension module is to compile it into a shared object file or DLL. Assuming you have code you need to - link to in a file called example.c, you will need to compile - your program using commands like this (shown for Linux):

    -
    -
    + link to in a file called example.c, you will need to compile
    + your program using commands like this (shown for Linux):

    +
    +
     $ swig -tcl example.i
     $ gcc -fPIC -c example.c
     $ gcc -fPIC -c example_wrap.c -I/usr/local/include
     $ gcc -shared example.o example_wrap.o -o example.so
    -
    -
    -

    The exact commands for doing this vary from platform to platform. +

    +
    +

    The exact commands for doing this vary from platform to platform. SWIG tries to guess the right options when it is installed. Therefore, - you may want to start with one of the examples in the -SWIG/Examples/tcl directory. If that doesn't work, you will need to + you may want to start with one of the examples in the +SWIG/Examples/tcl directory. If that doesn't work, you will need to read the man-pages for your compiler and linker to get the right set of - options. You might also check the -SWIG Wiki for additional information.

    -

    When linking the module, the name of the output file has to match - the name of the module. If the name of your SWIG module is "example -", the name of the corresponding object file should be "example.so -". The name of the module is specified using the %module - directive or the -module command line option.

    -

    40.1.3 Static linking

    -

    An alternative approach to dynamic linking is to rebuild the Tcl + options. You might also check the +SWIG Wiki for additional information.

    +

    When linking the module, the name of the output file has to match + the name of the module. If the name of your SWIG module is "example +", the name of the corresponding object file should be "example.so +". The name of the module is specified using the %module + directive or the -module command line option.

    +

    36.1.3 Static linking

    +

    An alternative approach to dynamic linking is to rebuild the Tcl interpreter with your extension module added to it. In the past, this approach was sometimes necessary due to limitations in dynamic loading support on certain machines. However, the situation has improved greatly over the last few years and you should not consider this - approach unless there is really no other option.

    -

    The usual procedure for adding a new module to Tcl involves writing - a special function Tcl_AppInit() and using it to initialize - the interpreter and your module. With SWIG, the tclsh.i and -wish.i library files can be used to rebuild the tclsh and -wish interpreters respectively. For example:

    -
    -
    + approach unless there is really no other option.

    +

    The usual procedure for adding a new module to Tcl involves writing + a special function Tcl_AppInit() and using it to initialize + the interpreter and your module. With SWIG, the tclsh.i and +wish.i library files can be used to rebuild the tclsh and +wish interpreters respectively. For example:

    +
    +
     %module example
     
     %inline %{
    @@ -56921,13 +55457,13 @@ extern double My_variable;
     
     %include "tclsh.i"       // Include code for rebuilding tclsh
     
    -
    -
    -

    The tclsh.i library file includes supporting code that +

    +
    +

    The tclsh.i library file includes supporting code that contains everything needed to rebuild tclsh. To rebuild the - interpreter, you simply do something like this:

    -
    -
    + interpreter, you simply do something like this:

    +
    +
     $ swig -tcl example.i
     $ gcc example.c example_wrap.c \
             -Xlinker -export-dynamic \
    @@ -56935,164 +55471,164 @@ $ gcc example.c example_wrap.c \
             -L/usr/local/lib -ltcl -lm -ldl \
             -o mytclsh
     
    -
    -
    -

    You will need to supply the same libraries that were used to build - Tcl the first time. This may include system libraries such as --lsocket, -lnsl, and -lpthread. If this actually +

    +
    +

    You will need to supply the same libraries that were used to build + Tcl the first time. This may include system libraries such as +-lsocket, -lnsl, and -lpthread. If this actually works, the new version of Tcl should be identical to the default version except that your extension module will be a built-in part of - the interpreter.

    -

    Comment: In practice, you should probably try to avoid static + the interpreter.

    +

    Comment: In practice, you should probably try to avoid static linking if possible. Some programmers may be inclined to use static linking in the interest of getting better performance. However, the performance gained by static linking tends to be rather minimal in most situations (and quite frankly not worth the extra hassle in the opinion - of this author).

    -

    40.1.4 Using your module

    -

    To use your module, simply use the Tcl load command. If all - goes well, you will be able to this:

    -
    -
    + of this author).

    +

    36.1.4 Using your module

    +

    To use your module, simply use the Tcl load command. If all + goes well, you will be able to this:

    +
    +
     $ tclsh
     % load ./example.so
     % fact 4
     24
     %
    -
    -
    -

    A common error received by first-time users is the following:

    -
    -
    +
    +
    +

    A common error received by first-time users is the following:

    +
    +
     % load ./example.so
     couldn't find procedure Example_Init
     % 
    -
    -
    -

    This error is almost always caused when the name of the shared +

    +
    +

    This error is almost always caused when the name of the shared object file doesn't match the name of the module supplied using the - SWIG %module directive. Double-check the interface to make + SWIG %module directive. Double-check the interface to make sure the module name and the shared object file match. Another possible cause of this error is forgetting to link the SWIG-generated wrapper code with the rest of your application when creating the extension - module.

    -

    Another common error is something similar to the following:

    -
    -
    + module.

    +

    Another common error is something similar to the following:

    +
    +
     % load ./example.so
     couldn't load file "./example.so": ./example.so: undefined symbol: fact
     % 
    -
    -
    -

    This error usually indicates that you forgot to include some object +

    +
    +

    This error usually indicates that you forgot to include some object files or libraries in the linking of the shared library file. Make sure you compile both the SWIG wrapper file and your original program into a shared library file. Make sure you pass all of the required libraries - to the linker.

    -

    Sometimes unresolved symbols occur because a wrapper has been + to the linker.

    +

    Sometimes unresolved symbols occur because a wrapper has been created for a function that doesn't actually exist in a library. This usually occurs when a header file includes a declaration for a function that was never actually implemented or it was removed from a library without updating the header file. To fix this, you can either edit the - SWIG input file to remove the offending declaration or you can use the -%ignore directive to ignore the declaration.

    -

    Finally, suppose that your extension module is linked with another - library like this:

    -
    -
    + SWIG input file to remove the offending declaration or you can use the 
    +%ignore directive to ignore the declaration.

    +

    Finally, suppose that your extension module is linked with another + library like this:

    +
    +
     $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
           -o example.so
    -
    -
    -

    If the foo library is compiled as a shared library, you - might get the following problem when you try to use your module:

    -
    -
    +
    +
    +

    If the foo library is compiled as a shared library, you + might get the following problem when you try to use your module:

    +
    +
     % load ./example.so
     couldn't load file "./example.so": libfoo.so: cannot open shared object file:
     No such file or directory
     %        
    -
    -
    -

    This error is generated because the dynamic linker can't locate the -libfoo.so library. When shared libraries are loaded, the system - normally only checks a few standard locations such as /usr/lib - and /usr/local/lib. To fix this problem, there are several +

    +
    +

    This error is generated because the dynamic linker can't locate the +libfoo.so library. When shared libraries are loaded, the system + normally only checks a few standard locations such as /usr/lib + and /usr/local/lib. To fix this problem, there are several things you can do. First, you can recompile your extension module with - extra path information. For example, on Linux you can do this:

    -
    -
    + extra path information. For example, on Linux you can do this:

    +
    +
     $ gcc -shared example.o example_wrap.o -L/home/beazley/projects/lib -lfoo \
           -Xlinker -rpath /home/beazley/projects/lib \
           -o example.so
    -
    -
    -

    Alternatively, you can set the LD_LIBRARY_PATH environment +

    +
    +

    Alternatively, you can set the LD_LIBRARY_PATH environment variable to include the directory with your shared libraries. If - setting LD_LIBRARY_PATH, be aware that setting this variable + setting LD_LIBRARY_PATH, be aware that setting this variable can introduce a noticeable performance impact on all other applications that you run. To set it only for Tcl, you might want to do this - instead:

    -
    -
    + instead:

    +
    +
     $ env LD_LIBRARY_PATH=/home/beazley/projects/lib tclsh
    -
    -
    -

    Finally, you can use a command such as ldconfig to add +

    +
    +

    Finally, you can use a command such as ldconfig to add additional search paths to the default system configuration (this - requires root access and you will need to read the man pages).

    -

    40.1.5 Compilation of C++ extensions

    -

    Compilation of C++ extensions has traditionally been a tricky + requires root access and you will need to read the man pages).

    +

    36.1.5 Compilation of C++ extensions

    +

    Compilation of C++ extensions has traditionally been a tricky problem. Since the Tcl interpreter is written in C, you need to take steps to make sure C++ is properly initialized and that modules are - compiled correctly.

    -

    On most machines, C++ extension modules should be linked using the - C++ compiler. For example:

    -
    -
    + compiled correctly.

    +

    On most machines, C++ extension modules should be linked using the + C++ compiler. For example:

    +
    +
     % swig -c++ -tcl example.i
     % g++ -fPIC -c example.cxx
     % g++ -fPIC -c example_wrap.cxx -I/usr/local/include
     % g++ -shared example.o example_wrap.o -o example.so
    -
    -
    -

    In addition to this, you may need to include additional library +

    +
    +

    In addition to this, you may need to include additional library files to make it work. For example, if you are using the Sun C++ - compiler on Solaris, you often need to add an extra library -lCrun - like this:

    -
    -
    + compiler on Solaris, you often need to add an extra library -lCrun
    + like this:

    +
    +
     % swig -c++ -tcl example.i
     % CC -KPIC -c example.cxx
     % CC -KPIC -c example_wrap.cxx -I/usr/local/include
     % CC -G example.o example_wrap.o -L/opt/SUNWspro/lib -o example.so -lCrun
    -
    -
    -

    Of course, the extra libraries to use are completely - non-portable---you will probably need to do some experimentation.

    -

    Sometimes people have suggested that it is necessary to relink the +

    +
    +

    Of course, the extra libraries to use are completely + non-portable---you will probably need to do some experimentation.

    +

    Sometimes people have suggested that it is necessary to relink the Tcl interpreter using the C++ compiler to make C++ extension modules work. In the experience of this author, this has never actually appeared to be necessary. Relinking the interpreter with C++ really only includes the special run-time libraries described above---as long as you link your extension modules with these libraries, it should not - be necessary to rebuild Tcl.

    -

    If you aren't entirely sure about the linking of a C++ extension, - you might look at an existing C++ program. On many Unix machines, the -ldd command will list library dependencies. This should give you + be necessary to rebuild Tcl.

    +

    If you aren't entirely sure about the linking of a C++ extension, + you might look at an existing C++ program. On many Unix machines, the +ldd command will list library dependencies. This should give you some clues about what you might have to include when you link your - extension module. For example:

    -
    -
    + extension module. For example:

    +
    +
     $ ldd swig
             libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x40019000)
             libm.so.6 => /lib/libm.so.6 (0x4005b000)
             libc.so.6 => /lib/libc.so.6 (0x40077000)
             /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
     $
    -
    -
    -

    As a final complication, a major weakness of C++ is that it does not +

    +
    +

    As a final complication, a major weakness of C++ is that it does not define any sort of standard for binary linking of libraries. This means that C++ code compiled by different compilers will not link together properly as libraries nor is the memory layout of classes and data @@ -57103,105 +55639,105 @@ $ probably won't matter. However, if these modules start sharing data, you will need to take steps to avoid segmentation faults and other erratic program behavior. If working with lots of software components, - you might want to investigate using a more formal standard such as COM.

    -

    40.1.6 Compiling for 64-bit platforms

    -

    On platforms that support 64-bit applications (Solaris, Irix, etc.), + you might want to investigate using a more formal standard such as COM.

    +

    36.1.6 Compiling for 64-bit platforms

    +

    On platforms that support 64-bit applications (Solaris, Irix, etc.), special care is required when building extension modules. On these machines, 64-bit applications are compiled and linked using a different set of compiler/linker options. In addition, it is not generally possible to mix 32-bit and 64-bit code together in the same - application.

    -

    To utilize 64-bits, the Tcl executable will need to be recompiled as + application.

    +

    To utilize 64-bits, the Tcl executable will need to be recompiled as a 64-bit application. In addition, all libraries, wrapper code, and every other part of your application will need to be compiled for 64-bits. If you plan to use other third-party extension modules, they - will also have to be recompiled as 64-bit extensions.

    -

    If you are wrapping commercial software for which you have no source + will also have to be recompiled as 64-bit extensions.

    +

    If you are wrapping commercial software for which you have no source code, you will be forced to use the same linking standard as used by that software. This may prevent the use of 64-bit extensions. It may also introduce problems on platforms that support more than one linking - standard (e.g., -o32 and -n32 on Irix).

    -

    40.1.7 Setting a package prefix

    -

    To avoid namespace problems, you can instruct SWIG to append a + standard (e.g., -o32 and -n32 on Irix).

    +

    36.1.7 Setting a package prefix

    +

    To avoid namespace problems, you can instruct SWIG to append a package prefix to all of your functions and variables. This is done - using the -prefix option as follows :

    -
    -
    + using the -prefix option as follows :

    +
    +
     swig -tcl -prefix Foo example.i
    -
    -
    -

    If you have a function "bar" in the SWIG file, the prefix +

    +
    +

    If you have a function "bar" in the SWIG file, the prefix option will append the prefix to the name when creating a command and - call it "Foo_bar".

    -

    40.1.8 Using namespaces

    -

    Alternatively, you can have SWIG install your module into a Tcl - namespace by specifying the -namespace option :

    -
    -
    + call it "Foo_bar".

    +

    36.1.8 Using namespaces

    +

    Alternatively, you can have SWIG install your module into a Tcl + namespace by specifying the -namespace option :

    +
    +
     swig -tcl -namespace example.i
    -
    -
    -

    By default, the name of the namespace will be the same as the module - name, but you can override it using the -prefix option.

    -

    When the -namespace option is used, objects in the module - are always accessed with the namespace name such as Foo::bar.

    -

    40.2 Building Tcl/Tk Extensions under Windows - 95/NT

    -

    Building a SWIG extension to Tcl/Tk under Windows 95/NT is roughly +

    +
    +

    By default, the name of the namespace will be the same as the module + name, but you can override it using the -prefix option.

    +

    When the -namespace option is used, objects in the module + are always accessed with the namespace name such as Foo::bar.

    +

    36.2 Building Tcl/Tk Extensions under Windows + 95/NT

    +

    Building a SWIG extension to Tcl/Tk under Windows 95/NT is roughly similar to the process used with Unix. Normally, you will want to produce a DLL that can be loaded into tclsh or wish. This section covers the process of using SWIG with Microsoft Visual C++. although - the procedure may be similar with other compilers.

    -

    40.2.1 Running SWIG from Developer Studio

    -

    If you are developing your application within Microsoft developer + the procedure may be similar with other compilers.

    +

    36.2.1 Running SWIG from Developer Studio

    +

    If you are developing your application within Microsoft developer studio, SWIG can be invoked as a custom build option. The process - roughly follows these steps :

    -
      -
    • Open up a new workspace and use the AppWizard to select a DLL - project.
    • -
    • Add both the SWIG interface file (the .i file), any supporting C + roughly follows these steps :

      +
        +
      • Open up a new workspace and use the AppWizard to select a DLL + project.
      • +
      • Add both the SWIG interface file (the .i file), any supporting C files, and the name of the wrapper file that will be created by SWIG - (ie. example_wrap.c). Note : If using C++, choose a different - suffix for the wrapper file such as example_wrap.cxx. Don't + (ie. example_wrap.c). Note : If using C++, choose a different + suffix for the wrapper file such as example_wrap.cxx. Don't worry if the wrapper file doesn't exist yet--Developer studio will keep - a reference to it around.
      • -
      • Select the SWIG interface file and go to the settings menu. Under - settings, select the "Custom Build" option.
      • -
      • Enter "SWIG" in the description field.
      • -
      • Enter "swig -tcl -o $(ProjDir)\$(InputName)_wrap.c $(InputPath) -" in the "Build command(s) field"
      • -
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output - files(s) field".
      • -
      • Next, select the settings for the entire project and go to + a reference to it around.
      • +
      • Select the SWIG interface file and go to the settings menu. Under + settings, select the "Custom Build" option.
      • +
      • Enter "SWIG" in the description field.
      • +
      • Enter "swig -tcl -o $(ProjDir)\$(InputName)_wrap.c $(InputPath) +" in the "Build command(s) field"
      • +
      • Enter "$(ProjDir)\$(InputName)_wrap.c" in the "Output + files(s) field".
      • +
      • Next, select the settings for the entire project and go to "C++:Preprocessor". Add the include directories for your Tcl - installation under "Additional include directories".
      • -
      • Finally, select the settings for the entire project and go to "Link + installation under "Additional include directories".
      • +
      • Finally, select the settings for the entire project and go to "Link Options". Add the Tcl library file to your link libraries. For example - "tcl80.lib". Also, set the name of the output file to match - the name of your Tcl module (ie. example.dll).
      • -
      • Build your project.
      • -
      -

      Now, assuming all went well, SWIG will be automatically invoked when + "tcl80.lib". Also, set the name of the output file to match + the name of your Tcl module (ie. example.dll).

    • +
    • Build your project.
    • +
    +

    Now, assuming all went well, SWIG will be automatically invoked when you build your project. Any changes made to the interface file will result in SWIG being automatically invoked to produce a new version of - the wrapper file. To run your new Tcl extension, simply run tclsh - or wish and use the load command. For example :

    -
    -
    + the wrapper file. To run your new Tcl extension, simply run tclsh
    + or wish and use the load command. For example :

    +
    +
     MSDOS > tclsh80
     % load example.dll
     % fact 4
     24
     %
    -
    -
    -

    40.2.2 Using NMAKE

    -

    Alternatively, SWIG extensions can be built by writing a Makefile +

    +
    +

    36.2.2 Using NMAKE

    +

    Alternatively, SWIG extensions can be built by writing a Makefile for NMAKE. To do this, make sure the environment variables for MSVC++ are available and the MSVC++ tools are in your path. Now, just write a - short Makefile like this :

    -
    -
    + short Makefile like this :

    +
    +
     # Makefile for building various SWIG generated extensions
     
     SRCS          = example.c
    @@ -57245,64 +55781,64 @@ tcl:
             set LIB=$(TOOLS)\lib
             $(LINK) $(LOPT) -out:example.dll $(LIBS) $(TCLLIB) example.obj example_wrap.obj
     
    -
    -
    -

    To build the extension, run NMAKE (you may need to run vcvars32 +

    +
    +

    To build the extension, run NMAKE (you may need to run vcvars32 first). This is a pretty minimal Makefile, but hopefully its enough to get you started. With a little practice, you'll be making lots of Tcl - extensions.

    -

    40.3 A tour of basic C/C++ wrapping

    -

    By default, SWIG tries to build a very natural Tcl interface to your + extensions.

    +

    36.3 A tour of basic C/C++ wrapping

    +

    By default, SWIG tries to build a very natural Tcl interface to your C/C++ code. Functions are wrapped as functions, classes are wrapped in an interface that mimics the style of Tk widgets and [incr Tcl] classes. This section briefly covers the essential aspects of this - wrapping.

    -

    40.3.1 Modules

    -

    The SWIG %module directive specifies the name of the Tcl - module. If you specify `%module example', then everything is - compiled into an extension module example.so. When choosing a + wrapping.

    +

    36.3.1 Modules

    +

    The SWIG %module directive specifies the name of the Tcl + module. If you specify `%module example', then everything is + compiled into an extension module example.so. When choosing a module name, make sure you don't use the same name as a built-in Tcl - command.

    -

    One pitfall to watch out for is module names involving numbers. If - you specify a module name like %module md5, you'll find that - the load command no longer seems to work:

    -
    -
    + command.

    +

    One pitfall to watch out for is module names involving numbers. If + you specify a module name like %module md5, you'll find that + the load command no longer seems to work:

    +
    +
     % load ./md5.so
     couldn't find procedure Md_Init
    -
    -
    -

    To fix this, supply an extra argument to load like this:

    -
    -
    +
    +
    +

    To fix this, supply an extra argument to load like this:

    +
    +
     % load ./md5.so md5
    -
    -
    -

    40.3.2 Functions

    -

    Global functions are wrapped as new Tcl built-in commands. For - example,

    -
    -
    +
    +
    +

    36.3.2 Functions

    +

    Global functions are wrapped as new Tcl built-in commands. For + example,

    +
    +
     %module example
     int fact(int n);
    -
    -
    -

    creates a built-in function fact that works exactly like - you think it does:

    -
    -
    +
    +
    +

    creates a built-in function fact that works exactly like + you think it does:

    +
    +
     % load ./example.so
     % fact 4
     24
     % set x [fact 6]
     %
    -
    -
    -

    40.3.3 Global variables

    -

    C/C++ global variables are wrapped by Tcl global variables. For - example:

    -
    -
    +
    +
    +

    36.3.3 Global variables

    +

    C/C++ global variables are wrapped by Tcl global variables. For + example:

    +
    +
     // SWIG interface file with global variables
     %module example
     ...
    @@ -57310,61 +55846,61 @@ int fact(int n);
     extern double density;
     %}
     ...
    -
    -
    -

    Now look at the Tcl interface:

    -
    -
    +
    +
    +

    Now look at the Tcl interface:

    +
    +
     % puts $density          # Output value of C global variable
     1.0
     % set density 0.95       # Change value
    -
    -
    -

    If you make an error in variable assignment, you will get an error - message. For example:

    -
    -
    +
    +
    +

    If you make an error in variable assignment, you will get an error + message. For example:

    +
    +
     % set density "hello"
     can't set "density": Type error. expected a double.
     %
    -
    -
    -

    If a variable is declared as const, it is wrapped as a +

    +
    +

    If a variable is declared as const, it is wrapped as a read-only variable. Attempts to modify its value will result in an - error.

    -

    To make ordinary variables read-only, you can use the %immutable - directive. For example:

    -
    -
    + error.

    +

    To make ordinary variables read-only, you can use the %immutable + directive. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable;
     extern char *path;
     %mutable;
    -
    -
    -

    The %immutable directive stays in effect until it is - explicitly disabled or cleared using %mutable. See the -Creating read-only variables section for further details.

    -

    If you just want to make a specific variable immutable, supply a - declaration name. For example:

    -
    -
    +
    +
    +

    The %immutable directive stays in effect until it is + explicitly disabled or cleared using %mutable. See the +Creating read-only variables section for further details.

    +

    If you just want to make a specific variable immutable, supply a + declaration name. For example:

    +
    +
     %{
     extern char *path;
     %}
     %immutable path;
     ...
     extern char *path;      // Read-only (due to %immutable)
    -
    -
    -

    40.3.4 Constants and enums

    -

    C/C++ constants are installed as global Tcl variables containing the - appropriate value. To create a constant, use #define, enum -, or the %constant directive. For example:

    -
    -
    +
    +
    +

    36.3.4 Constants and enums

    +

    C/C++ constants are installed as global Tcl variables containing the + appropriate value. To create a constant, use #define, enum +, or the %constant directive. For example:

    +
    +
     #define PI 3.14159
     #define VERSION "1.0"
     
    @@ -57372,94 +55908,94 @@ enum Beverage { ALE, LAGER, STOUT, PILSNER };
     
     %constant int FOO = 42;
     %constant const char *path = "/usr/local";
    -
    -
    -

    For enums, make sure that the definition of the enumeration actually +

    +
    +

    For enums, make sure that the definition of the enumeration actually appears in a header file or in the wrapper file somehow---if you just stick an enum in a SWIG interface without also telling the C compiler - about it, the wrapper code won't compile.

    -

    Note: declarations declared as const are wrapped as - read-only variables and will be accessed using the cvar object + about it, the wrapper code won't compile.

    +

    Note: declarations declared as const are wrapped as + read-only variables and will be accessed using the cvar object described in the previous section. They are not wrapped as constants. - For further discussion about this, see the SWIG Basics - chapter.

    -

    Constants are not guaranteed to remain constant in Tcl---the value + For further discussion about this, see the SWIG Basics + chapter.

    +

    Constants are not guaranteed to remain constant in Tcl---the value of the constant could be accidentally reassigned.You will just have to - be careful.

    -

    A peculiarity of installing constants as variables is that it is - necessary to use the Tcl global statement to access constants - in procedure bodies. For example:

    -
    -
    + be careful.

    +

    A peculiarity of installing constants as variables is that it is + necessary to use the Tcl global statement to access constants + in procedure bodies. For example:

    +
    +
     proc blah {} {
       global FOO
       bar $FOO
     }
    -
    -
    -

    If a program relies on a lot of constants, this can be extremely +

    +
    +

    If a program relies on a lot of constants, this can be extremely annoying. To fix the problem, consider using the following typemap - rule:

    -
    -
    + rule:

    +
    +
     %apply int CONSTANT { int x };
     #define FOO 42
     ...
     void bar(int x);
    -
    -
    -

    When applied to an input argument, the CONSTANT rule allows +

    +
    +

    When applied to an input argument, the CONSTANT rule allows a constant to be passed to a function using its actual value or a - symbolic identifier name. For example:

    -
    -
    + symbolic identifier name. For example:

    +
    +
     proc blah {} {
       bar FOO
     }
    -
    -
    -

    When an identifier name is given, it is used to perform an implicit +

    +
    +

    When an identifier name is given, it is used to perform an implicit hash-table lookup of the value during argument conversion. This allows - the global statement to be omitted.

    -

    40.3.5 Pointers

    -

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no + the global statement to be omitted.

    +

    36.3.5 Pointers

    +

    C/C++ pointers are fully supported by SWIG. Furthermore, SWIG has no problem working with incomplete type information. Here is a rather - simple interface:

    -
    -
    + simple interface:

    +
    +
     %module example
     
     FILE *fopen(const char *filename, const char *mode);
     int fputs(const char *, FILE *);
     int fclose(FILE *);
    -
    -
    -

    When wrapped, you will be able to use the functions in a natural way - from Tcl. For example:

    -
    -
    +
    +
    +

    When wrapped, you will be able to use the functions in a natural way + from Tcl. For example:

    +
    +
     % load ./example.so
     % set f [fopen junk w]
     % fputs "Hello World\n" $f
     % fclose $f
    -
    -
    -

    If this makes you uneasy, rest assured that there is no deep magic +

    +
    +

    If this makes you uneasy, rest assured that there is no deep magic involved. Underneath the covers, pointers to C/C++ objects are simply represented as opaque values--normally an encoded character string like - this:

    -
    -
    + this:

    +
    +
     % puts $f
     _c0671108_p_FILE
     % 
    -
    -
    -

    This pointer value can be freely passed around to different C - functions that expect to receive an object of type FILE *. The - only thing you can't do is dereference the pointer from Tcl.

    -

    The NULL pointer is represented by the string NULL.

    -

    As much as you might be inclined to modify a pointer value directly +

    +
    +

    This pointer value can be freely passed around to different C + functions that expect to receive an object of type FILE *. The + only thing you can't do is dereference the pointer from Tcl.

    +

    The NULL pointer is represented by the string NULL.

    +

    As much as you might be inclined to modify a pointer value directly from Tcl, don't. The hexadecimal encoding is not necessarily the same as the logical memory address of the underlying object. Instead it is the raw byte encoding of the pointer value. The encoding will vary @@ -57468,9 +56004,9 @@ _c0671108_p_FILE a new type by simply replacing the type-string. This may not work like you expect and it is particularly dangerous when casting C++ objects. If you need to cast a pointer or change its value, consider writing - some helper functions instead. For example:

    -
    -
    + some helper functions instead. For example:

    +
    +
     %inline %{
     /* C-style cast */
     Bar *FooToBar(Foo *f) {
    @@ -57483,56 +56019,56 @@ Foo *BarToFoo(Bar *b) {
     }
     
     Foo *IncrFoo(Foo *f, int i) {
    -    return f+i;
    +  return f+i;
     }
     %}
    -
    -
    -

    Also, if working with C++, you should always try to use the new C++ +

    +
    +

    Also, if working with C++, you should always try to use the new C++ style casts. For example, in the above code, the C-style cast may - return a bogus result whereas as the C++-style cast will return -None if the conversion can't be performed.

    -

    40.3.6 Structures

    -

    If you wrap a C structure, it is wrapped by a Tcl interface that + return a bogus result whereas as the C++-style cast will return +None if the conversion can't be performed.

    +

    36.3.6 Structures

    +

    If you wrap a C structure, it is wrapped by a Tcl interface that somewhat resembles a Tk widget. This provides a very natural interface. - For example,

    -
    -
    + For example,

    +
    +
     struct Vector {
       double x, y, z;
     };
     
    -
    -
    -

    is used as follows:

    -
    -
    +
    +
    +

    is used as follows:

    +
    +
     % Vector v
     % v configure -x 3.5 -y 7.2
     % puts "[v cget -x] [v cget -y] [v cget -z]"
     3.5 7.2 0.0
     % 
    -
    -
    -

    Similar access is provided for unions and the data members of C++ - classes.

    -

    In the above example, v is a name that's used for the +

    +
    +

    Similar access is provided for unions and the data members of C++ + classes.

    +

    In the above example, v is a name that's used for the object. However, underneath the covers, there's a pointer to a raw C - structure. This can be obtained by looking at the -this - attribute. For example:

    -
    -
    + structure. This can be obtained by looking at the -this
    + attribute. For example:

    +
    +
     % puts [v cget -this]
     _88e31408_p_Vector
    -
    -
    -

    Further details about the relationship between the Tcl and the - underlying C structure are covered a little later.

    -

    const members of a structure are read-only. Data members - can also be forced to be read-only using the %immutable - directive. For example:

    -
    -
    +
    +
    +

    Further details about the relationship between the Tcl and the + underlying C structure are covered a little later.

    +

    const members of a structure are read-only. Data members + can also be forced to be read-only using the %immutable + directive. For example:

    +
    +
     struct Foo {
       ...
       %immutable;
    @@ -57541,50 +56077,50 @@ struct Foo {
       %mutable;
       ...
     };
    -
    -
    -

    When char * members of a structure are wrapped, the - contents are assumed to be dynamically allocated using malloc - or new (depending on whether or not SWIG is run with the -c++ +

    +
    +

    When char * members of a structure are wrapped, the + contents are assumed to be dynamically allocated using malloc + or new (depending on whether or not SWIG is run with the -c++ option). When the structure member is set, the old contents will be released and a new value created. If this is not the behavior you want, - you will have to use a typemap (described later).

    -

    If a structure contains arrays, access to those arrays is managed - through pointers. For example, consider this:

    -
    -
    + you will have to use a typemap (described later).

    +

    If a structure contains arrays, access to those arrays is managed + through pointers. For example, consider this:

    +
    +
     struct Bar {
    -    int  x[16];
    +  int  x[16];
     };
    -
    -
    -

    If accessed in Tcl, you will see behavior like this:

    -
    -
    +
    +
    +

    If accessed in Tcl, you will see behavior like this:

    +
    +
     % Bar b
     % puts [b cget -x]
     _801861a4_p_int
     % 
    -
    -
    -

    This pointer can be passed around to functions that expect to - receive an int * (just like C). You can also set the value of - an array member using another pointer. For example:

    -
    -
    +
    +
    +

    This pointer can be passed around to functions that expect to + receive an int * (just like C). You can also set the value of + an array member using another pointer. For example:

    +
    +
     % Bar c
     % c configure -x [b cget -x]   # Copy contents of b.x to c.x
    -
    -
    -

    For array assignment, SWIG copies the entire contents of the array - starting with the data pointed to by b.x. In this example, 16 +

    +
    +

    For array assignment, SWIG copies the entire contents of the array + starting with the data pointed to by b.x. In this example, 16 integers would be copied. Like C, SWIG makes no assumptions about bounds checking---if you pass a bad pointer, you may get a segmentation - fault or access violation.

    -

    When a member of a structure is itself a structure, it is handled as - a pointer. For example, suppose you have two structures like this:

    -
    -
    + fault or access violation.

    +

    When a member of a structure is itself a structure, it is handled as + a pointer. For example, suppose you have two structures like this:

    +
    +
     struct Foo {
       int a;
     };
    @@ -57592,117 +56128,117 @@ struct Foo {
     struct Bar {
       Foo f;
     };
    -
    -
    -

    Now, suppose that you access the f attribute of Bar - like this:

    -
    -
    +
    +
    +

    Now, suppose that you access the f attribute of Bar + like this:

    +
    +
     % Bar b
     % set x [b cget -f]
    -
    -
    -

    In this case, x is a pointer that points to the Foo - that is inside b. This is the same value as generated by this - C code:

    -
    -
    +
    +
    +

    In this case, x is a pointer that points to the Foo + that is inside b. This is the same value as generated by this + C code:

    +
    +
     Bar b;
     Foo *x = &b->f;       /* Points inside b */
    -
    -
    -

    However, one peculiarity of accessing a substructure like this is +

    +
    +

    However, one peculiarity of accessing a substructure like this is that the returned value does work quite like you might expect. For - example:

    -
    -
    + example:

    +
    +
     % Bar b
     % set x [b cget -f]
     % x cget -a
     invalid command name "x"
    -
    -
    -

    This is because the returned value was not created in a normal way +

    +
    +

    This is because the returned value was not created in a normal way from the interpreter (x is not a command object). To make it function - normally, just evaluate the variable like this:

    -
    -
    + normally, just evaluate the variable like this:

    +
    +
     % Bar b
     % set x [b cget -f]
     % $x cget -a
     0
     %
    -
    -
    -

    In this example, x points inside the original structure. +

    +
    +

    In this example, x points inside the original structure. This means that modifications work just like you would expect. For - example:

    -
    -
    + example:

    +
    +
     
     % Bar b
     % set x [b cget -f]
     % $x configure -a 3            # Modifies contents of f (inside b)
     % [b cget -f] -configure -a 3  # Same thing
    -
    -
    -

    In many of these structure examples, a simple name like "v" or "b" +

    +
    +

    In many of these structure examples, a simple name like "v" or "b" has been given to wrapped structures. If necessary, this name can be passed to functions that expect to receive an object. For example, if - you have a function like this,

    -
    -
    + you have a function like this,

    +
    +
     void blah(Foo *f);
    -
    -
    -

    you can call the function in Tcl as follows:

    -
    -
    +
    +
    +

    you can call the function in Tcl as follows:

    +
    +
     % Foo x            # Create a Foo object 
     % blah x           # Pass the object to a function
    -
    -
    -

    It is also possible to call the function using the raw pointer - value. For instance:

    -
    -
    +
    +
    +

    It is also possible to call the function using the raw pointer + value. For instance:

    +
    +
     % blah [x cget -this]   # Pass object to a function
    -
    -
    -

    It is also possible to create and use objects using variables. For - example:

    -
    -
    +
    +
    +

    It is also possible to create and use objects using variables. For + example:

    +
    +
     % set b [Bar]            # Create a Bar
     % $b cget -f             # Member access
     % puts $b
     _108fea88_p_Bar
     %
    -
    -
    -

    Finally, to destroy objects created from Tcl, you can either let the +

    +
    +

    Finally, to destroy objects created from Tcl, you can either let the object name go out of scope or you can explicitly delete the object. - For example:

    -
    -
    + For example:

    +
    +
     % Foo f                 # Create object f
     % rename f ""
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     % Foo f                 # Create object f
     % f -delete
    -
    -
    -

    Note: Tcl only destroys the underlying object if it has ownership. - See the memory management section that appears shortly.

    -

    40.3.7 C++ classes

    -

    C++ classes are wrapped as an extension of structure wrapping. For - example, if you have this class,

    -
    -
    +
    +
    +

    Note: Tcl only destroys the underlying object if it has ownership. + See the memory management section that appears shortly.

    +

    36.3.7 C++ classes

    +

    C++ classes are wrapped as an extension of structure wrapping. For + example, if you have this class,

    +
    +
     class List {
     public:
       List();
    @@ -57713,11 +56249,11 @@ public:
       char *get(int n);
       int  length;
     };
    -
    -
    -

    you can use it in Tcl like this:

    -
    -
    +
    +
    +

    you can use it in Tcl like this:

    +
    +
     % List x
     % x insert Ale
     % x insert Stout
    @@ -57727,32 +56263,32 @@ Stout
     % puts [x cget -length]
     3
     %
    -
    -
    -

    Class data members are accessed in the same manner as C structures.

    -

    Static class members are accessed as global functions or variables. - To illustrate, suppose you have a class like this:

    -
    -
    +
    +
    +

    Class data members are accessed in the same manner as C structures.

    +

    Static class members are accessed as global functions or variables. + To illustrate, suppose you have a class like this:

    +
    +
     class Spam {
     public:
       static void foo();
       static int bar;
     };
    -
    -
    -

    In Tcl, the static member is accessed as follows:

    -
    -
    +
    +
    +

    In Tcl, the static member is accessed as follows:

    +
    +
     % Spam_foo        # Spam::foo()
     % puts $Spam_bar  # Spam::bar
    -
    -
    -

    40.3.8 C++ inheritance

    -

    SWIG is fully aware of issues related to C++ inheritance. Therefore, - if you have classes like this

    -
    -
    +
    +
    +

    36.3.8 C++ inheritance

    +

    SWIG is fully aware of issues related to C++ inheritance. Therefore, + if you have classes like this

    +
    +
     class Foo {
     ...
     };
    @@ -57760,153 +56296,153 @@ class Foo {
     class Bar : public Foo {
     ...
     };
    -
    -
    -

    An object of type Bar can be used where a Foo is - expected. For example, if you have this function:

    -
    -
    +
    +
    +

    An object of type Bar can be used where a Foo is + expected. For example, if you have this function:

    +
    +
     void spam(Foo *f);
    -
    -
    -

    then the function spam() accepts a Foo * or a - pointer to any class derived from Foo. For instance:

    -
    -
    +
    +
    +

    then the function spam() accepts a Foo * or a + pointer to any class derived from Foo. For instance:

    +
    +
     % Foo f      # Create a Foo
     % Bar b      # Create a Bar
     % spam f     # OK
     % spam b     # OK
    -
    -
    -

    It is safe to use multiple inheritance with SWIG.

    -

    40.3.9 Pointers, references, values, and arrays -

    -

    In C++, there are many different ways a function might receive and - manipulate objects. For example:

    -
    -
    +
    +
    +

    It is safe to use multiple inheritance with SWIG.

    +

    36.3.9 Pointers, references, values, and arrays +

    +

    In C++, there are many different ways a function might receive and + manipulate objects. For example:

    +
    +
     void spam1(Foo *x);      // Pass by pointer
     void spam2(Foo &x);      // Pass by reference
     void spam3(Foo x);       // Pass by value
     void spam4(Foo x[]);     // Array of objects
    -
    -
    -

    In Tcl, there is no detailed distinction like this. Because of this, +

    +
    +

    In Tcl, there is no detailed distinction like this. Because of this, SWIG unifies all of these types together in the wrapper code. For instance, if you actually had the above functions, it is perfectly - legal to do this:

    -
    -
    + legal to do this:

    +
    +
     % Foo f             # Create a Foo
     % spam1 f           # Ok. Pointer
     % spam2 f           # Ok. Reference
     % spam3 f           # Ok. Value.
     % spam4 f           # Ok. Array (1 element)
    -
    -
    -

    Similar behavior occurs for return values. For example, if you had - functions like this,

    -
    -
    +
    +
    +

    Similar behavior occurs for return values. For example, if you had + functions like this,

    +
    +
     Foo *spam5();
     Foo &spam6();
     Foo  spam7();
    -
    -
    -

    then all three functions will return a pointer to some Foo +

    +
    +

    then all three functions will return a pointer to some Foo object. Since the third function (spam7) returns a value, newly allocated memory is used to hold the result and a pointer is returned (Tcl will release this memory when the return value is garbage - collected).

    -

    40.3.10 C++ overloaded functions

    -

    C++ overloaded functions, methods, and constructors are mostly - supported by SWIG. For example, if you have two functions like this:

    -
    -
    + collected).

    +

    36.3.10 C++ overloaded functions

    +

    C++ overloaded functions, methods, and constructors are mostly + supported by SWIG. For example, if you have two functions like this:

    +
    +
     void foo(int);
     void foo(char *c);
    -
    -
    -

    You can use them in Tcl in a straightforward manner:

    -
    -
    +
    +
    +

    You can use them in Tcl in a straightforward manner:

    +
    +
     % foo 3            # foo(int)
     % foo Hello        # foo(char *c)
    -
    -
    -

    Similarly, if you have a class like this,

    -
    -
    +
    +
    +

    Similarly, if you have a class like this,

    +
    +
     class Foo {
     public:
    -    Foo();
    -    Foo(const Foo &);
    -    ...
    +  Foo();
    +  Foo(const Foo &);
    +  ...
     };
    -
    -
    -

    you can write Tcl code like this:

    -
    -
    +
    +
    +

    you can write Tcl code like this:

    +
    +
     % Foo f                # Create a Foo
     % Foo g f              # Copy f
    -
    -
    -

    Overloading support is not quite as flexible as in C++. Sometimes - there are methods that SWIG can't disambiguate. For example:

    -
    -
    +
    +
    +

    Overloading support is not quite as flexible as in C++. Sometimes + there are methods that SWIG can't disambiguate. For example:

    +
    +
     void spam(int);
     void spam(short);
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     void foo(Bar *b);
     void foo(Bar &b);
    -
    -
    -

    If declarations such as these appear, you will get a warning message - like this:

    -
    -
    +
    +
    +

    If declarations such as these appear, you will get a warning message + like this:

    +
    +
     example.i:12: Warning 509: Overloaded method spam(short) effectively ignored,
     example.i:11: Warning 509: as it is shadowed by spam(int).
    -
    -
    -

    To fix this, you either need to ignore or rename one of the methods. - For example:

    -
    -
    +
    +
    +

    To fix this, you either need to ignore or rename one of the methods. + For example:

    +
    +
     %rename(spam_short) spam(short);
     ...
     void spam(int);    
     void spam(short);   // Accessed as spam_short
    -
    -
    -

    or

    -
    -
    +
    +
    +

    or

    +
    +
     %ignore spam(short);
     ...
     void spam(int);    
     void spam(short);   // Ignored
    -
    -
    -

    SWIG resolves overloaded functions and methods using a +

    +
    +

    SWIG resolves overloaded functions and methods using a disambiguation scheme that ranks and sorts declarations according to a set of type-precedence rules. The order in which declarations appear in the input does not matter except in situations where ambiguity - arises--in this case, the first declaration takes precedence.

    -

    Please refer to the "SWIG and C++" chapter for more information - about overloading.

    -

    40.3.11 C++ operators

    -

    Certain C++ overloaded operators can be handled automatically by - SWIG. For example, consider a class like this:

    -
    -
    + arises--in this case, the first declaration takes precedence.

    +

    Please refer to the "SWIG and C++" chapter for more information + about overloading.

    +

    36.3.11 C++ operators

    +

    Certain C++ overloaded operators can be handled automatically by + SWIG. For example, consider a class like this:

    +
    +
     class Complex {
     private:
       double rpart, ipart;
    @@ -57922,11 +56458,11 @@ public:
       double re() const { return rpart; }
       double im() const { return ipart; }
     };
    -
    -
    -

    When wrapped, it works like this:

    -
    -
    +
    +
    +

    When wrapped, it works like this:

    +
    +
     % Complex c 3 4
     % Complex d 7 8
     % set e [c + d]
    @@ -57934,17 +56470,17 @@ public:
     10.0
     % $e im
     12.0
    -
    -
    -

    It should be stressed that operators in SWIG have no relationship to +

    +
    +

    It should be stressed that operators in SWIG have no relationship to operators in Tcl. In fact, the only thing that's happening here is that - an operator like operator + has been renamed to a method + -. Therefore, the statement [c + d] is really just invoking the -+ method on c. When more than operator is defined (with + an operator like operator + has been renamed to a method + +. Therefore, the statement [c + d] is really just invoking the ++ method on c. When more than operator is defined (with different arguments), the standard method overloading facilities are - used. Here is a rather odd looking example:

    -
    -
    + used. Here is a rather odd looking example:

    +
    +
     % Complex c 3 4
     % Complex d 7 8
     % set e [c - d]       # operator-(const Complex &)
    @@ -57954,39 +56490,39 @@ public:
     % puts "[$f re] [$f im]"
     -3.0 -4.0
     %
    -
    -
    -

    One restriction with operator overloading support is that SWIG is +

    +
    +

    One restriction with operator overloading support is that SWIG is not able to fully handle operators that aren't defined as part of the - class. For example, if you had code like this

    -
    -
    + class. For example, if you had code like this

    +
    +
     class Complex {
     ...
     friend Complex operator+(double, const Complex &c);
     ...
     };
    -
    -
    -

    then SWIG doesn't know what to do with the friend function--in fact, +

    +
    +

    then SWIG doesn't know what to do with the friend function--in fact, it simply ignores it and issues a warning. You can still wrap the operator, but you may have to encapsulate it in a special function. For - example:

    -
    -
    + example:

    +
    +
     %rename(Complex_add_dc) operator+(double, const Complex &);
     ...
     Complex operator+(double, const Complex &c);
    -
    -
    -

    There are ways to make this operator appear as part of the class - using the %extend directive. Keep reading.

    -

    40.3.12 C++ namespaces

    -

    SWIG is aware of C++ namespaces, but namespace names do not appear +

    +
    +

    There are ways to make this operator appear as part of the class + using the %extend directive. Keep reading.

    +

    36.3.12 C++ namespaces

    +

    SWIG is aware of C++ namespaces, but namespace names do not appear in the module nor do namespaces result in a module that is broken up - into submodules or packages. For example, if you have a file like this,

    -
    -
    + into submodules or packages. For example, if you have a file like this,

    +
    +
     %module example
     
     namespace foo {
    @@ -57995,46 +56531,46 @@ namespace foo {
         double x, y, z;
       };
     };
    -
    -
    -

    it works in Tcl as follows:

    -
    -
    +
    +
    +

    it works in Tcl as follows:

    +
    +
     % load ./example.so
     % fact 3
     6
     % Vector v
     % v configure -x 3.4
    -
    -
    -

    If your program has more than one namespace, name conflicts (if any) - can be resolved using %rename For example:

    -
    -
    +
    +
    +

    If your program has more than one namespace, name conflicts (if any) + can be resolved using %rename For example:

    +
    +
     %rename(Bar_spam) Bar::spam;
     
     namespace Foo {
    -    int spam();
    +  int spam();
     }
     
     namespace Bar {
    -    int spam();
    +  int spam();
     }
    -
    -
    -

    If you have more than one namespace and your want to keep their +

    +
    +

    If you have more than one namespace and your want to keep their symbols separate, consider wrapping them as separate SWIG modules. For example, make the module name the same as the namespace and create extension modules for each namespace separately. If your program utilizes thousands of small deeply nested namespaces each with - identical symbol names, well, then you get what you deserve.

    -

    40.3.13 C++ templates

    -

    C++ templates don't present a huge problem for SWIG. However, in + identical symbol names, well, then you get what you deserve.

    +

    36.3.13 C++ templates

    +

    C++ templates don't present a huge problem for SWIG. However, in order to create wrappers, you have to tell SWIG to create wrappers for - a particular template instantiation. To do this, you use the -%template directive. For example:

    -
    -
    + a particular template instantiation. To do this, you use the 
    +%template directive. For example:

    +
    +
     %module example
     %{
     #include "pair.h"
    @@ -58052,128 +56588,128 @@ struct pair {
     };
     
     %template(pairii) pair<int, int>;
    -
    -
    -

    In Tcl:

    -
    -
    +
    +
    +

    In Tcl:

    +
    +
     % pairii p 3 4
     % p cget -first
     3
     % p cget -second
     4
    -
    -
    -

    Obviously, there is more to template wrapping than shown in this - example. More details can be found in the SWIG and - C++ chapter. Some more complicated examples will appear later.

    -

    40.3.14 C++ Smart Pointers

    -

    In certain C++ programs, it is common to use classes that have been +

    +
    +

    Obviously, there is more to template wrapping than shown in this + example. More details can be found in the SWIG and + C++ chapter. Some more complicated examples will appear later.

    +

    36.3.14 C++ Smart Pointers

    +

    In certain C++ programs, it is common to use classes that have been wrapped by so-called "smart pointers." Generally, this involves the use - of a template class that implements operator->() like this:

    -
    -
    + of a template class that implements operator->() like this:

    +
    +
     template<class T> class SmartPtr {
       ...
       T *operator->();
       ...
     }
    -
    -
    -

    Then, if you have a class like this,

    -
    -
    +
    +
    +

    Then, if you have a class like this,

    +
    +
     class Foo {
     public:
       int x;
       int bar();
     };
    -
    -
    -

    A smart pointer would be used in C++ as follows:

    -
    -
    +
    +
    +

    A smart pointer would be used in C++ as follows:

    +
    +
     SmartPtr<Foo> p = CreateFoo();   // Created somehow (not shown)
     ...
     p->x = 3;                        // Foo::x
     int y = p->bar();                // Foo::bar
    -
    -
    -

    To wrap this in Tcl, simply tell SWIG about the SmartPtr - class and the low-level Foo object. Make sure you instantiate -SmartPtr using %template if necessary. For example:

    -
    -
    +
    +
    +

    To wrap this in Tcl, simply tell SWIG about the SmartPtr + class and the low-level Foo object. Make sure you instantiate +SmartPtr using %template if necessary. For example:

    +
    +
     %module example
     ...
     %template(SmartPtrFoo) SmartPtr<Foo>;
     ...
    -
    -
    -

    Now, in Tcl, everything should just "work":

    -
    -
    +
    +
    +

    Now, in Tcl, everything should just "work":

    +
    +
     % set p [CreateFoo]                  # Create a smart-pointer somehow
     % $p configure -x 3                  # Foo::x
     % $p bar                             # Foo::bar
    -
    -
    -

    If you ever need to access the underlying pointer returned by -operator->() itself, simply use the __deref__() method. - For example:

    -
    -
    +
    +
    +

    If you ever need to access the underlying pointer returned by +operator->() itself, simply use the __deref__() method. + For example:

    +
    +
     % set f [$p __deref__]    # Returns underlying Foo *
    -
    -
    -

    40.4 Further details on the Tcl class interface -

    -

    In the previous section, a high-level view of Tcl wrapping was +

    +
    +

    36.4 Further details on the Tcl class interface +

    +

    In the previous section, a high-level view of Tcl wrapping was presented. A key component of this wrapping is that structures and classes are wrapped by Tcl class-like objects. This provides a very natural Tcl interface and allows SWIG to support a number of advanced features such as operator overloading. However, a number of low-level details were omitted. This section provides a brief overview of how the - proxy classes work.

    -

    40.4.1 Proxy classes

    -

    In the "SWIG basics" and -"SWIG and C++" chapters, details of low-level structure and class + proxy classes work.

    +

    36.4.1 Proxy classes

    +

    In the "SWIG basics" and +"SWIG and C++" chapters, details of low-level structure and class wrapping are described. To summarize those chapters, if you have a - class like this

    -
    -
    + class like this

    +
    +
     class Foo {
     public:
       int x;
       int spam(int);
       ...
    -
    -
    -

    then SWIG transforms it into a set of low-level procedural wrappers. - For example:

    -
    -
    +
    +
    +

    then SWIG transforms it into a set of low-level procedural wrappers. + For example:

    +
    +
     Foo *new_Foo() {
    -    return new Foo();
    +  return new Foo();
     }
     void delete_Foo(Foo *f) {
    -    delete f;
    +  delete f;
     }
     int Foo_x_get(Foo *f) {
    -    return f->x;
    +  return f->x;
     }
     void Foo_x_set(Foo *f, int value) {
    -    f->x = value;
    +  f->x = value;
     }
     int Foo_spam(Foo *f, int arg1) {
    -    return f->spam(arg1);
    +  return f->spam(arg1);
     }
    -
    -
    -

    These wrappers are actually found in the Tcl extension module. For - example, you can certainly do this:

    -
    -
    +
    +
    +

    These wrappers are actually found in the Tcl extension module. For + example, you can certainly do this:

    +
    +
     % load ./example.so
     % set f [new_Foo]
     % Foo_x_get $f
    @@ -58181,99 +56717,99 @@ int Foo_spam(Foo *f, int arg1) {
     % Foo_spam $f 3
     1
     %
    -
    -
    -

    However, in addition to this, the classname Foo is used as +

    +
    +

    However, in addition to this, the classname Foo is used as an object constructor function. This allows objects to be encapsulated - objects that look a lot like Tk widgets as shown in the last section.

    -

    40.4.2 Memory management

    -

    Associated with each wrapped object, is an ownership flag -thisown The value of this flag determines who is responsible for + objects that look a lot like Tk widgets as shown in the last section.

    +

    36.4.2 Memory management

    +

    Associated with each wrapped object, is an ownership flag +thisown The value of this flag determines who is responsible for deleting the underlying C++ object. If set to 1, the Tcl interpreter destroys the C++ object when the proxy class is garbage collected. If set to 0 (or if the attribute is missing), then the destruction of the - proxy class has no effect on the C++ object.

    -

    When an object is created by a constructor or returned by value, Tcl - automatically takes ownership of the result. For example:

    -
    -
    + proxy class has no effect on the C++ object.

    +

    When an object is created by a constructor or returned by value, Tcl + automatically takes ownership of the result. For example:

    +
    +
     class Foo {
     public:
    -    Foo();
    -    Foo bar();
    +  Foo();
    +  Foo bar();
     };
    -
    -
    -

    In Tcl:

    -
    -
    +
    +
    +

    In Tcl:

    +
    +
     % Foo f
     % f cget -thisown
     1
     % set g [f bar]
     % $g cget -thisown
     1
    -
    -
    -

    On the other hand, when pointers are returned to Tcl, there is often +

    +
    +

    On the other hand, when pointers are returned to Tcl, there is often no way to know where they came from. Therefore, the ownership is set to - zero. For example:

    -
    -
    + zero. For example:

    +
    +
     class Foo {
     public:
    -    ...
    -    Foo *spam();
    -    ...
    +  ...
    +  Foo *spam();
    +  ...
     };
    -
    -
    -
    -
    +
    +
    +
    +
     % Foo f
     % set s [f spam]
     % $s cget -thisown
     0
     % 
    -
    -
    -

    This behavior is especially important for classes that act as +

    +
    +

    This behavior is especially important for classes that act as containers. For example, if a method returns a pointer to an object that is contained inside another object, you definitely don't want Tcl - to assume ownership and destroy it!

    -

    Related to containers, ownership issues can arise whenever an object + to assume ownership and destroy it!

    +

    Related to containers, ownership issues can arise whenever an object is assigned to a member or global variable. For example, consider this - interface:

    -
    -
    + interface:

    +
    +
     %module example
     
     struct Foo {
    -    int  value;
    -    Foo  *next;
    +  int  value;
    +  Foo  *next;
     };
     
     Foo *head = 0;
    -
    -
    -

    When wrapped in Tcl, careful observation will reveal that ownership +

    +
    +

    When wrapped in Tcl, careful observation will reveal that ownership changes whenever an object is assigned to a global variable. For - example:

    -
    -
    + example:

    +
    +
     % Foo f
     % f cget -thisown
     1
     % set head f
     % f cget -thisown
     0
    -
    -
    -

    In this case, C is now holding a reference to the object---you +

    +
    +

    In this case, C is now holding a reference to the object---you probably don't want Tcl to destroy it. Similarly, this occurs for - members. For example:

    -
    -
    + members. For example:

    +
    +
     % Foo f
     % Foo g
     % f cget -thisown
    @@ -58284,94 +56820,94 @@ Foo *head = 0;
     % g cget -thisown 
     0
     %
    -
    -
    -

    For the most part, memory management issues remain hidden. However, +

    +
    +

    For the most part, memory management issues remain hidden. However, there are occasionally situations where you might have to manually change the ownership of an object. For instance, consider code like - this:

    -
    -
    + this:

    +
    +
     class Node {
       Object *value;
     public:
       void set_value(Object *v) { value = v; }
       ...
     };
    -
    -
    -

    Now, consider the following Tcl code:

    -
    -
    +
    +
    +

    Now, consider the following Tcl code:

    +
    +
     % Object v                 # Create an object
     % Node n                   # Create a node
     % n setvalue v             # Set value
     % v cget -thisown
     1
     % 
    -
    -
    -

    In this case, the object n is holding a reference to v +

    +
    +

    In this case, the object n is holding a reference to v internally. However, SWIG has no way to know that this has occurred. Therefore, Tcl still thinks that it has ownership of the object. Should the proxy object be destroyed, then the C++ destructor will be invoked - and n will be holding a stale-pointer. If you're lucky, you - will only get a segmentation fault.

    -

    To work around this, it is always possible to flip the ownership - flag. For example,

    -
    -
    + and n will be holding a stale-pointer. If you're lucky, you
    + will only get a segmentation fault.

    +

    To work around this, it is always possible to flip the ownership + flag. For example,

    +
    +
     % v -disown              # Give ownership to C/C++
     % v -acquire             # Acquire ownership
    -
    -
    -

    It is also possible to deal with situations like this using - typemaps--an advanced topic discussed later.

    -

    40.5 Input and output parameters

    -

    A common problem in some C programs is handling parameters passed as - simple pointers. For example:

    -
    -
    +
    +
    +

    It is also possible to deal with situations like this using + typemaps--an advanced topic discussed later.

    +

    36.5 Input and output parameters

    +

    A common problem in some C programs is handling parameters passed as + simple pointers. For example:

    +
    +
     void add(int x, int y, int *result) {
       *result = x + y;
     }
    -
    -
    -

    or perhaps

    -
    -
    +
    +
    +

    or perhaps

    +
    +
     int sub(int *x, int *y) {
       return *x+*y;
     }
    -
    -
    -

    The easiest way to handle these situations is to use the -typemaps.i file. For example:

    -
    -
    +
    +
    +

    The easiest way to handle these situations is to use the +typemaps.i file. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
     void add(int, int, int *OUTPUT);
     int  sub(int *INPUT, int *INPUT);
    -
    -
    -

    In Tcl, this allows you to pass simple values instead of pointer. - For example:

    -
    -
    +
    +
    +

    In Tcl, this allows you to pass simple values instead of pointer. + For example:

    +
    +
     set a [add 3 4]
     puts $a
     7
    -
    -
    -

    Notice how the INPUT parameters allow integer values to be - passed instead of pointers and how the OUTPUT parameter - creates a return result.

    -

    If you don't want to use the names INPUT or OUTPUT -, use the %apply directive. For example:

    -
    -
    +
    +
    +

    Notice how the INPUT parameters allow integer values to be + passed instead of pointers and how the OUTPUT parameter + creates a return result.

    +

    If you don't want to use the names INPUT or OUTPUT +, use the %apply directive. For example:

    +
    +
     %module example
     %include "typemaps.i"
     
    @@ -58380,94 +56916,94 @@ puts $a
     
     void add(int x, int y, int *result);
     int  sub(int *x, int *y);
    -
    -
    -

    If a function mutates one of its parameters like this,

    -
    -
    +
    +
    +

    If a function mutates one of its parameters like this,

    +
    +
     void negate(int *x) {
       *x = -(*x);
     }
    -
    -
    -

    you can use INOUT like this:

    -
    -
    +
    +
    +

    you can use INOUT like this:

    +
    +
     %include "typemaps.i"
     ...
     void negate(int *INOUT);
    -
    -
    -

    In Tcl, a mutated parameter shows up as a return value. For example:

    -
    -
    +
    +
    +

    In Tcl, a mutated parameter shows up as a return value. For example:

    +
    +
     set a [negate 3]
     puts $a
     -3
    -
    -
    -

    The most common use of these special typemap rules is to handle +

    +
    +

    The most common use of these special typemap rules is to handle functions that return more than one value. For example, sometimes a - function returns a result as well as a special error code:

    -
    -
    + function returns a result as well as a special error code:

    +
    +
     /* send message, return number of bytes sent, along with success code */
     int send_message(char *text, int len, int *success);
    -
    -
    -

    To wrap such a function, simply use the OUTPUT rule above. - For example:

    -
    -
    +
    +
    +

    To wrap such a function, simply use the OUTPUT rule above. + For example:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *success };
     ...
     int send_message(char *text, int *success);
    -
    -
    -

    When used in Tcl, the function will return multiple values as a - list.

    -
    -
    +
    +
    +

    When used in Tcl, the function will return multiple values as a + list.

    +
    +
     set r [send_message "Hello World"]
     set bytes [lindex $r 0]
     set success [lindex $r 1]
    -
    -
    -

    Another common use of multiple return values are in query functions. - For example:

    -
    -
    +
    +
    +

    Another common use of multiple return values are in query functions. + For example:

    +
    +
     void get_dimensions(Matrix *m, int *rows, int *columns);
    -
    -
    -

    To wrap this, you might use the following:

    -
    -
    +
    +
    +

    To wrap this, you might use the following:

    +
    +
     %module example
     %include "typemaps.i"
     %apply int *OUTPUT { int *rows, int *columns };
     ...
     void get_dimensions(Matrix *m, int *rows, *columns);
    -
    -
    -

    Now, in Perl:

    -
    -
    +
    +
    +

    Now, in Perl:

    +
    +
     set dim [get_dimensions $m]
     set r  [lindex $dim 0]
     set c  [lindex $dim 1]
    -
    -
    -

    40.6 Exception handling

    -

    The %exception directive can be used to create a +

    +
    +

    36.6 Exception handling

    +

    The %exception directive can be used to create a user-definable exception handler in charge of converting exceptions in your C/C++ program into Tcl exceptions. The chapter on customization features contains more details, but suppose you extended the array - example into a C++ class like the following :

    -
    -
    + example into a C++ class like the following :

    +
    +
     class RangeError {};   // Used for an exception
     
     class DoubleArray {
    @@ -58506,13 +57042,13 @@ class DoubleArray {
           }
         }
       };
    -
    -
    -

    The functions associated with this class can throw a C++ range +

    +
    +

    The functions associated with this class can throw a C++ range exception for an out-of-bounds array access. We can catch this in our - Tcl extension by specifying the following in an interface file :

    -
    -
    + Tcl extension by specifying the following in an interface file :

    +
    +
     %exception {
       try {
         $action                // Gets substituted by actual function call
    @@ -58522,14 +57058,14 @@ class DoubleArray {
         return TCL_ERROR;
       }
     }
    -
    -
    -

    As shown, the exception handling code will be added to every wrapper +

    +
    +

    As shown, the exception handling code will be added to every wrapper function. Since this is somewhat inefficient. You might consider refining the exception handler to only apply to specific methods like - this:

    -
    -
    + this:

    +
    +
     %exception getitem {
       try {
         $action
    @@ -58549,14 +57085,14 @@ class DoubleArray {
         return TCL_ERROR;
       }
     }
    -
    -
    -

    In this case, the exception handler is only attached to methods and - functions named getitem and setitem.

    -

    If you had a lot of different methods, you can avoid extra typing by - using a macro. For example:

    -
    -
    +
    +
    +

    In this case, the exception handler is only attached to methods and + functions named getitem and setitem.

    +

    If you had a lot of different methods, you can avoid extra typing by + using a macro. For example:

    +
    +
     %define RANGE_ERROR
     {
       try {
    @@ -58571,62 +57107,62 @@ class DoubleArray {
     
     %exception getitem RANGE_ERROR;
     %exception setitem RANGE_ERROR;
    -
    -
    -

    Since SWIG's exception handling is user-definable, you are not - limited to C++ exception handling. See the chapter on " -Customization Features" for more examples.

    -

    40.7 Typemaps

    -

    This section describes how you can modify SWIG's default wrapping - behavior for various C/C++ datatypes using the %typemap +

    +
    +

    Since SWIG's exception handling is user-definable, you are not + limited to C++ exception handling. See the chapter on " +Customization Features" for more examples.

    +

    36.7 Typemaps

    +

    This section describes how you can modify SWIG's default wrapping + behavior for various C/C++ datatypes using the %typemap directive. This is an advanced topic that assumes familiarity with the - Tcl C API as well as the material in the "Typemaps -" chapter.

    -

    Before proceeding, it should be stressed that typemaps are not a + Tcl C API as well as the material in the "Typemaps +" chapter.

    +

    Before proceeding, it should be stressed that typemaps are not a required part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect - of the primitive C-Tcl interface.

    -

    40.7.1 What is a typemap?

    -

    A typemap is nothing more than a code generation rule that is + of the primitive C-Tcl interface.

    +

    36.7.1 What is a typemap?

    +

    A typemap is nothing more than a code generation rule that is attached to a specific C datatype. For example, to convert integers - from Tcl to C, you might define a typemap like this:

    -
    -
    + from Tcl to C, you might define a typemap like this:

    +
    +
     %module example
     
     %typemap(in) int {
    -    if (Tcl_GetIntFromObj(interp, $input, &$1) == TCL_ERROR)
    -      return TCL_ERROR;
    -    printf("Received an integer : %d\n", $1);
    +  if (Tcl_GetIntFromObj(interp, $input, &$1) == TCL_ERROR)
    +    return TCL_ERROR;
    +  printf("Received an integer : %d\n", $1);
     }
     %inline %{
     extern int fact(int n);
     %}
    -
    -
    -

    Typemaps are always associated with some specific aspect of code +

    +
    +

    Typemaps are always associated with some specific aspect of code generation. In this case, the "in" method refers to the conversion of - input arguments to C/C++. The datatype int is the datatype to + input arguments to C/C++. The datatype int is the datatype to which the typemap will be applied. The supplied C code is used to convert values. In this code a number of special variable prefaced by a - $ are used. The $1 variable is placeholder for a - local variable of type int. The $input variable is - the input object of type Tcl_Obj *.

    -

    When this example is compiled into a Tcl module, it operates as - follows:

    -
    -
    + $ are used. The $1 variable is placeholder for a
    + local variable of type int. The $input variable is
    + the input object of type Tcl_Obj *.

    +

    When this example is compiled into a Tcl module, it operates as + follows:

    +
    +
     % load ./example.so
     % fact 6
     Received an integer : 6
     720
    -
    -
    -

    In this example, the typemap is applied to all occurrences of the -int datatype. You can refine this by supplying an optional - parameter name. For example:

    -
    -
    +
    +
    +

    In this example, the typemap is applied to all occurrences of the +int datatype. You can refine this by supplying an optional + parameter name. For example:

    +
    +
     %module example
     
     %typemap(in) int n {
    @@ -58637,18 +57173,18 @@ int datatype. You can refine this by supplying an optional
     %inline %{
     extern int fact(int n);
     %}
    -
    -
    -

    In this case, the typemap code is only attached to arguments that - exactly match int n.

    -

    The application of a typemap to specific datatypes and argument +

    +
    +

    In this case, the typemap code is only attached to arguments that + exactly match int n.

    +

    The application of a typemap to specific datatypes and argument names involves more than simple text-matching--typemaps are fully - integrated into the SWIG type-system. When you define a typemap for -int, that typemap applies to int and qualified variations - such as const int. In addition, the typemap system follows -typedef declarations. For example:

    -
    -
    + integrated into the SWIG type-system. When you define a typemap for 
    +int, that typemap applies to int and qualified variations
    + such as const int. In addition, the typemap system follows 
    +typedef declarations. For example:

    +
    +
     %typemap(in) int n {
       if (Tcl_GetIntFromObj(interp, $input, &$1) == TCL_ERROR)
         return TCL_ERROR;
    @@ -58658,113 +57194,113 @@ typedef declarations. For example:

    typedef int Integer; extern int fact(Integer n); // Above typemap is applied %} -
    -
    -

    However, the matching of typedef only occurs in one - direction. If you defined a typemap for Integer, it is not - applied to arguments of type int.

    -

    Typemaps can also be defined for groups of consecutive arguments. - For example:

    -
    -
    +
    +
    +

    However, the matching of typedef only occurs in one + direction. If you defined a typemap for Integer, it is not + applied to arguments of type int.

    +

    Typemaps can also be defined for groups of consecutive arguments. + For example:

    +
    +
     %typemap(in) (char *str, int len) {
         $1 = Tcl_GetStringFromObj($input, &$2);
     };
     
     int count(char c, char *str, int len);
    -
    -
    -

    When a multi-argument typemap is defined, the arguments are always +

    +
    +

    When a multi-argument typemap is defined, the arguments are always handled as a single Tcl object. This allows the function to be used - like this (notice how the length parameter is omitted):

    -
    -
    + like this (notice how the length parameter is omitted):

    +
    +
     % count e "Hello World"
     1
    -
    -
    -

    40.7.2 Tcl typemaps

    -

    The previous section illustrated an "in" typemap for converting Tcl +

    +
    +

    36.7.2 Tcl typemaps

    +

    The previous section illustrated an "in" typemap for converting Tcl objects to C. A variety of different typemap methods are defined by the Tcl module. For example, to convert a C integer back into a Tcl object, - you might define an "out" typemap like this:

    -
    -
    + you might define an "out" typemap like this:

    +
    +
     %typemap(out) int {
    -    Tcl_SetObjResult(interp, Tcl_NewIntObj($1));
    +  Tcl_SetObjResult(interp, Tcl_NewIntObj($1));
     }
    -
    -
    -

    The following list details all of the typemap methods that can be - used by the Tcl module:

    -

    %typemap(in)

    -
    Converts Tcl objects to input function arguments
    -

    %typemap(out)

    -
    Converts return value of a C function to a Tcl - object
    -

    %typemap(varin)

    -
    Assigns a C global variable from a Tcl object
    -

    %typemap(varout)

    -
    Returns a C global variable as a Tcl object
    -

    %typemap(freearg)

    -
    Cleans up a function argument (if necessary)
    -

    %typemap(argout)

    -
    Output argument processing
    -

    %typemap(ret)

    -
    Cleanup of function return values
    -

    %typemap(consttab)

    -
    Creation of Tcl constants (constant table)
    -

    %typemap(constcode)

    -
    Creation of Tcl constants (init function)
    -

    %typemap(memberin)

    -
    Setting of structure/class member data
    -

    %typemap(globalin)

    -
    Setting of C global variables
    -

    %typemap(check)

    -
    Checks function input values.
    -

    %typemap(default)

    -
    Set a default value for an argument (making it - optional).
    -

    %typemap(arginit)

    -
    Initialize an argument to a value before any - conversions occur.
    -

    Examples of these methods will appear shortly.

    -

    40.7.3 Typemap variables

    -

    Within typemap code, a number of special variables prefaced with a -$ may appear. A full list of variables can be found in the " -Typemaps" chapter. This is a list of the most common variables:

    -

    $1

    -
    A C local variable corresponding to the actual type - specified in the %typemap directive. For input values, this is +
    +
    +

    The following list details all of the typemap methods that can be + used by the Tcl module:

    +

    %typemap(in)

    +
    Converts Tcl objects to input function arguments
    +

    %typemap(out)

    +
    Converts return value of a C function to a Tcl + object
    +

    %typemap(varin)

    +
    Assigns a C global variable from a Tcl object
    +

    %typemap(varout)

    +
    Returns a C global variable as a Tcl object
    +

    %typemap(freearg)

    +
    Cleans up a function argument (if necessary)
    +

    %typemap(argout)

    +
    Output argument processing
    +

    %typemap(ret)

    +
    Cleanup of function return values
    +

    %typemap(consttab)

    +
    Creation of Tcl constants (constant table)
    +

    %typemap(constcode)

    +
    Creation of Tcl constants (init function)
    +

    %typemap(memberin)

    +
    Setting of structure/class member data
    +

    %typemap(globalin)

    +
    Setting of C global variables
    +

    %typemap(check)

    +
    Checks function input values.
    +

    %typemap(default)

    +
    Set a default value for an argument (making it + optional).
    +

    %typemap(arginit)

    +
    Initialize an argument to a value before any + conversions occur.
    +

    Examples of these methods will appear shortly.

    +

    36.7.3 Typemap variables

    +

    Within typemap code, a number of special variables prefaced with a +$ may appear. A full list of variables can be found in the " +Typemaps" chapter. This is a list of the most common variables:

    +

    $1

    +
    A C local variable corresponding to the actual type + specified in the %typemap directive. For input values, this is a C local variable that's supposed to hold an argument value. For output values, this is the raw result that's supposed to be returned to - Tcl.
    -

    $input

    -
    A Tcl_Obj * holding a raw Tcl object with - an argument or variable value.
    -

    $result

    -
    A Tcl_Obj * that holds the result to be - returned to Tcl.
    -

    $1_name

    -
    The parameter name that was matched.
    -

    $1_type

    -
    The actual C datatype matched by the typemap.
    -

    $1_ltype

    -
    An assignable version of the datatype matched by + Tcl.
    +

    $input

    +
    A Tcl_Obj * holding a raw Tcl object with + an argument or variable value.
    +

    $result

    +
    A Tcl_Obj * that holds the result to be + returned to Tcl.
    +

    $1_name

    +
    The parameter name that was matched.
    +

    $1_type

    +
    The actual C datatype matched by the typemap.
    +

    $1_ltype

    +
    An assignable version of the datatype matched by the typemap (a type that can appear on the left-hand-side of a C assignment operation). This type is stripped of qualifiers and may be - an altered version of $1_type. All arguments and local + an altered version of $1_type. All arguments and local variables in wrapper functions are declared using this type so that - their values can be properly assigned.
    -

    $symname

    -
    The Tcl name of the wrapper function being created.
    -

    40.7.4 Converting a Tcl list to a char **

    -

    A common problem in many C programs is the processing of command + their values can be properly assigned. +

    $symname

    +
    The Tcl name of the wrapper function being created.
    +

    36.7.4 Converting a Tcl list to a char **

    +

    A common problem in many C programs is the processing of command line arguments, which are usually passed in an array of NULL terminated strings. The following SWIG interface file allows a Tcl list to be used - as a char ** object.

    -
    -
    + as a char ** object.

    +
    +
     %module argv
     
     // This tells SWIG to treat char ** as a special case
    @@ -58802,23 +57338,23 @@ Typemaps" chapter. This is a list of the most common variables:

    %} %include "tclsh.i" -
    -
    -

    In Tcl:

    -
    -
    +
    +
    +

    In Tcl:

    +
    +
     % print_args {John Guido Larry}
     argv[0] = John
     argv[1] = Guido
     argv[2] = Larry
     3
    -
    -
    -

    40.7.5 Returning values in arguments

    -

    The "argout" typemap can be used to return a value originating from - a function argument. For example :

    -
    -
    +
    +
    +

    36.7.5 Returning values in arguments

    +

    The "argout" typemap can be used to return a value originating from + a function argument. For example :

    +
    +
     // A typemap defining how to return an argument by appending it to the result
     %typemap(argout) double *outvalue {
       Tcl_Obj *o = Tcl_NewDoubleObj($1);
    @@ -58837,49 +57373,49 @@ int mypow(double a, double b, double *outvalue) {
       *outvalue = pow(a, b);
       return 0;
     };
    -
    -
    -

    When wrapped, SWIG matches the argout typemap to the " -double *outvalue" argument. The numinputs=0 specification tells +

    +
    +

    When wrapped, SWIG matches the argout typemap to the " +double *outvalue" argument. The numinputs=0 specification tells SWIG to simply ignore this argument when generating wrapper code. As a - result, a Tcl function using these typemaps will work like this :

    -
    -
    + result, a Tcl function using these typemaps will work like this :

    +
    +
     % mypow 2 3     # Returns two values, a status value and the result
     0 8
     %
    -
    -
    -

    40.7.6 Useful functions

    -

    The following tables provide some functions that may be useful in - writing Tcl typemaps.

    -

    Integers

    -
    -
    +
    +
    +

    36.7.6 Useful functions

    +

    The following tables provide some functions that may be useful in + writing Tcl typemaps.

    +

    Integers

    +
    +
     Tcl_Obj   *Tcl_NewIntObj(int Value);
     void       Tcl_SetIntObj(Tcl_Obj *obj, int Value);
     int        Tcl_GetIntFromObj(Tcl_Interp *, Tcl_Obj *obj, int *ip);
    -
    -
    -

    Floating Point

    -
    -
    +
    +
    +

    Floating Point

    +
    +
     Tcl_Obj  *Tcl_NewDoubleObj(double Value);
     void      Tcl_SetDoubleObj(Tcl_Obj *obj, double value);
     int       Tcl_GetDoubleFromObj(Tcl_Interp *, Tcl_Obj *o, double *dp);
    -
    -
    -

    Strings

    -
    -
    +
    +
    +

    Strings

    +
    +
     Tcl_Obj  *Tcl_NewStringObj(char *str, int len);
     char     *Tcl_GetStringFromObj(Tcl_Obj *obj, int *len);
     void      Tcl_AppendToObj(Tcl_Obj *obj, char *str, int len);
    -
    -
    -

    Lists

    -
    -
    +
    +
    +

    Lists

    +
    +
     Tcl_Obj  *Tcl_NewListObj(int objc, Tcl_Obj *objv);
     int       Tcl_ListObjAppendList(Tcl_Interp *, Tcl_Obj *listPtr, Tcl_Obj *elemListPtr);
     int       Tcl_ListObjAppendElement(Tcl_Interp *, Tcl_Obj *listPtr, Tcl_Obj *element);
    @@ -58890,100 +57426,100 @@ int       Tcl_ListObjIndex(Tcl_Interp *, Tcl_Obj *listPtr, int index,
                                Tcl_Obj_Obj **objptr);
     int       Tcl_ListObjReplace(Tcl_Interp *, Tcl_Obj *listPtr, int first, int count,
                                  int objc, Tcl_Obj *objv);
    -
    -
    -

    Objects

    -
    -
    +
    +
    +

    Objects

    +
    +
     Tcl_Obj *Tcl_DuplicateObj(Tcl_Obj *obj);
     void     Tcl_IncrRefCount(Tcl_Obj *obj);
     void     Tcl_DecrRefCount(Tcl_Obj *obj);
     int      Tcl_IsShared(Tcl_Obj *obj);
    -
    -
    -

    40.7.7 Standard typemaps

    -

    The following typemaps show how to convert a few common kinds of +

    +
    +

    36.7.7 Standard typemaps

    +

    The following typemaps show how to convert a few common kinds of objects between Tcl and C (and to give a better idea of how typemaps - work)

    -

    Integer conversion

    -
    -
    + work)

    +

    Integer conversion

    +
    +
     %typemap(in) int, short, long {
       int temp;
       if (Tcl_GetIntFromObj(interp, $input, &temp) == TCL_ERROR)
         return TCL_ERROR;
       $1 = ($1_ltype) temp;
     }
    -
    -
    -
    -
    +
    +
    +
    +
     %typemap(out) int, short, long {
       Tcl_SetIntObj($result, (int) $1);
     }
    -
    -
    -

    Floating point conversion

    -
    -
    +
    +
    +

    Floating point conversion

    +
    +
     %typemap(in) float, double {
       double temp;
       if (Tcl_GetDoubleFromObj(interp, $input, &temp) == TCL_ERROR)
         return TCL_ERROR;
       $1 = ($1_ltype) temp;
     }
    -
    -
    -
    -
    +
    +
    +
    +
     %typemap(out) float, double {
       Tcl_SetDoubleObj($result, $1);
     }
    -
    -
    -

    String Conversion

    -
    -
    +
    +
    +

    String Conversion

    +
    +
     %typemap(in) char * {
       int len;
       $1 = Tcl_GetStringFromObj(interp, &len);
     }
    -
    -
    -
    -
    +
    +
    +
    +
     %typemap(out, noblock=1, fragment="SWIG_FromCharPtr") char *, const char * {
       Tcl_SetObjResult(interp, SWIG_FromCharPtr((const char *)$1));
     }
     
    -
    -
    -

    40.7.8 Pointer handling

    -

    SWIG pointers are mapped into Tcl strings containing the hexadecimal +

    +
    +

    36.7.8 Pointer handling

    +

    SWIG pointers are mapped into Tcl strings containing the hexadecimal value and type. The following functions can be used to create and read - pointer values.

    -

    int SWIG_ConvertPtr(Tcl_Obj *obj, void **ptr, swig_type_info - *ty, int flags)

    -
    Converts a Tcl object obj to a C pointer. - The result of the conversion is placed into the pointer located at -ptr. ty is a SWIG type descriptor structure. flags + pointer values.

    +

    int SWIG_ConvertPtr(Tcl_Obj *obj, void **ptr, swig_type_info + *ty, int flags)

    +
    Converts a Tcl object obj to a C pointer. + The result of the conversion is placed into the pointer located at +ptr. ty is a SWIG type descriptor structure. flags is used to handle error checking and other aspects of conversion. It is currently reserved for future expansion. Returns 0 on success and -1 on - error.
    -

    Tcl_Obj *SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int - flags)

    -
    Creates a new Tcl pointer object. ptr is - the pointer to convert, ty is the SWIG type descriptor - structure that describes the type, and own is a flag reserved - for future expansion.
    -

    Both of these functions require the use of a special SWIG + error.

    +

    Tcl_Obj *SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int + flags)

    +
    Creates a new Tcl pointer object. ptr is + the pointer to convert, ty is the SWIG type descriptor + structure that describes the type, and own is a flag reserved + for future expansion.
    +

    Both of these functions require the use of a special SWIG type-descriptor structure. This structure contains information about the mangled name of the datatype, type-equivalence information, as well as information about converting pointer values under C++ inheritance. - For a type of Foo *, the type descriptor structure is usually - accessed as follows:

    -
    -
    + For a type of Foo *, the type descriptor structure is usually
    + accessed as follows:

    +
    +
     Foo *f;
     if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
       SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
    @@ -58991,131 +57527,131 @@ if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &f, SWIGTYPE_p_Foo, 0))) {
     
     Tcl_Obj *;
     obj = SWIG_NewPointerObj(f, SWIGTYPE_p_Foo, 0);
    -
    -
    -

    In a typemap, the type descriptor should always be accessed using - the special typemap variable $1_descriptor. For example:

    -
    -
    +
    +
    +

    In a typemap, the type descriptor should always be accessed using + the special typemap variable $1_descriptor. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    If necessary, the descriptor for any type can be obtained using the -$descriptor() macro in a typemap. For example:

    -
    -
    +
    +
    +

    If necessary, the descriptor for any type can be obtained using the +$descriptor() macro in a typemap. For example:

    +
    +
     %typemap(in) Foo * {
       if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $descriptor(Foo *), 0))) {
         SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo");
       }
     }
    -
    -
    -

    40.8 Turning a SWIG module into a Tcl Package. -

    -

    Tcl 7.4 introduced the idea of an extension package. By default, +

    +
    +

    36.8 Turning a SWIG module into a Tcl Package. +

    +

    Tcl 7.4 introduced the idea of an extension package. By default, SWIG generates all of the code necessary to create a package. To set - the package version, simply use the -pkgversion option. For - example:

    -
    -
    + the package version, simply use the -pkgversion option. For
    + example:

    +
    +
     % swig -tcl -pkgversion 2.3 example.i
    -
    -
    -

    After building the SWIG generated module, you need to execute the " -pkg_mkIndex" command inside tclsh. For example :

    -
    -
    +
    +
    +

    After building the SWIG generated module, you need to execute the " +pkg_mkIndex" command inside tclsh. For example :

    +
    +
     unix > tclsh
     % pkg_mkIndex . example.so
     % exit
    -
    -
    -

    This creates a file "pkgIndex.tcl" with information about +

    +
    +

    This creates a file "pkgIndex.tcl" with information about the package. To use your package, you now need to move it to its own - subdirectory which has the same name as the package. For example :

    -
    -
    + subdirectory which has the same name as the package. For example :

    +
    +
     ./example/
                pkgIndex.tcl           # The file created by pkg_mkIndex
                example.so             # The SWIG generated module
    -
    -
    -

    Finally, assuming that you're not entirely confused at this point, +

    +
    +

    Finally, assuming that you're not entirely confused at this point, make sure that the example subdirectory is visible from the directories - contained in either the tcl_library or auto_path - variables. At this point you're ready to use the package as follows :

    -
    -
    + contained in either the tcl_library or auto_path
    + variables. At this point you're ready to use the package as follows :

    +
    +
     unix > tclsh
     % package require example
     % fact 4
     24
     %
    -
    -
    -

    If you're working with an example in the current directory and this - doesn't work, do this instead :

    -
    -
    +
    +
    +

    If you're working with an example in the current directory and this + doesn't work, do this instead :

    +
    +
     unix > tclsh
     % lappend auto_path .
     % package require example
     % fact 4
     24
    -
    -
    -

    As a final note, most SWIG examples do not yet use the package - commands. For simple extensions it may be easier just to use the -load command instead.

    -

    40.9 Building new kinds of Tcl interfaces (in - Tcl)

    -

    One of the most interesting aspects of Tcl and SWIG is that you can +

    +
    +

    As a final note, most SWIG examples do not yet use the package + commands. For simple extensions it may be easier just to use the +load command instead.

    +

    36.9 Building new kinds of Tcl interfaces (in + Tcl)

    +

    One of the most interesting aspects of Tcl and SWIG is that you can create entirely new kinds of Tcl interfaces in Tcl using the low-level SWIG accessor functions. For example, suppose you had a library of - helper functions to access arrays :

    -
    -
    + helper functions to access arrays :

    +
    +
     /* File : array.i */
     %module array
     
     %inline %{
     double *new_double(int size) {
    -        return (double *) malloc(size*sizeof(double));
    +  return (double *) malloc(size*sizeof(double));
     }
     void delete_double(double *a) {
    -        free(a);
    +  free(a);
     }
     double get_double(double *a, int index) {
    -        return a[index];
    +  return a[index];
     }
     void set_double(double *a, int index, double val) {
    -        a[index] = val;
    +  a[index] = val;
     }
     int *new_int(int size) {
    -        return (int *) malloc(size*sizeof(int));
    +  return (int *) malloc(size*sizeof(int));
     }
     void delete_int(int *a) {
    -        free(a);
    +  free(a);
     }
     int get_int(int *a, int index) {
    -        return a[index];
    +  return a[index];
     }
     int set_int(int *a, int index, int val) {
    -        a[index] = val;
    +  a[index] = val;
     }
     %}
     
    -
    -
    -

    While these could be called directly, we could also write a Tcl - script like this :

    -
    -
    +
    +
    +

    While these could be called directly, we could also write a Tcl + script like this :

    +
    +
     proc Array {type size} {
         set ptr [new_$type $size]
         set code {
    @@ -59131,11 +57667,11 @@ proc Array {type size} {
         uplevel "proc $ptr args {set ptr $ptr; set type $type;$code}"
         return $ptr
     }
    -
    -
    -

    Our script allows easy array access as follows :

    -
    -
    +
    +
    +

    Our script allows easy array access as follows :

    +
    +
     set a [Array double 100]                   ;# Create a double [100]
     for {set i 0} {$i < 100} {incr i 1} {      ;# Clear the array
             $a set $i 0.0
    @@ -59152,24 +57688,24 @@ set ib [$ia get 10]                        ;# Get an individual element
     
     $a delete                                  ;# Destroy a
     $ia delete                                 ;# Destroy ia
    -
    -
    -

    The cool thing about this approach is that it makes a common +

    +
    +

    The cool thing about this approach is that it makes a common interface for two different types of arrays. In fact, if we were to add more C datatypes to our wrapper file, the Tcl code would work with those as well--without modification. If an unsupported datatype was requested, the Tcl code would simply return with an error so there is very little danger of blowing something up (although it is easily - accomplished with an out of bounds array access).

    -

    40.9.1 Proxy classes

    -

    A similar approach can be applied to proxy classes (also known as + accomplished with an out of bounds array access).

    +

    36.9.1 Proxy classes

    +

    A similar approach can be applied to proxy classes (also known as shadow classes). The following example is provided by Erik Bierwagen - and Paul Saxe. To use it, run SWIG with the -noobject option + and Paul Saxe. To use it, run SWIG with the -noobject option (which disables the builtin object oriented interface). When running Tcl, simply source this file. Now, objects can be used in a more or - less natural fashion.

    -
    -
    + less natural fashion.

    +
    +
     # swig_c++.tcl
     # Provides a simple object oriented interface using
     # SWIG's low level interface.
    @@ -59224,12 +57760,12 @@ proc delete {handle_r} {
         #
         uplevel unset $handle_r
     }
    -
    -
    -

    To use this file, we simply source it and execute commands such as - "new" and "delete" to manipulate objects. For example :

    -
    -
    +
    +
    +

    To use this file, we simply source it and execute commands such as + "new" and "delete" to manipulate objects. For example :

    +
    +
     // list.i
     %module List
     %{
    @@ -59249,11 +57785,11 @@ public:
       int  length;          // The current length of the list
     static void print(List *l);  // Print out the contents of the list
     };
    -
    -
    -

    Now a Tcl script using the interface...

    -
    -
    +
    +
    +

    Now a Tcl script using the interface...

    +
    +
     load ./list.so list       ; # Load the module
     source swig_c++.tcl       ; # Source the object file
     
    @@ -59265,208 +57801,1234 @@ $l remove Dave
     puts $l length_get
     
     delete l
    -
    -
    -

    The cool thing about this example is that it works with any C++ +

    +
    +

    The cool thing about this example is that it works with any C++ object wrapped by SWIG and requires no special compilation. Proof that a short, but clever Tcl script can be combined with SWIG to do many - interesting things.

    -

    40.10 Tcl/Tk Stubs

    -

    For background information about the Tcl Stubs feature, see -http://www.tcl.tk/doc/howto/stubs.html.

    -

    As of SWIG 1.3.10, the generated C/C++ wrapper will use the Tcl - Stubs feature if compiled with -DUSE_TCL_STUBS.

    -

    As of SWIG 1.3.40, the generated C/C++ wrapper will use the Tk Stubs - feature if compiled with -DUSE_TK_STUBS. Also, you can - override the minimum version to support which is passed to -Tcl_InitStubs() and Tk_InitStubs() with --DSWIG_TCL_STUBS_VERSION="8.3" or the version being compiled with - using -DSWIG_TCL_STUBS_VERSION=TCL_VERSION.

    + interesting things.

    +

    36.10 Tcl/Tk Stubs

    +

    For background information about the Tcl Stubs feature, see +http://www.tcl.tk/doc/howto/stubs.html.

    +

    As of SWIG 1.3.10, the generated C/C++ wrapper will use the Tcl + Stubs feature if compiled with -DUSE_TCL_STUBS.

    +

    As of SWIG 1.3.40, the generated C/C++ wrapper will use the Tk Stubs + feature if compiled with -DUSE_TK_STUBS. Also, you can + override the minimum version to support which is passed to +Tcl_InitStubs() and Tk_InitStubs() with +-DSWIG_TCL_STUBS_VERSION="8.3" or the version being compiled with + using -DSWIG_TCL_STUBS_VERSION=TCL_VERSION.


    -

    41 Extending SWIG to support new languages

    +

    37 SWIG and MzScheme/Racket

    - + -

    41.1 Introduction

    -

    This chapter describes SWIG's internal organization and the process +

    This section contains information on SWIG's support of Racket, + formally known as MzScheme.

    +

    37.1 Creating native structures

    +

    Example interface file:

    +
    +
    +/* define a macro for the struct creation */
    +%define handle_ptr(TYPE, NAME)
    +%typemap(argout) TYPE *NAME{
    +  Scheme_Object *o = SWIG_NewStructFromPtr($1, $*1_mangle);
    +  SWIG_APPEND_VALUE(o);
    +}
    +
    +%typemap(in, numinputs=0) TYPE *NAME (TYPE temp) {
    +  $1 = &temp;
    +}
    +%enddef
    +
    +/* setup the typemaps for the pointer to an output parameter cntrs */
    +handle_ptr(struct diag_cntrs, cntrs);
    +
    +
    +

    Then in scheme, you can use regular struct access procedures like

    +
    +
    +        ; suppose a function created a struct foo as
    +        ; (define foo (make-diag-cntrs (#x1 #x2 #x3) (make-inspector))
    +        ; Then you can do
    +        (format "0x~x" (diag-cntrs-field1 foo))
    +        (format "0x~x" (diag-cntrs-field2 foo))
    +        ;etc...
    +
    +
    +

    37.2 Simple example

    +

    A few examples are available in the Examples/mzscheme directory. The + code and log of a session using SWIG below should help getting started.

    +

    C header file:

    +
    +
    +// example.h
    +int fact(int n);
    +
    +
    +

    C source code:

    +
    +
    +// File: example.c
    +#include "example.h"
    +
    +int fact(int n) {
    +  if (n < 0) { /* This should probably return an error, but this is simpler */
    +    return 0;
    +  }
    +  if (n == 0) {
    +    return 1;
    +  }
    +  else {
    +    /* testing for overflow would be a good idea here */
    +    return n * fact(n-1);
    +  }
    +}
    +
    +
    +

    SWIG interface file:

    +
    +
    +/* File: example.i */
    +%module example
    +
    +%{
    +#include "example.h"
    +%}
    +
    +int fact(int n);
    +
    +
    +

    The session below using the above files is on an OS X machine, but + the points to be made are more general. On OS X, libtool is the tool + which creates libraries, which are named .dylib, rather than .so on + other unixes, or .dll on Windows.

    +
    +
    +% swig -mzscheme -declaremodule example.i
    +% gcc -c -m32 -o example.o example.c # force 32-bit object file (mzscheme is 32-bit only)
    +% libtool -dynamic -o libexample.dylib example.o # make it into a library
    +% ls # what've we got so far?
    +example.c example.o
    +example.h example_wrap.c
    +example.i libexample.dylib*
    +% mzc --cgc --cc example_wrap.c # compile the wrapping code
    +% LDFLAGS="-L. -lexample" mzc --ld example_wrap.dylib example_wrap.o # ...and link it
    +% mzscheme -e '(path->string (build-path "compiled" "native" (system-library-subpath)))'
    +"compiled/native/i386-macosx/3m"
    +% mkdir -p compiled/native/i386-macosx/3m # move the extension library to a magic place
    +% mv example_wrap.dylib compiled/native/i386-macosx/3m/example_ss.dylib
    +% mzscheme
    +Welcome to MzScheme v4.2.4 [3m], Copyright (c) 2004-2010 PLT Scheme Inc.
    +> (require "example.ss")
    +> (fact 5)
    +120
    +> ^D
    +% echo 'It works!'
    +
    +
    +

    Some points of interest:

    +
      +
    • This is on a 64-bit machine, so we have to include the -m32 option + when building the object file
    • +
    • If you want to declare a scheme module (and you probably do), it's + important that you include the -declaremodule option to swig (if you + miss this out, it'll appear to work, but fail later).
    • +
    • Use mzc to compile and then link the wrapped code. You'll probably + need to adjust the link flags to refer to the library you're wrapping + (you can either do this with an LDFLAGS declaration, as here, or with + multiple ++ldf options to mzc).
    • +
    • Create the directory with path (build-path "compiled" "native" + (system-library-subpath)) and move the freshly-generated .dylib to + there, changing its name to module-name_ss.dylib. After that, you can + REQUIRE the new module with (require "module-name.ss").
    • +
    • The above requests mzc to create an extension using the CGC + garbage-collector. The alternative -- the 3m collector -- has generally + better performance, but work is still required for SWIG to emit code + which is compatible with it.
    • +
    +

    37.3 External documentation

    +

    See the C + API for more description of using the mechanism for adding + extensions. The main documentation is +here.

    +

    Tip: mzc's --vv option is very useful for debugging the inevitable + library problems you'll encounter.

    +
    +

    38 SWIG and OCaml

    + + + + +

    This chapter describes SWIG's support of Ocaml.

    +

    Ocaml is a relatively recent addition to the ML family, and is a + recent addition to SWIG. It's the second compiled, typed language to be + added. Ocaml has widely acknowledged benefits for engineers, mostly + derived from a sophisticated type system, compile-time checking which + eliminates several classes of common programming errors, and good + native performance. While all of this is wonderful, there are + well-written C and C++ libraries that Ocaml users will want to take + advantage of as part of their arsenal (such as SSL and gdbm), as well + as their own mature C and C++ code. SWIG allows this code to be used in + a natural, type-safe way with Ocaml, by providing the necessary, but + repetitive glue code which creates and uses Ocaml values to communicate + with C and C++ code. In addition, SWIG also produces the needed Ocaml + source that binds variants, functions, classes, etc.

    +

    If you're not familiar with the Objective Caml language, you can + visit The Ocaml Website.

    +

    38.1 Preliminaries

    +

    SWIG is compatible with OCaml 3.12.0 and above. Given the choice, + you should use the latest stable release. The SWIG Ocaml module has + been tested on Linux (x86, PPC, Sparc) and Cygwin on Windows. The best + way to determine whether your system will work is to compile the + examples and test-suite which come with SWIG. You can do this by + running make check from the SWIG root directory after + installing SWIG. The Ocaml module has been tested using the system's + dynamic linking (the usual -lxxx against libxxx.so, as well as with + Gerd Stolpmann's Dl + package. The ocaml_dynamic and ocaml_dynamic_cpp targets in the + file Examples/Makefile illustrate how to compile and link SWIG modules + that will be loaded dynamically. This has only been tested on Linux so + far.

    +

    38.1.1 Running SWIG

    +

    The basics of getting a SWIG Ocaml module up and running can be seen + from one of SWIG's example Makefiles, but is also described here. To + build an Ocaml module, run SWIG using the -ocaml option.

    +
    +
    +%swig -ocaml example.i
    +
    +
    +

    This will produce 3 files. The file example_wrap.c contains + all of the C code needed to build an Ocaml module. To build the module, + you will compile the file example_wrap.c with ocamlc + or ocamlopt to create the needed .o file. You will need to + compile the resulting .ml and .mli files as well, and do the final link + with -custom (not needed for native link).

    +

    38.1.2 Compiling the code

    +

    The OCaml SWIG module now requires you to compile a module (Swig +) separately. In addition to aggregating common SWIG functionality, the + Swig module contains the data structure that represents C/C++ values. + This allows easier data sharing between modules if two or more are + combined, because the type of each SWIG'ed module's c_obj is derived + from Swig.c_obj_t. This also allows SWIG to acquire new conversions + painlessly, as well as giving the user more freedom with respect to + custom typing. Use ocamlc or ocamlopt to compile your + SWIG interface like:

    +
    +
    +% swig -ocaml -co swig.mli ; swig -ocaml -co swig.ml
    +% ocamlc -c swig.mli ; ocamlc -c swig.ml
    +% ocamlc -c -ccopt "-I/usr/include/foo" example_wrap.c
    +% ocamlc -c example.mli
    +% ocamlc -c example.ml
    +
    +
    +

    ocamlc is aware of .c files and knows how to handle them. + Unfortunately, it does not know about .cxx, .cc, or .cpp files, so when + SWIG is invoked in C++ mode, you must:

    +
    +
    +% cp example_wrap.cxx example_wrap.cxx.c
    +% ocamlc -c ... -ccopt -xc++ example_wrap.cxx.c
    +% ...
    +
    +
    +

    38.1.3 The camlp4 module

    +

    The camlp4 module (swigp4.ml -> swigp4.cmo) contains a simple + rewriter which makes C++ code blend more seamlessly with objective caml + code. Its use is optional, but encouraged. The source file is included + in the Lib/ocaml directory of the SWIG source distribution. You can + checkout this file with "swig -ocaml -co swigp4.ml". You + should compile the file with "ocamlc -I `camlp4 -where` -pp + 'camlp4o pa_extend.cmo q_MLast.cmo' -c swigp4.ml"

    +

    The basic principle of the module is to recognize certain non-caml + expressions and convert them for use with C++ code as interfaced by + SWIG. The camlp4 module is written to work with generated SWIG + interfaces, and probably isn't great to use with anything else.

    +

    Here are the main rewriting rules:

    + + + + + + + + + + + + + +
    InputRewritten to
    f'( ... ) as in +
    atoi'("0") or +
    _exit'(0)
    f(C_list [ ... ]) as in +
    atoi (C_list [ C_string "0" ]) or +
    _exit (C_list [ C_int 0 ])
    object -> method ( ... )(invoke object) "method" + (C_list [ ... ])
    object 'binop argument as in +
    a '+= b
    (invoke object) "+=" argument as in +
    (invoke a) "+=" b
    Note that because camlp4 always recognizes << and + >>, they are replaced by lsl and lsr in operator names. +
    'unop object as in +
    '! a
    (invoke a) "!" C_void
    Smart pointer access like this +
    object '-> method ( args ) +
    (invoke (invoke object "->" C_void))
    Invoke syntax +
    object . '( ... )
    (invoke object) "()" (C_list [ ... ])
    Array syntax +
    object '[ 10 ]
    (invoke object) "[]" (C_int 10)
    Assignment syntax +
    let a = '10 and b = '"foo" and c = '1.0 and d = 'true
    let + a = C_int 10 and b = C_string "foo" and c = C_double 1.0 and d = C_bool + true
    Cast syntax +
    let a = _atoi '("2") as int +
    let b = (getenv "PATH") to string +
    This works for int, string, float, bool
    let a = get_int + (_atoi (C_string "2")) +
    let b = C_string (getenv "PATH")
    +

    38.1.4 Using your module

    +

    You can test-drive your module by building a toplevel ocaml + interpreter. Consult the ocaml manual for details.

    +

    When linking any ocaml bytecode with your module, use the -custom + option to build your functions into the primitive list. This option is + not needed when you build native code.

    +

    38.1.5 Compilation problems and compiling with + C++

    +

    As mentioned above, .cxx files need special handling to be compiled + with ocamlc. Other than that, C code that uses class + as a non-keyword, and C code that is too liberal with pointer types may + not compile under the C++ compiler. Most code meant to be compiled as + C++ will not have problems.

    +

    38.2 The low-level Ocaml/C interface

    +

    In order to provide access to overloaded functions, and provide + sensible outputs from them, all C entities are represented as members + of the c_obj type:

    +

    In the code as seen by the typemap writer, there is a value, + swig_result, that always contains the current return data. It is a + list, and must be appended with the caml_list_append function, or with + functions and macros provided by objective caml.

    +
    +
    +type c_obj =
    +    C_void
    +  | C_bool of bool
    +  | C_char of char
    +  | C_uchar of char
    +  | C_short of int
    +  | C_ushort of int
    +  | C_int of int
    +  | C_uint of int32
    +  | C_int32 of int32
    +  | C_int64 of int64
    +  | C_float of float
    +  | C_double of float
    +  | C_ptr of int64 * int64
    +  | C_array of c_obj array
    +  | C_list of c_obj list
    +  | C_obj of (string -> c_obj -> c_obj)
    +  | C_string of string
    +  | C_enum of c_enum_t
    +
    +
    +

    A few functions exist which generate and return these:

    +
      +
    • caml_ptr_val receives a c_obj and returns a void *. This should be + used for all pointer purposes.
    • +
    • caml_long_val receives a c_obj and returns a long. This should be + used for most integral purposes.
    • +
    • caml_val_ptr receives a void * and returns a c_obj.
    • +
    • caml_val_bool receives a C int and returns a c_obj representing its + bool value.
    • +
    • caml_val_(u)?(char|short|int|long|float|double) receives an + appropriate C value and returns a c_obj representing it.
    • +
    • caml_val_string receives a char * and returns a string value.
    • +
    • caml_val_string_len receives a char * and a length and returns a + string value.
    • +
    • caml_val_obj receives a void * and an object type and returns a + C_obj, which contains a closure giving method access.
    • +
    +

    Because of this style, a typemap can return any kind of value it + wants from a function. This enables out typemaps and inout typemaps to + work well. The one thing to remember about outputting values is that + you must append them to the return list with swig_result = + caml_list_append(swig_result, v).

    +

    This function will return a new list that has your element appended. + Upon return to caml space, the fnhelper function beautifies the result. + A list containing a single item degrades to only that item (i.e. [ + C_int 3 ] -> C_int 3), and a list containing more than one item is + wrapped in C_list (i.e. [ C_char 'a' ; C_char 'b' ] -> C_list [ C_char + 'a' ; C_char 'b' ]). This is in order to make return values easier to + handle when functions have only one return value, such as constructors, + and operators. In addition, string, pointer, and object values are + interchangeable with respect to caml_ptr_val, so you can allocate + memory as caml strings and still use the resulting pointers for C + purposes, even using them to construct simple objects on. Note, though, + that foreign C++ code does not respect the garbage collector, although + the SWIG interface does.

    +

    The wild card type that you can use in lots of different ways is + C_obj. It allows you to wrap any type of thing you like as an object + using the same mechanism that the ocaml module does. When evaluated in + caml_ptr_val, the returned value is the result of a call to the + object's "&" operator, taken as a pointer.

    +

    You should only construct values using objective caml, or using the + functions caml_val_* functions provided as static functions to a SWIG + ocaml module, as well as the caml_list_* functions. These functions + provide everything a typemap needs to produce values. In addition, + value items pass through directly, but you must make your own type + signature for a function that uses value in this way.

    +

    38.2.1 The generated module

    +

    The SWIG %module directive specifies the name of the Ocaml + module to be generated. If you specified `%module example', + then your Ocaml code will be accessible in the module Example. The + module name is always capitalized as is the ocaml convention. Note that + you must not use any Ocaml keyword to name your module. Remember that + the keywords are not the same as the C++ ones.

    +

    You can introduce extra code into the output wherever you like with + SWIG. These are the places you can introduce code:

    + + + + + + + +
    "header"This code is inserted near the beginning of the + C wrapper file, before any function definitions.
    "wrapper"This code is inserted in the function + definition section.
    "runtime"This code is inserted near the end of the C + wrapper file.
    "mli"This code is inserted into the caml interface + file. Special signatures should be inserted here.
    "ml"This code is inserted in the caml code defining the + interface to your C code. Special caml code, as well as any + initialization which should run when the module is loaded may be + inserted here.
    "classtemplate"The "classtemplate" place is special + because it describes the output SWIG will generate for class + definitions.
    +

    38.2.2 Enums

    +

    SWIG will wrap enumerations as polymorphic variants in the output + Ocaml code, as above in C_enum. In order to support all C++-style uses + of enums, the function int_to_enum and enum_to_int are provided for + ocaml code to produce and consume these values as integers. Other than + that, correct uses of enums will not have a problem. Since enum labels + may overlap between enums, the enum_to_int and int_to_enum functions + take an enum type label as an argument. Example:

    +
    +
    +%module enum_test
    +%{
    +enum c_enum_type { a = 1, b, c = 4, d = 8 };
    +%}
    +enum c_enum_type { a = 1, b, c = 4, d = 8 };
    +
    +
    +

    The output mli contains:

    +
    +
    +type c_enum_type = [
    +  `unknown
    +| `c_enum_type
    +]
    +type c_enum_tag = [
    +  `int of int
    +| `a
    +| `b
    +| `c
    +| `d
    +]
    +val int_to_enum c_enum_type -> int -> c_obj
    +val enum_to_int c_enum_type -> c_obj -> c_obj
    +
    +
    +

    So it's possible to do this:

    +
    +
    +bash-2.05a$ ocamlmktop -custom enum_test_wrap.o enum_test.cmo -o enum_test_top
    +bash-2.05a$ ./enum_test_top
    +        Objective Caml version 3.04
    +
    +# open Enum_test ;;
    +# let x = C_enum `a ;;
    +val x : Enum_test.c_obj = C_enum `a
    +# enum_to_int `c_enum_type x ;;
    +- : Enum_test.c_obj = C_int 1
    +# int_to_enum `c_enum_type 4 ;;
    +- : Enum_test.c_obj = C_enum `c
    +
    +
    +

    38.2.2.1 Enum typing in Ocaml

    +

    The ocaml SWIG module now has support for loading and using multiple + SWIG modules at the same time. This enhances modularity, but presents + problems when used with a language which assumes that each module's + types are complete at compile time. In order to achieve total soundness + enum types are now isolated per-module. The type issue matters when + values are shared between functions imported from different modules. + You must convert values to master values using the swig_val function + before sharing them with another module.

    +

    38.2.3 Arrays

    +

    38.2.3.1 Simple types of bounded arrays

    +

    SWIG has support for array types, but you generally will need to + provide a typemap to handle them. You can currently roll your own, or + expand some of the macros provided (but not included by default) with + the SWIG distribution.

    +

    By including "carray.i", you will get access to some macros that + help you create typemaps for array types fairly easily.

    +

    %make_simple_array_typemap is the easiest way to get access + to arrays of simple types with known bounds in your code, but this only + works for arrays whose bounds are completely specified.

    +

    38.2.3.2 Complex and unbounded arrays

    +

    Unfortunately, unbounded arrays and pointers can't be handled in a + completely general way by SWIG, because the end-condition of such an + array can't be predicted. In some cases, it will be by consent (e.g. an + array of four or more chars), sometimes by explicit length (char + *buffer, int len), and sometimes by sentinel value (0, -1, etc.). SWIG + can't predict which of these methods will be used in the array, so you + have to specify it for yourself in the form of a typemap.

    +

    38.2.3.3 Using an object

    +

    It's possible to use C++ to your advantage by creating a simple + object that provides access to your array. This may be more desirable + in some cases, since the object can provide bounds checking, etc., that + prevents crashes.

    +

    Consider writing an object when the ending condition of your array + is complex, such as using a required sentinel, etc.

    +

    38.2.3.4 Example typemap for a function taking + float * and int

    +

    This is a simple example in typemap for an array of float, + where the length of the array is specified as an extra parameter. Other + such typemaps will work similarly. In the example, the function + printfloats is called with a float array, and specified length. The + actual length reported in the len argument is the length of the array + passed from ocaml, making passing an array into this type of function + convenient.

    + + + + + +
    +
    tarray.i
    +
    +
    +%module tarray
    +%{
    +#include <stdio.h>
    +
    +void printfloats( float *tab, int len ) {
    +  int i;
    +
    +  for( i = 0; i < len; i++ ) {
    +    printf( "%f ", tab[i] );
    +  }
    +
    +  printf( "\n" );
    +}
    +%}
    +
    +%typemap(in) (float *tab, int len) {
    +  int i;
    +  /* $*1_type */
    +  $2 = caml_array_len($input);
    +  $1 = ($*1_type *)malloc( $2 * sizeof( float ) );
    +  for( i = 0; i < $2; i++ ) {
    +    $1[i] = caml_double_val(caml_array_nth($input, i));
    +  }
    +}
    +
    +void printfloats( float *tab, int len );
    +
    +
    Sample Run
    +
    +# open Tarray ;;
    +# _printfloats (C_array [| C_double 1.0 ; C_double 3.0 ; C_double 5.6666 |]) ;;
    +1.000000 3.000000 5.666600
    +- : Tarray.c_obj = C_void
    +
    +
    +

    38.2.4 C++ Classes

    +

    C++ classes, along with structs and unions are represented by C_obj + (string -> c_obj -> c_obj) wrapped closures. These objects contain a + method list, and a type, which allow them to be used like C++ objects. + When passed into typemaps that use pointers, they degrade to pointers + through their "&" method. Every method an object has is represented as + a string in the object's method table, and each method table exists in + memory only once. In addition to any other operators an object might + have, certain builtin ones are provided by SWIG: (all of these take no + arguments (C_void))

    + + + + + + + + + +
    "~"Delete this object
    "&"Return an ordinary C_ptr value representing this + object's address
    "sizeof"If enabled with ("sizeof"="1") on the module + node, return the object's size in char.
    ":methods"Returns a list of strings containing the + names of the methods this object contains
    ":classof"Returns the name of the class this object + belongs to.
    ":parents"Returns a list of all direct parent classes + which have been wrapped by SWIG.
    "::[parent-class]"Returns a view of the object as the + indicated parent class. This is mainly used internally by the SWIG + module, but may be useful to client programs.
    "[member-variable]"Each member variable is wrapped as a + method with an optional parameter. Called with one argument, the member + variable is set to the value of the argument. With zero arguments, the + value is returned.
    +

    Note that this string belongs to the wrapper object, and not the + underlying pointer, so using create_[x]_from_ptr alters the returned + value for the same object.

    +

    38.2.4.1 STL vector and string Example

    +

    Standard typemaps are now provided for STL vector and string. More + are in the works. STL strings are passed just like normal strings, and + returned as strings. STL string references don't mutate the original + string, (which might be surprising), because Ocaml strings are mutable + but have fixed length. Instead, use multiple returns, as in the + argout_ref example.

    + + + + +
    +
    example.i
    +
    +
    +%module example
    +%{
    +#include "example.h"
    +%}
    +
    +%include <stl.i>
    +
    +namespace std {
    +  %template(StringVector) std::vector < string >;
    +};
    +
    +%include "example.h"
    +
    +
    This example is in Examples/ocaml/stl +
    +

    Since there's a makefile in that directory, the example is easy to + build.

    +

    Here's a sample transcript of an interactive session using a string + vector after making a toplevel (make toplevel). This example uses the + camlp4 module.

    +
    +
    +bash-2.05a$ ./runme_top
    +        Objective Caml version 3.06
    +
    +        Camlp4 Parsing version 3.06
    +
    +# open Swig ;;
    +# open Example ;;
    +# let x = new_StringVector '() ;;
    +val x : Example.c_obj = C_obj <fun>
    +# x -> ":methods" () ;;
    +- : Example.c_obj =
    +C_list
    + [C_string "nop"; C_string "size"; C_string "empty"; C_string "clear";
    +  C_string "push_back"; C_string "[]"; C_string "="; C_string "set";
    +  C_string "~"; C_string "&"; C_string ":parents"; C_string ":classof";
    +  C_string ":methods"]
    +# x -> push_back ("foo") ;;
    +- : Example.c_obj = C_void
    +# x -> push_back ("bar") ;;
    +- : Example.c_obj = C_void
    +# x -> push_back ("baz") ;;
    +- : Example.c_obj = C_void
    +# x '[1] ;;
    +- : Example.c_obj = C_string "bar"
    +# x -> set (1, "spam") ;;
    +- : Example.c_obj = C_void
    +# x '[1] ;;
    +- : Example.c_obj = C_string "spam"
    +# for i = 0 to (x -> size() as int) - 1 do
    +    print_endline ((x '[i to int]) as string)
    +  done ;;
    +foo
    +bar
    +baz
    +- : unit = ()
    +#
    +
    +
    +

    38.2.4.2 C++ Class Example

    +

    Here's a simple example using Trolltech's Qt Library:

    + + + +
    +
    qt.i
    +
    +
    +%module qt
    +%{
    +#include <qapplication.h>
    +#include <qpushbutton.h>
    +%}
    +class QApplication {
    +public:
    +  QApplication( int argc, char **argv );
    +  void setMainWidget( QWidget *widget );
    +  void exec();
    +};
    +
    +class QPushButton {
    +public:
    +  QPushButton( char *str, QWidget *w );
    +  void resize( int x, int y );
    +  void show();
    +};
    +
    +
    +

    38.2.4.3 Compiling the example

    +
    +
    +bash-2.05a$ QTPATH=/your/qt/path
    +bash-2.05a$ for file in swig.mli swig.ml swigp4.ml ; do swig -ocaml -co $file ; done
    +bash-2.05a$ ocamlc -c swig.mli ; ocamlc -c swig.ml
    +bash-2.05a$ ocamlc -I `camlp4 -where` -pp "camlp4o pa_extend.cmo q_MLast.cmo" -c swigp4.ml
    +bash-2.05a$ swig -ocaml -c++ -I$QTPATH/include qt.i
    +bash-2.05a$ mv qt_wrap.cxx qt_wrap.c
    +bash-2.05a$ ocamlc -c -ccopt -xc++ -ccopt -g -g -ccopt -I$QTPATH/include qt_wrap.c
    +bash-2.05a$ ocamlc -c qt.mli
    +bash-2.05a$ ocamlc -c qt.ml
    +bash-2.05a$ ocamlmktop -custom swig.cmo -I `camlp4 -where` \
    +  camlp4o.cma swigp4.cmo qt_wrap.o qt.cmo -o qt_top -cclib \
    +  -L$QTPATH/lib -cclib -lqt
    +
    +
    +

    38.2.4.4 Sample Session

    +
    +
    +bash-2.05a$ ./qt_top
    +        Objective Caml version 3.06
    +
    +        Camlp4 Parsing version 3.06
    +
    +# open Swig ;;
    +# open Qt ;;
    +# let a = new_QApplication '(0, 0) ;;
    +val a : Qt.c_obj = C_obj <fun>
    +# let hello = new_QPushButton '("hi", 0) ;;
    +val hello : Qt.c_obj = C_obj <fun>
    +# hello -> resize (100, 30) ;;
    +- : Qt.c_obj = C_void
    +# hello -> show () ;;
    +- : Qt.c_obj = C_void
    +# a -> exec () ;;
    +
    +
    +

    Assuming you have a working installation of QT, you will see a + window containing the string "hi" in a button.

    +

    38.2.5 Director Classes

    +

    38.2.5.1 Director Introduction

    +

    Director classes are classes which allow Ocaml code to override the + public methods of a C++ object. This facility allows the user to use + C++ libraries that require a derived class to provide application + specific functionality in the context of an application or utility + framework.

    +

    You can turn on director classes by using an optional module + argument like this:

    +
    +
    +%module(directors="1")
    +
    +...
    +
    +// Turn on the director class for a specific class like this:
    +%feature("director")
    +class foo {
    +  ...
    +};
    +
    +
    +

    38.2.5.2 Overriding Methods in Ocaml

    +

    Because the Ocaml language module treats C++ method calls as calls + to a certain function, all you need to do is to define the function + that will handle the method calls in terms of the public methods of the + object, and any other relevant information. The function +new_derived_object uses a stub class to call your methods in place + of the ones provided by the underlying implementation. The object you + receive is the underlying object, so you are free to call any methods + you want from within your derived method. Note that calls to the + underlying object do not invoke Ocaml code. You need to handle that + yourself.

    +

    new_derived_object receives your function, the function + that creates the underlying object, and any constructor arguments, and + provides an object that you can use in any usual way. When C++ code + calls one of the object's methods, the object invokes the Ocaml + function as if it had been invoked from Ocaml, allowing any method + definitions to override the C++ ones.

    +

    In this example, I'll examine the objective caml code involved in + providing an overloaded class. This example is contained in + Examples/ocaml/shapes.

    +

    38.2.5.3 Director Usage Example

    + + + +
    +
    runme.ml
    +
    +
    +open Swig
    +open Example
    +
    +...
    +
    +let triangle_class pts ob meth args =
    +  match meth with
    +      "cover" ->
    +        (match args with
    +             C_list [ x_arg ; y_arg ] ->
    +             let xa = x_arg as float
    +             and ya = y_arg as float in
    +               (point_in_triangle pts xa ya) to bool
    +           | _ -> raise (Failure "cover needs two double arguments."))
    +    | _ -> (invoke ob) meth args ;;
    +
    +...
    +
    +let triangle =
    +  new_derived_object
    +    new_shape
    +    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.6)))
    +    '() ;;
    +
    +let _ = _draw_shape_coverage '(triangle, 60, 20) ;;
    +
    +
    +

    This is the meat of what you need to do. The actual "class" + definition containing the overloaded method is defined in the function + triangle_class. This is a lot like the class definitions emitted by + SWIG, if you look at example.ml, which is generated when SWIG consumes + example.i. Basically, you are given the arguments as a c_obj and the + method name as a string, and you must intercept the method you are + interested in and provide whatever return value you need. Bear in mind + that the underlying C++ code needs the right return type, or an + exception will be thrown. This exception will generally be Failure, or + NotObject. You must call other ocaml methods that you rely on yourself. + Due to the way directors are implemented, method calls on your object + from with ocaml code will always invoke C++ methods even if they are + overridden in ocaml.

    +

    In the example, the draw_shape_coverage function plots the indicated + number of points as either covered (x) or uncovered ( ) + between 0 and 1 on the X and Y axes. Your shape implementation can + provide any coverage map it likes, as long as it responds to the + "cover" method call with a boolean return (the underlying method + returns bool). This might allow a tricky shape implementation, such as + a boolean combination, to be expressed in a more effortless style in + ocaml, while leaving the "engine" part of the program in C++.

    +

    38.2.5.4 Creating director objects

    +

    The definition of the actual object triangle can be described this + way:

    +
    +
    +let triangle =
    +  new_derived_object
    +    new_shape
    +    (triangle_class ((0.0, 0.0), (0.5, 1.0), (1.0, 0.0)))
    +    '()
    +
    +
    +

    The first argument to new_derived_object, new_shape is the + method which returns a shape instance. This function will be invoked + with the third argument will be appended to the argument list [ C_void + ]. In the example, the actual argument list is sent as (C_list [ C_void + ; C_void ]). The augmented constructor for a director class needs the + first argument to determine whether it is being constructed as a + derived object, or as an object of the indicated type only (in this + case shape). The Second argument is a closure that will be + added to the final C_obj.

    +

    The actual object passed to the self parameter of the director + object will be a C_director_core, containing a c_obj option ref and a + c_obj. The c_obj provided is the same object that will be returned from + new_derived object, that is, the object exposing the overridden + methods. The other part is an option ref that will have its value + extracted before becoming the ob parameter of your class + closure. This ref will contain None if the C++ object + underlying is ever destroyed, and will consequently trigger an + exception when any method is called on the object after that point (the + actual raise is from an inner function used by new_derived_object, and + throws NotObject). This prevents a deleted C++ object from causing a + core dump, as long as the object is destroyed properly.

    +

    38.2.5.5 Typemaps for directors, directorin, + directorout, directorargout

    +

    Special typemaps exist for use with directors, the directorin, + directorout, directorargout are used in place of in, out, + argout typemaps, except that their direction is reversed. They + provide for you to provide argout values, as well as a function return + value in the same way you provide function arguments, and to receive + arguments the same way you normally receive function returns.

    +

    38.2.5.6 directorin typemap

    +

    The directorin typemap is used when you will receive + arguments from a call made by C++ code to you, therefore, values will + be translated from C++ to ocaml. You must provide some valid C_obj + value. This is the value your ocaml code receives when you are called. + In general, a simple directorin typemap can use the same body + as a simple out typemap.

    +

    38.2.5.7 directorout typemap

    +

    The directorout typemap is used when you will send an + argument from your code back to the C++ caller. That is; directorout + specifies a function return conversion. You can usually use the same + body as an in typemap for the same type, except when there are + special requirements for object ownership, etc.

    +

    38.2.5.8 directorargout typemap

    +

    C++ allows function arguments which are by pointer (*) and by + reference (&) to receive a value from the called function, as well as + sending one there. Sometimes, this is the main purpose of the argument + given. directorargout typemaps allow your caml code to emulate + this by specifying additional return values to be put into the output + parameters. The SWIG ocaml module is a bit loose in order to make code + easier to write. In this case, your return to the caller must be a list + containing the normal function return first, followed by any argout + values in order. These argout values will be taken from the list and + assigned to the values to be returned to C++ through directorargout + typemaps. In the event that you don't specify all of the necessary + values, integral values will read zero, and struct or object returns + have undefined results.

    +

    38.2.6 Exceptions

    +

    If an error occurs in a C or C++ function, you may want to convert + that error into an OCaml exception. To do this, you can use the +%exception directive. The %exception directive simply lets + you rewrite part of the generated wrapper code to include an error + check. It is detailed in full in the +Exception handling with %exception section.

    +

    In C, a function often indicates an error by returning a status code + (e.g. a negative number or a NULL pointer). Here is a simple example of + how you might handle that:

    +
    +
    +%exception malloc {
    +  $action
    +  if (result == NULL) {
    +    caml_failwith("Not enough memory");
    +  }
    +}
    +void *malloc(size_t nbytes);
    +
    +
    +

    In OCaml:

    +
    +
    +# let a = _malloc (C_int 20000000000);;
    +Exception: Failure "Not enough memory".
    +#
    +
    +
    +

    If a library provides some kind of general error handling framework, + you can also use that. For example:

    +
    +
    +%exception {
    +  $action
    +  if (err_occurred()) {
    +    caml_failwith(err_message());
    +  }
    +}
    +
    +
    +

    If no declaration name is given to %exception, it is + applied to all wrapper functions. $action is a SWIG special + variable and is replaced by the C/C++ function call being wrapped.

    +

    C++ exceptions are also easy to handle. We can catch a C++ exception + and rethrow it as an OCaml exception like this:

    +
    +
    +%exception getitem {
    +  try {
    +    $action
    +  } catch (std::out_of_range &e) {
    +    caml_failwith(e.what());
    +  }
    +}
    +
    +class FooClass {
    +  public:
    +    int getitem(int index);      // Exception handling added
    +    ...
    +};
    +
    +
    +

    The language-independent exception.i library file can also + be used to raise exceptions. See the SWIG Library + chapter.

    +

    38.3 Documentation Features

    +

    The features described in this section can be used to generate + documentation comments (colloquially referred to as "docstrings") that + can be read by +OCamldoc.

    +

    38.3.1 Module docstring

    +

    The first documentation comment of an mli file is the + comment associated with the entire module. SWIG supports this by + setting an option of the %module directive. For example:

    +
    +
    +%module(docstring="This is the example module's docstring") example
    +
    +
    +

    When you have more than just a line or so, you can retain the + readability of the %module directive by using a macro. For + example:

    +
    +
    +%define DOCSTRING
    +"The `XmlResource` class allows program resources defining menus,
    +controls on a panel, etc. to be loaded from an XML file."
    +%enddef
    +
    +%module(docstring=DOCSTRING) xrc
    +
    +

    +

    39 Extending SWIG to support new languages

    + + + + +

    39.1 Introduction

    +

    This chapter describes SWIG's internal organization and the process by which new target languages can be developed. First, a brief word of warning---SWIG is continually evolving. The information in this chapter is mostly up to date, but changes are ongoing. Expect a few - inconsistencies.

    -

    Also, this chapter is not meant to be a hand-holding tutorial. As a + inconsistencies.

    +

    Also, this chapter is not meant to be a hand-holding tutorial. As a starting point, you should probably look at one of SWIG's existing - modules.

    -

    41.2 Prerequisites

    -

    In order to extend SWIG, it is useful to have the following - background:

    -
      -
    • An understanding of the C API for the target language.
    • -
    • A good grasp of the C++ type system.
    • -
    • An understanding of typemaps and some of SWIG's advanced features.
    • -
    • Some familiarity with writing C++ (language modules are currently - written in C++).
    • -
    -

    Since SWIG is essentially a specialized C++ compiler, it may be + modules.

    +

    39.2 Prerequisites

    +

    In order to extend SWIG, it is useful to have the following + background:

    +
      +
    • An understanding of the C API for the target language.
    • +
    • A good grasp of the C++ type system.
    • +
    • An understanding of typemaps and some of SWIG's advanced features.
    • +
    • Some familiarity with writing C++ (language modules are currently + written in C++).
    • +
    +

    Since SWIG is essentially a specialized C++ compiler, it may be useful to have some prior experience with compiler design (perhaps even a compilers course) to better understand certain parts of the system. A number of books will also be useful. For example, "The C Programming Language" by Kernighan and Ritchie (a.k.a, "K&R") and the C++ standard, - "ISO/IEC 14882 Programming Languages - C++" will be of great use.

    -

    Also, it is useful to keep in mind that SWIG primarily operates as - an extension of the C++ type system. At first glance, this + "ISO/IEC 14882 Programming Languages - C++" will be of great use.

    +

    Also, it is useful to keep in mind that SWIG primarily operates as + an extension of the C++ type system. At first glance, this might not be obvious, but almost all SWIG directives as well as the - low-level generation of wrapper code are driven by C++ datatypes.

    -

    41.3 The Big Picture

    -

    SWIG is a special purpose compiler that parses C++ declarations to + low-level generation of wrapper code are driven by C++ datatypes.

    +

    39.3 The Big Picture

    +

    SWIG is a special purpose compiler that parses C++ declarations to generate wrapper code. To make this conversion possible, SWIG makes - three fundamental extensions to the C++ language:

    -
      -
    • Typemaps. Typemaps are used to define the + three fundamental extensions to the C++ language:

      +
        +
      • Typemaps. Typemaps are used to define the conversion/marshalling behavior of specific C++ datatypes. All type conversion in SWIG is based on typemaps. Furthermore, the association of typemaps to datatypes utilizes an advanced pattern matching - mechanism that is fully integrated with the C++ type system.
      • -
      • Declaration Annotation. To customize wrapper code generation, + mechanism that is fully integrated with the C++ type system.
      • +
      • Declaration Annotation. To customize wrapper code generation, most declarations can be annotated with special features. For example, you can make a variable read-only, you can ignore a declaration, you can rename a member function, you can add exception handling, and so forth. Virtually all of these customizations are built on top of a low-level declaration annotator that can attach arbitrary attributes to any declaration. Code generation modules can look for these attributes - to guide the wrapping process.
      • -
      • Class extension. SWIG allows classes and structures to be - extended with new methods and attributes (the %extend + to guide the wrapping process.
      • +
      • Class extension. SWIG allows classes and structures to be + extended with new methods and attributes (the %extend directive). This has the effect of altering the API in the target - language and can be used to generate OO interfaces to C libraries.
      • -
      -

      It is important to emphasize that virtually all SWIG features reduce + language and can be used to generate OO interfaces to C libraries.

    • +
    +

    It is important to emphasize that virtually all SWIG features reduce to one of these three fundamental concepts. The type system and pattern matching rules also play a critical role in making the system work. For example, both typemaps and declaration annotation are based on pattern - matching and interact heavily with the underlying type system.

    -

    41.4 Execution Model

    -

    When you run SWIG on an interface, processing is handled in stages - by a series of system components:

    -
      -
    • An integrated C preprocessor reads a collection of configuration + matching and interact heavily with the underlying type system.

      +

      39.4 Execution Model

      +

      When you run SWIG on an interface, processing is handled in stages + by a series of system components:

      +
        +
      • An integrated C preprocessor reads a collection of configuration files and the specified interface file into memory. The preprocessor performs the usual functions including macro expansion and file inclusion. However, the preprocessor also performs some transformations - of the interface. For instance, #define statements are - sometimes transformed into %constant declarations. In - addition, information related to file/line number tracking is inserted.
      • -
      • A C/C++ parser reads the preprocessed input and generates a full + of the interface. For instance, #define statements are + sometimes transformed into %constant declarations. In + addition, information related to file/line number tracking is inserted.
      • +
      • A C/C++ parser reads the preprocessed input and generates a full parse tree of all of the SWIG directives and C declarations found. The parser is responsible for many aspects of the system including renaming, declaration annotation, and template expansion. However, the parser does not produce any output nor does it interact with the target - language module as it runs. SWIG is not a one-pass compiler.
      • -
      • A type-checking pass is made. This adjusts all of the C++ typenames + language module as it runs. SWIG is not a one-pass compiler.
      • +
      • A type-checking pass is made. This adjusts all of the C++ typenames to properly handle namespaces, typedefs, nested classes, and other - issues related to type scoping.
      • -
      • A semantic pass is made on the parse tree to collect information + issues related to type scoping.
      • +
      • A semantic pass is made on the parse tree to collect information related to properties of the C++ interface. For example, this pass - would determine whether or not a class allows a default constructor.
      • -
      • A code generation pass is made using a specific target language + would determine whether or not a class allows a default constructor.
      • +
      • A code generation pass is made using a specific target language module. This phase is responsible for generating the actual wrapper code. All of SWIG's user-defined modules are invoked during this latter - stage of compilation.
      • -
      -

      The next few sections briefly describe some of these stages.

      -

      41.4.1 Preprocessing

      -

      The preprocessor plays a critical role in the SWIG implementation. + stage of compilation.

    • +
    +

    The next few sections briefly describe some of these stages.

    +

    39.4.1 Preprocessing

    +

    The preprocessor plays a critical role in the SWIG implementation. This is because a lot of SWIG's processing and internal configuration is managed not by code written in C, but by configuration files in the SWIG library. In fact, when you run SWIG, parsing starts with a small interface file like this (note: this explains the cryptic error messages that new users sometimes get when SWIG is misconfigured or - installed incorrectly):

    -
    -
    + installed incorrectly):

    +
    +
     %include "swig.swg"             // Global SWIG configuration
    -%include "langconfig.swg"       // Language specific configuration
    +%include "langconfig.swg"       // Language specific configuration
     %include "yourinterface.i"      // Your interface file
    -
    -
    -

    The swig.swg file contains global configuration +

    +
    +

    The swig.swg file contains global configuration information. In addition, this file defines many of SWIG's standard - directives as macros. For instance, part of of swig.swg looks - like this:

    -
    -
    + directives as macros. For instance, part of of swig.swg looks
    + like this:

    +
    +
     ...
     /* Code insertion directives such as %wrapper %{ ... %} */
     
    @@ -59491,107 +59053,107 @@ Tcl_InitStubs() and Tk_InitStubs() with 
     #define %ignore         %rename($ignore)
     #define %ignorewarn(x)  %rename("$ignore:" x)
     ...
    -
    -
    -

    The fact that most of the standard SWIG directives are macros is +

    +
    +

    The fact that most of the standard SWIG directives are macros is intended to simplify the implementation of the internals. For instance, rather than having to support dozens of special directives, it is - easier to have a few basic primitives such as %feature or -%insert.

    -

    The langconfig.swg file is supplied by the target + easier to have a few basic primitives such as %feature or +%insert.

    +

    The langconfig.swg file is supplied by the target language. This file contains language-specific configuration information. More often than not, this file provides run-time wrapper support code (e.g., the type-checker) as well as a collection of typemaps that define the default wrapping behavior. Note: the name of - this file depends on the target language and is usually something like -python.swg or perl5.swg.

    -

    As a debugging aide, the text that SWIG feeds to its C++ parser can - be obtained by running swig -E interface.i. This output + this file depends on the target language and is usually something like +python.swg or perl5.swg.

    +

    As a debugging aid, the text that SWIG feeds to its C++ parser can + be obtained by running swig -E interface.i. This output probably isn't too useful in general, but it will show how macros have been expanded as well as everything else that goes into the low-level - construction of the wrapper code.

    -

    41.4.2 Parsing

    -

    The current C++ parser handles a subset of C++. Most + construction of the wrapper code.

    +

    39.4.2 Parsing

    +

    The current C++ parser handles a subset of C++. Most incompatibilities with C are due to subtle aspects of how SWIG parses declarations. Specifically, SWIG expects all C/C++ declarations to - follow this general form:

    -
    -
    -storage type declarator initializer;
    -
    -
    -

    storage is a keyword such as extern, -static, typedef, or virtual. type - is a primitive datatype such as int or void. -type may be optionally qualified with a qualifier such as -const or volatile. declarator is a name + follow this general form:

    +
    +
    +storage type declarator initializer;
    +
    +
    +

    storage is a keyword such as extern, +static, typedef, or virtual. type + is a primitive datatype such as int or void. +type may be optionally qualified with a qualifier such as +const or volatile. declarator is a name with additional type-construction modifiers attached to it (pointers, - arrays, references, functions, etc.). Examples of declarators include -*x, **x, x[20], and (*x)(int, double). - The initializer may be a value assigned using = - or body of code enclosed in braces { ... }.

    -

    This declaration format covers most common C++ declarations. + arrays, references, functions, etc.). Examples of declarators include +*x, **x, x[20], and (*x)(int, double). + The initializer may be a value assigned using = + or body of code enclosed in braces { ... }.

    +

    This declaration format covers most common C++ declarations. However, the C++ standard is somewhat more flexible in the placement of the parts. For example, it is technically legal, although uncommon to - write something like int typedef const a in your program. SWIG - simply doesn't bother to deal with this case.

    -

    The other significant difference between C++ and SWIG is in the - treatment of typenames. In C++, if you have a declaration like this,

    -
    -
    + write something like int typedef const a in your program. SWIG
    + simply doesn't bother to deal with this case.

    +

    The other significant difference between C++ and SWIG is in the + treatment of typenames. In C++, if you have a declaration like this,

    +
    +
     int blah(Foo *x, Bar *y);
    -
    -
    -

    it won't parse correctly unless Foo and Bar have - been previously defined as types either using a class - definition or a typedef. The reasons for this are subtle, but +

    +
    +

    it won't parse correctly unless Foo and Bar have + been previously defined as types either using a class + definition or a typedef. The reasons for this are subtle, but this treatment of typenames is normally integrated at the level of the C tokenizer---when a typename appears, a different token is returned to - the parser instead of an identifier.

    -

    SWIG does not operate in this manner--any legal identifier can be + the parser instead of an identifier.

    +

    SWIG does not operate in this manner--any legal identifier can be used as a type name. The reason for this is primarily motivated by the use of SWIG with partially defined data. Specifically, SWIG is supposed - to be easy to use on interfaces with missing type information.

    -

    Because of the different treatment of typenames, the most serious + to be easy to use on interfaces with missing type information.

    +

    Because of the different treatment of typenames, the most serious limitation of the SWIG parser is that it can't process type declarations where an extra (and unnecessary) grouping operator is - used. For example:

    -
    -
    + used. For example:

    +
    +
     int (x);         /* A variable x */
     int (y)(int);    /* A function y */
    -
    -
    -

    The placing of extra parentheses in type declarations like this is +

    +
    +

    The placing of extra parentheses in type declarations like this is already recognized by the C++ community as a potential source of strange programming errors. For example, Scott Meyers "Effective STL" discusses this problem in a section on avoiding C++'s "most vexing - parse."

    -

    The parser is also unable to handle declarations with no return type + parse."

    +

    The parser is also unable to handle declarations with no return type or bare argument names. For example, in an old C program, you might see - things like this:

    -
    -
    + things like this:

    +
    +
     foo(a, b) {
     ...
     }
    -
    -
    -

    In this case, the return type as well as the types of the arguments - are taken by the C compiler to be an int. However, SWIG +

    +
    +

    In this case, the return type as well as the types of the arguments + are taken by the C compiler to be an int. However, SWIG interprets the above code as an abstract declarator for a function - returning a foo and taking types a and b as - arguments).

    -

    41.4.3 Parse Trees

    -

    The SWIG parser produces a complete parse tree of the input file + returning a foo and taking types a and b as + arguments).

    +

    39.4.3 Parse Trees

    +

    The SWIG parser produces a complete parse tree of the input file before any wrapper code is actually generated. Each item in the tree is known as a "Node". Each node is identified by a symbolic tag. Furthermore, a node may have an arbitrary number of children. The parse - tree structure and tag names of an interface can be displayed using -swig -debug-tags. For example:

    -
    -
    -$ swig -c++ -python -debug-tags example.i
    + tree structure and tag names of an interface can be displayed using 
    +swig -debug-tags. For example:

    +
    +
    +$ swig -c++ -python -debug-tags example.i
      . top (example.i:1)
      . top . include (example.i:1)
      . top . include . typemap (/r0/beazley/Projects/lib/swig1.3/swig.swg:71)
    @@ -59631,24 +59193,24 @@ $ swig -c++ -python -debug-tags example.i
      . top . include . include . class . constructor (example.h:31)
      . top . include . include . class . cdecl (example.h:32)
      . top . include . include . class . cdecl (example.h:33)
    -
    -
    -

    Even for the most simple interface, the parse tree structure is +

    +
    +

    Even for the most simple interface, the parse tree structure is larger than you might expect. For example, in the above output, a - substantial number of nodes are actually generated by the -python.swg configuration file which defines typemaps and other + substantial number of nodes are actually generated by the +python.swg configuration file which defines typemaps and other directives. The contents of the user-supplied input file don't appear - until the end of the output.

    -

    The contents of each parse tree node consist of a collection of + until the end of the output.

    +

    The contents of each parse tree node consist of a collection of attribute/value pairs. Internally, the nodes are simply represented by hash tables. A display of the entire parse-tree structure can be - obtained using swig -debug-top <n>, where n is the + obtained using swig -debug-top <n>, where n is the stage being processed. There are a number of other parse tree display - options, for example, swig -debug-module <n> will avoid + options, for example, swig -debug-module <n> will avoid displaying system parse information and only display the parse tree - pertaining to the user's module at stage n of processing.

    -
    -
    + pertaining to the user's module at stage n of processing.

    +
    +
     $ swig -c++ -python -debug-module 4 example.i
           +++ include ----------------------------------------
           | name         - "example.i"
    @@ -59826,45 +59388,45 @@ $ swig -c++ -python -debug-module 4 example.i
                             | storage      - "virtual"
                             | type         - "double"
                             | sym:symtab   - 0x40194788
    -
    -
    -

    41.4.4 Attribute namespaces

    -

    Attributes of parse tree nodes are often prepended with a namespace - qualifier. For example, the attributes sym:name and -sym:symtab are attributes related to symbol table management and - are prefixed with sym:. As a general rule, only those +

    +
    +

    39.4.4 Attribute namespaces

    +

    Attributes of parse tree nodes are often prepended with a namespace + qualifier. For example, the attributes sym:name and +sym:symtab are attributes related to symbol table management and + are prefixed with sym:. As a general rule, only those attributes which are directly related to the raw declaration appear - without a prefix (type, name, declarator, etc.).

    -

    Target language modules may add additional attributes to nodes to + without a prefix (type, name, declarator, etc.).

    +

    Target language modules may add additional attributes to nodes to assist the generation of wrapper code. The convention for doing this is to place these attributes in a namespace that matches the name of the - target language. For example, python:foo or perl:foo.

    -

    41.4.5 Symbol Tables

    -

    During parsing, all symbols are managed in the space of the target - language. The sym:name attribute of each node contains the - symbol name selected by the parser. Normally, sym:name and -name are the same. However, the %rename directive can be - used to change the value of sym:name. You can see the effect - of %rename by trying it on a simple interface and dumping the - parse tree. For example:

    -
    -
    + target language. For example, python:foo or perl:foo.

    +

    39.4.5 Symbol Tables

    +

    During parsing, all symbols are managed in the space of the target + language. The sym:name attribute of each node contains the + symbol name selected by the parser. Normally, sym:name and +name are the same. However, the %rename directive can be + used to change the value of sym:name. You can see the effect + of %rename by trying it on a simple interface and dumping the + parse tree. For example:

    +
    +
     %rename(foo_i) foo(int);
     %rename(foo_d) foo(double);
     
     void foo(int);
     void foo(double);
     void foo(Bar *b);
    -
    -
    -

    There are various debug- options that can be useful for - debugging and analysing the parse tree. For example, the debug-top - <n> or debug-module <n> options will dump the entire/top - of the parse tree or the module subtree at one of the four n +

    +
    +

    There are various debug- options that can be useful for + debugging and analysing the parse tree. For example, the debug-top + <n> or debug-module <n> options will dump the entire/top + of the parse tree or the module subtree at one of the four n stages of processing. The parse tree can be viewed after the final - stage of processing by running SWIG:

    -
    -
    + stage of processing by running SWIG:

    +
    +
     $ swig -debug-top 4 example.i
     ...
                 +++ cdecl ----------------------------------------
    @@ -59890,37 +59452,37 @@ $ swig -debug-top 4 example.i
                 | parms        - Bar *
                 | type         - "void"
                 | sym:symtab   - 0x40165078
    -
    -
    -

    All symbol-related conflicts and complaints about overloading are - based on sym:name values. For instance, the following example - uses %rename in reverse to generate a name clash.

    -
    -
    +
    +
    +

    All symbol-related conflicts and complaints about overloading are + based on sym:name values. For instance, the following example + uses %rename in reverse to generate a name clash.

    +
    +
     %rename(foo) foo_i(int);
    -%rename(foo) foo_d(double;
    +%rename(foo) foo_d(double);
     
     void foo_i(int);
     void foo_d(double);
     void foo(Bar *b);
    -
    -
    -

    When you run SWIG on this you now get:

    -
    -
    +
    +
    +

    When you run SWIG on this you now get:

    +
    +
     $ ./swig example.i
     example.i:6. Overloaded declaration ignored.  foo_d(double )
     example.i:5. Previous declaration is foo_i(int )
     example.i:7. Overloaded declaration ignored.  foo(Bar *)
     example.i:5. Previous declaration is foo_i(int )
    -
    -
    -

    41.4.6 The %feature directive

    -

    A number of SWIG directives such as %exception are - implemented using the low-level %feature directive. For - example:

    -
    -
    +
    +
    +

    39.4.6 The %feature directive

    +

    A number of SWIG directives such as %exception are + implemented using the low-level %feature directive. For + example:

    +
    +
     %feature("except") getitem(int) {
       try {
          $action
    @@ -59935,15 +59497,15 @@ public:
       Object *getitem(int index) throws(badindex);
       ...
     };
    -
    -
    -

    The behavior of %feature is very easy to describe--it +

    +
    +

    The behavior of %feature is very easy to describe--it simply attaches a new attribute to any parse tree node that matches the given prototype. When a feature is added, it shows up as an attribute - in the feature: namespace. You can see this when running with - the -debug-top 4 option. For example:

    -
    -
    + in the feature: namespace. You can see this when running with
    + the -debug-top 4 option. For example:

    +
    +
      +++ cdecl ----------------------------------------
      | sym:name     - "getitem"
      | name         - "getitem"
    @@ -59953,33 +59515,33 @@ public:
      | feature:except - "{\n    try {\n       $action\n    } catc..."
      | sym:symtab   - 0x40168ac8
      |
    -
    -
    -

    Feature names are completely arbitrary and a target language module +

    +
    +

    Feature names are completely arbitrary and a target language module can be programmed to respond to any feature name that it wants to recognize. The data stored in a feature attribute is usually just a raw unparsed string. For example, the exception code above is simply stored - without any modifications.

    -

    41.4.7 Code Generation

    -

    Language modules work by defining handler functions that know how to + without any modifications.

    +

    39.4.7 Code Generation

    +

    Language modules work by defining handler functions that know how to respond to different types of parse-tree nodes. These handlers simply - look at the attributes of each node in order to produce low-level code.

    -

    In reality, the generation of code is somewhat more subtle than + look at the attributes of each node in order to produce low-level code.

    +

    In reality, the generation of code is somewhat more subtle than simply invoking handler functions. This is because parse-tree nodes might be transformed. For example, suppose you are wrapping a class - like this:

    -
    -
    + like this:

    +
    +
     class Foo {
     public:
       virtual int *bar(int x);
     };
    -
    -
    -

    When the parser constructs a node for the member bar, it - creates a raw "cdecl" node with the following attributes:

    -
    -
    +
    +
    +

    When the parser constructs a node for the member bar, it + creates a raw "cdecl" node with the following attributes:

    +
    +
     nodeType    : cdecl
     name        : bar
     type        : int
    @@ -59987,14 +59549,14 @@ decl        : f(int).p
     parms       : int x
     storage     : virtual
     sym:name    : bar
    -
    -
    -

    To produce wrapper code, this "cdecl" node undergoes a number of +

    +
    +

    To produce wrapper code, this "cdecl" node undergoes a number of transformations. First, the node is recognized as a function declaration. This adjusts some of the type information--specifically, - the declarator is joined with the base datatype to produce this:

    -
    -
    + the declarator is joined with the base datatype to produce this:

    +
    +
     nodeType    : cdecl
     name        : bar
     type        : p.int        <-- Notice change in return type
    @@ -60002,13 +59564,13 @@ decl        : f(int).p
     parms       : int x
     storage     : virtual
     sym:name    : bar
    -
    -
    -

    Next, the context of the node indicates that the node is really a +

    +
    +

    Next, the context of the node indicates that the node is really a member function. This produces a transformation to a low-level accessor - function like this:

    -
    -
    + function like this:

    +
    +
     nodeType    : cdecl
     name        : bar
     type        : int.p
    @@ -60017,22 +59579,22 @@ parms       : Foo *self, int x            <-- Added parameter
     storage     : virtual
     wrap:action : result = (arg1)->bar(arg2)  <-- Action code added
     sym:name    : Foo_bar                     <-- Symbol name changed
    -
    -
    -

    In this transformation, notice how an additional parameter was added +

    +
    +

    In this transformation, notice how an additional parameter was added to the parameter list and how the symbol name of the node has suddenly changed into an accessor using the naming scheme described in the "SWIG Basics" chapter. A small fragment of "action" code has also been - generated--notice how the wrap:action attribute defines the + generated--notice how the wrap:action attribute defines the access to the underlying method. The data in this transformed node is - then used to generate a wrapper.

    -

    Language modules work by registering handler functions for dealing + then used to generate a wrapper.

    +

    Language modules work by registering handler functions for dealing with various types of nodes at different stages of transformation. This - is done by inheriting from a special Language class and + is done by inheriting from a special Language class and defining a collection of virtual methods. For example, the Python - module defines a class as follows:

    -
    -
    + module defines a class as follows:

    +
    +
     class PYTHON : public Language {
     protected:
     public :
    @@ -60052,204 +59614,204 @@ public :
       virtual int  insertDirective(Node *);
       virtual int  importDirective(Node *);
     };
    -
    -
    -

    The role of these functions is described shortly.

    -

    41.4.8 SWIG and XML

    -

    Much of SWIG's current parser design was originally motivated by +

    +
    +

    The role of these functions is described shortly.

    +

    39.4.8 SWIG and XML

    +

    Much of SWIG's current parser design was originally motivated by interest in using XML to represent SWIG parse trees. Although XML is not currently used in any direct manner, the parse tree structure, use of node tags, attributes, and attribute namespaces are all influenced by aspects of XML parsing. Therefore, in trying to understand SWIG's internal data structures, it may be useful to keep XML in the back of - your mind as a model.

    -

    41.5 Primitive Data Structures

    -

    Most of SWIG is constructed using three basic data structures: + your mind as a model.

    +

    39.5 Primitive Data Structures

    +

    Most of SWIG is constructed using three basic data structures: strings, hashes, and lists. These data structures are dynamic in same way as similar structures found in many scripting languages. For instance, you can have containers (lists and hash tables) of mixed - types and certain operations are polymorphic.

    -

    This section briefly describes the basic structures so that later - sections of this chapter make more sense.

    -

    When describing the low-level API, the following type name - conventions are used:

    -
      -
    • String. A string object.
    • -
    • Hash. A hash object.
    • -
    • List. A list object.
    • -
    • String_or_char. A string object or a char *.
    • -
    • Object_or_char. An object or a char *.
    • -
    • Object. Any object (string, hash, list, etc.)
    • -
    -

    In most cases, other typenames in the source are aliases for one of - these primitive types. Specifically:

    -
    -
    + types and certain operations are polymorphic.

    +

    This section briefly describes the basic structures so that later + sections of this chapter make more sense.

    +

    When describing the low-level API, the following type name + conventions are used:

    +
      +
    • String. A string object.
    • +
    • Hash. A hash object.
    • +
    • List. A list object.
    • +
    • String_or_char. A string object or a char *.
    • +
    • Object_or_char. An object or a char *.
    • +
    • Object. Any object (string, hash, list, etc.)
    • +
    +

    In most cases, other typenames in the source are aliases for one of + these primitive types. Specifically:

    +
    +
     typedef String SwigType;
     typedef Hash   Parm;
     typedef Hash   ParmList;
     typedef Hash   Node;
     typedef Hash   Symtab;
     typedef Hash   Typetab;
    -
    -
    -

    41.5.1 Strings

    -

    String *NewString(const String_or_char *val)

    -
    Creates a new string with initial value val -. val may be a char * or another String - object. If you want to create an empty string, use "" for val.
    -

    String *NewStringf(const char *fmt, ...)

    -
    Creates a new string whose initial value is set - according to a C printf style format string in fmt. - Additional arguments follow depending on fmt.
    -

    String *Copy(String *s)

    -
    Make a copy of the string s.
    -

    void Delete(String *s)

    -
    Deletes s.
    -

    int Len(const String_or_char *s)

    -
    Returns the length of the string.
    -

    char *Char(const String_or_char *s)

    -
    Returns a pointer to the first character in a - string.
    -

    void Append(String *s, const String_or_char *t)

    -
    Appends t to the end of string s.
    -

    void Insert(String *s, int pos, const String_or_char *t) -

    -
    Inserts t into s at position -pos. The contents of s are shifted accordingly. The - special value DOH_END can be used for pos to indicate - insertion at the end of the string (appending).
    -

    int Strcmp(const String_or_char *s, const String_or_char *t) -

    -
    Compare strings s and t. Same as - the C strcmp() function.
    -

    int Strncmp(const String_or_char *s, const String_or_char *t, - int len)

    -
    Compare the first len characters of - strings s and t. Same as the C strncmp() - function.
    -

    char *Strstr(const String_or_char *s, const String_or_char - *pat)

    -
    Returns a pointer to the first occurrence of -pat in s. Same as the C strstr() function.
    -

    char *Strchr(const String_or_char *s, char ch)

    -
    Returns a pointer to the first occurrence of - character ch in s. Same as the C strchr() - function.
    -

    void Chop(String *s)

    -
    Chops trailing whitespace off the end of s -.
    -

    int Replace(String *s, const String_or_char *pat, const - String_or_char *rep, int flags)

    -
    -

    Replaces the pattern pat with rep in string s -. flags is a combination of the following flags:

    -
    -
    +
    +
    +

    39.5.1 Strings

    +

    String *NewString(const String_or_char *val)

    +
    Creates a new string with initial value val +. val may be a char * or another String + object. If you want to create an empty string, use "" for val.
    +

    String *NewStringf(const char *fmt, ...)

    +
    Creates a new string whose initial value is set + according to a C printf style format string in fmt. + Additional arguments follow depending on fmt.
    +

    String *Copy(String *s)

    +
    Make a copy of the string s.
    +

    void Delete(String *s)

    +
    Deletes s.
    +

    int Len(const String_or_char *s)

    +
    Returns the length of the string.
    +

    char *Char(const String_or_char *s)

    +
    Returns a pointer to the first character in a + string.
    +

    void Append(String *s, const String_or_char *t)

    +
    Appends t to the end of string s.
    +

    void Insert(String *s, int pos, const String_or_char *t) +

    +
    Inserts t into s at position +pos. The contents of s are shifted accordingly. The + special value DOH_END can be used for pos to indicate + insertion at the end of the string (appending).
    +

    int Strcmp(const String_or_char *s, const String_or_char *t) +

    +
    Compare strings s and t. Same as + the C strcmp() function.
    +

    int Strncmp(const String_or_char *s, const String_or_char *t, + int len)

    +
    Compare the first len characters of + strings s and t. Same as the C strncmp() + function.
    +

    char *Strstr(const String_or_char *s, const String_or_char + *pat)

    +
    Returns a pointer to the first occurrence of +pat in s. Same as the C strstr() function.
    +

    char *Strchr(const String_or_char *s, char ch)

    +
    Returns a pointer to the first occurrence of + character ch in s. Same as the C strchr() + function.
    +

    void Chop(String *s)

    +
    Chops trailing whitespace off the end of s +.
    +

    int Replace(String *s, const String_or_char *pat, const + String_or_char *rep, int flags)

    +
    +

    Replaces the pattern pat with rep in string s +. flags is a combination of the following flags:

    +
    +
     DOH_REPLACE_ANY       - Replace all occurrences
     DOH_REPLACE_ID        - Valid C identifiers only
     DOH_REPLACE_NOQUOTE   - Don't replace in quoted strings
     DOH_REPLACE_FIRST     - Replace first occurrence only.
    -
    -
    -

    Returns the number of replacements made (if any).

    -
    -

    41.5.2 Hashes

    -

    Hash *NewHash()

    -
    Creates a new empty hash table.
    -

    Hash *Copy(Hash *h)

    -
    Make a shallow copy of the hash h.
    -

    void Delete(Hash *h)

    -
    Deletes h.
    -

    int Len(Hash *h)

    -
    Returns the number of items in h.
    -

    Object *Getattr(Hash *h, const String_or_char *key)

    -
    Gets an object from h. key may be - a string or a simple char * string. Returns NULL if not found.
    -

    int Setattr(Hash *h, const String_or_char *key, const - Object_or_char *val)

    -
    Stores val in h. key may - be a string or a simple char *. If val is not a - standard object (String, Hash, or List) it is assumed to be a char - * in which case it is used to construct a String that is - stored in the hash. If val is NULL, the object is deleted. - Increases the reference count of val. Returns 1 if this - operation replaced an existing hash entry, 0 otherwise.
    -

    int Delattr(Hash *h, const String_or_char *key)

    -
    Deletes the hash item referenced by key. +
    +
    +

    Returns the number of replacements made (if any).

    + +

    39.5.2 Hashes

    +

    Hash *NewHash()

    +
    Creates a new empty hash table.
    +

    Hash *Copy(Hash *h)

    +
    Make a shallow copy of the hash h.
    +

    void Delete(Hash *h)

    +
    Deletes h.
    +

    int Len(Hash *h)

    +
    Returns the number of items in h.
    +

    Object *Getattr(Hash *h, const String_or_char *key)

    +
    Gets an object from h. key may be + a string or a simple char * string. Returns NULL if not found.
    +

    int Setattr(Hash *h, const String_or_char *key, const + Object_or_char *val)

    +
    Stores val in h. key may + be a string or a simple char *. If val is not a + standard object (String, Hash, or List) it is assumed to be a char + * in which case it is used to construct a String that is + stored in the hash. If val is NULL, the object is deleted. + Increases the reference count of val. Returns 1 if this + operation replaced an existing hash entry, 0 otherwise.
    +

    int Delattr(Hash *h, const String_or_char *key)

    +
    Deletes the hash item referenced by key. Decreases the reference count on the corresponding object (if any). - Returns 1 if an object was removed, 0 otherwise.
    -

    List *Keys(Hash *h)

    -
    Returns the list of hash table keys.
    -

    41.5.3 Lists

    -

    List *NewList()

    -
    Creates a new empty list.
    -

    List *Copy(List *x)

    -
    Make a shallow copy of the List x.
    -

    void Delete(List *x)

    -
    Deletes x.
    -

    int Len(List *x)

    -
    Returns the number of items in x.
    -

    Object *Getitem(List *x, int n)

    -
    Returns an object from x with index n -. If n is beyond the end of the list, the last item is - returned. If n is negative, the first item is returned.
    -

    int *Setitem(List *x, int n, const Object_or_char *val) -

    -
    Stores val in x. If val - is not a standard object (String, Hash, or List) it is assumed to be a -char * in which case it is used to construct a String that - is stored in the list. n must be in range. Otherwise, an - assertion will be raised.
    -

    int *Delitem(List *x, int n)

    -
    Deletes item n from the list, shifting + Returns 1 if an object was removed, 0 otherwise.
    +

    List *Keys(Hash *h)

    +
    Returns the list of hash table keys.
    +

    39.5.3 Lists

    +

    List *NewList()

    +
    Creates a new empty list.
    +

    List *Copy(List *x)

    +
    Make a shallow copy of the List x.
    +

    void Delete(List *x)

    +
    Deletes x.
    +

    int Len(List *x)

    +
    Returns the number of items in x.
    +

    Object *Getitem(List *x, int n)

    +
    Returns an object from x with index n +. If n is beyond the end of the list, the last item is + returned. If n is negative, the first item is returned.
    +

    int *Setitem(List *x, int n, const Object_or_char *val) +

    +
    Stores val in x. If val + is not a standard object (String, Hash, or List) it is assumed to be a +char * in which case it is used to construct a String that + is stored in the list. n must be in range. Otherwise, an + assertion will be raised.
    +

    int *Delitem(List *x, int n)

    +
    Deletes item n from the list, shifting items down if necessary. To delete the last item in the list, use the - special value DOH_END for n.
    -

    void Append(List *x, const Object_or_char *t)

    -
    Appends t to the end of x. If -t is not a standard object, it is assumed to be a char * - and is used to create a String object.
    -

    void Insert(String *s, int pos, const Object_or_char *t) -

    -
    Inserts t into s at position -pos. The contents of s are shifted accordingly. The - special value DOH_END can be used for pos to indicate - insertion at the end of the list (appending). If t is not a - standard object, it is assumed to be a char * and is used to - create a String object.
    -

    41.5.4 Common operations

    + special value DOH_END for n. +

    void Append(List *x, const Object_or_char *t)

    +
    Appends t to the end of x. If +t is not a standard object, it is assumed to be a char * + and is used to create a String object.
    +

    void Insert(String *s, int pos, const Object_or_char *t) +

    +
    Inserts t into s at position +pos. The contents of s are shifted accordingly. The + special value DOH_END can be used for pos to indicate + insertion at the end of the list (appending). If t is not a + standard object, it is assumed to be a char * and is used to + create a String object.
    +

    39.5.4 Common operations

    The following operations are applicable to all datatypes. -

    Object *Copy(Object *x)

    -
    Make a copy of the object x.
    -

    void Delete(Object *x)

    -
    Deletes x.
    -

    void Setfile(Object *x, String_or_char *f)

    -
    Sets the filename associated with x. Used - to track objects and report errors.
    -

    String *Getfile(Object *x)

    -
    Gets the filename associated with x.
    -

    void Setline(Object *x, int n)

    -
    Sets the line number associated with x. - Used to track objects and report errors.
    -

    int Getline(Object *x)

    -
    Gets the line number associated with x.
    -

    41.5.5 Iterating over Lists and Hashes

    +

    Object *Copy(Object *x)

    +
    Make a copy of the object x.
    +

    void Delete(Object *x)

    +
    Deletes x.
    +

    void Setfile(Object *x, String_or_char *f)

    +
    Sets the filename associated with x. Used + to track objects and report errors.
    +

    String *Getfile(Object *x)

    +
    Gets the filename associated with x.
    +

    void Setline(Object *x, int n)

    +
    Sets the line number associated with x. + Used to track objects and report errors.
    +

    int Getline(Object *x)

    +
    Gets the line number associated with x.
    +

    39.5.5 Iterating over Lists and Hashes

    To iterate over the elements of a list or a hash table, the following functions are used: -

    Iterator First(Object *x)

    -
    Returns an iterator object that points to the first - item in a list or hash table. The item attribute of the - Iterator object is a pointer to the item. For hash tables, the key +

    Iterator First(Object *x)

    +
    Returns an iterator object that points to the first + item in a list or hash table. The item attribute of the + Iterator object is a pointer to the item. For hash tables, the key attribute of the Iterator object additionally points to the - corresponding Hash table key. The item and key + corresponding Hash table key. The item and key attributes are NULL if the object contains no items or if there are no - more items.
    -

    Iterator Next(Iterator i)

    -
    -

    Returns an iterator that points to the next item in a list or hash - table. Here are two examples of iteration:

    -
    -
    + more items.
    +

    Iterator Next(Iterator i)

    +
    +

    Returns an iterator that points to the next item in a list or hash + table. Here are two examples of iteration:

    +
    +
     List *l = (some list);
     Iterator i;
     
    @@ -60263,56 +59825,56 @@ Iterator j;
     for (j = First(j); j.item; j= Next(j)) {
       Printf(stdout, "%s : %s\n", j.key, j.item);
     }
    -
    -
    -

    41.5.6 I/O

    + +
    +

    39.5.6 I/O

    Special I/O functions are used for all internal I/O. These operations - work on C FILE * objects, String objects, and special File - objects (which are merely a wrapper around FILE *). -

    int Printf(String_or_FILE *f, const char *fmt, ...)

    -
    Formatted I/O. Same as the C fprintf() + work on C FILE * objects, String objects, and special File + objects (which are merely a wrapper around FILE *). +

    int Printf(String_or_FILE *f, const char *fmt, ...)

    +
    Formatted I/O. Same as the C fprintf() function except that output can also be directed to a string object. - Note: the %s format specifier works with both strings and -char *. All other format operators have the same meaning.
    -

    int Printv(String_or_FILE *f, String_or_char *arg1, ..., - NULL)

    -
    Prints a variable number of strings arguments to + Note: the %s format specifier works with both strings and +char *. All other format operators have the same meaning.
    +

    int Printv(String_or_FILE *f, String_or_char *arg1, ..., + NULL)

    +
    Prints a variable number of strings arguments to the output. The last argument to this function must be NULL. The other - arguments can either be char * or string objects.
    -

    int Putc(int ch, String_or_FILE *f)

    -
    Same as the C fputc() function.
    -

    int Write(String_or_FILE *f, void *buf, int len)

    -
    Same as the C write() function.
    -

    int Read(String_or_FILE *f, void *buf, int maxlen)

    -
    Same as the C read() function.
    -

    int Getc(String_or_FILE *f)

    -
    Same as the C fgetc() function.
    -

    int Ungetc(int ch, String_or_FILE *f)

    -
    Same as the C ungetc() function.
    -

    int Seek(String_or_FILE *f, int offset, int whence)

    -
    Same as the C seek() function. offset - is the number of bytes. whence is one of SEEK_SET, -SEEK_CUR, or SEEK_END..
    -

    long Tell(String_or_FILE *f)

    -
    Same as the C tell() function.
    -

    File *NewFile(const char *filename, const char *mode, List - *newfiles)

    -
    Create a File object using the fopen() - library call. This file differs from FILE * in that it can be - placed in the standard SWIG containers (lists, hashes, etc.). The -filename is added to the newfiles list if newfiles - is non-zero and the file was created successfully.
    -

    File *NewFileFromFile(FILE *f)

    -
    Create a File object wrapper around an existing -FILE * object.
    -

    There's no explicit function to close a file, just call -Delete(f) - this decreases the reference count, and the file will - be closed when the reference count reaches zero.

    -

    The use of the above I/O functions and strings play a critical role + arguments can either be char * or string objects.

    +

    int Putc(int ch, String_or_FILE *f)

    +
    Same as the C fputc() function.
    +

    int Write(String_or_FILE *f, void *buf, int len)

    +
    Same as the C write() function.
    +

    int Read(String_or_FILE *f, void *buf, int maxlen)

    +
    Same as the C read() function.
    +

    int Getc(String_or_FILE *f)

    +
    Same as the C fgetc() function.
    +

    int Ungetc(int ch, String_or_FILE *f)

    +
    Same as the C ungetc() function.
    +

    int Seek(String_or_FILE *f, int offset, int whence)

    +
    Same as the C seek() function. offset + is the number of bytes. whence is one of SEEK_SET, +SEEK_CUR, or SEEK_END..
    +

    long Tell(String_or_FILE *f)

    +
    Same as the C tell() function.
    +

    File *NewFile(const char *filename, const char *mode, List + *newfiles)

    +
    Create a File object using the fopen() + library call. This file differs from FILE * in that it can be + placed in the standard SWIG containers (lists, hashes, etc.). The +filename is added to the newfiles list if newfiles + is non-zero and the file was created successfully.
    +

    File *NewFileFromFile(FILE *f)

    +
    Create a File object wrapper around an existing +FILE * object.
    +

    There's no explicit function to close a file, just call +Delete(f) - this decreases the reference count, and the file will + be closed when the reference count reaches zero.

    +

    The use of the above I/O functions and strings play a critical role in SWIG. It is common to see small code fragments of code generated - using code like this:

    -
    -
    + using code like this:

    +
    +
     /* Print into a string */
     String *s = NewString("");
     Printf(s, "Hello\n");
    @@ -60322,120 +59884,120 @@ for (i = 0; i < 10; i++) {
     ...
     /* Print string into a file */
     Printf(f, "%s\n", s);
    -
    -
    -

    Similarly, the preprocessor and parser all operate on string-files.

    -

    41.6 Navigating and manipulating parse - trees

    +
    +
    +

    Similarly, the preprocessor and parser all operate on string-files.

    +

    39.6 Navigating and manipulating parse + trees

    Parse trees are built as collections of hash tables. Each node is a hash table in which arbitrary attributes can be stored. Certain attributes in the hash table provide links to other parse tree nodes. The following macros can be used to move around the parse tree. -

    String *nodeType(Node *n)

    -
    Returns the node type tag as a string. The returned - string indicates the type of parse tree node.
    -

    Node *nextSibling(Node *n)

    -
    Returns the next node in the parse tree. For - example, the next C declaration.
    -

    Node *previousSibling(Node *n)

    -
    Returns the previous node in the parse tree. For - example, the previous C declaration.
    -

    Node *firstChild(Node *n)

    -
    Returns the first child node. For example, if n +

    String *nodeType(Node *n)

    +
    Returns the node type tag as a string. The returned + string indicates the type of parse tree node.
    +

    Node *nextSibling(Node *n)

    +
    Returns the next node in the parse tree. For + example, the next C declaration.
    +

    Node *previousSibling(Node *n)

    +
    Returns the previous node in the parse tree. For + example, the previous C declaration.
    +

    Node *firstChild(Node *n)

    +
    Returns the first child node. For example, if n was a C++ class node, this would return the node for the first class - member.
    -

    Node *lastChild(Node *n)

    -
    Returns the last child node. You might use this if - you wanted to append a new node to the of a class.
    -

    Node *parentNode(Node *n)

    -
    Returns the parent of node n. Use this to - move up the pass tree.
    -

    The following macros can be used to change all of the above + member.

    +

    Node *lastChild(Node *n)

    +
    Returns the last child node. You might use this if + you wanted to append a new node to the children of a class.
    +

    Node *parentNode(Node *n)

    +
    Returns the parent of node n. Use this to + move up the pass tree.
    +

    The following macros can be used to change all of the above attributes. Normally, these functions are only used by the parser. Changing them without knowing what you are doing is likely to be - dangerous.

    -

    void set_nodeType(Node *n, const String_or_char)

    -
    Change the node type. tree node.
    -

    void set_nextSibling(Node *n, Node *s)

    -
    Set the next sibling.
    -

    void set_previousSibling(Node *n, Node *s)

    -
    Set the previous sibling.
    -

    void set_firstChild(Node *n, Node *c)

    -
    Set the first child node.
    -

    void set_lastChild(Node *n, Node *c)

    -
    Set the last child node.
    -

    void set_parentNode(Node *n, Node *p)

    -
    Set the parent node.
    -

    The following utility functions are used to alter the parse tree (at - your own risk)

    -

    void appendChild(Node *parent, Node *child)

    -
    Append a child to parent. The appended - node becomes the last child.
    -

    void deleteNode(Node *node)

    -
    Deletes a node from the parse tree. Deletion + dangerous.

    +

    void set_nodeType(Node *n, const String_or_char)

    +
    Change the node type. tree node.
    +

    void set_nextSibling(Node *n, Node *s)

    +
    Set the next sibling.
    +

    void set_previousSibling(Node *n, Node *s)

    +
    Set the previous sibling.
    +

    void set_firstChild(Node *n, Node *c)

    +
    Set the first child node.
    +

    void set_lastChild(Node *n, Node *c)

    +
    Set the last child node.
    +

    void set_parentNode(Node *n, Node *p)

    +
    Set the parent node.
    +

    The following utility functions are used to alter the parse tree (at + your own risk)

    +

    void appendChild(Node *parent, Node *child)

    +
    Append a child to parent. The appended + node becomes the last child.
    +

    void deleteNode(Node *node)

    +
    Deletes a node from the parse tree. Deletion reconnects siblings and properly updates the parent so that sibling - nodes are unaffected.
    -

    41.7 Working with attributes

    -

    Since parse tree nodes are just hash tables, attributes are accessed - using the Getattr(), Setattr(), and Delattr() - operations. For example:

    -
    -
    + nodes are unaffected.
    +

    39.7 Working with attributes

    +

    Since parse tree nodes are just hash tables, attributes are accessed + using the Getattr(), Setattr(), and Delattr() + operations. For example:

    +
    +
     int functionHandler(Node *n) {
       String *name    = Getattr(n, "name");
       String *symname = Getattr(n, "sym:name");
       SwigType *type  = Getattr(n, "type");
       ...
     }
    -
    -
    -

    New attributes can be freely attached to a node as needed. However, + +

    +

    New attributes can be freely attached to a node as needed. However, when new attributes are attached during code generation, they should be - prepended with a namespace prefix. For example:

    -
    -
    + prepended with a namespace prefix. For example:

    +
    +
     ...
     Setattr(n, "python:docstring", doc);     /* Store docstring */
     ...
    -
    -
    -

    A quick way to check the value of an attribute is to use the -checkAttribute() function like this:

    -
    -
    +
    +
    +

    A quick way to check the value of an attribute is to use the +checkAttribute() function like this:

    +
    +
     if (checkAttribute(n, "storage", "virtual")) {
       /* n is virtual */
       ...
     }
    -
    -
    -

    Changing the values of existing attributes is allowed and is +

    +
    +

    Changing the values of existing attributes is allowed and is sometimes done to implement node transformations. However, if a function/method modifies a node, it is required to restore modified attributes to their original values. To simplify the task of - saving/restoring attributes, the following functions are used:

    -

    int Swig_save(const char *ns, Node *n, const char *name1, - const char *name2, ..., NIL)

    -
    Saves a copy of attributes name1, -name2, etc. from node n. Copies of the attributes are + saving/restoring attributes, the following functions are used:

    +

    int Swig_save(const char *ns, Node *n, const char *name1, + const char *name2, ..., NIL)

    +
    Saves a copy of attributes name1, +name2, etc. from node n. Copies of the attributes are actually resaved in the node in a different namespace which is set by - the ns argument. For example, if you call Swig_save("foo", - n, "type", NIL), then the "type" attribute will be copied and + the ns argument. For example, if you call Swig_save("foo", + n, "type", NIL), then the "type" attribute will be copied and saved as "foo:type". The namespace name itself is stored in the "view" attribute of the node. If necessary, this can be examined to find out - where previous values of attributes might have been saved.
    -

    int Swig_restore(Node *n)

    -
    -

    Restores the attributes saved by the previous call to -Swig_save(). Those attributes that were supplied to Swig_save() - will be restored to their original values.

    -

    The Swig_save() and Swig_restore() functions must - always be used as a pair. That is, every call to Swig_save() - must have a matching call to Swig_restore(). Calls can be + where previous values of attributes might have been saved.

    +

    int Swig_restore(Node *n)

    +
    +

    Restores the attributes saved by the previous call to +Swig_save(). Those attributes that were supplied to Swig_save() + will be restored to their original values.

    +

    The Swig_save() and Swig_restore() functions must + always be used as a pair. That is, every call to Swig_save() + must have a matching call to Swig_restore(). Calls can be nested if necessary. Here is an example that shows how the functions - might be used:

    -
    -
    + might be used:

    +
    +
     int variableHandler(Node *n) {
       Swig_save("variableHandler", n, "type", "sym:name", NIL);
       String *symname = Getattr(n, "sym:name");
    @@ -60449,31 +60011,31 @@ int variableHandler(Node *n) {
       Swig_restore(n);                  // Restore original values
       return SWIG_OK;
     }
    -
    -
    -

    int Swig_require(const char *ns, Node *n, const char *name1, - const char *name2, ..., NIL)

    -
    This is an enhanced version of Swig_save() - that adds error checking. If an attribute name is not present in n + +
    +

    int Swig_require(const char *ns, Node *n, const char *name1, + const char *name2, ..., NIL)

    +
    This is an enhanced version of Swig_save() + that adds error checking. If an attribute name is not present in n , a failed assertion results and SWIG terminates with a fatal error. - Optionally, if an attribute name is specified as "*name", a - copy of the attribute is saved as with Swig_save(). If an - attribute is specified as "?name", the attribute is optional. -Swig_restore() must always be called after using this function.
    -

    41.8 Type system

    -

    SWIG implements the complete C++ type system including typedef, + Optionally, if an attribute name is specified as "*name", a + copy of the attribute is saved as with Swig_save(). If an + attribute is specified as "?name", the attribute is optional. +Swig_restore() must always be called after using this function.

    +

    39.8 Type system

    +

    SWIG implements the complete C++ type system including typedef, inheritance, pointers, references, and pointers to members. A detailed discussion of type theory is impossible here. However, let's cover the - highlights.

    -

    41.8.1 String encoding of types

    -

    All types in SWIG consist of a base datatype and a collection of + highlights.

    +

    39.8.1 String encoding of types

    +

    All types in SWIG consist of a base datatype and a collection of type operators that are applied to the base. A base datatype is almost - always some kind of primitive type such as int or double + always some kind of primitive type such as int or double . The operators consist of things like pointers, references, arrays, and so forth. Internally, types are represented as strings that are - constructed in a very precise manner. Here are some examples:

    -
    -
    + constructed in a very precise manner. Here are some examples:

    +
    +
     C datatype                     SWIG encoding (strings)
     -----------------------------  --------------------------
     int                            "int"
    @@ -60483,15 +60045,15 @@ int (*x)(int, double)          "p.f(int, double).int"
     int [20][30]                   "a(20).a(30).int"
     int (F::*)(int)                "m(F).f(int).int"
     vector<int> *                  "p.vector<(int)>"
    -
    -
    -

    Reading the SWIG encoding is often easier than figuring out the C +

    +
    +

    Reading the SWIG encoding is often easier than figuring out the C code---just read it from left to right. For a type of "p.f(int, double).int" is a "pointer to a function(int, double) that returns - int".

    -

    The following operator encodings are used in type strings:

    -
    -
    + int".

    +

    The following operator encodings are used in type strings:

    +
    +
     Operator              Meaning
     -------------------   -------------------------------
     p.                    Pointer to
    @@ -60500,271 +60062,271 @@ r.                    C++ reference
     m(class).             Member pointer to class
     f(args).              Function.
     q(qlist).             Qualifiers
    -
    -
    -

    In addition, type names may be parameterized by templates. This is - represented by enclosing the template parameters in <( ... )>. - Variable length arguments are represented by the special base type of -v(...).

    -

    If you want to experiment with type encodings, the raw type strings +

    +
    +

    In addition, type names may be parameterized by templates. This is + represented by enclosing the template parameters in <( ... )>. + Variable length arguments are represented by the special base type of +v(...).

    +

    If you want to experiment with type encodings, the raw type strings can be inserted into an interface file using backticks `` wherever a - type is expected. For instance, here is an extremely perverted example:

    -
    -
    + type is expected. For instance, here is an extremely perverted example:

    +
    +
     `p.a(10).p.f(int, p.f(int).int)` foo(int, int (*x)(int));
    -
    -
    -

    This corresponds to the immediately obvious C declaration:

    -
    -
    +
    +
    +

    This corresponds to the immediately obvious C declaration:

    +
    +
     (*(*foo(int, int (*)(int)))[10])(int, int (*)(int));
    -
    -
    -

    Aside from the potential use of this declaration on a C programming +

    +
    +

    Aside from the potential use of this declaration on a C programming quiz, it motivates the use of the special SWIG encoding of types. The SWIG encoding is much easier to work with because types can be easily examined, modified, and constructed using simple string operations (comparison, substrings, concatenation, etc.). For example, in the - parser, a declaration like this

    -
    -
    + parser, a declaration like this

    +
    +
     int *a[30];
    -
    -
    -

    is processed in a few pieces. In this case, you have the base type " -int" and the declarator of type "a(30).p.". To make the +

    +
    +

    is processed in a few pieces. In this case, you have the base type " +int" and the declarator of type "a(30).p.". To make the final type, the two parts are just joined together using string - concatenation.

    -

    41.8.2 Type construction

    -

    The following functions are used to construct types. You should use - these functions instead of trying to build the type strings yourself.

    -

    void SwigType_add_pointer(SwigType *ty)

    -
    Adds a pointer to ty.
    -

    void SwigType_del_pointer(SwigType *ty)

    -
    Removes a single pointer from ty.
    -

    void SwigType_add_reference(SwigType *ty)

    -
    Adds a reference to ty.
    -

    void SwigType_add_array(SwigType *ty, const String_or_char - *size)

    -
    Adds an array with dimension dim to ty -.
    -

    void SwigType_del_array(SwigType *ty)

    -
    Removes a single array dimension from ty.
    -

    int SwigType_array_ndim(SwigType *ty)

    -
    Returns number of array dimensions of ty.
    -

    String* SwigType_array_getdim(SwigType *ty, int n)

    -
    Returns nth array dimension of ty -.
    -

    void SwigType_array_setdim(SwigType *ty, int n, const - String_or_char *rep)

    -
    Sets nth array dimensions of ty - to rep.
    -

    void SwigType_add_qualifier(SwigType *ty, const - String_or_char *q)

    -
    Adds a type qualifier q to ty. -q is typically "const" or "volatile".
    -

    void SwigType_add_memberpointer(SwigType *ty, const - String_or_char *cls)

    -
    Adds a pointer to a member of class cls to - ty.
    -

    void SwigType_add_function(SwigType *ty, ParmList *p) -

    -
    Adds a function to ty. p is a + concatenation.

    +

    39.8.2 Type construction

    +

    The following functions are used to construct types. You should use + these functions instead of trying to build the type strings yourself.

    +

    void SwigType_add_pointer(SwigType *ty)

    +
    Adds a pointer to ty.
    +

    void SwigType_del_pointer(SwigType *ty)

    +
    Removes a single pointer from ty.
    +

    void SwigType_add_reference(SwigType *ty)

    +
    Adds a reference to ty.
    +

    void SwigType_add_array(SwigType *ty, const String_or_char + *size)

    +
    Adds an array with dimension dim to ty +.
    +

    void SwigType_del_array(SwigType *ty)

    +
    Removes a single array dimension from ty.
    +

    int SwigType_array_ndim(SwigType *ty)

    +
    Returns number of array dimensions of ty.
    +

    String* SwigType_array_getdim(SwigType *ty, int n)

    +
    Returns nth array dimension of ty +.
    +

    void SwigType_array_setdim(SwigType *ty, int n, const + String_or_char *rep)

    +
    Sets nth array dimensions of ty + to rep.
    +

    void SwigType_add_qualifier(SwigType *ty, const + String_or_char *q)

    +
    Adds a type qualifier q to ty. +q is typically "const" or "volatile".
    +

    void SwigType_add_memberpointer(SwigType *ty, const + String_or_char *cls)

    +
    Adds a pointer to a member of class cls to + ty.
    +

    void SwigType_add_function(SwigType *ty, ParmList *p) +

    +
    Adds a function to ty. p is a linked-list of parameter nodes as generated by the parser. See the - section on parameter lists for details about the representation.
    -

    void SwigType_add_template(SwigType *ty, ParmList *p) -

    -
    Adds a template to ty. p is a + section on parameter lists for details about the representation.
    +

    void SwigType_add_template(SwigType *ty, ParmList *p) +

    +
    Adds a template to ty. p is a linked-list of parameter nodes as generated by the parser. See the - section on parameter lists for details about the representation.
    -

    SwigType *SwigType_pop(SwigType *ty)

    -
    Removes the last type constructor from ty - and returns it. ty is modified.
    -

    void SwigType_push(SwigType *ty, SwigType *op)

    -
    Pushes the type operators in op onto type -ty. The opposite of SwigType_pop().
    -

    SwigType *SwigType_pop_arrays(SwigType *ty)

    -
    Removes all leading array operators from ty - and returns them. ty is modified. For example, if ty - is "a(20).a(10).p.int", then this function would return -"a(20).a(10)." and modify ty so that it has the value -"p.int".
    -

    SwigType *SwigType_pop_function(SwigType *ty)

    -
    Removes a function operator from ty - including any qualification. ty is modified. For example, if -ty is "f(int).int", then this function would return -"f(int)." and modify ty so that it has the value "int" -.
    -

    SwigType *SwigType_base(SwigType *ty)

    -
    Returns the base type of a type. For example, if -ty is "p.a(20).int", this function would return "int" -. ty is unmodified.
    -

    SwigType *SwigType_prefix(SwigType *ty)

    -
    Returns the prefix of a type. For example, if -ty is "p.a(20).int", this function would return -"p.a(20).". ty is unmodified.
    -

    41.8.3 Type tests

    -

    The following functions can be used to test properties of a - datatype.

    -

    int SwigType_ispointer(SwigType *ty)

    -
    Checks if ty is a standard pointer.
    -

    int SwigType_ismemberpointer(SwigType *ty)

    -
    Checks if ty is a member pointer.
    -

    int SwigType_isreference(SwigType *ty)

    -
    Checks if ty is a C++ reference.
    -

    int SwigType_isarray(SwigType *ty)

    -
    Checks if ty is an array.
    -

    int SwigType_isfunction(SwigType *ty)

    -
    Checks if ty is a function.
    -

    int SwigType_isqualifier(SwigType *ty)

    -
    Checks if ty is a qualifier.
    -

    int SwigType_issimple(SwigType *ty)

    -
    Checks if ty is a simple type. No - operators applied.
    -

    int SwigType_isconst(SwigType *ty)

    -
    Checks if ty is a const type.
    -

    int SwigType_isvarargs(SwigType *ty)

    -
    Checks if ty is a varargs type.
    -

    int SwigType_istemplate(SwigType *ty)

    -
    Checks if ty is a templatized type.
    -

    41.8.4 Typedef and inheritance

    -

    The behavior of typedef declaration is to introduce a type - alias. For instance, typedef int Integer makes the identifier -Integer an alias for int. The treatment of typedef in SWIG + section on parameter lists for details about the representation.

    +

    SwigType *SwigType_pop(SwigType *ty)

    +
    Removes the last type constructor from ty + and returns it. ty is modified.
    +

    void SwigType_push(SwigType *ty, SwigType *op)

    +
    Pushes the type operators in op onto type +ty. The opposite of SwigType_pop().
    +

    SwigType *SwigType_pop_arrays(SwigType *ty)

    +
    Removes all leading array operators from ty + and returns them. ty is modified. For example, if ty + is "a(20).a(10).p.int", then this function would return +"a(20).a(10)." and modify ty so that it has the value +"p.int".
    +

    SwigType *SwigType_pop_function(SwigType *ty)

    +
    Removes a function operator from ty + including any qualification. ty is modified. For example, if +ty is "f(int).int", then this function would return +"f(int)." and modify ty so that it has the value "int" +.
    +

    SwigType *SwigType_base(SwigType *ty)

    +
    Returns the base type of a type. For example, if +ty is "p.a(20).int", this function would return "int" +. ty is unmodified.
    +

    SwigType *SwigType_prefix(SwigType *ty)

    +
    Returns the prefix of a type. For example, if +ty is "p.a(20).int", this function would return +"p.a(20).". ty is unmodified.
    +

    39.8.3 Type tests

    +

    The following functions can be used to test properties of a + datatype.

    +

    int SwigType_ispointer(SwigType *ty)

    +
    Checks if ty is a standard pointer.
    +

    int SwigType_ismemberpointer(SwigType *ty)

    +
    Checks if ty is a member pointer.
    +

    int SwigType_isreference(SwigType *ty)

    +
    Checks if ty is a C++ reference.
    +

    int SwigType_isarray(SwigType *ty)

    +
    Checks if ty is an array.
    +

    int SwigType_isfunction(SwigType *ty)

    +
    Checks if ty is a function.
    +

    int SwigType_isqualifier(SwigType *ty)

    +
    Checks if ty is a qualifier.
    +

    int SwigType_issimple(SwigType *ty)

    +
    Checks if ty is a simple type. No + operators applied.
    +

    int SwigType_isconst(SwigType *ty)

    +
    Checks if ty is a const type.
    +

    int SwigType_isvarargs(SwigType *ty)

    +
    Checks if ty is a varargs type.
    +

    int SwigType_istemplate(SwigType *ty)

    +
    Checks if ty is a templatized type.
    +

    39.8.4 Typedef and inheritance

    +

    The behavior of typedef declaration is to introduce a type + alias. For instance, typedef int Integer makes the identifier +Integer an alias for int. The treatment of typedef in SWIG is somewhat complicated due to the pattern matching rules that get applied in typemaps and the fact that SWIG prefers to generate wrapper code that closely matches the input to simplify debugging (a user will see the typedef names used in their program instead of the low-level - primitive C datatypes).

    -

    To handle typedef, SWIG builds a collection of trees - containing typedef relations. For example,

    -
    -
    + primitive C datatypes).

    +

    To handle typedef, SWIG builds a collection of trees + containing typedef relations. For example,

    +
    +
     typedef int Integer;
     typedef Integer *IntegerPtr;
     typedef int Number;
     typedef int Size;
    -
    -
    -

    produces two trees like this:

    -
    -
    +
    +
    +

    produces two trees like this:

    +
    +
                      int               p.Integer
                    ^  ^  ^                 ^
                   /   |   \                |
                  /    |    \               |
             Integer  Size   Number    IntegerPtr
    -
    -
    -

    To resolve a single typedef relationship, the following function is - used:

    -

    SwigType *SwigType_typedef_resolve(SwigType *ty)

    -
    Checks if ty can be reduced to a new type - via typedef. If so, returns the new type. If not, returns NULL.
    -

    Typedefs are only resolved in simple typenames that appear in a +

    +
    +

    To resolve a single typedef relationship, the following function is + used:

    +

    SwigType *SwigType_typedef_resolve(SwigType *ty)

    +
    Checks if ty can be reduced to a new type + via typedef. If so, returns the new type. If not, returns NULL.
    +

    Typedefs are only resolved in simple typenames that appear in a type. For example, the type base name and in function parameters. When resolving types, the process starts in the leaf nodes and moves up the - tree towards the root. Here are a few examples that show how it works:

    -
    -
    + tree towards the root. Here are a few examples that show how it works:

    +
    +
     Original type            After typedef_resolve()
     ------------------------ -----------------------
     Integer                  int
     a(30).Integer            int
     p.IntegerPtr             p.p.Integer
     p.p.Integer              p.p.int
    -
    -
    -

    For complicated types, the process can be quite involved. Here is - the reduction of a function pointer:

    -
    -
    +
    +
    +

    For complicated types, the process can be quite involved. Here is + the reduction of a function pointer:

    +
    +
     p.f(Integer, p.IntegerPtr, Size).Integer          : Start
     p.f(Integer, p.IntegerPtr, Size).int
     p.f(int, p.IntegerPtr, Size).int
     p.f(int, p.p.Integer, Size).int
     p.f(int, p.p.int, Size).int
     p.f(int, p.p.int, int).int                        : End
    -
    -
    -

    Two types are equivalent if their full type reductions are the same. - The following function will fully reduce a datatype:

    -

    SwigType *SwigType_typedef_resolve_all(SwigType *ty)

    -
    Fully reduces ty according to typedef - rules. Resulting datatype will consist only of primitive typenames.
    -

    41.8.5 Lvalues

    -

    When generating wrapper code, it is necessary to emit datatypes that +

    +
    +

    Two types are equivalent if their full type reductions are the same. + The following function will fully reduce a datatype:

    +

    SwigType *SwigType_typedef_resolve_all(SwigType *ty)

    +
    Fully reduces ty according to typedef + rules. Resulting datatype will consist only of primitive typenames.
    +

    39.8.5 Lvalues

    +

    When generating wrapper code, it is necessary to emit datatypes that can be used on the left-hand side of an assignment operator (an lvalue). However, not all C datatypes can be used in this way---especially arrays and const-qualified types. To generate a type - that can be used as an lvalue, use the following function:

    -

    SwigType *SwigType_ltype(SwigType *ty)

    -
    Converts type ty to a type that can be + that can be used as an lvalue, use the following function:

    +

    SwigType *SwigType_ltype(SwigType *ty)

    +
    Converts type ty to a type that can be used as an lvalue in assignment. The resulting type is stripped of - qualifiers and arrays are converted to a pointers.
    -

    The creation of lvalues is fully aware of typedef and other aspects + qualifiers and arrays are converted to a pointers.

    +

    The creation of lvalues is fully aware of typedef and other aspects of the type system. Therefore, the creation of an lvalue may result in - unexpected results. Here are a few examples:

    -
    -
    + unexpected results. Here are a few examples:

    +
    +
     typedef double Matrix4[4][4];
     Matrix4 x;    // type = 'Matrix4', ltype='p.a(4).double'
     
     typedef const char * Literal;
     Literal y;    // type = 'Literal', ltype='p.char'
    -
    -
    -

    41.8.6 Output functions

    -

    The following functions produce strings that are suitable for - output.

    -

    String *SwigType_str(SwigType *ty, const String_or_char *id = - 0)

    -
    Generates a C string for a datatype. id is - an optional declarator. For example, if ty is "p.f(int).int" - and id is "foo", then this function produces "int - (*foo)(int)". This function is used to convert string-encoded - types back into a form that is valid C syntax.
    -

    String *SwigType_lstr(SwigType *ty, const String_or_char *id - = 0)

    -
    This is the same as SwigType_str() except +
    +
    +

    39.8.6 Output functions

    +

    The following functions produce strings that are suitable for + output.

    +

    String *SwigType_str(SwigType *ty, const String_or_char *id = + 0)

    +
    Generates a C string for a datatype. id is + an optional declarator. For example, if ty is "p.f(int).int" + and id is "foo", then this function produces "int + (*foo)(int)". This function is used to convert string-encoded + types back into a form that is valid C syntax.
    +

    String *SwigType_lstr(SwigType *ty, const String_or_char *id + = 0)

    +
    This is the same as SwigType_str() except that the result is generated from the type's lvalue (as generated from - SwigType_ltype).
    -

    String *SwigType_lcaststr(SwigType *ty, const String_or_char - *id = 0)

    -
    Generates a casting operation that converts from - type ty to its lvalue. id is an optional name to - include in the cast. For example, if ty is " -q(const).p.char" and id is "foo", this function - produces the string "(char *) foo".
    -

    String *SwigType_rcaststr(SwigType *ty, const String_or_char - *id = 0)

    -
    Generates a casting operation that converts from a - type's lvalue to a type equivalent to ty. id is an - optional name to include in the cast. For example, if ty is " -q(const).p.char" and id is "foo", this function - produces the string "(const char *) foo".
    -

    String *SwigType_manglestr(SwigType *ty)

    -
    Generates a mangled string encoding of type ty + SwigType_ltype).
    +

    String *SwigType_lcaststr(SwigType *ty, const String_or_char + *id = 0)

    +
    Generates a casting operation that converts from + type ty to its lvalue. id is an optional name to + include in the cast. For example, if ty is " +q(const).p.char" and id is "foo", this function + produces the string "(char *) foo".
    +

    String *SwigType_rcaststr(SwigType *ty, const String_or_char + *id = 0)

    +
    Generates a casting operation that converts from a + type's lvalue to a type equivalent to ty. id is an + optional name to include in the cast. For example, if ty is " +q(const).p.char" and id is "foo", this function + produces the string "(const char *) foo".
    +

    String *SwigType_manglestr(SwigType *ty)

    +
    Generates a mangled string encoding of type ty . The mangled string only contains characters that are part of a valid C identifier. The resulting string is used in various parts of SWIG, but is most commonly associated with type-descriptor objects that appear in - wrappers (e.g., SWIGTYPE_p_double).
    -

    41.9 Parameters

    -

    Several type-related functions involve parameter lists. These + wrappers (e.g., SWIGTYPE_p_double). +

    39.9 Parameters

    +

    Several type-related functions involve parameter lists. These include functions and templates. Parameter list are represented as a - list of nodes with the following attributes:

    -
    -
    + list of nodes with the following attributes:

    +
    +
     "type"        -  Parameter type  (required)
     "name"        -  Parameter name  (optional)
     "value"       -  Initializer     (optional)
    -
    -
    -

    Typically parameters are denoted in the source by using a typename - of Parm * or ParmList *. To walk a parameter list, - simply use code like this:

    -
    -
    +
    +
    +

    Typically parameters are denoted in the source by using a typename + of Parm * or ParmList *. To walk a parameter list, + simply use code like this:

    +
    +
     Parm *parms;
     Parm *p;
     for (p = parms; p; p = nextSibling(p)) {
    @@ -60773,49 +60335,49 @@ for (p = parms; p; p = nextSibling(p)) {
       String   *value = Getattr(p, "value");
       ...
     }
    -
    -
    -

    Note: this code is exactly the same as what you would use to walk - parse tree nodes.

    -

    An empty list of parameters is denoted by a NULL pointer.

    -

    Since parameter lists are fairly common, the following utility - functions are provided to manipulate them:

    -

    Parm *CopyParm(Parm *p);

    -
    Copies a single parameter.
    -

    ParmList *CopyParmList(ParmList *p);

    -
    Copies an entire list of parameters.
    -

    int ParmList_len(ParmList *p);

    -
    Returns the number of parameters in a parameter - list.
    -

    String *ParmList_str(ParmList *p);

    -
    Converts a parameter list into a C string. For - example, produces a string like "(int *p, int n, double x);".
    -

    String *ParmList_protostr(ParmList *p);

    -
    The same as ParmList_str() except that - parameter names are not included. Used to emit prototypes.
    -

    int ParmList_numrequired(ParmList *p);

    -
    Returns the number of required (non-optional) - arguments in p.
    -

    41.10 Writing a Language Module

    -

    One of the easiest routes to supporting a new language module is to +

    +
    +

    Note: this code is exactly the same as what you would use to walk + parse tree nodes.

    +

    An empty list of parameters is denoted by a NULL pointer.

    +

    Since parameter lists are fairly common, the following utility + functions are provided to manipulate them:

    +

    Parm *CopyParm(Parm *p);

    +
    Copies a single parameter.
    +

    ParmList *CopyParmList(ParmList *p);

    +
    Copies an entire list of parameters.
    +

    int ParmList_len(ParmList *p);

    +
    Returns the number of parameters in a parameter + list.
    +

    String *ParmList_str(ParmList *p);

    +
    Converts a parameter list into a C string. For + example, produces a string like "(int *p, int n, double x);".
    +

    String *ParmList_protostr(ParmList *p);

    +
    The same as ParmList_str() except that + parameter names are not included. Used to emit prototypes.
    +

    int ParmList_numrequired(ParmList *p);

    +
    Returns the number of required (non-optional) + arguments in p.
    +

    39.10 Writing a Language Module

    +

    One of the easiest routes to supporting a new language module is to copy an already supported language module implementation and modify it. Be sure to choose a language that is similar in nature to the new language. All language modules follow a similar structure and this section briefly outlines the steps needed to create a bare-bones language module from scratch. Since the code is relatively easy to read, this section describes the creation of a minimal Python module. - You should be able to extrapolate this to other languages.

    -

    41.10.1 Execution model

    -

    Code generation modules are defined by inheriting from the -Language class, currently defined in the Source/Modules + You should be able to extrapolate this to other languages.

    +

    39.10.1 Execution model

    +

    Code generation modules are defined by inheriting from the +Language class, currently defined in the Source/Modules directory of SWIG. Starting from the parsing of command line options, all aspects of code generation are controlled by different methods of - the Language that must be defined by your module.

    -

    41.10.2 Starting out

    -

    To define a new language module, first create a minimal - implementation using this example as a guide:

    -
    -
    + the Language that must be defined by your module.

    +

    39.10.2 Starting out

    +

    To define a new language module, first create a minimal + implementation using this example as a guide:

    +
    +
     #include "swigmod.h"
     
     class PYTHON : public Language {
    @@ -60836,118 +60398,118 @@ extern "C" Language *
     swig_python(void) {
       return new PYTHON();
     }
    -
    -
    -

    The "swigmod.h" header file contains, among other things, the - declaration of the Language base class and so you should +

    +
    +

    The "swigmod.h" header file contains, among other things, the + declaration of the Language base class and so you should include it at the top of your language module's source file. Similarly, the "swigconfig.h" header file contains some other useful definitions - that you may need. Note that you should not include any header + that you may need. Note that you should not include any header files that are installed with the target language. That is to say, the implementation of the SWIG Python module shouldn't have any dependencies on the Python header files. The wrapper code generated by SWIG will almost always depend on some language-specific C/C++ header - files, but SWIG itself does not.

    -

    Give your language class a reasonable name, usually the same as the + files, but SWIG itself does not.

    +

    Give your language class a reasonable name, usually the same as the target language. By convention, these class names are all uppercase (e.g. "PYTHON" for the Python language module) but this is not a requirement. This class will ultimately consist of a number of - overrides of the virtual functions declared in the Language + overrides of the virtual functions declared in the Language base class, in addition to any language-specific member functions and - data you need. For now, just use the dummy implementations shown above.

    -

    The language module ends with a factory function, swig_python() + data you need. For now, just use the dummy implementations shown above.

    +

    The language module ends with a factory function, swig_python() , that simply returns a new instance of the language class. As shown, it - should be declared with the extern "C" storage qualifier so + should be declared with the extern "C" storage qualifier so that it can be called from C code. It should also return a pointer to - the base class (Language) so that only the interface (and not + the base class (Language) so that only the interface (and not the implementation) of your language module is exposed to the rest of - SWIG.

    -

    Save the code for your language module in a file named " -python.cxx" and place this file in the Source/Modules + SWIG.

    +

    Save the code for your language module in a file named " +python.cxx" and place this file in the Source/Modules directory of the SWIG distribution. To ensure that your module is compiled into SWIG along with the other language modules, modify the - file Source/Makefile.am to include the additional source - files. In addition, modify the file Source/Modules/swigmain.cxx + file Source/Makefile.am to include the additional source + files. In addition, modify the file Source/Modules/swigmain.cxx with an additional command line option that activates the module. Read - the source---it's straightforward.

    -

    Next, at the top level of the SWIG distribution, re-run the -autogen.sh script to regenerate the various build files:

    -
    -
    -$ ./autogen.sh
    -
    -
    -

    Next re-run configure to regenerate all of the Makefiles:

    -
    -
    -$ ./configure
    -
    -
    -

    Finally, rebuild SWIG with your module added:

    -
    -
    -$ make
    -
    -
    -

    Once it finishes compiling, try running SWIG with the command-line - option that activates your module. For example, swig -python foo.i -. The messages from your new module should appear.

    -

    41.10.3 Command line options

    -

    When SWIG starts, the command line options are passed to your + the source---it's straightforward.

    +

    Next, at the top level of the SWIG distribution, re-run the +autogen.sh script to regenerate the various build files:

    +
    +
    +$ ./autogen.sh
    +
    +
    +

    Next re-run configure to regenerate all of the Makefiles:

    +
    +
    +$ ./configure
    +
    +
    +

    Finally, rebuild SWIG with your module added:

    +
    +
    +$ make
    +
    +
    +

    Once it finishes compiling, try running SWIG with the command-line + option that activates your module. For example, swig -python foo.i +. The messages from your new module should appear.

    +

    39.10.3 Command line options

    +

    When SWIG starts, the command line options are passed to your language module. This occurs before any other processing occurs (preprocessing, parsing, etc.). To capture the command line options, - simply use code similar to this:

    -
    -
    + simply use code similar to this:

    +
    +
     void Language::main(int argc, char *argv[]) {
       for (int i = 1; i < argc; i++) {
    -      if (argv[i]) {
    -          if (strcmp(argv[i], "-interface") == 0) {
    -            if (argv[i+1]) {
    -              interface = NewString(argv[i+1]);
    -              Swig_mark_arg(i);
    -              Swig_mark_arg(i+1);
    -              i++;
    -            } else {
    -              Swig_arg_error();
    -            }
    -          } else if (strcmp(argv[i], "-globals") == 0) {
    -            if (argv[i+1]) {
    -              global_name = NewString(argv[i+1]);
    -              Swig_mark_arg(i);
    -              Swig_mark_arg(i+1);
    -              i++;
    -            } else {
    -              Swig_arg_error();
    -            }
    -          } else if ((strcmp(argv[i], "-proxy") == 0)) {
    -            proxy_flag = 1;
    -            Swig_mark_arg(i);
    -          } else if (strcmp(argv[i], "-keyword") == 0) {
    -            use_kw = 1;
    -            Swig_mark_arg(i);
    -          } else if (strcmp(argv[i], "-help") == 0) {
    -            fputs(usage, stderr);
    -          }
    -          ...
    +    if (argv[i]) {
    +      if (strcmp(argv[i], "-interface") == 0) {
    +        if (argv[i+1]) {
    +          interface = NewString(argv[i+1]);
    +          Swig_mark_arg(i);
    +          Swig_mark_arg(i+1);
    +          i++;
    +        } else {
    +          Swig_arg_error();
    +        }
    +      } else if (strcmp(argv[i], "-globals") == 0) {
    +        if (argv[i+1]) {
    +          global_name = NewString(argv[i+1]);
    +          Swig_mark_arg(i);
    +          Swig_mark_arg(i+1);
    +          i++;
    +        } else {
    +          Swig_arg_error();
    +        }
    +      } else if ((strcmp(argv[i], "-proxy") == 0)) {
    +        proxy_flag = 1;
    +        Swig_mark_arg(i);
    +      } else if (strcmp(argv[i], "-keyword") == 0) {
    +        use_kw = 1;
    +        Swig_mark_arg(i);
    +      } else if (strcmp(argv[i], "-help") == 0) {
    +        fputs(usage, stderr);
           }
    +      ...
    +    }
       }
     }
    -
    -
    -

    The exact set of options depends on what you want to do in your +

    +
    +

    The exact set of options depends on what you want to do in your module. Generally, you would use the options to change code generation - modes or to print diagnostic information.

    -

    If a module recognizes an option, it should always call -Swig_mark_arg() to mark the option as valid. If you forget to do + modes or to print diagnostic information.

    +

    If a module recognizes an option, it should always call +Swig_mark_arg() to mark the option as valid. If you forget to do this, SWIG will terminate with an unrecognized command line option - error.

    -

    41.10.4 Configuration and preprocessing

    -

    In addition to looking at command line options, the main() + error.

    +

    39.10.4 Configuration and preprocessing

    +

    In addition to looking at command line options, the main() method is responsible for some initial configuration of the SWIG - library and preprocessor. To do this, insert some code like this:

    -
    -
    + library and preprocessor. To do this, insert some code like this:

    +
    +
     void main(int argc, char *argv[]) {
       ... command line options ...
     
    @@ -60963,40 +60525,40 @@ void main(int argc, char *argv[]) {
       /* Set typemap language (historical) */
       SWIG_typemap_lang("python");
     }
    -
    -
    -

    The above code does several things--it registers the name of the +

    +
    +

    The above code does several things--it registers the name of the language module with the core, it supplies some preprocessor macro definitions for use in input files (so that they can determine the target language), and it registers a start-up file. In this case, the - file python.swg will be parsed before any part of the - user-supplied input file.

    -

    Before proceeding any further, create a directory for your module in - the SWIG library (The Lib directory). Now, create a - configuration file in the directory. For example, python.swg.

    -

    Just to review, your language module should now consist of two - files-- an implementation file python.cxx and a configuration - file python.swg.

    -

    41.10.5 Entry point to code generation

    -

    SWIG is a multi-pass compiler. Once the main() method has + file python.swg will be parsed before any part of the + user-supplied input file.

    +

    Before proceeding any further, create a directory for your module in + the SWIG library (The Lib directory). Now, create a + configuration file in the directory. For example, python.swg.

    +

    Just to review, your language module should now consist of two + files-- an implementation file python.cxx and a configuration + file python.swg.

    +

    39.10.5 Entry point to code generation

    +

    SWIG is a multi-pass compiler. Once the main() method has been invoked, the language module does not execute again until preprocessing, parsing, and a variety of semantic analysis passes have been performed. When the core is ready to start generating wrappers, it - invokes the top() method of your language class. The argument - to top is a single parse tree node that corresponds to the top - of the entire parse tree.

    -

    To get the code generation process started, the top() - procedure needs to do several things:

    -
      -
    • Initialize the wrapper code output.
    • -
    • Set the module name.
    • -
    • Emit common initialization code.
    • -
    • Emit code for all of the child nodes.
    • -
    • Finalize the wrapper module and cleanup.
    • -
    -

    An outline of top() might be as follows:

    -
    -
    + invokes the top() method of your language class. The argument
    + to top is a single parse tree node that corresponds to the top
    + of the entire parse tree.

    +

    To get the code generation process started, the top() + procedure needs to do several things:

    +
      +
    • Initialize the wrapper code output.
    • +
    • Set the module name.
    • +
    • Emit common initialization code.
    • +
    • Emit code for all of the child nodes.
    • +
    • Finalize the wrapper module and cleanup.
    • +
    +

    An outline of top() might be as follows:

    +
    +
     int Python::top(Node *n) {
     
       /* Get the module name */
    @@ -61020,30 +60582,30 @@ int Python::top(Node *n) {
     
       return SWIG_OK;
     }
    -
    -
    -

    41.10.6 Module I/O and wrapper skeleton

    +
    +
    +

    39.10.6 Module I/O and wrapper skeleton

    -

    Within SWIG wrappers, there are five main sections. These are (in - order)

    -
      -
    • begin: This section is a placeholder for users to put code at the - beginning of the C/C++ wrapper file.
    • -
    • runtime: This section has most of the common SWIG runtime code.
    • -
    • header: This section holds declarations and inclusions from the .i - file.
    • -
    • wrapper: This section holds all the wrapper code.
    • -
    • init: This section holds the module initialisation function (the - entry point for the interpreter).
    • -
    -

    Different parts of the SWIG code will fill different sections, then +

    Within SWIG wrappers, there are five main sections. These are (in + order)

    +
      +
    • begin: This section is a placeholder for users to put code at the + beginning of the C/C++ wrapper file.
    • +
    • runtime: This section has most of the common SWIG runtime code.
    • +
    • header: This section holds declarations and inclusions from the .i + file.
    • +
    • wrapper: This section holds all the wrapper code.
    • +
    • init: This section holds the module initialisation function (the + entry point for the interpreter).
    • +
    +

    Different parts of the SWIG code will fill different sections, then upon completion of the wrappering all the sections will be saved to the - wrapper file.

    -

    To perform this will require several additions to the code in - various places, such as:

    -
    -
    + wrapper file.

    +

    To perform this will require several additions to the code in + various places, such as:

    +
    +
     class PYTHON : public Language {
     protected:
       /* General DOH objects used for holding the strings */
    @@ -61103,21 +60665,21 @@ int Python::top(Node *n) {
     
       return SWIG_OK;
     }
    -
    -
    -

    Using this to process a file will generate a wrapper file, however +

    +
    +

    Using this to process a file will generate a wrapper file, however the wrapper will only consist of the common SWIG code as well as any inline code which was written in the .i file. It does not contain any - wrappers for any of the functions or classes.

    -

    The code to generate the wrappers are the various member functions, - which currently have not been touched. We will look at -functionWrapper() as this is the most commonly used function. In + wrappers for any of the functions or classes.

    +

    The code to generate the wrappers are the various member functions, + which currently have not been touched. We will look at +functionWrapper() as this is the most commonly used function. In fact many of the other wrapper routines will call this to do their - work.

    -

    A simple modification to write some basic details to the wrapper - looks like this:

    -
    -
    + work.

    +

    A simple modification to write some basic details to the wrapper + looks like this:

    +
    +
     int Python::functionWrapper(Node *n) {
       /* Get some useful attributes of this function */
       String   *name   = Getattr(n, "sym:name");
    @@ -61131,12 +60693,12 @@ int Python::functionWrapper(Node *n) {
       Printf(f_wrappers, "           action : %s\n", action);
       return SWIG_OK;
     }
    -
    -
    -

    This will now produce some useful information within your wrapper - file.

    -
    -
    +
    +
    +

    This will now produce some useful information within your wrapper + file.

    +
    +
     functionWrapper   : void delete_Shape(Shape *self)
                action : delete arg1;
     
    @@ -61149,25 +60711,25 @@ functionWrapper   : double Shape_x_get(Shape *self)
     functionWrapper   : void Shape_y_set(Shape *self, double y)
                action : if (arg1) (arg1)->y = arg2;
     ...
    -
    -
    -

    41.10.7 Low-level code generators

    +
    +
    +

    39.10.7 Low-level code generators

    -

    As ingenious as SWIG is, and despite all its capabilities and the +

    As ingenious as SWIG is, and despite all its capabilities and the power of its parser, the Low-level code generation takes a lot of work to write properly. Mainly because every language insists on its own manner of interfacing to C/C++. To write the code generators you will need a good understanding of how to manually write an interface to your - chosen language, so make sure you have your documentation handy.

    -

    At this point it is also probably a good idea to take a very simple + chosen language, so make sure you have your documentation handy.

    +

    At this point it is also probably a good idea to take a very simple file (just one function), and try letting SWIG generate wrappers for many different languages. Take a look at all of the wrappers generated, and decide which one looks closest to the language you are trying to - wrap. This may help you to decide which code to look at.

    -

    In general most language wrappers look a little like this:

    -
    -
    + wrap. This may help you to decide which code to look at.

    +

    In general most language wrappers look a little like this:

    +
    +
     /* wrapper for TYPE3 some_function(TYPE1, TYPE2); */
     RETURN_TYPE _wrap_some_function(ARGS){
       TYPE1 arg1;
    @@ -61191,30 +60753,30 @@ RETURN_TYPE _wrap_some_function(ARGS){
       do any tidy up;
       return ERROR;
     }
    -
    -
    -

    Yes, it is rather vague and not very clear. But each language works - differently so this will have to do for now.

    -

    Tackling this problem will be done in two stages:

    -
      -
    • The skeleton: the function wrapper, and call, but without the - conversion
    • -
    • The conversion: converting the arguments to-from what the language - wants
    • -
    -

    The first step will be done in the code, the second will be done in - typemaps.

    -

    Our first step will be to write the code for functionWrapper() -. What is shown below is NOT the solution, merely a step in the - right direction. There are a lot of issues to address.

    -
      -
    • Variable length and default parameters
    • -
    • Typechecking and number of argument checks
    • -
    • Overloaded functions
    • -
    • Inout and Output only arguments
    • -
    -
    -
    +
    +
    +

    Yes, it is rather vague and not very clear. But each language works + differently so this will have to do for now.

    +

    Tackling this problem will be done in two stages:

    +
      +
    • The skeleton: the function wrapper, and call, but without the + conversion
    • +
    • The conversion: converting the arguments to-from what the language + wants
    • +
    +

    The first step will be done in the code, the second will be done in + typemaps.

    +

    Our first step will be to write the code for functionWrapper() +. What is shown below is NOT the solution, merely a step in the + right direction. There are a lot of issues to address.

    +
      +
    • Variable length and default parameters
    • +
    • Typechecking and number of argument checks
    • +
    • Overloaded functions
    • +
    • Inout and Output only arguments
    • +
    +
    +
     virtual int functionWrapper(Node *n) {
       /* get useful attributes */
       String   *name   = Getattr(n, "sym:name");
    @@ -61282,455 +60844,549 @@ virtual int functionWrapper(Node *n) {
     
       return SWIG_OK;
     }
    -
    -
    -

    Executing this code will produce wrappers which have our basic - skeleton but without the typemaps, there is still work to do.

    -

    41.10.8 Configuration files -

    +
    +
    +

    Executing this code will produce wrappers which have our basic + skeleton but without the typemaps, there is still work to do.

    +

    39.10.8 Configuration files +

    -

    At the time of this writing, SWIG supports nearly twenty languages, +

    At the time of this writing, SWIG supports nearly twenty languages, which means that for continued sanity in maintaining the configuration files, the language modules need to follow some conventions. These are outlined here along with the admission that, yes it is ok to violate these conventions in minor ways, as long as you know where to apply the proper kludge to keep the overall system regular and running. - Engineering is the art of compromise, see...

    -

    Much of the maintenance regularity depends on choosing a suitable + Engineering is the art of compromise, see...

    +

    Much of the maintenance regularity depends on choosing a suitable nickname for your language module (and then using it in a controlled way). Nicknames should be all lower case letters with an optional numeric suffix (no underscores, no dashes, no spaces). Some examples - are: foo, bar, qux99.

    -

    The numeric suffix variant, as in the last example, is somewhat + are: foo, bar, qux99.

    +

    The numeric suffix variant, as in the last example, is somewhat tricky to work with because sometimes people expect to refer to the language without this number but sometimes that number is extremely relevant (especially when it corresponds to language implementation versions with incompatible interfaces). New language modules that unavoidably require a numeric suffix in their nickname should include - that number in all uses, or be prepared to kludge.

    -

    The nickname is used in four places:

    - - - - - + that number in all uses, or be prepared to kludge.

    +

    The nickname is used in four places:

    +
    usagetransform
    "skip" tag(none)
    Examples/ subdir name(none)
    Examples/test-suite/ subdir name(none)
    + + + + -
    usagetransform
    "skip" tag(none)
    Examples/ subdir name(none)
    Examples/test-suite/ subdir name(none)
    -

    As you can see, most usages are direct.

    -
    -
    configure.ac
    -
    This file is processed by -

    autoconf to - generate the configure script. This is where you need to add + +

    As you can see, most usages are direct.

    +
    +
    configure.ac
    +
    This file is processed by +

    autoconf to + generate the configure script. This is where you need to add shell script fragments and autoconf macros to detect the presence of whatever development support your language module requires, typically directories where headers and libraries can be found, and/or utility - programs useful for integrating the generated wrapper code.

    -

    Use the AC_ARG_WITH, AC_MSG_CHECKING, AC_SUBST + programs useful for integrating the generated wrapper code.

    +

    Use the AC_ARG_WITH, AC_MSG_CHECKING, AC_SUBST macros and so forth (see other languages for examples). Avoid using the - [ and ] character in shell script fragments. The - variable names passed to AC_SUBST should begin with the - nickname, entirely upcased.

    -

    At the end of the new section is the place to put the aforementioned + [ and ] character in shell script fragments. The + variable names passed to AC_SUBST should begin with the + nickname, entirely upcased.

    +

    At the end of the new section is the place to put the aforementioned nickname kludges (should they be needed). See Perl5 for examples of what to do. [If this is still unclear after you've read the code, ping - me and I'll expand on this further. --ttn]

    -
    -
    Makefile.in
    -
    -

    Some of the variables AC_SUBSTituted are essential to the support of + me and I'll expand on this further. --ttn]

    +
    +
    Makefile.in
    +
    +

    Some of the variables AC_SUBSTituted are essential to the support of your language module. Fashion these into a shell script "test" clause - and assign that to a skip tag using "-z" and "-o":

    -
    skip-qux99 = [ -z "@QUX99INCLUDE@" -o -z - "@QUX99LIBS" ]
    -

    This means if those vars should ever be empty, qux99 support should + and assign that to a skip tag using "-z" and "-o":

    +
    skip-qux99 = [ -z "@QUX99INCLUDE@" -o -z + "@QUX99LIBS" ]
    +

    This means if those vars should ever be empty, qux99 support should be considered absent and so it would be a good idea to skip actions - that might rely on it.

    -

    Here is where you may also define an alias (but then you'll need to - kludge --- don't do this):

    -
    skip-qux = $(skip-qux99)
    -

    Lastly, you need to modify each of check-aliveness, -check-examples, check-test-suite and lib-languages + that might rely on it.

    +

    Here is where you may also define an alias (but then you'll need to + kludge --- don't do this):

    +
    skip-qux = $(skip-qux99)
    +

    Lastly, you need to modify each of check-aliveness, +check-examples, check-test-suite and lib-languages (var). Use the nickname for these, not the alias. Note that you can do this even before you have any tests or examples set up; the Makefile - rules do some sanity checking and skip around these kinds of problems.

    -
    -
    Examples/Makefile.in
    -
    Nothing special here; see comments at top the of this file and look - to the existing languages for examples.
    -
    Examples/qux99/check.list
    -
    Do cp ../python/check.list . and modify to taste. One - subdir per line.
    -
    Lib/qux99/extra-install.list
    -
    If you add your language to the top-level Makefile.in var -lib-languages, then make install will install all *.i - and *.swg files from the language-specific subdirectory of -Lib. Use (optional) file extra-install.list in that - directory to name additional files to install (see ruby for example).
    -
    Source/Modules/Makefile.am
    -
    Add appropriate files to this Automake file. That's it! -

    When you have modified these files, please make sure that the new + rules do some sanity checking and skip around these kinds of problems.

    +
    +
    Examples/Makefile.in
    +
    Nothing special here; see comments at the top of this file and look + to the existing languages for examples.
    +
    Examples/qux99/check.list
    +
    Do cp ../python/check.list . and modify to taste. One + subdir per line.
    +
    Lib/qux99/extra-install.list
    +
    If you add your language to the top-level Makefile.in var +lib-languages, then make install will install all *.i + and *.swg files from the language-specific subdirectory of +Lib. Use (optional) file extra-install.list in that + directory to name additional files to install (see ruby for example).
    +
    Source/Modules/Makefile.am
    +
    Add appropriate files to this Automake file. That's it! +

    When you have modified these files, please make sure that the new language module is completely ignored if it is not installed and - detected on a box, that is, make check-examples and make - check-test-suite politely displays the ignoring language message.

    -
    -
    -

    41.10.9 Runtime support

    -

    Discuss the kinds of functions typically needed for SWIG runtime - support (e.g. SWIG_ConvertPtr() and SWIG_NewPointerObj() -) and the names of the SWIG files that implement those functions.

    -

    41.10.10 Standard library files

    -

    The standard library files that most languages supply keeps growing + detected on a box, that is, make check-examples and make + check-test-suite politely displays the ignoring language message.

    +
    +
    +

    39.10.9 Runtime support

    +

    Discuss the kinds of functions typically needed for SWIG runtime + support (e.g. SWIG_ConvertPtr() and SWIG_NewPointerObj() +) and the names of the SWIG files that implement those functions.

    +

    39.10.10 Standard library files

    +

    The standard library files that most languages supply keeps growing as SWIG matures. The following are the minimum that are usually - supported:

    -
      -
    • typemaps.i
    • -
    • std_string.i
    • -
    • std_vector.i
    • -
    • stl.i
    • -
    -

    Please copy these and modify for any new language.

    -

    41.10.11 User examples

    -

    Each of the language modules provides one or more examples. These + supported:

    +
      +
    • typemaps.i
    • +
    • std_string.i
    • +
    • std_vector.i
    • +
    • stl.i
    • +
    +

    Please copy these and modify for any new language.

    +

    39.10.11 User examples

    +

    Each of the language modules provides one or more examples. These examples are used to demonstrate different features of the language module to SWIG end-users, but you'll find that they're useful during development and testing of your language module as well. You can use - examples from the existing SWIG language modules for inspiration.

    -

    Each example is self-contained and consists of (at least) a -Makefile, a SWIG interface file for the example module, and a + examples from the existing SWIG language modules for inspiration.

    +

    Each example is self-contained and consists of (at least) a +Makefile, a SWIG interface file for the example module, and a 'runme' script that demonstrates the functionality for that module. All - of these files are stored in the same subdirectory under the -Examples/[lang] directory. There are two classic examples which + of these files are stored in the same subdirectory under the +Examples/[lang] directory. There are two classic examples which should be the first to convert to a new language module. These are the "simple" C example and the "class" C++ example. These can be found, for - example for Python, in Examples/python/simple and -Examples/python/class.

    -

    By default, all of the examples are built and run when the user - types make check. To ensure that your examples are - automatically run during this process, see the section on -configuration files.

    -

    41.10.12 Test driven development and - the test-suite

    -

    A test driven development approach is central to the improvement and + example for Python, in Examples/python/simple and +Examples/python/class.

    +

    By default, all of the examples are built and run when the user + types make check. To ensure that your examples are + automatically run during this process, see the section on +configuration files.

    +

    39.10.12 Test driven development and + the test-suite

    +

    A test driven development approach is central to the improvement and development of SWIG. Most modifications to SWIG are accompanied by additional regression tests and checking all tests to ensure that no - regressions have been introduced.

    -

    The regression testing is carried out by the SWIG test-suite. - The test-suite consists of numerous testcase interface files in the -Examples/test-suite directory as well as target language specific - runtime tests in the Examples/test-suite/[lang] directory. + regressions have been introduced.

    +

    The regression testing is carried out by the SWIG test-suite. + The test-suite consists of numerous testcase interface files in the +Examples/test-suite directory as well as target language specific + runtime tests in the Examples/test-suite/[lang] directory. When a testcase is run, it will execute the following steps for each - testcase:

    -
      -
    1. Execute SWIG passing it the testcase interface file.
    2. -
    3. Compile the resulting generated C/C++ code with either the C or C++ - compiler into object files.
    4. -
    5. Link the object files into a dynamic library (dll/shared object).
    6. -
    7. Compile any generated and any runtime test target language code with + testcase:

      +
        +
      1. Execute SWIG passing it the testcase interface file.
      2. +
      3. Compile the resulting generated C/C++ code with either the C or C++ + compiler into object files.
      4. +
      5. Link the object files into a dynamic library (dll/shared object).
      6. +
      7. Compile any generated and any runtime test target language code with the target language compiler, if the target language supports compilation. This step thus does not apply to the interpreted - languages.
      8. -
      9. Execute a runtime test if one exists.
      10. -
      -

      For example, the ret_by_value testcase consists of two - components. The first component is the -Examples/test-suite/ret_by_value.i interface file. The name of the - SWIG module must always be the name of the testcase, so the -ret_by_value.i interface file thus begins with:

      -
      -
      + languages.
    8. +
    9. Execute a runtime test if one exists.
    10. +
    +

    For example, the ret_by_value testcase consists of two + components. The first component is the +Examples/test-suite/ret_by_value.i interface file. The name of the + SWIG module must always be the name of the testcase, so the +ret_by_value.i interface file thus begins with:

    +
    +
     %module ret_by_value
    -
    -
    -

    The testcase code will then follow the module declaration, usually - within a %inline %{ ... %} section for the majority of the - tests.

    -

    The second component is the optional runtime tests. Any runtime - tests are named using the following convention: -[testcase]_runme.[ext], where [testcase] is the testcase - name and [ext] is the normal extension for the target language + + +

    The testcase code will then follow the module declaration, usually + within a %inline %{ ... %} section for the majority of the + tests.

    +

    The second component is the optional runtime tests. Any runtime + tests are named using the following convention: +[testcase]_runme.[ext], where [testcase] is the testcase + name and [ext] is the normal extension for the target language file. In this case, the Java and Python target languages implement a - runtime test, so their files are respectively, -Examples/test-suite/java/ret_by_value_runme.java and -Examples/test-suite/python/ret_by_value_runme.py.

    -

    The goal of the test-suite is to test as much as possible in a - silent manner. This way any SWIG or compiler errors or warnings are + runtime test, so their files are respectively, +Examples/test-suite/java/ret_by_value_runme.java and +Examples/test-suite/python/ret_by_value_runme.py.

    +

    The goal of the test-suite is to test as much as possible in a + silent manner. This way any SWIG or compiler errors or warnings are easily visible. Should there be any warnings, changes must be made to either fix them (preferably) or suppress them. Compilation or runtime errors result in a testcase failure and will be immediately visible. It is therefore essential that the runtime tests are written in a manner that displays nothing to stdout/stderr on success but error/exception - out with an error message on stderr on failure.

    -

    41.10.12.1 Running the - test-suite

    -

    In order for the test-suite to work for a particular target + out with an error message on stderr on failure.

    +

    39.10.12.1 Running the + test-suite

    +

    In order for the test-suite to work for a particular target language, the language must be correctly detected and configured during the configure stage so that the correct Makefiles are generated. Most development occurs on Linux, so usually it is a matter of installing the development packages for the target language and simply configuring - as outlined earlier.

    -

    If when running the test-suite commands that follow, you get a + as outlined earlier.

    +

    If when running the test-suite commands that follow, you get a message that the test was skipped, it indicates that the configure stage is missing information in order to compile and run everything for - that language.

    -

    The test-suite can be run in a number of ways. The first group of + that language.

    +

    The test-suite can be run in a number of ways. The first group of commands are for running multiple testcases in one run and should be executed in the top level directory. To run the entire test-suite (can - take a long time):

    -
    -
    + take a long time):

    +
    +
     make -k check-test-suite
    -
    -
    -

    To run the test-suite just for target language [lang], replace - [lang] with one of csharp, java, perl5, python, ruby, tcl etc:

    -
    -
    +
    +
    +

    To run the test-suite just for target language [lang], replace + [lang] with one of csharp, java, perl5, python, ruby, tcl etc:

    +
    +
     make check-[lang]-test-suite
    -
    -
    -

    Note that if a runtime test is available, a message "(with run - test)" is displayed when run. For example:

    -
    -
    +
    +
    +

    Note that if a runtime test is available, a message "(with run + test)" is displayed when run. For example:

    +
    +
     $ make check-python-test-suite
     checking python test-suite
     checking python testcase argcargvtest (with run test)
     checking python testcase python_autodoc
     checking python testcase python_append (with run test)
     checking python testcase callback (with run test)
    -
    -
    -

    The files generated on a previous run can be deleted using the clean - targets, either the whole test-suite or for a particular language:

    -
    -
    +
    +
    +

    The files generated on a previous run can be deleted using the clean + targets, either the whole test-suite or for a particular language:

    +
    +
     make clean-test-suite
     make clean-[lang]-test-suite
    -
    -
    -

    The test-suite can be run in a partialcheck mode where just +

    +
    +

    The test-suite can be run in a partialcheck mode where just SWIG is executed, that is, the compile, link and running of the testcases is not performed. Note that the partialcheck does not require the target language to be correctly configured and detected and unlike the other test-suite make targets, is never skipped. Once again, either - all the languages can be executed or just a chosen language:

    -
    -
    + all the languages can be executed or just a chosen language:

    +
    +
     make partialcheck-test-suite
     make partialcheck-[lang]-test-suite
    -
    -
    -

    If your computer has more than one CPU, you are strongly advised to +

    +
    +

    If your computer has more than one CPU, you are strongly advised to use parallel make to speed up the execution speed. This can be done with any of the make targets that execute more than one testcase. For - example, a dual core processor can efficiently use 2 parallel jobs:

    -
    -
    + example, a dual core processor can efficiently use 2 parallel jobs:

    +
    +
     make -j2 check-test-suite
     make -j2 check-python-test-suite
     make -j2 partialcheck-java-test-suite
    -
    -
    -

    The second group of commands are for running individual testcases - and should be executed in the appropriate target language directory, -Examples/test-suite/[lang]. Testcases can contain either C or C++ +

    +
    +

    The second group of commands are for running individual testcases + and should be executed in the appropriate target language directory, +Examples/test-suite/[lang]. Testcases can contain either C or C++ code and when one is written, a decision must be made as to which of - these input languages is to be used. Replace [testcase] in the - commands below with the name of the testcase.

    -

    For a C language testcase, add the testcase under the C_TEST_CASES - list in Examples/test-suite/common.mk and execute individually - as:

    -
    -
    + these input languages is to be used. Replace [testcase] in the
    + commands below with the name of the testcase.

    +

    For a C language testcase, add the testcase under the C_TEST_CASES + list in Examples/test-suite/common.mk and execute individually + as:

    +
    +
     make -s [testcase].ctest
    -
    -
    -

    For a C++ language testcase, add the testcase under the - CPP_TEST_CASES list in Examples/test-suite/common.mk and - execute individually as:

    -
    -
    +
    +
    +

    For a C++ language testcase, add the testcase under the + CPP_TEST_CASES list in Examples/test-suite/common.mk and + execute individually as:

    +
    +
     make -s [testcase].cpptest
    -
    -
    -

    A third category of tests are C++ language testcases testing +

    +
    +

    A third category of tests are C++ language testcases testing multiple modules (the %import directive). These require more than one shared library (dll/shared object) to be built and so are separated out from the normal C++ testcases. Add the testcase under the - MULTI_CPP_TEST_CASES list in Examples/test-suite/common.mk and - execute individually as:

    -
    -
    + MULTI_CPP_TEST_CASES list in Examples/test-suite/common.mk and
    + execute individually as:

    +
    +
     make -s [testcase].multicpptest
    -
    -
    -

    To delete the generated files, execute:

    -
    -
    +
    +
    +

    To delete the generated files, execute:

    +
    +
     make -s [testcase].clean
    -
    -
    -

    If you would like to see the exact commands being executed, drop the - -s option:

    -
    -
    +
    +
    +

    If you would like to see the exact commands being executed, drop the + -s option:

    +
    +
     make [testcase].ctest
     make [testcase].cpptest
     make [testcase].multicpptest
    -
    -
    -

    Some real examples of each:

    -
    -
    +
    +
    +

    Some real examples of each:

    +
    +
     make -s ret_by_value.clean
     make -s ret_by_value.ctest
     make -s bools.cpptest
     make -s imports.multicpptest
    -
    -
    -

    Advanced usage of the test-suite facilitates running tools on some - of the five stages. The make variables SWIGTOOL and -RUNTOOL are used to specify a tool to respectively, invoke SWIG and - the execution of the runtime test. You are advised to view the -Examples/test-suite/common.mk file for details but for a short - summary, the classic usage is to use -Valgrind for memory checking. For example, checking for memory leaks - when running the runtime test in the target language interpreter:

    -
    -
    +
    +
    +

    Advanced usage of the test-suite facilitates running tools on some + of the five stages. The make variables SWIGTOOL and +RUNTOOL are used to specify a tool to respectively, invoke SWIG and + the execution of the runtime test. You are advised to view the +Examples/test-suite/common.mk file for details but for a short + summary, the classic usage is to use +Valgrind for memory checking. For example, checking for memory leaks + when running the runtime test in the target language interpreter:

    +
    +
     make ret_by_value.ctest RUNTOOL="valgrind --leak-check=full"
    -
    -
    -

    This will probably make more sense if you look at the output of the +

    +
    +

    This will probably make more sense if you look at the output of the above as it will show the exact commands being executed. SWIG can be - analyzed for bad memory accesses using:

    -
    -
    + analyzed for bad memory accesses using:

    +
    +
     make ret_by_value.ctest SWIGTOOL="valgrind --tool=memcheck --trace-children=yes"
    -
    -
    -

    A debugger can also be invoked easily on an individual test, for - example gdb:

    -
    -
    +
    +
    +

    A debugger can also be invoked easily on an individual test, for + example gdb:

    +
    +
     make ret_by_value.ctest RUNTOOL="gdb --args"
    -
    -
    -

    SWIG reads the SWIG_FEATURES environment variable to obtain +

    +
    +

    SWIG reads the SWIG_FEATURES environment variable to obtain options in addition to those passed on the command line. This is particularly useful as the entire test-suite or a particular testcase can be run customized by using additional arguments, for example the -O - optimization flag can be added in, as shown below for the bash shell:

    -
    -
    + optimization flag can be added in, as shown below for the bash shell:

    +
    +
     env SWIG_FEATURES=-O make check-python-test-suite
    -
    -
    -

    The syntax for setting environment variables varies from one shell +

    +
    +

    The syntax for setting environment variables varies from one shell to the next, but it also works as shown in the example below, where - some typemap debugging is added in:

    -
    -
    + some typemap debugging is added in:

    +
    +
     make ret_by_value.ctest SWIG_FEATURES="-debug-tmsearch"
    -
    -
    -

    There is also a special 'errors' test-suite which is a set of +

    +
    +

    There is also a special 'errors' test-suite which is a set of regression tests checking SWIG warning and error messages. It can be run in the same way as the other language test-suites, replacing [lang] - with errors, such as make check-errors-test-suite. The test - cases used and the way it works is described in -Examples/test-suite/errors/Makefile.in.

    -

    41.10.13 Documentation

    -

    Don't forget to write end-user documentation for your language + with errors, such as make check-errors-test-suite. The test + cases used and the way it works is described in +Examples/test-suite/errors/Makefile.in.

    +

    39.10.13 Documentation

    +

    Don't forget to write end-user documentation for your language module. Currently, each language module has a dedicated chapter You shouldn't rehash things that are already covered in sufficient detail - in the SWIG Basics and SWIG and - C++ chapters. There is no fixed format for what, exactly, + in the SWIG Basics and SWIG and + C++ chapters. There is no fixed format for what, exactly, you should document about your language module, but you'll obviously - want to cover issues that are unique to your language.

    -

    Some topics that you'll want to be sure to address include:

    -
      -
    • Command line options unique to your language module.
    • -
    • Non-obvious mappings between C/C++ and target language concepts. + want to cover issues that are unique to your language.

      +

      Some topics that you'll want to be sure to address include:

      +
        +
      • Command line options unique to your language module.
      • +
      • Non-obvious mappings between C/C++ and target language concepts. For example, if your target language provides a single floating point - type, it should be no big surprise to find that C/C++ float - and double types are mapped to it. On the other hand, if your + type, it should be no big surprise to find that C/C++ float + and double types are mapped to it. On the other hand, if your target language doesn't provide support for "classes" or something - similar, you'd want to discuss how C++ classes are handled.
      • -
      • How to compile the SWIG-generated wrapper code into shared + similar, you'd want to discuss how C++ classes are handled.
      • +
      • How to compile the SWIG-generated wrapper code into shared libraries that can actually be used. For some languages, there are well-defined procedures for doing this, but for others it's an ad hoc process. Provide as much detail as appropriate, and links to other - resources if available.
      • -
      -

      41.10.14 Prerequisites for adding - a new language module to the SWIG distribution

      -

      If you wish for a new language module to be distributed with SWIG, - which we encourage for all popular languages, there are a few - requirements. While we appreciate that getting all aspects of a new - language working won't happen at the outset, there are a set of minimum - requirements before a module can be committed into the official Github - repository for distribution with future versions of SWIG. The following - are really a summary of this whole section with details being outlined - earlier on.

      -
        -
      1. Demonstrate basic C code working by porting the "simple" example - including a runtime test, see for example Examples/python/simple -.
      2. -
      3. Demonstrate basic C++ code working by porting the "class" example - including a runtime test, see for example Examples/python/class -.
      4. -
      5. Modify configure.ac, Makefile.in and -Examples/Makefile.in to run these examples. Please make sure that - if the new language is not installed properly on a box, make -k - check should still work by skipping the tests and examples for the - new language module.
      6. -
      7. Get the test-suite running for the new language (make - check-[lang]-test-suite). While the test-suite tests many corner - cases, we'd expect the majority of it to work by compiling the - generated code correctly as most of the corner cases are covered in the - SWIG core. Get at least one C and one C++ runtime test running in the - test-suite.
      8. -
      9. Provide a chapter in the html documentation on the basics of using - the language module.
      10. -
      11. Ensure your source code is formatted according to the -coding style guidelines.
      12. -
      13. Finally, email the SWIG developers with a patch and a demonstration - of commitment to maintaining the language module, certainly in the - short term and ideally long term.
      14. -
      -

      Once accepted into the official Git repository, development efforts - should concentrate on getting the entire test-suite to work with plenty - of runtime tests. Runtime tests should be for existing testcases and - new test cases should be added should there be an area not already - covered by the existing tests.

      -

      41.10.15 Coding style - guidelines

      -

      The coding guidelines for the C/C++ source code are pretty much K&R + resources if available.

    • +
    +

    39.10.14 Coding style + guidelines

    +

    The coding guidelines for the C/C++ source code are pretty much K&R C style. The style can be inferred from the existing code base and is - largely dictated by the indent code beautifier tool set to K&R + largely dictated by the indent code beautifier tool set to K&R style. The code can formatted using the make targets in the Source - directory. Below is an example of how to format the emit.cxx file:

    -
    -
    + directory. Below is an example of how to format the emit.cxx file:

    +
    +
     $ cd Source
     $ make beautify-file INDENTFILE=Modules/emit.cxx
    -
    -
    -

    Of particular note is indentation is set to 2 spaces and a tab is +

    +
    +

    Of particular note is indentation is set to 2 spaces and a tab is used instead of 8 spaces. The generated C/C++ code should also follow this style as close as possible. However, tabs should be avoided as unlike the SWIG developers, users will never have consistent tab - settings.

    -

    41.11 Debugging Options

    -

    There are various command line options which can aid debugging a + settings.

    +

    39.10.15 Target language status +

    +

    Target languages are given a status of either 'Supported' or + 'Experimental' depending on their maturity as broadly outlined in the Target language introduction. + This section provides more details on how this status is given.

    +

    39.10.15.1 Supported status

    +

    A target language is given the 'Supported' status when

    +
      +
    • It is in a mature, well functioning state.
    • +
    • It has its own comprehensive chapter in the documentation. The + level of documentation should be comprehensive and match the standard + of the other mature modules. Python and Java are good references.
    • +
    • It passes all of the main SWIG test-suite. The main test-suite is + defined by the tests in the C_TEST_CASES, CPP_TEST_CASES and + MULTI_CPP_TEST_CASES lists in Examples/test-suite/common.mk. The tests + in CPP11_TEST_CASES will also be required in the near future.
    • +
    • The test-suite must also include at least twenty wide-ranging + runtime tests. The most mature languages have a few hundred runtime + tests. Note that porting runtime tests from another language module is + a quick and easy way to achieve this.
    • +
    • It supports the vast majority of SWIG features. Some more advanced + features, such as, directors, full nested class support and target + language namespaces (nspace) may be unimplemented. A few support + libraries may be missing, for example, a small number of STL libraries.
    • +
    • It provides strong backwards compatibility between releases. Each + point release must aim to be fully backwards compatible. A point + release version is the 3rd version digit, so each of the x.y.* versions + should be backwards compatible. Backwards compatibility breakages can + occur in a new major or minor version if absolutely necessary and if + documented. A major or minor version is the first or second digit in + the three digit version.
    • +
    • Fixing unintended regressions in the Supported languages will be + given higher priority over experimental languages by the core SWIG + developers.
    • +
    • Examples must be available and run successfully.
    • +
    • The examples and test-suite must be fully functioning on the Travis + Continuous Integration platform.
    • +
    +

    39.10.15.2 Experimental + status

    +

    A target language is given the 'Experimental' status when

    +
      +
    • It is of sub-standard quality, failing to meet the above + 'Supported' status.
    • +
    • It is somewhere between the mid to mature stage of development.
    • +
    • It is in need of help to finish development.
    • +
    +

    Some minimum requirements and notes about languages with the + 'Experimental' status:

    +
      +
    • Will at least implement basic functionality - support wrapping C + functions and simple C++ classes and templates.
    • +
    • Have its own documentation chapter containing a reasonable level of + detail. The documentation must provide enough basic functionality for a + user to get started.
    • +
    • Have fully functional examples of basic functionality (the simple + and class examples).
    • +
    • The test-suite must be implemented and include a few runtime tests + for both C and C++ test cases.
    • +
    • Failing tests must be put into one of the FAILING_CPP_TESTS or + FAILING_C_TESTS lists in the test-suite. This will ensure the + test-suite can be superficially made to pass by ignoring failing tests. + The number of tests in these lists should be no greater than half of + the number of tests in the full test-suite.
    • +
    • The examples and test-suite must also be fully functioning on the + Travis Continuous Integration platform. However, experimental languages + will be set as 'allow_failures'. This means that pull requests and + normal development commits will not break the entire Travis build + should an experimental language fail.
    • +
    • Any new failed tests will be fixed on a 'best effort' basis by core + developers with no promises made.
    • +
    • If a language module has an official maintainer, then the + maintainer will be requested to focus on fixing test-suite regressions + and commit to migrating the module to become a 'Supported' module.
    • +
    • If a module does not have an official maintainer, then, as + maintenance will be on a 'best efforts' basis by the core maintainers, + no guarantees will be provided from one release to the next and + regressions may creep in.
    • +
    • Experimental target languages will have a (suppressible) warning + explaining the Experimental sub-standard status and encourage users to + help improve it.
    • +
    • No backwards compatibility is guaranteed as the module is + effectively 'in development'. If a language module has an official + maintainer, then a backwards compatibility guarantee may be provided at + the maintainer's discretion and should be documented as such.
    • +
    +

    39.10.16 Prerequisites for adding + a new language module to the SWIG distribution

    +

    New target language modules can be included in SWIG and + contributions are encouraged for popular languages. In order to be + considered for inclusion, a language must at a minimum fit the + 'Experimental' status described above.

    +

    Below are some practical steps that should help meet these + requirements.

    +
      +
    1. The "simple" example needs to be working to demonstrate basic C + code wrappers. Port the example from another language, such as from +Examples/python/simple.
    2. +
    3. The "class" example needs to be working to demonstrate basic C++ + code wrappers. Port the example from another language, such as from +Examples/python/class.
    4. +
    5. Modify configure.ac, Makefile.in and +Examples/Makefile.in to run these examples. Please make sure that + if the new language is not installed properly on a box, make -k + check should still work by skipping the tests and examples for the + new language module.
    6. +
    7. Copying an existing language module and adapting the source for it + is likely to be the most efficient approach to fully developing a new + module as a number of corner cases are covered in the existing + implementations. The most advanced scripting languages are Python and + Ruby. The most advanced compiled target languages are Java and C#.
    8. +
    9. Get the test-suite + running for the new language (make check-[lang]-test-suite). + While the test-suite tests many corner cases, we'd expect the majority + of it to work without much effort once the generated code is compiling + correctly for basic functionality as most of the corner cases are + covered in the SWIG core. Aim to first get one C and one C++ runtime + test running in the test-suite. Adding further runtime tests should be + a lot easier afterwards by porting existing runtime tests from another + language module.
    10. +
    11. The structure and contents of the html documentation chapter can be + copied and adapted from one of the other language modules.
    12. +
    13. Source code can be formatted correctly using the info in the +coding style guidelines section.
    14. +
    15. When ready, post a patch on Github, join the swig-devel mailing + list and email the SWIG developers with a demonstration of commitment + to maintaining the language module, certainly in the short term and + ideally long term.
    16. +
    +

    Once accepted into the official Git repository, development efforts + should concentrate on getting the entire test-suite to work in order to + migrate the language module to the 'Supported' status. Runtime tests + should be added for existing testcases and new test cases can be added + should there be an area not already covered by the existing tests.

    +

    39.11 Debugging Options

    +

    There are various command line options which can aid debugging a SWIG interface as well as debugging the development of a language - module. These are as follows:

    -
    -
    + module. These are as follows:

    +
    +
     -debug-classes    - Display information about the classes found in the interface
     -debug-module <n> - Display module parse tree at stages 1-4, <n> is a csv list of stages
     -debug-symtabs    - Display symbol tables information
    @@ -61744,19 +61400,19 @@ $ make beautify-file INDENTFILE=Modules/emit.cxx
     -debug-typemap    - Display information for debugging typemaps
     -debug-tmsearch   - Display typemap search debugging information
     -debug-tmused     - Display typemaps used debugging information
    -
    -
    -

    The complete list of command line options for SWIG are available by - running swig -help.

    -

    41.12 Guide to parse tree nodes

    -

    This section describes the different parse tree nodes and their - attributes.

    -

    cdecl

    -

    Describes general C declarations including variables, functions, and +

    +
    +

    The complete list of command line options for SWIG are available by + running swig -help.

    +

    39.12 Guide to parse tree nodes

    +

    This section describes the different parse tree nodes and their + attributes.

    +

    cdecl

    +

    Describes general C declarations including variables, functions, and typedefs. A declaration is parsed as "storage T D" where storage is a - storage class, T is a base type, and D is a declarator.

    -
    -
    + storage class, T is a base type, and D is a declarator.

    +
    +
     "name"          - Declarator name
     "type"          - Base type T
     "decl"          - Declarator type (abstract)
    @@ -61764,51 +61420,51 @@ $ make beautify-file INDENTFILE=Modules/emit.cxx
     "parms"         - Function parameters (if a function)
     "code"          - Function body code (if supplied)
     "value"         - Default value (if supplied)
    -
    -
    -

    constructor

    -

    C++ constructor declaration.

    -
    -
    +
    +
    +

    constructor

    +

    C++ constructor declaration.

    +
    +
     "name"          - Name of constructor
     "parms"         - Parameters
     "decl"          - Declarator (function with parameters)
     "code"          - Function body code (if any)
     "feature:new"   - Set to indicate return of new object.
    -
    -
    -

    destructor

    -

    C++ destructor declaration.

    -
    -
    +
    +
    +

    destructor

    +

    C++ destructor declaration.

    +
    +
     "name"          - Name of destructor
     "code"          - Function body code (if any)
     "storage"       - Storage class (set if virtual)
     "value"         - Default value (set if pure virtual).
    -
    -
    -

    access

    -

    C++ access change.

    -
    -
    +
    +
    +

    access

    +

    C++ access change.

    +
    +
     "kind"          - public, protected, private
    -
    -
    -

    constant

    -

    Constant created by %constant or #define.

    -
    -
    +
    +
    +

    constant

    +

    Constant created by %constant or #define.

    +
    +
     "name"          - Name of constant.
     "type"          - Base type.
     "value"         - Value.
     "storage"       - Set to %constant
     "feature:immutable" - Set to indicate read-only
    -
    -
    -

    class

    -

    C++ class definition or C structure definition.

    -
    -
    +
    +
    +

    class

    +

    C++ class definition or C structure definition.

    +
    +
     "name"          - Name of the class.
     "kind"          - Class kind ("struct", "union", "class")
     "symtab"        - Enclosing symbol table.
    @@ -61817,164 +61473,164 @@ $ make beautify-file INDENTFILE=Modules/emit.cxx
     "baselist"      - List of base class names.
     "storage"       - Storage class (if any)
     "unnamed"       - Set if class is unnamed.
    -
    -
    -

    enum

    -

    Enumeration.

    -
    -
    +
    +
    +

    enum

    +

    Enumeration.

    +
    +
     "name"          - Name of the enum (if supplied).
     "storage"       - Storage class (if any)
     "tdname"        - Typedef name (typedef enum { ... } name).
     "unnamed"       - Set if enum is unnamed.
    -
    -
    -

    enumitem

    -

    Enumeration value.

    -
    -
    +
    +
    +

    enumitem

    +

    Enumeration value.

    +
    +
     "name"          - Name of the enum value.
     "type"          - Type (integer or char)
     "value"         - Enum value (if given)
     "feature:immutable" - Set to indicate read-only
    -
    -
    -

    namespace

    -

    C++ namespace.

    -
    -
    +
    +
    +

    namespace

    +

    C++ namespace.

    +
    +
     "name"          - Name of the namespace.
     "symtab"        - Symbol table for enclosed scope.
     "unnamed"       - Set if unnamed namespace
     "alias"         - Alias name. Set for namespace A = B;
    -
    -
    -

    using

    -

    C++ using directive.

    -
    -
    +
    +
    +

    using

    +

    C++ using directive.

    +
    +
     "name"          - Name of the object being referred to.
     "uname"         - Qualified name actually given to using.
     "node"          - Node being referenced.
     "namespace"     - Namespace name being reference (using namespace name)
    -
    -
    -

    classforward

    -

    A forward C++ class declaration.

    -
    -
    +
    +
    +

    classforward

    +

    A forward C++ class declaration.

    +
    +
     "name"          - Name of the class.
     "kind"          - Class kind ("union", "struct", "class")
    -
    -
    -

    insert

    -

    Code insertion directive. For example, %{ ... %} or - %insert(section).

    -
    -
    +
    +
    +

    insert

    +

    Code insertion directive. For example, %{ ... %} or + %insert(section).

    +
    +
     "code"          - Inserted code
     "section"       - Section name ("header", "wrapper", etc.)
    -
    -
    -

    top

    -

    Top of the parse tree.

    -
    -
    +
    +
    +

    top

    +

    Top of the parse tree.

    +
    +
     "module"        - Module name
    -
    -
    -

    extend

    -

    %extend directive.

    -
    -
    +
    +
    +

    extend

    +

    %extend directive.

    +
    +
     "name"          - Module name
     "symtab"        - Symbol table of enclosed scope.
    -
    -
    -

    apply

    -

    %apply pattern { patternlist }.

    -
    -
    +
    +
    +

    apply

    +

    %apply pattern { patternlist }.

    +
    +
     "pattern"       - Source pattern.
     "symtab"        - Symbol table of enclosed scope.
    -
    -
    -

    clear

    -

    %clear patternlist;

    -
    -
    +
    +
    +

    clear

    +

    %clear patternlist;

    +
    +
     "firstChild"    - Patterns to clear
    -
    -
    -

    include

    -

    %include directive.

    -
    -
    +
    +
    +

    include

    +

    %include directive.

    +
    +
     "name"         - Filename
     "firstChild"   - Children
    -
    -
    -

    import

    -

    %import directive.

    -
    -
    +
    +
    +

    import

    +

    %import directive.

    +
    +
     "name"         - Filename
     "firstChild"   - Children
    -
    -
    -

    module

    -

    %module directive.

    -
    -
    +
    +
    +

    module

    +

    %module directive.

    +
    +
     "name"         - Name of the module
    -
    -
    -

    typemap

    -

    %typemap directive.

    -
    -
    +
    +
    +

    typemap

    +

    %typemap directive.

    +
    +
     "method"       - Typemap method name.
     "code"         - Typemap code.
     "kwargs"       - Keyword arguments (if any)
     "firstChild"   - Typemap patterns
    -
    -
    -

    typemapcopy

    -

    %typemap directive with copy.

    -
    -
    +
    +
    +

    typemapcopy

    +

    %typemap directive with copy.

    +
    +
     "method"       - Typemap method name.
     "pattern"      - Typemap source pattern.
     "firstChild"   - Typemap patterns
    -
    -
    -

    typemapitem

    -

    %typemap pattern. Used with %apply, %clear, %typemap.

    -
    -
    +
    +
    +

    typemapitem

    +

    %typemap pattern. Used with %apply, %clear, %typemap.

    +
    +
     "pattern"      - Typemap pattern (a parameter list)
     "parms"        - Typemap parameters.
    -
    -
    -

    types

    -

    %types directive.

    -
    -
    +
    +
    +

    types

    +

    %types directive.

    +
    +
     "parms"        - List of parameter types.
     "convcode"     - Code which replaces the default casting / conversion code
    -
    -
    -

    extern

    -

    extern "X" { ... } declaration.

    -
    -
    +
    +
    +

    extern

    +

    extern "X" { ... } declaration.

    +
    +
     "name"       - Name "C", "Fortran", etc.
    -
    -
    -

    41.13 Further Development - Information

    -

    There is further documentation available on the internals of SWIG, +

    +
    +

    39.13 Further Development + Information

    +

    There is further documentation available on the internals of SWIG, API documentation and debugging information. This is shipped with SWIG - in the Doc/Devel directory.

    + in the Doc/Devel directory.

    \ No newline at end of file diff --git a/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.pdf b/winx64/bin/swigwin-4.0.0/Doc/Manual/SWIGDocumentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1831bd721df034748717fa95532391f7641f50f0 GIT binary patch literal 4758748 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

    64FYFkZCYw-HDXR)iMPa`8qMnDr>G3 zC0_fLHMr6;G=*M}Y6Q2IX+3SZa~0?8;Mk9m*oYj3pEGZ@q2B|Xh=*0(A2EzXoI|dP zJHC*LBpTnoU~)3K0ngibk21GyVT5g~L@2SCtvzM_?LF6>ve{N5Fe8?RCBr2bT@0qd zvTTOI0nCp8-F8zN`4zl6%Lo2MFi+6sf}IqI5u*~uCc9ae)tVtZBEP{ znF{H!t1I|ArEG2PAC?MN&k&y4j$-O3HA#im@#6la zIV`i`P}AUJ%S(eDIqwpvS2O89%5y8CuOo16m7 zCwCRFR84&26L>v~{Fu8)?yTJ)?F#*zj)cUJt2!6F8#xt3*saOcc*afU5fzrlO<=M) z6$5vy!O*qcO`5H3I*+~MkaT)Z(J<*)kxzFa121DYR9QBb@8Ls8!vGBf6(MP?Ph$e{ zqmJ&=1632}iKf^bU_Ab-!KNUp;kO#D)c#e^E64O-?OLl(rm(pIBJCn+GnEa@{mcXtM%8u>JW5 zl}lf1ro7@@rE!Y7D-b}8qEf9(PMq%~B~LpPqwfK|VKLx3yG1!qv>H;)7$#iG0mX;G z6ZeHGghRoP{&89cYYk51o3sMuWzp~g3dpn!JfZz+O4}}cBwn5z8Qa2=uRIi=9$IJv zi1i!$#R9D|p327jSQWM^qzn2%SbZLH=`d2ryhs2fn4|$QlZi3W&FhKx5rnB+mG_rx zObqCilQNlBRc2V%Pt{*R#vU7VxZ9>Q7O6cxYLxr%x%ci`TJMkuw{~D(V@p+dsGxd>I_+IO*Vf z=7%I|qWX70^slepe|{m)!N9=yC#}Wu8-LPdWc?=){hOHs;wrE}y|+Jz!oPBnEWhES zf8Xpc`9uB%kNl-V_j3^cz8O0ZoBa(@{Y!7Zft!Ed>_7GPOX2Q6_x7LW_Dc`%KR5eN zgJk{9aQ^#2{)JKc7nA(b+WXhuejDNE0{o=3{+&sH1lK=MnEzpKzu~+;oBgfcetXH^ zBZe5+|4bLf0@Tq1%1-|2Ml3*y-hV=>{|0pu0qS28(whMD5|S|MlQ5b5{Q~v>x{AmK9(jriD^*3@0G|6vF|9>BS`(LKc{4X%; zFHOt;+3NohZ2>gHUsY#;Ci!2z>Q2Dy=EhFCR{A!k&OoT{Us7GO{F3zi`*!%LzRUKT zQU7U&pP3i_NVW67+y@+;?d)tFoQ#chfzs4Y&i};_zXL!1=63Lxt$_W{q*_47_-!5F zwen}A!@qHmze}(FfoA_l@b;Go>;GU4e}}OAyquZ-*t3BoC{SUXo%s)`?f)BN{)v>E z+Bp9r${lS@oLqqzCy;oyG^YP=m^R!0EF$2q)G#~apA7u3y$KkF^M7;Dc7_hdzefGv z$NBqQ{(JuMS2mdCPd@-gF8mHN0j8m2{kK^w{;p&E3%CEDo#Xe7!QUG z&jJjcA_QvW{-2!be`}wYtu?)sxq*YegFDbI4C#&j zdT7(j0WVUZRQ6BY*U;F`33#^uu2Keys?!4-+nHPae8C^3f1LC5^uOL+*TLB2=R49n zn;X$9$pO`L8JIX&8EA!sCB!9#gx>$RrDgf=Ci=gikN+WQ{IB%!ul(^q1ojX5_#fiN ze@lbhT<{ z06r*MnI8}Q1=6(9B$gAxWNOIMvv|^xp@dFCbGx`C-wUK}S&Wf9T1(5R$8q-S_M#8| z>m$L}Y<};@?9JQt)tFVp!BVQYmsh;D*XR8kA&uq>DH?J@D zdjxkk=c@~^51ob|pMW*5$9KE0X7n${ck;IZ1R+C8$DN(ouhvvkFRBjDO>HlW>#IIo zFJExZFIx4PHalO9F7kNB4c13}aOrf-$6g=5-gXjrpLDM7lbIXVZkb)s@TZZ>#=Ji2 zhIBUe>O#tXa86Zmk7Z$fvOSqmUg+SK9m_j%!aVN>Pnf1QGLOgbjDX-YWEHBwAcmDa5vSB;I@~B2TZZCds zuGfiul9Btdd5rCVimgb}mc)tW-erZ?QH`-#r-#;bVH0mhbmeMjt+E!+&z`b*gN2)7 zQj4U^xI$h>zckydYRqM}njUQ8Y14o6*!9@D|3W_L!R-Lw{Eb{T;@+c^E3#{>hM<92 zc~Vo6jCbd2OUuQ#?)}+@eWSHZXRj@u9dkYc&Zi+VTk2#)YSXyOzRAr|nyJ~0r^bj; zruo!yw;vVz-_qwRTnt9fO_D}!*oMCjwhDu#|0vygYEf^KA7$v(KAQA;e|=P3mTdX# za_w`s%Gh3H8?$mgJl}ZV`#B`LlSNDs-{;wqI`?sg`}OiLMtJ2VmhIR8ST}s0z0e@@ zdVhDgig;aW6URh5X1Tn|*m>nzg?T0$Z*`#<-<7?y%Y9Ed{&8+^k=YKYJ!^7snR%qN zWvm^w0wy-h%o4Cg(yl1W$8hXpF|s{s%TGIzAPvL6iRxKn;88*!oE@ulI0$0%mK-U* zcl}&r&9t5%R4l+KlkH@+xBXrBbYe?q2&dXkuSIx0d`xj5JHU2(_cC)Mp|C-{?G6|c zK8xGQ!8|4G|CV1XqTZ)Qg1*TUnfM7l_{~@|g)`{cnOpY5cfQvJDs1mQi`ZGzmV;{8 zJIy&q9~xe~JpjQlV8+H5{lgqGz2Cm6Z7m!g|CPb80=JcQj&e`7%{_dj8Lr8vjG>`O zPSMxGA`UVcHt%tIyZX1EF3rilT2V8)b_+ow+RB^5%*Qa5-uDueDEj~k2imY$D{}zD^21Ht?ix<0(pPFE{oxHxVl+=!V;|{~ z05w9@9#+E&3-CHm*HoKbjo{Pj1Tu~>TvHd)>DP&DJ}u&nS-YbcRUCziE}_|gol`b! z?;^o*qkd76z5a9QE2mu(;ut8@ixsodNBA?dBmj%u@&mJ6R&8BLN_L6Ic!C||9U?x$ zIEeSYXiUpxVVEu5;v>iu%Oy!Wuco`2Q9>hq%MDsCCoXbLITSIiqFjb;#+{Lv%#BhRilP-b$`i2>qF zFSqoQN)!@4do_HipwNvvugyRXm|MB(W;dGQh`4UG$&KD%F!94p#cB0{_)K;A$kfUP zR(q>p=mi75fMhsFNGhlSqWj>QPw0ZOLo{75M2mHwQok#FyTy9bJp$sWL$#d0TFp(Q zL?!!m-g$QwGu0GMQ7_{SpYzxKdM^&O{3r%G*W%O7`lopv{4gwsfyFyGIAWhTBBUS38U*owkL;D$L< zp{Lc5#v51^ys1}~VVf`8+h@a|ju$_7IhSQ_{X}EYPPkt7kQYX77f>+J(Oc~ z@$CRM8zrbrR&*15wmmvvzT!H`1c$3=FUeey!%At`(Z`SGiK*oeZ)L`}P>s9*t;{7qhTADmoz_OQ5;wRy zpSdATEle3SQV>X8scJ_XXpZ+4z4|1Y+xIsV36u6yrdj1F$-8)$ckZQ0U*rbbUTqQr z5-!2DM1+F15XMXu%v=YsrwL0l8+|LVqe5gYH74pN^sHeq?H4w^Af`L$T$&~GAU*C z;E^nP3#3)b<pEU4nYQb-C&~l8jj7Z4DyusXX^^fHv{Heb@Ve zDC2eDC?)_kQ63VEQ~nmq?MA)KctlN25@n4o#WergMS;QaE(cOlZ6U`r%kNvyaAI6Rw9h5olKLZV2Ko8eRuh~^lIq3Md=k#t0os9`aOv7Dw(}g#6R?i+m_0EiG8^?3 zkcwD5o65Ob&h%RE-V-1|j)IES?N!4IAPPg~f@FnOtCcupRM62szB%qUmD=(!ezav; z)SZm!6B1VNd8*zz*rkdEDyP-Hniyoz=(&)E$2$s-&S|LZ>9$`@@@vM@UD(}@sQAO zRdEo7*Q@|iq~uVT;K2S~)Yh4Hw2<5sQ?Ue3R;D*Xx0Ca2a%}x)@hTGYYYu8?Ur-^rSkY2m5z~B`J_wMFDNwMd>0Y+)w}mYK zaG8+uKPAO7@EY7DzJMxR>8&mDdKBR&;#fD(<0OBLF2m3;n%F%Yk+jIksiBC~wzo_cAmK(oQZ_|d6e|w^r%vuo8ec_x3c69Jn*CJO$9Lfz6 zEl5w5-(^p#Ga(nR9TKp_$-_Qe`n6sW$}qs#VPCK{64yspP=)?n5=#_}(m3K7yJ`!r&(* z!fd$-DA_VU^I?a26+O3 z)EpPl2Ep+mn`&i?PXX@&!P#n)-H4A`TR^#&Edm@{8*81ukt7 zEku&Gbj3aT_{aV_tJ5&OTNQO)}L=nwPta|mT9*Y@CMn|HT(5=$ovgOSJx*sBfDw)nsm8fOb zNW!&Eo00eNp)(v{I@+9{{vEslsUM{UrJ?U>jVC3Yp<3%^>~n%L zpL{#kAq^kbz4WX8zi| zupSts$q%d2DqM*%k|myKMhU`NByvIKPgmM9x$TXYZ2{vErTD?w`i$nL1$FvIJg`Ud zX=e=-3Z7h^b)IEd8+%#sQC{8LYV;8vm;?;@>5{yJXw;u(u^}9N8G)CT9T$fXt`G>C zq52iAdWYxmJkxpI(VSQoZexgjA5$pRLdIu3QDwK;PqJ!q#?{-RYL?=+7wR9=&elpEDGB7dAO3<0q>hTOmP`Uymq7;MX6s; zA!8OtTbhqtoqT8KY&~FbHIJM3z1kAT(R>9?Kb8jsc7PKBH=UMTLEU1;p1YHLBn*sGPOLdxIzn$SYo>@kYI zF<4pC(V;pFh$V;C^$*WYapjU3%lV-=QMkr7K1Hv?DR59k%;8XzM*1WSHt286L~fu` zh;i9m6hmNISooX_BFGq@SfB#%5|m8jp+9s%`x80ON^sVi5ywe0xTU1lv&saBkLco4 zs7)n#25;=2`>8y!6XJO~&KHu1W%bOQEfS`lQ;I84V=YWiJ0g3(wO%bwksB;Zm0KyI zMGpRmdoc@eEyK(}BS(BFSneIG_mNsM5m|apR4(q}NLZQK-cstCY(vNhhhhPx`kGa` zuWsP2iZN$flxl0z^lmvRq1a~6Fxeu0S?BKgY_tdb*>2nh){rag6#M*C_4v|f73gGv zM${@d_Dr3HwWz^Z_M#nR-v+@kbw(*~w*{jKHdp*Y(ILL+B5=8eI}0kOQwlU;8BX;N zMfrJW7ox6XQTsntFi0!W-h2#oc|X)nAp3*5Wq>Wf%o(9O4yqhoqZQ4EtdsHWoSLgE z{MXu(k-nmqA5q7v>bEzF+V5s+XvSZ$r*vgvjO}0aZx>&BZiQ2`Bh4r2aGdXC*szJ) zyaXRFUrryMCeC-(Pb{1t{a=J0`xZ%qSEuud4$k4cxjpX&F};Nz#cs`2&mj`m5pD{h zm9m=5rQJkX1KB>as1=`G+ZijBQM0{38zzO(eB|RjU+jG^{Dia{V5yvo)U4$`SK--r z8#b`n>l$%Z%kY3NFff|xoIr$+kNe_4P6fWUXben)tkKhv?L$2ie zE8Bsfjk=N=*3$t`NzD~B{#ils(1gK`8Lo|>Z^0itM;sb+s3XcgnZjll6x>_ki52Yl zV_oUVs?VT>;^rD}G4yY|x!*zUub-=!BpxYJfGiijo21X7@2^tT#|iwv&FsuJf4fJl z4X@ho_Q4Bnnx;72+2gx)KkG7$b@(Ejc55mD)t(MZ5ooX!okZ6*dWz>+jBrxwK5XEJ z=EEWe4IJ&Qa=x^k6PJWt_M|!X7YEMxFBGZY4ecdO6(ISTM^>%t>CaLjdE<>Sy}vu& z0pi=)7sNOY;m0a>F*8x!dy*kD8+nYM!FN3O$Cwe)y4T=3FC&c+f^WAlS=WvMj_Z-W z<0}AKS&Xc6iFkEBB1seBwT+F+o<1gq3=ifm*E2IW$TKNgql7z^9~X5!CUI8G{+gh# zJa4^F8b*?u;~Kx`U~CG2&ItUNOIUTp21gZcWUzk^kpia}!wuBaMn-@#^_^CXOFAn- zO+8W%%lfYI9RpOq9Tc8AEK4^Q9X!1k-)f?+pIYYwFS3D$1DSQJ!0UF0J_j{ep7pv2 zqA?h~7MLtqV=jY2sS+?gl&eq&!h*f~s8#KwgDX)^M|cBaC9g06yBF z2P20M{noYh?GkTb%aN<&G^ilCOddEjk2f2np?%&iP-@eS;sCv9R8(QHV_j^u!0XWNR@AyBv z=h{EH?Ca0wq%*ve(%`Qg9jm)~7g%Pc^P=ojqo+^h6K#j~~5;TQyO6C55Qhgt5`Mi}=6&Ar6QPP^LNrH%ma8-fCQ*7L`?LD`kBdtSPE#0TU<9U9yN*rJ#_J zm_t6D2{{guueW~d>7OqcNC&r| zvcm@kziZSD4OerU$Y^T4)nf80nR^OvV8G?3%rn(kx8^wdr@n zFUI;3(j76YMbMu$Tob(u?R?BUDWu=PAfx46ynQBzX1Y^4tQL5N{?S@S&_r8*yr9LU zf>H@zI#J4ELLRNf1){czN9rkw2F&=u4zjI52y5-{4D!R_oM@*3zRA=9bxw1`0P78u z02pmq)-?JsT1AUdJUG=S=}`wu0faJiu*Wy5J^|0OF3OM+4F@F6b)qZEhf#joDp)() zXVMp;Zv?T@J&X%m1AP;9UQ{mHUmR~4VGG^pckVXk%pu45mefERZhjrr z@5Vo- zW?l_UIen^@>&Boom%DaBIV6Vn*7pXS8a(u107}7oCIkh zJUcnRovt4mJjireAt0}Aq9Fg^uZwJKtr<=kdL?X)`}n*CU}()~W*+(Ym2Nvn%L@6G zG|RY>HGgzZpC%^-BAg-Rb!go|1MVrM?-fvJJvyh`%KECdR%VXa zQq#surG^=&pl^OXbH-#uJJSv$g_}}@ux5=@zz8XFoAH|h6C@od*w7Gu)l#6+I4`=+*-yzHyshW%`~@e z=LGs=hC^$rllH4|47lndg`}5Z8T4RhF;b=yQpQ&u%}Wh8;}t}5s|_2MQes!Umy|Ra zUsd^l&Hepgs4Z?!i8!TRyO&t^Y~g)dsc4$}nxW!g zXignN_Zf<6NpHHvKep#{u&nvIk5fPhvwq`wrfPF?9xR&Qxf`3xZWmSGpF(5t;=PV? z>s1L2sFNs@wBd?F=T>T`&vq@j!nMX4Ol^8}eWP;E^lFdI61ntB5X#iPeE~02w&v#s|_no@mkYV)V z2d+p)n)UV^q&cJN3&*L`=>i4HY7K}#;Uc*=V#ZFI@Q8mjf)X~oUW8^;Lt|C(H(;R2 zL)c_=S82Y5aXiAg?)3}#(jymRkN4U!!(vO`k){pVjJ4N`F3F@DcD&j)Yc#BoP5EKw z01x&x0ZvK|WNK{NcQp=jNNQ9XhPfUdmKOKj@B|)i7L4*zs<#VfPZIZG5J?d1aF<{| zRHD{rNbnoMd!sL@fXkIk3_(c{=oHzn;i&P)6|7k>)(#NOG2k%2{f?Gop^|Z;WXc0ZPuStp6-H1CZeMd6E9q9Oz@Z;qP1QCCUUKiz3sOOqH_EvNH#_CPY(zHaF(J-o`lRV)LoTNbqCGqJbv$9D)y3!0GDGsPFcfvRaC9a)x5=~ zki9!And5t7NC_>sS#c@XVt4pprv;O@Yp31$tai(573T+Q--BD+U6T`3yRzW}N~z@% zDD2_|KG;d|j7s@H!P)j6F!r`LL>pAzLC?4e#(_0^+wwxK(elq=98pxq(>f3w_9$YO z?(XHY?Ng>?FB7#(Rzs1`d4Esbt`lLT{Muv14S|qVhsv%^Pvm^0`4l7_dy^zO>v#q0 zz(MLB4GB{e-Dh!l)W#oDuNX^imsgUtv>$s$2a{d~km_+m)GD$Wpa&UEI;I;a4a?3A z$4GG;OaO>`d2d_{s0(WQVFXDcPv!|qNcsRi5@P#`Uj;&4@IQM@R@qr6Ad62YnJ=JG z5J#Ll!MqOU^J3|?K$@gi2hvoDS;s*3K#>N6yhZc7%)qY`yb8`ta*|NM&NKF5972Jl z=q~M*_Q#qsLH+!OXfoB8-oN&ouDP7OdQ1SYB+SB9bbwVJxv0?HAxJ0>Q;Xh7x zD&E_@0SoIXkeuLI1SabDemJKn@YD*bo04zrhhl>3T};>)i6#bt0vpbP1uhqBX9`0` zi79p32j!eBpM=Gzl7q%(tLF`4YX(BnstCQ>Td?`(2tAx~aAX~{fu*>Cb8T4I0_A3< z+RR29U$edt*?QyUq@5k~1?Iu8#B9>v{TCfN)6?XR%`oENw&@n^^m`z~8&)#2g?8VT z$7o0OWGXDL7*Kr15VoyO-I{L8FiDWlm@H+72L zVFfT2MM;ly!PazDCMxYP0VU{SYV&_k_m*LKBwg1i?!kg4xVyW%OK^wa65J)YySuv+ zoZtj^cXtWy4j;)3PbTk~>wBL$f6km=+|=E5SMOcBt9N&;wO1c1i+6Y3*YC}#cGg|O z5SuccW<1QwBsqI;vJb~u&iiP+z5$l+FFApu^LG+Tr|wAz&z@4T7aqn}=F7GjY3Qp1 zO=QxXw`YaiUf3H9DL439>lh6g^eZ}NgptZ8))8VyLWrt8Fz=sUQNm}#D2?Hfu&kD~ zB*RL{_d?QtwBTY=v1%5R4sceeGgzJ|`y zG30WkSFTF4g+>@flABBor8gOZo!;kOdtjE4Q_030|HipqMbjKbVXg@%kRRjxY7tV7 zk5B2#zBA=$Ziz&Y7+O)kax!6vXDK6bm`J&9e`v*SWyG%YgP^)33LZAad+5B6WC>aK z*=YDFM$~+n%RR>@jUDDCwAuZ~!_ksmHx)L@pKL@pJbV^bl@nB*0 zKmsdnd}NHiSClWtLj^Xc30Pqhc0$M?e_adta#OqgSxjzl!xP$QECr)F<&xLhs(MGX zq^P{s)7?S+Hoy;$>Vx~0SSNs0a7o%hQO+fn<^&J!@C~?ZqFz$&_0>_6jikfzm2V!K z!jQms-9q1?0yk($`U%{@WGRLrWz37Pix||o*`r4Q;royy^+gAVqt60bCW-G+h#k$D zN5>q)mzib;nd`*D53v~g3h`?;!UtBiSf zRcE%(lE2#rtbJJnJscTvpBcK%+_+h5NNdVyK6#``6L2X^-_Q>@Mg7eEV1IKmVZ=CS z$~ed-%e+4)?+RPSB*~h$%WiM;@MKCwq?S=qVVZ@3CQx?B<}jeH(K}UrVQ;f`-BBkD z>t)Qne}$89?XGaOZ%V@zQ8RixZBEzn?(^Yo ze^A}I!iwhZaQr1w;sXcI6H$gAw4FPIL>er^qK4URVBZkWPKWRDA%34F3RP=g(imDt z`jqb|HERD8Mo9Wda3A|T^b))Ij@6SS7ZyHt>qZ@I&st-QT1fF_v$n8g_BUCuc~n^xvJ>W=tffpMPe zS@KxvJrKjw*mF1x*!Jc%az|p}bnO$Plf-W%bW-V>&10P6mP_t+^jM9!DNJm>`(|^y zJOrVJGy+N$PR2E5tGqL;v@%@z=@KgW&_inGqxffg-6w@zY+Ha`) zpK9^Hcl#?2p7Eu0_V35P!ur(yb9R3nhLP?U;QhC=dxebs>h{-R=w2X9zYp_@v;TGc zUx%T4sgL`2WPqQ#_P<;6R}#kyZ0z?@Uh&+&M)~XEw2Z8OKgur_#_J6IH{Do%l~(_| zZvXS-SpFHn_6O3KnfdiRejts1ojfzk-vTH9KcyJ_hBnuCe8D;zo4wR3)i(V*u<;9Z z;(yjV{ojH2ze0qThVd1Z`BxwP4fgfl;}UaohTj1AEdLDm`!gI~@PIFI@LCc3M|{w{ z`r%)0JLB)Rzb-oe9VYju?Jwoe|5KXxrP%yyHF)M1pZv>hXZqdt*Ol`h*v{~)68?)| z!+-q1{K8@TbJhHpyMXz37rfpK{)r2IlxqGEO?+faVAJ@Gr6`%)dl}{_TN4_q*}`FY>>?XaW7f)Ozv8zuoHJ zIhU;eEajtn5ej)td01YT`j=-vx);9Tf7)69bv_Vue9aL;Vdg;rgn8eK*NbKH<|NQk~=2^4l`858y<$>w> zc7qyws;0DfFMZ(T*kK=fTz#iiOI1$G?S7%>IDUoO?dhie`S}=o;!W$r4fW&7(=i_P z^WyV${6OoYi~DK#d4_h|3YY5GmHU(3L)9n2=eqA#JC=_l*w1(V11tXMsMhBlv+1pG z?Mjo@NU=UVJ?h@Z>O5S#yWhW1k|vJB@v;P_`h!Qsv;^|Ew%ni2H>5k@ywl{%(&aTT zy4>fDX|Afbvx>?P9xv*4HWL($3Lg_skqeH+F~{y`7HT@9t52Y`3G&Eh(;bE!WhaF;-cLv$z8&Tb*J!=iXdN zpXDn3UVr@+_UMi%_Y;|lSJ|Y-&S=+i!-;RvXh&L62$}`f%AGB*W@zDj+Q9`XZg;V> zV_4$w=e4@0xbI{F#GxwP1;a_YPb?F=775f6bs7iv3&WXXT4+Wk>AD!%hpg3-8zYZ# z8tH6mY6)fVLEXom?^_@4P9N*ioNaC|r5}|h#KPSl=D%nxskgjO%W8hO>lxsdkKKJb zJ=@oEHgGdj)pmaTgvRW8-fRhwXnxxvSxaS z$3ak8B0MK9`D)a-&*I`Hw8ezcINpJ6)3p7=h~lHjkRrNaJ$$>T3)xv(;K_{EJ-)*V zgBp0D`*lY#^8jyDs@>X`VYiZ|N0GEKO(g|B`6;^d2Nj9@;?iwz?e605@lo)khnhyNXd%# zZrc;=*o<{zit4A}7dDjQ7y8<$-$5TmVsuLgA2IbjyzE8D)~E?rDmk0I^F}$q=(GCc z$D@QR-Q!dQBo|s5YbDK&3FZL5ue)7}N%8wCUrnbS&I0%}SMf_BMyOmcdx(+SF3ycz zYHUpGL%WPfEwLHqGpQNo7pAx_$uG~LcS{&tycplp5IUiN!2xFl=&|;8 z(=a<8za&RhYjyy5zIzSOtg#DNeI+2l6@QGGYPnq#e^T2a6uI3Hn~%cb zA+81fv=f=FL$vNCn0cdnlzF41@qT9s?JPnIHb%)pym>g}r=!EZS9FKoxs-BB`)@4q zougPra!NKOr7<@|>YzuQiE_V+w%*z_uO-H0)nNKt+r}yncUeg^rs+K8P>$prBzhbt z#_%_L%*4A{AvvxWLtyH}I9Li$B5$PH*20H*n^F`J9Z#%@I18OnovgQ}Ke z5~qHEu=9Fe^&$ZSL9+%zLvV>?vHe5!s0f27W<&)l8l=gta2JIIwv^`MHFwrsaeo zx;S@e)1;TOASf$$Tp(1Cooehfnm zkp=I*0J!Sm9O@Sya&}c9??X$UhYm|w#VjcXWgny<3C}r^hHd;bwC|foT-1u<%Qnq9ai@$gO9Z^qcJ^Rw^Gt8n0#hiHnXOr0nV%X^zi)}Ist`3F6ep8h zb17w+&M|69Oce--qfNcnqMD5OL*q1ZLHg{ZF6oCXbRf+|)E><+Q&s@gk}uVj0qyuZ z7-O=*n}abJ02}r#{d!86p8XT(+V*9Ee~iPF8dTy=hVh?f4Bv!3uQxj4Ix4Idzz0Up=25>S1oo6ZTF5wONJkxep2aThIs||x z-SPuH$u4XR46j>YfY)61O$Or84j_H|{HQ$$Dymq#{4P1O?lXqTY$S;Sq?3^O_?#l;Ds0`_uw;|ur)e3{2+~ z^hM3Y?&=U!hs#*x>bkHpHyzc`VRGiyriyUbkBK9$8l6|mERZ2YW*W&v@*{#Fv}&C7N~;N z${b`)y0d619`9hYINZyaXWcjf2)@)?b9$0|VZCM%QjsfQ^h`XQVTRYgH`qgrpjyE0 zLHh)y`&MM+>i9#S$Tx&9=Gd8mK!ypRi*H#QLn8aGRYO#s((~T-i)+=(ntRLv`^Wj_aECj1Xv)6fM;yd$2C7hvGz3oi zLZ_w%@tK|TeUxQ~PCEYGfhQ{VDJDLkKfv3?)*FP1iizyy7=OLXc$O@z5Jg<0V5%=Y zB-*C=O7>>Fwhf5hI)wcJ2z}5Ck^M7@E13g3BPQZ~??3iYVw!qU)m>C;hg9Z$_yiOj z<={Kr}uJ{&dfc!vk2>C1iI{k~yCNLq6L z2kAnXxWQLHKs3FlYqYc3Akdw}r)zwK??BU))HVg$16_XO&iUaH1wow(J8f&ofzPX% zCxRe?CyYfOVFXYZjJLL6nst4TI5G~ra(9Wi56Aq-v7Dfr=8vfp zTwDZrEKLrLrjQBuc)H?;`P18|%*?Y-Bhg9zXgmz5ZKe>7dW^W%$PeAs5d0~U0i)bv z`$szTyh) z37}-~*;~FVl&#Yr&WN(!;kSgWA5lZhv<;*HT!i^AuI&}nOuNmk!u(v&4! zz0ZEDIPRkO&e&A&gS}c%Ml$ED#GH2=74x5$gbav&V=jak@w3&}RWh$v$0GCARDa2y z@XefrK=CQi@ob`ip%{+Xwi~vwZPRD3XsD4cVNxTWmIO7@%;9%6vnHqlW!>3azVBhsr0q4m5cDBuiU zCVVUxuq5r>YU>H0xbclRO<6nHYZ!iBty zZjQLZGvWzcadH`q-U(xH42yrX8|QI?MA$w)m1UMzg3y4{+V3UllfXGVw@^e7HCY^b6s*a2fvT7!w$&@uFq=vf z+}=o+0nR5MYI8zXO}2W+)*o2QH_(!$c7j^yK>=V#tE3!v` z`--GtY&UmMa0!X-T|0@76_cxRtH`-j=%^g6hdnA5Os7P#%iG6g@$QbLGoUk%Pf zSRg@tliasmw5hNJ1BlcT3_%!9hs2qULZ<-dBl6f>4J4=*{nXkbs8(C2?ofhZVVDoo zm1p#lbUOH%VsR8W+JGVQ4S2%TxwyL=a~q;?#$c{p9!jx@SS5ATom6Or@3e~ec$M$c ziYY7EHLRsKc$VP(0vir7qguasStqB4oG^@a7aoM~#oESdPXOpJjEoG$@$JM^K7sZr zBwVKHryZmgxklR2Or^fV2vvR2Cz`5-W`-)I=JyY51UQWpMTfxC|xXQBFcQL5~At> zu=`NLfGz?qLiD-sD>QY4y*b)oLTN|4j*46_oW|BbvcFG3v+;y2JSVJ4_X$;ylwK0I zHh4aT)d3@+IAZrI%^6b-*y2Pkew&OfUXhm0x_*-(rJOdpg-iL_A^4u(r=V?t3(mLU z-%(;ek1&5AiAUXpn#~@}N9-MQt!rMW*pSnyWE@A~NzaYmVK1u=7aa@1AzE2&Q%L0~ zvsIKZ)x*tn8y9hgr49k~%9r7A5>31@lshb8t1fFad&=EgGP?}pJ9$JtfNn!YH%HC(xfy%NVtZ-Yj?#MSMHx|_r$VfZ#BihAQfOc7aixk*E)0fPg z1~CwwRB-;${F3Gn|X=g~-X@0GLT6s&b&CgpcZ zJKMK`IXo*hl=c~Eyjb(FFH(%qNhhSP{3dEE5tnf-xN5?fyVPIr{L~pj7Jg)4W6U}8 zkRsA65y5^|$?dZs2+t4mCYQDOH3fB^UbQnY#Vs-K9s`q2Dv($z=MT5`-GQWs z=8K36x&Cb5QA5_YMneIt-{!c?xFd}q|a z=RN5e*^!rLx6prdAF2N7?EUW7Xu%uXSTRWfertA14GEqq7l+Rw>;#DRDWs>aih1A$k81JB{~CQ7@QSob|lZ07Y9 zm73zt1ySP8kqP_N^uLXI9Ta!YR*kQc7S^-dkd&iA0cp{wUrlA}x-II=bf>0bwl9-AEt?-qIW=j=3}!AKknO%L!$% zl_%i+ZW#Kg4ZiF$-5M@WJwC-D5KGt?SC9C+X%?arF)Q*mX9&5T7!Rb;CL?JKaX3v_ zf2K{oEf0HPK8=X@q&hpWFDUOc8X7L?gKDPP)V3k;@bC#BJWkQ@B_mUS?i_H3sPK~1 z&$AXPy;`xV!d)msDVN8MdI95kd{7zU3*9zhSGvl%BhMNk4kD^?QAzrIkb_WVVO8jc z5R8m7rXZ_A6Cf3jZTq_i?364wNA?=YW3EA)MqGE(@*8lhs>dPpR9ZFot`&3+*G|W$ zKJBGyIXDI@@tx=#X{6*HQ0v?HBJi7D(s5gH;;t_SS!&Y?>*Du!!}FuT-%;el&*@+E zg$4q(#EACIgQJr=Ub)}7^^UbE=2Ct+^SU$@g81~cQ^`e~jfP#gsLxpI5J*ICh|Nbm zwB(&D4g-4RQ&@~_N+ugyJaal}7lV*|Mbn$M5*_2v0G7rKDJ)~%^7`)|q<6+R_-`0; zRg~;fb#rW#i$0KCnwrR|wlz3%ngpLPi!B90-19<18Nr{CUzT(D#pnA0C?dDp;5RG{ zi>EFd&LsE~QkHw7Rh>QogvwIkxisMfU0h6s%bRQjj2rikAg#TS_7$X1rizY+wqQ3vdWasGM1Jz=6Ik?ol0D zXd@7)&LPn+a#oBCw1}DjkI%h*oJ|tJrex9%q;D3_^_P?SDRDAdJuT0jWE>qAl(zYj zcz}`vbQFr%D9Sr+cXH|t>RJ?2E8W4GQ}avf6)xL9;Rt^uCeq|qeA3_vE~_cm$IHRc z2Wr%Z?JZaJmM7#(fs3s}Ci(K2ToV;YFgWtNw>qYf%9t3=EY#g9kZ;uB8ygi5IT6tP z)Cc&*B#|bVS&srO8uKM);9`Y~&C#U6eLwVv;3kqbq1af^xyb+~o0 z@U_aAR4mpmf4nxVM%pfn;~PfYHu z44B0oFt11aoSQEtg%#>1a#7z6uyo* zqDfTqf^d5Dc0p>1{=Hs4p8CqUDYvPxvz}+C+6^e=RwtMY2ow^YJiHOZ^5+Z+OuBkL z5bD`pI{j%eN;6Rr=6jv)JK&G+gS!ADcU$gAmw7zPWt4&Gy1ZiNDs#uD&FPf9#=$>5 z*SgJm5;(z2FxE|X*mmO!A6pq|#mA?EciZx)j{pLY3an9;W%88~Dc-0VEanC9pk{f! zko-jO)7L!)x1fH^eb4mGD7v8IHRQWwiAK{YURmUmhdPG%mNF)Y4 z;P5DJLy^&W!{T;Rf5hn`Fhqh&P92&aIzSeMn)y(FM!7DJYQghuv6)^jCQ1s|1sqHq z3~VILzJCGV8$AeGq-(QF%B5F)++`}qSx1eRM>8PIc{weRuXfl)Wbso9;dnJSM4$S6 z4EZfyh2e#sDh$y6oBG_5JT%LjYlL_~7#bpr?`(+odWDUvX6wNTBLUbUR769?0Z5Ud zp-5q-7iYup;z_8_NJaqdDXAJ<7(u=J5RBlbGZnT)&bjMK1|y7o{)%iW?8}`DaxSE{ zrRs+g9-4d~l4UoqS2@Lk^oW9rtPbiNo+oh9^~?ZA4*FNpvAd$P2Gx%F)Kr_evysxU zqvqZNTRrqjMl7S|6Oyjssq2bZ(Rj!m?a6>gw2Pde(~7{&I?{i6N<5(uQCRQ?><0z% z5j{d_8x7`N^oAf84uQ;p56Uh!w+~?sW2l@o!?V#3+U|E_P2NEbaHHdAJMG44dVCa9 zaX*bFK=LS^3}Z^z4*|@iT)tbFWRz=SBLtvA)(uB;*yn>1>&#rx5*VKFB#xiW#OG;Z zQzb3o2#_A7^Q~Dxc$~E355lBlrUGA%t-pA18>nLGYGLzVFaNG;W;MUfCO$MJ=Z1g0 z*Xu%LjDInO+khz_>^znYq6V8lumgv$=&q@wi-;s zgi-g5b;@LqO-^%}W*>0`2@3Z#(1=0`MKDHmlvf2yguP!Kv?QQF5QpCB6JR8BJj#`K zeFkxKgACQiQEzOOioMu)yNLEciH9E=LNE}{hsw*i{w}Jw{zv26pW{ak+0|<10N(Bj`EU`yFB?_J~ee6b!` zuVd*>kXDaxOw==@Engo)7^$!mP*H^mL;%|sg&D55iF?m1NksCpj~=6nGmibe-GBF^ z@N~M$IFd1wpGQZtyx(@Cc%O}FP19CX`=|Kvk4WPPHTmJy*sPAJL-IrV%Bj3>M2<~9 zVRuAh3LQSf5SdUVWK?b7olRTuOBB-x$?+{`<}L0apOd8Fc#$lCm#gAMC;|w^&6Nuw zNl@oW=Mx=RSOD351ZsL8F~w)7U#=q**E4>`P=c>J7PoWv!D%x88=CWdcAa2pVGgAU zcVxE<7&O%p>N(SJZ*1*eprK>?>~fQx0*ejf9NpE!Sp%u@*nMLk zL72GKy# za^MYq461fPqa_M%ej}jI8?&pEIN2p1IMF(Ov5QzkUfIOB{jWpM^+Z-DamF`cGG+h!nCYUyr&W^M`JvoiScz3LId;J zxM7ega3ZdV9ezx)CK@#vEbWelOEND@EgyS(h5X*3IKi#+1h$}iP&AcA(`W(LBJo=p zYE@iRPg=lgVSgV~a2>%YpD_&|ZnZqa@e-ZAcZn8e4*(@)FXbz$KJsD1i#{|n!__kn z=xTtufxYPUoyO)3UFi>_ZS^wwf0noyS*0}TwtLK>sH=6NDlNrQH6B#p3rf(}3ra)% z;&))5G4;kr9>6I4ga4Hh8L%s)eP5L9@IqS0+s_w@pd9*J-u8118C5Y>Ro}l!3mC}q z@l=n;*?`-|oqlJGu<@yz+{rbWxi*YFb(~Q-b*RkM5`f52e-qKagNlnw8Eys4E4r(_ zQWmP)$P^K(iKDH=*iVaLY=2e|!Q3o9w%bD;yev`@nziD;CwC7C48a%xvRdHcD?x#x zkg$y75riyq(}z@VBv@DCmM5^M)Y~(dXPQb$TH(0NvuY*`Ffe9X`W2N9wHi~JlId7l zxO{#brHZA1Px0^EXU7Licr9J zF7{E>&unTH+O&topQVU%!||}Wze8p$2m7Ksv)NyXe#zsN*ji5!B{LH^%^|Ag<-iCC1W}z)3@-wL$;i@~955_i=7=W>`u*2D?RTDa zL!LL_f>CsYhsZXErIHQ#vlV4#_9e-b_9dYml=sk7>{x&9x0UOb*3DKZQUPvNY-op6 zz=~d-cjtoN!PqA zO4{^@l8)-zEKn(+O&!4`pgqABRn)o~)NX*_R`;^M*@g%8zJ?I${mUL<8i^^&n#0dG zV8QKIR|d+0+U6f6;?!}r9Z$vcZh33bsCTH+jCv>Zy{O3U1Che+BO`J2BkBgd87Y}7 zj$jA@@EpAYG=ezZliPTz5{_wDv>r~ohePHnGl$~8$1kGY%k-e_@B--1Q$g4Nq$p%z zte9tol>X#Ztn#{H!$6K-$58zA3=6nstoZs4gOS`u{NvW;Z5k3Mb+Xq+(jx5{=$H?n zub6mSC7I&QQU7{@`u<&I&N5MYiA?OSuG(N(>bS`5ig2u_=s zLo>RDmIot1iSzUaMFE9mpf_Z}J>-mp%7rlS?(1cc)$Z3ks8(HeFN;&yUAvxSRlsPHtt_&W@-dm-+aaq#9z(%11}D4z)(`^%_mBoBbZ@ zMs>uLpxG0MD@8GH9XYIa;2lEJMmbSogyHR@B`ul$g*5c`k*y&U*W9LZ{_E#lRO}nD z^;-`-L`zsbp?xkMQp>WGbP07zC11eQqIK|Fz&6R{&UFF<<8ehfg-_6eITa+*5s0Hc zz|MA7C#w^&!%36LR`&8t;+gMq$jiS%BA_^zZKEf8V9B@UFm+wM|g;$R7*c!ibUy8A~$Ibn&-1{`K zG&@ zwO&g%aoo<_pi&wk2(=nnZw$-E##vhxi*W-sFL%#<@D#O9l{kM0HYc}9WyyN%HqJis zXO#Qg2~W-K{=nU_>pu2(tlFOt(jUN5S{i1iU;17zyr&mv=^xZk=D(%Y{^Csig}BN{ z^9s9HqkZl6%CY=Gt9|*||L`k*>-Gv*|JCg;i0l_OF6(bhR7RRtsQ0hq|EpnMiE)45 zjh^xKNB+lXubi@f*zFYn{rBBySsDJ`7q1kif7tDx(SCjxI(eBJM!Ns7-Co!q|AEH; z+b94^+ScYT;CGv!=yz*<8yjN_^S{E*8EO6*1L&_T04CO7BuF~uU&>?5H2*#lQ0>1fUjr0phd% zK;!?!=l=*PYGr916MbDY{GBC_gcYpFlF6Dv|?9^UctnF z>AkyCh~(slo(@SGQq^p3UOszF=YBqaI9?f9X}y0)Kc6|;X&lKvklj?dU#Y)6Upj}g zb=q^|M%8zFy4&AdxLw$r*pqv_u9LfO-*Ip+b-!OxNq?4oem=iFelFmC$h?<5_tld2 zCHtP7BbZ5Tgp_xx?8zHq?VBzn);L?O*^yR<~sw@T2y z=L%{`A}Zc6x7fLuexdOx5=}i2?y!h#dUQrXyn`P-ze#rh(|9h!6!@J+b~=Nlxp#2K zl7V0~esh`XJFKP1^@>ka8PLgw3Xtxt!0PjQV_~<(mbbdK3Rs_Z_lq_#stgal_8h2# zQ$?#-c`Sj&a|ic#tv?=R|#?fj+a)zMw2W{GiZV?Hqor_9}5 zPE(A+w(ZkHD%=e5ZP%{sn=}&em2cVKkXIFo&+a;%G*ri$v9KyoH%}Ez|Tw14RQV{SAn!C!f>T=EL z;$ve&j6S77O5>CK_d8?CDs?ydu?4u6w3KENg}qAoM~A_W5a*x0?)DE`gZIUE)&}a| zOMY{d{7q+v0)yF6#|qgK}O5m0uwunLd`?n`{`xnG;;y7J&M}tao+_nClP& zi%F5yi=l3L%g}q0g0z##LDo_hMN@v6s&WQzn+tEl&|$RGq(}E9eUm4WgFZ9xK7LcS zFlmv4^&|0r+c}dgR;Al)e5Np%3QQ zUraAag#?<&j@dHzkLQ>#@Mj6Y%Ltu3A=DLejp zEZqj=pz=%WpRPbXRTV@yrORVk+t2mk=FNzCBr+kPVJac^0A#0rJC}`xM&nqH1<2{a zQNl1S7Ti%iKZ+mQsOhsYnhiks7N5L>j%FC7^9@16Ru&AzARG-Bb|xjgu#-Sf^Y-pn z0O>sNbI9c_PYRB2098S!AoM-av))+eUh-S~6(~B|paEe3KKSd?XrCTGH0OMFC|qwt z)F{M6v|K?P^`3E@l7PWjOV`=Fx~hi9(I&;B(7rs9`&^XdCv-;NHXfz$Tw51foXigg zR;Qmjm7-PI4>J><>QM@!(BN*Ho}(F_k2NP|xj-5Vno|W|faj7aP~Rwk2_`d+0vq3j zLbkD1=_m=6EWwxVqpnfCpsPCX#Dy4D`2w^`Vb&dXo)ya)NP_1KqE*GO+7gxUH3Db= zFH9%~LwMuc8=4j755fB_i9Y}vCfVNCr$4>_*lHJ_@2=O}S|aP~c2?3vJr-nN$KG|2 zZSSxg0toQLQGNpwmDa!_zE&pm&J-7ZovN?=crcv{L zZIZ?wm!>qj2Iuo;{KSq3j+v{zD(!5?raK)e&Gq61Wntn#zHV}Y;L=BB2c~(>=M2`Q zNjv`}LKx{#T6>_Z4%&S@62C$KoahUh<@gft(4eg4*$((;lK>n?C|(-qk6zzSp%9le zjgs@HNv@Q>@N_E>N2=`s)|d(c2R6`S%>YO5LDeB3LdEuCZ;-aM=WO*Sx%hmEIt!%h z#*dC6;Pb9z9rGF51&lX3OqG{)X1)YuqD8PV^IJbJpu6FF2pEV{wYeG^>;M7J7b^5`0IvNViu)4*!0Ibu)pHgzmX7CA)inCrxnWH1=rQhViV z0;f`1O{(2=0Xd_h0gGem+Ww;cF|?m9QlWy z9u8(P7rvsV5K6_7LF_TuP$6lg&*Q0eiqXycN0{s?YX09H&Bn~!bo<>#0!`ie^^uvK z@CbBh6#~GuF`UvsSgry%NXR6-X=|9^ijYrX4{?Hp+qt{Y-b-*;9f-h=S-vaE0k_&o zZuVy(K-}t#8Qy6AATx1al$j!)8|q?C6@c`Ch&F7UzS4xXTQ)LE9E55fP8KcS)Gwm! zD_BF4RmLYf-&L-`EirEP;WG!|82u${EeKIdOgko8U=-M~k(PdTtxqpwc_BYk+m zMuhp5b@3dy|ZIM&c2OtfItX~gVqhh zym9fzg%R=4_?AE*aumeUgqnp$gzl%LO*e2tizt$L!U3;MyVLRMoJTk&frG$17e@WP zUl@2+MCO48Rg5{piK7ix^&-YCj3T7$AySwDghGFlq#u$~9JK|k910jUugVP?dJ=ua z@dqzNvBV>fXpFd82MiRuHuwOn*mqtt_!lP}FpXXQu~PiT@2VE92z%_O(fwE6RV8$>$A8_Y@zFAfL){keb=P04uYv zN*P+*3&}{tiD}(AHVFG0pwPZ}h|9W;UT{z#6UaR8b%V#p@m5Oc`CP%fKcyz~iqq zakljB95L1<3bdyx0^i)F-H>JK^i>%F!2J-uc{A}B<&_i>M7Izojfbd+iWtyFj&tnU zfAyxKcY&-9>xD0BLZbyCsu5>+?8!z2E10T8D3lYCv77yt9E+`r<_XCkv z+gJA5=&z+fcVwE~n8vOe2B+3#_r~4=3-8lenORJiD0_Nk+Zj!XG)1<|k**!-#9-l$ z2!nVJXHZcY;CVtZsHUH?1CKeJK&pF!gE@ktvB9Q!DLJ9aQ?ZNKoT{T9 zvj=6`)-`fqAP~PJU9B%c790TQsUQGX-wp;(p)t+qKY;J^o&C5|5)D<^j+O;c>$xF) zB6Vss%RA)bv{th=mOw+jjzpro;Q=>D8X$K9;-kaWugkzQe9jKtl&2UE?tRCxH>E!H9v1pHQrp#)WVQnqX z1+?63>B0zjObXfDBpEccrH3w63--i+p33jd!O-h6x`G53`V>xT5BG)+jBMwKXX|Hs zqf&Dz*xnnH3NcB%IegS0E<8r&kVz!S{pdp|f~c&`Kv_T95e+38bAJp z1gum?Pzf>o&xVL+Vs_heT4jro)iq2@ls5dV!U_$rB8%E={xpH(R#m(X6Xk4Wg&QI0 z#=Q4%WI-Ynf=sedh4x-qk8*;WsUpxaepWQ^uqUo98e^O};NlzvK7q}lgvsBpp;-ne z;xRLwaI_JMow^jo_o`APqhe{_QGUS0)^i~To%N7V`!u%969PsNy&Xq_e-&FGCzfnd z%B7zm`wg;;<#f5ne0VDyVWFjQDB%>#uSfu zE0>)#(d7UXw^Sh=E%Cy7GfebXO;L5Vv0J* z$zCc#^F>kabAr;BkVT;mwwk;Skx6pmi}fiOWp79}RMi7U4IV9z@ylm` zpt3qe37gLPV$J!k)X^*0)Dg-f0NLu49njW(zw4ClE?lm5zcbVOSb|83SjHTCe1J_Bw#K@ZQVz~Cg|UPS%=gWaLv zF7p^;28`0yp?`tFgNUD#ImXF1nwfZ*PsGD&IRSKX-yKFA*1m2NzZFgDXU@0w;yEp% zEg=+x2)fZoghnFM@hBu|bbD{Tg@hU%TD=b)zS_njEej^EZ0Qx1j|g1`s=Eas`_09m z*dP8|jWGwZon;ZMl-xJp+XNt+PGcvhmd8b{BUG_GY0b4gr6?-1c=7U>l{c$f(@1 zz?<>Cgb<)85OB&Z3CZkt3fNAh0nICLyorz5ldYa|#M0m}?MoS$_DG`HDUeg_AeGxw zl6aCtokENupn3Df00hCHCCjO&T^~>{`ncO8MbQo#fKkrM+FdX`UmS{L%fAnDV{%)W zC-xhT;_BEu&378ccR+|E<-P+st|IbGS>JJK^esCVQ=r2*T;#BD7^UXIOf}RbMBdJ$ zl!^#XnTmDY3qoHXvCT+l9W~^m07mu>B-F|qzYX!&5a9AF=V%IIAudvt!Q;Uytd!-- zzHCoCYdN{SqUE$T16hhD`FvWIaabH6gNn7E8ZA$breg7)OAO*OoG2|A#b@Fiwwo)e zy|04oda1pAlcWEKy0?I;D{0n-aS8731PyWy?yf|IW8ofSr9#@7+~hU0r+EQ%~b`A&WxQS^4Aj?KWg#7R^-V z4kLabS|-nt5m!AVKT1+=3Xi^x07oLC_E@_8u-h0*6>#PFp($3*Gt`5AWrzXNvxvKg z=My3EH)QNQ9hLT@d1t)Agb~d|3ku~{!x(FO^k-bL`di^ARrUK3=#;oz-%6_}_-~{A zvC8BPQa4cQ6Nrp`-pE3tk`Za^9-3;#jA6!= z3S7vwC|IgA;559B#}_R^NIM&NTg^x1v8W9RH?@`h`E)Jai&Q*-fhI8?zivEeJuM}I z2QWxl%=59P4j0v&#q|-pmvy=eNx2vtKlHG9yNYS(C|BCYcX=2)Xz!K9NivItd%}vh z#rv}{Tk_h}YtF)@swmvNzn$)uNhRfnG6H;uE;>8_?`sda^AQm)FoR)&!oq?Oy))aP5UIM7sEa_)?ub>!W@ zI2q?WQXyR7B<-dS*~xr$r66*H1@anfV@XOIjq~;eHHL;=3>2M){9Ko{l4rK9Z{f*a z(VKa!O=}w-79(Y_myW?hy7RK}Cc!+GX%(B6E`0h*GI9RZcH-A)pv+0#08objx%CBW z9-!%6(aQ6ck9WJDvS+{PB2=#RDEYNe7z8)c-y05hk3h(pcb~7_#SbWsJov1uiIR5wuc{N9g-v)Jh zz9uwVh1y<4*;@j<3)gf8$eTMh`a**rK|+!4V;yu?ql>6mmB%M{AjSlbVu|<#9Y3=EH9S1`6B)%n%BG>kp!ug~Wze=8u&Mr_=slYTr z`DTkBUvFLZimsvIs${!nTVUPxDI5iUt&#K-c zGO9XjWmuIrEVf=OaDw@o5Il;4S=cm6el+885Lol1jjef-o;Vpw2sR=HlBBADRN8Pw zQWPc~tHp7bm81azni-ugkzwYbm22hGS&m>#9L_kSu^$3w`(jeJTMUK|H|W(P30Z6P z?VlvJetXG!|LPTlBIWv>NQDiw|M){*i}PQ3t)DYZtQ@~@Nd7bRDI18r^}lKc1koox z@P_@I*8(NM{;Osz%s+B2zchPzWv>Nz=;T9Y>OPCc@t->Rkox%ZX6&G>&Y!TrvVk^Y z|6?cr%H4oJQhk5c$^Uq_AE~~FW)IAx_p$*&Ik-RV6nWSYn`D`&_1pI?dOK&ilgS;Sw{ z0t++8?~?zl1r{LNPv?Kv)IV1Xzfj1s0UsvsU(*6Bh)43l2mGuBR<<85<^Ks=_=QcB z4a9=@n|JtYTKJhq83_1^S@9=wK_JMh{fQ9>-6z_Zl-=!&NtuKUo$eF6OiH9oDvDB% z?thWem^nGwaWgTwy1Fu&+Bh@XI+!v!+L}1I>N^-S={q~w8rs^JFwy=oR|kCXia%Z5 z#>UnOba7_`r|)-@F}JaN#H4ti>jP0+gIvNdJqJM~Kqvlpx@@g)Y5eb9W_j?)f3eG4 zKe(%Z?l}V;1Bj(QUK@g_W3^@J4evGH@u%L_p|=r`V4qj<$v_~ zzkxWge5dTYpYx8k&JKpgj-Wg~%l)eN6WJkXNPau<-;*8w*7hOM|9=8;;3WMHLwLj_ z&PDnggyA0207Aoj|MeT*;O{^jz6<{VarhnWG?SgW{ zemF4bNq#s;OyL%_1QDgdpFi&JX`#LT3QbES&Aa#dHF-OK z-7U`M`EK8y`civePJX+)^SE60brQHWciTK{+heLOY!J9}xp`lra#s8Gbba-#x$*jn zM9#OliqnMyvFqlHsj$Y`5wBBtSU{&sqj1~z?tFKTsrmFMYO7=Sf$UIO=z^Hn>4)PTn{2+4hg;owV2rlA9tmJ@{e^ zl*@PD&T3=FN!1M6MuhE&nHSQje4bRun_d%~HLsm!7i-r3fbn(|!NpSBhiR)X*W!}f zV)F#I2Cw#u_4>Z={+{-*?4)%L_q1ulU6KlR?`6qxP$9?0WEJ-5tmZrJt%5MujYWhs z#O1trxAlRQT=C-&dyFQm+()KI&7 z*5tZKy*&?1UtB}roNCLSuwtuHmC>|pZ2d}>1W}6a^}>~+yb`-6I01p_(XDty<);mC zE-$6lq_&DBw#*vzNKKCD#KnAAc!fxe=i^a$kJFhDsE;Eyf!e}O za}v-JnR=G~7hZny`}qQ`)EUcauu4{XR%HkcX#omxbQ$4W%v-aspwtn{;C$N3bIdFQ zXfY+G)c2VUJz2$X%qIlVq@U_L2d@W6FfSQ0z-;mUUc1C5wN(dY{gK&9x5 zuVB(cN@;9l4UxnL#?VVNdIYdbBhfGuo*Lw+EZdc@v_l3x3CMuTMs{=8x5O`Uq6uVW zrNbo)425`OoXK{MT_Q&P+JfD)MPpY_wkw8Nvg901>vEt>;fe$b@1UcfiaCwP<3X8P4Iq z&-QQe+t7r~R+AA36g7Zq+Sz)B#yg-9NQm@_z$F+Ca-T@Pl1BPVqzpnQ_YtN1n7oE7 zvOglqi$#cHvGZ3i`5*NPzpCNlr=4H3^OKEm%(834B4#5qWHXVlItd*Qeu81H!sJmc zf=JPCm%Me(>zLA>bAU(;UXu%9nqSA(R*1ZhSHrdhhZv8{=>#tk9g{Iw@)l_5)Mn=C zR_dM7-fqvZhBuHRBZnqu8!*?=gS4bzh(Q3Gj5mz5N63HBZrH9El8Kr&EWl#Bnm=$6 zt9~F>$NU9*nZ^+-7exzI#e)xu(Nwyu0JxPtxBWf|)3D89*I#T+JmP7#zNLt&^x17 zDns>nEt=O-UQav~k+ue6V&3_wOtWNlTfyA&vY*0lhuu?Pq8HURxClmq-{e8?H# zRF?t;^R5}-lHC%jP}+|?RIGIYidnP#yqgydAY@gzNTyFo(Dp2Gi^xRM?FGLp%topo z0({GBy+{*LY(R~lCWTj|-zarrAh?G*<=A@p$l9293ALC)jYSg@UkQ zBeoLJf-*<-VD%7|{0ek|sP3$>!0`4?^$a)u%RHfH?U?9GnaF4hTx~5z>{+%I>LbQi0hp@ZO_s&;w@nTs)fecoNI5WQwv#B z=}cs`2ZxGV*RZYitlVntZGfesonPZy`#KhSvds*JO?pv7kLct540F;K3lmzV?7Rs| z8C#Cy%i!J@+otiCDD9TQDX|ad<24>enfUUN8J}4P*r3pQ4)A^9va_0=6C_C&)@h)x z{D_p);nBNEj@ z?G-+aMKYQ=wV%MSpb9Whbc5^7p2y@R46qVmqgvC_l~aS;yC`J_7kLfhjujT!8P8ZL zd?XePxhpk-&9VOdc>Q74GjX$oBwNkn!NeTh3(cp~M^N12-2!;;PxIt$*5;~avPhJ? zZ3ujc%gllUM%XzZIM4jKRQP(s*)o=!@#IQBpkZ!Zj=!SzuTa?!4YqvNa^o+*Z?o(J zQPO$?KTt*GLQn>tOT?=r8S0N_^a9nQFD1Dhdbe_etxoVoi)QOhhu{8UHdrdt&=_am zguAWo-kVx5dM+>Y((N!>>lg;?s20r@A{H?wC>G>{urr~!6>=Sz&9DOcM`Pdg&|YxJ zRISAoX10kL(QZ{JLO_}C77A*ZqeITIEFHqt$cHUrnx)fRqqlAtJ`$lu;NFzShN97f zGJ;?L`Q8l)?2lk6jOsy)ZS^OQ3u8lRUtt`Q+ED}85~A}VKA+R*F+o)k`0q)?O1BjDiE}Acj zwdRrpxCFWK;h2E?3;2;*1p2vGtFK-OOBOX@xr^|kvk(j8>wZ|I4)@264xM_70jkV*JLN$abY~svohK4pd>IPoe1Gn|)|E2h;Bjf!*WdP65`~Zu>SX z_pJgOwNgzGzwTc@=l>gF~CUc3Y-6KKk*kT!m$xF7viI z*H0hk@3fu^aJ!S>_`psw%?UZ}vC3gY%(m+4@ZXZ5@vy2beVJE`1Kd(V8}>l0R$R7F zVN&cQmSgCjTa$F4v-y0(*jVVy)T~D=JRuCQ*glXy3mDE!a1H+)Sih%d^z8WnAm8F6 z@&^(xn2(L0Ib~UGU^nrO7L$O&xUMvy) zKsQH>glE#KQ*Cirs)N0cEO}MG`Rp5at`aS?>VMmgX+up3vR|6Fxu#ddu1W>YD>n}#?UR|$h>j}@u3Wj|WWSV6?6r7Q z7Wh8sGgqr(LW#X|X`DqLu$C@IRYW*T*;_Xh%Q%^25xL!1H+=$|vCX)Ln+NZ>(AwkN zHDsR#@PRdHbAIR?-{i+Hp~is1svc^3kKUu80W>N*ZJlGb7 zrZ*%5-XgjQFf!6TP!5xt<=sb9!i3*2JF_YKqhsjm%}FxO zCj^_6iV1>{xJi?KckkP!^Xn#zER*&)P1I&! zy`WW-oxt{t+%}F&r1%Hx-oC%4YP6C|p z)#ag4(kRkM2k#@G5<8cIa(lm^#nTY^wI?q%1+@EK3OV6z8F=}OTs%7i)5Gsm!KKui zq_J!TlH*bW2nS(g^qU?l*YBc=c`MaJorFkA=pWo6J4Ig; zU2;u&eQq_ClC*_x?6)zYrLE+Sxg@}dW`Aj?%hD!n5^&r{X(L)0@p>g9uklN(x~p0c z6ApzRTjJ|0+{aJwqrb3pnTB5tz2#$}VkIU46OOVKZV$?rNtbIrIJt*gkPOseR2;^Ff&r)@dzdW8lGo zs&p!5Kg3g@e@ua?#29bi7NmwLUkiUF&cL^+%s0-_G=eF|I{G6Mr5`$68KG%3vg;UO zWZk{LP6(BK#!#8VtV*Lf4|y^=cDm-E$B(Amh?y@#{PnX~(0Op5AI6D^SR(IWZ+LkA zjBb?@`??3L%~h-7Yo`*v8s0I!sru|RG-ssnHN)(vseL0{SXe`H!DvyUbRzX-Sl%J2 zZ_3X$hXPYhF)@WxQW*rik5+EXFle)MO0*W{2Awx6L@TXiG%=P^0Mi-30;Wp2(v4OV zne1KUcX&#N9W6CG2m*y%<~+I=uB*4BANX|QyFI9$%A=0E*L~iPq@+KW4Qs*^HZM$f zn9u{8W~t+~U+XOwI;ppAL_MN7TC0pbzR1BAfE@I+b$;MgobV&UX1*jg;A<_P^L@g1Tr|NCb|@ zzBC@eu4O7Uka2Gd?W%n7K{1>*Q7c12NJz=br|7jzABmUqOEx(GxCV@rG(>BHVg`Zg z(OAulWCcGrr1f6nn!V-M;MlMakw*9m5>S;0y)Ec{!e+q720Xl(7~oXXB&r_io)?PZ z_9~Viap56Xn^HRv)vgj(L98@9udIdyTeSMapi=qYn#ET%8!;c&NJIE~@vsW_?Qw~} zp?^bx!F}M#geKj7lKY8qR-mM@-rT5AfLV6)6j#mnQ;V%0znhSeAuMpzeh^|HbQ1qm zq$>Dm19BYEOZ;*!|3DK3mMd=fLNkNj^Km`a74TD|1-S=ysh8gsIxcvrt(nqMJZ(g` zb_$LV6!xR|-i@f}DtmJzg(e^_W3Q~NrB|2RRNuiEmS?tegtCqw&7wRzllrMiy0&E+ zWhXT%td6ft<+Q>OPxR-v+M@7Il+$&gPbO?@5HyY7>p&wkD5>gC&8UR>FOn$)VM*p0 zxUg+MhHQ1&W_EuC8+2Tf^V0zB{-e6`QWeGYk4|pCH zt)oWOyl${+XMfjEcdCY#tK;i9Omt`4EP}Rf^pvCa3zTWIgT)7j1n9bfW?tRUtFwe} zBxeHGyQ^A)Rk<;}31plp=y0(S&qAtGltQXq*k-@I zcCpf^$G`=aX7A+souvx*F}>+CRz)s|4Vq3?W)!hgO$Imik{F{{O{!BM#(^u0tjnY@ zoalp?u=0_P{UE2zI>oS@$jtUS`_r@Y^v)J^>ZTRy1j9jQ6u5C^=E{5SIa<>}7fKF1Z3wl^$Z-&6_~3dC|-Pcc1{DFZ*K#LdG;RaH+| z4uGU7-oc@f%o=}@u_$7@29JH`|A`IRb-5j**d%esJYaj*X@P>`}Y)hC2K5m z&L(6OL$4}U%ZYU&XNU!+r<&T-vZ9lO0fv(x*w7Lh)dB-5z+c!8trPtHqdaLJe?w23 zDBH~?Ju~|c8zZ&qX0vm5P&B1nK7%eacsFlV|wL2zIUa3_X(?q!k{!@ki&rRDlE$mObl8G?E(W52e{r$|csW zIX}@O-88HiNaLARnxboQr+Up478hH0Y{O@^Obj490Pj)MGrp2}FDuL=oiec+{8FH; z6=SZ4Kb>q`YQq#Mdu$;GYjT{mrCQk2*t3~i8-S^-l zQp_3M+B>GCD^a(2U>1FzILD)pRnk4zugg$=sr{J5*u6+B4#})Hw>mTgrpwWIOUiNF zhwzb*$ zqJy!6Z$3-$6O)OnC$Q5m(6?-a)~p=8<0bT&72>P<>?is`(?AMK0zo_?r_^<^Iq)Kmx<6%<-ew zylyMBaq8RVfZ#F6m5!?RdGh8+TVu%<;<{v(KAB+5MqHnxd*}{E>-q(oYV7R>7vyHfSS$}+$OkT7D z%fBtDFuTu=!^}$fIF7+1rN5kCk88U0)ob=40V$1V3k&N`zFod)UiN$N4(c!F;)H{*!)q!C&zHC4he2osjW5d{k6Q-*a?`)y_p1AiB zLgKOA%VJziO)&KOCI~PU+2ztNgq2L9qBZ+cVC}dI%l;KX_5zh9Lds^>5&qjQM+4-S zt!Kr0UdFua*GS^^U4{h3XEfK_WK)c6Bq6>LF%_`jSQ3+VIKXB1byVytUV z#T8a)V%j2y) z)P?I1!f-XgYIz;W@HN5atab^*ISRa4j}o6x1tHt)wA(Bz*%@PK%aGEw$V3BZ-rz?v z=#4EuC#9j(D?rC-f+j?MG7*~e)p<6Z;EarWp@j#I1l5+$WRUOu^eI2L3wZ@Fdk(;> zL^$3l4Y9XLMC*E&=HtXlK)G4=l&P2#*3tw+CYB3l>-AUX56@?q>jE9u+xSk#SR_<# zv`;j2GFT!z8E6#*1C8e?QSETS*WqmP`%}Roqlj!UW&{qeUNoRiSvO9&$-_$% z?o`)(p*klRW)%#r%V-D?i9g!T<|=9uk$_qxT;XB86N5fKIX+pv12?$qH~2IB<@Xfs zePS21jq*>tA}kMR94!FXzwnnogAIWoc*Mizi$5bGSsxHFKbk#!@jD{&e(TO(zW;zg z`Sb6ygYcRUsD)peJ%BlWG<*2s{cSiOK!%|I{L<_JGx4L@&%I+|{egq~rP%{);YYKd z?*{m>2kWnQd%!6EX!i5nfNY>`%zwGf1Dfy0_kTuQa)8i#52%e_nmxeZel+`eqyStj ze?C$Vc(EVNe!d$!+aIW0SpVH1e*Qii>z_kp+5X)ies0FX`Uitx`*(x*`TPIzHveuA zKP%xsnJe4B8^q6d1G4?OL4Zc?0g3x(ljA?BobBHY;;+~dXrt#p-tFgR|H;_d9_-== z*hc8Tz|-CDtPA47_S^{wr!j2(X=e*p>ecVxdGdC>N+4+BjK1pYW?<@((b{8Lrn zV(#dyZ>8(#P%vTtW3W?JWE-FaD_-u+VqW|5g5n_3iJ-&;BFM0Q^*n@>A)?KUID^V+X5W z<$qYH|CapB593SZ2+h!AS^@_WS($m2gm zmLQK0(#AhlYG(uYUj_gBQ64J`;CJ5+1l0sR7(Oe@?*{Ns72np$%-BKK(AL_{+{)PD z4^hwmAmRhT#zC$QR8RAhPX4K~8@ijin%n4FgUBUae=z}$|3SD1daijGb^vJE``zFD zgLyUo^}KUm^r8z2`hQiy|0L1_J@Y+;I6%kQ!dp9FoN z5}yaj0iXw<2diKOacurm#s6(4{AvLIgLseSCvgEkRXwr(P{}`40|w6KRz@I4psR1? zWb9xAdiZzw!!sbq-wOcmp8;9!NsK{dc)!~N3+UnRUo+&Nst9AZ-=2SU|I8--ULbh? z3V;PvAolxg;QSE>-mB)HsseKxkO`RR8yf4HfELAHXT{%)1vx<~0D|~sNr9k}@CV<> z!u|E`aJsu}$Gy7>2^L)M>69timHNW{ka z!zloP|M*9u|I#V^y(kd?dMEN@BK%k$fq);5f(4|he>sgmF^<1eH2%Gy_s{A_K_TiN z-{}1}^`oGv{Jo^|=lW65tF2$_M>+3TO;ADUU#K7b-u9sk^8ciM^pCZoKdMN7RF?jo z`qA&gKh%$Y&l%j8gnoZ({{7(IQ0@=DzfJvqa35rTKlrZ4`;Wfs@BZL^wf+9l{hIUr z;NJCqKe%^8-w*D`@cY5TmA?n>_h&dBuKYcM`+nx(%HP-V?`Iya%<*t#j)yCAJY1RM zw<|yY!6x(F3?7E<_v%&7@Am^$;+o%w52Q@up!9*UsIj4~(f9Sk(aFJB-};eT>h5!? zvh5z{`32pqYVZXUB+4*B)J0h$(lD?H8&U*{u*K;}{kn*%k39=fl&@c_uc#S#bE}AL z^+mkBdToG|Czs}azO>+TyVrhqeYD@6ka2gm?|pujkg-sBR#SR;Mv7)hOGI*Oe?GDa+uT%L z$ai~XyYA~+!hNged~vpUp*w$ja0&=Hci#ubZue2>v`dk0O)RK zwIr7}60!#Pll1|WUBt?!Crc#09#=>9=l1(sAKyz?M_3oZ=9-__r+2Z!zH3;Hea@G% zb{*BRDDAOP160Y*y1J+KP7;Ui_HiBD7dT&-8~6stU@SNFc1|BWPI0Ix1$jtItlEuRwVi`fiAnPckJ@&YOyW*^(tPK;^_|n?oYd!gX1R*Lg@|z!v0iZ% zLvdJw!?N2eesOO&ImrB=AJoA4&RFua@)Ap!7Rf&o^uIt0~9MsS9?zfXn63}n?ujg6Q6kh7yf~edI6~~*2 zeJ-}O&gM5fv={etMQn?M7QFmz_jv`fIc8dIo3c38l&*dD3uTd-M^L%l#_u^a?X0nV zA+rMXiExq1@P{y3P~kXWxVu_x@k3PXtg+_gPq3Q&>GMg84`vFnn_55lU%Bf`!f_`m zE~b5LAj(v6tCBg=!-X-X#i1oF6g9sEy}DJSJ=t13%5FHz zCBRn>|Ng)zViN3B*f3&5PhWQSpkA1CiS{rBA+I9RNL5^s{R=(S@_wagEbMe7n8b?3 zn?(+;&|1e?viWmht9$tiOESftQbGL^r2ZWB(zeROrwLh!fx$U=Ptf&>+jfXbGfj%o z!Xt0(%W(|i2scHYJ`>+DTaTORVp^qKHWFsg*11lqeC7y1tvt?sS>j!r8|83JR<|Ef zuxN(lk>fGvioyWzo5SzkzC4aHCzj-zlg8b2=-xBR!IztIHp5=(jaeBGSun;qcanlX z7@&r#PQb6_Cg*=s)xmLdQ!MeUthKbSi^Lbqc(JemYw;+i#n!6=v&jLmPaVRX2pn^5 zhLa@v-0CI+Cex@f1IFyJ5ZXw#Qf1JGw8J2<=K$9>B40#+r^?+|~%pQ!|O=NR=@F#%wV6Rrzkp3zBJ|$cZ0K5L? z6D~^?Y0nmK7pSfy+*R9v%qCne$ZU9u{-tXDEM(mmNo_~~UO{~3XPNbv{#t0R-A2%; zCf4eXMjeRapITFq5tP-<^(pn9Gy;?PAOqm^AyA@%;CW}#Z3Nz(E!r*`;KiMn(lV3P zT2&=EJe6Kd6-rS+G*W>HXI1Y>=!{Xk=1#yC(I}tP5{HcLyp66}Q@J*Av11Clb%2D* zPv9|Yc(R=lk}&$ksq4)Xn?dvgi+NakYbpi?@6WBa!S0$XHX69rf?~!C-l6tzXX+jz z#nx3f4B->)ncjP;&Ftq?%)>Z!?2Qn0pUKo|zhRP!9+;hDLM(*)b8k>Fc;}E7BiTEs zSa4<5O6E^QTGHA?#p`1w`ijGiC0YX^s*6)8EVkdA)IxK%UxvUeNm2@PW$;Aeo&u4da^}dL zNj`z_j4k{C<7j6RWRno+6U|t+ft6V>T2o$)?225@#rN?Ciz`r-s(+j z=QMXw0=?0g@=#IH0909qN8$0kUhPvxG->P!1q!Ontyis3k^9qPA<(!<@~JBftcDVRniz__@At6ILVwCAnD(N0y_IJ@yMdr;5b_sVF zh_PX5K*SCXP-&sjzM-N`HKzB_f~Y`4Y|zmSFvaDs-&H7jI?qi;0KeX;k0&#xSG_8U zMt2=HO-pe+SamL=zx3h2BpdbnC>W%4@)KjF5IjnyMW{Eg*rz4b2h|jMKwUCiGN9_E$Vwy3u72kq5*r)dzD2tZ zhe}$k5jrzYZtyk+3deOIV>yb;4vG*FxB*x%u56?icq6B#JM z>9?*mG(wwBE(tv%t!$3C?-l%rc`m8ZfL2QSw(NQhP#p4IU-B5rhn29|Zg7&pk%g%{0uSo8yN z-$c3pG0p7r*poYEDcX^eP{l$&l}VX;<1KF5&URz5z>kM(o^%ulEOF~Jl5x21hFh-z z2U#OuJv_8BKfVo)$1yN^x`Zl@wKdUi5){()NK`uk*61)$vQUMkbJWjLsx4mZU6`q~ zp4{^qlaHNXIZVc!=y8IMK~#!T;!rMtCgthM2>;90>=R#_btFe9JeD%zDB&94VVKlig?xdKiQhz5~iW3c5m8F}q>=7jP zu7sTNZio|Y-OHX$S+9g|r}YLU5MMdd^OQO2!KAu8FYt#6I{ z{}xUh@S1Yn_2;2W_h=kTNS7K*=q)0^UIuod= zY-aj3RR;E5v^H6Qlp9dwHSGmY8D;_y`b#yjrO`Q&I2c;59D8Y~*(BB*m^fNn!Ca?- z;OB2-=-FeOs=bY&#pn@OT|dRF*AS62&uA|?}mXKLVV%|~_js2s^z)LVtnEnF%$!eLGi zVz!7F%ynycjndoaU?2Rd$Vzb?vZ6%lsOf4(S51{5+M7I6=2;A@4nGy#vpQoF0QJdb zB6Oiap_yA6qD}~InAj!QN(8)&tu2e;?)>vFd~_w-D(2A+_PoN)0uV*x0g9gWQsmr< z?g3DaF67k-5CegARBc~K0h<^RhH$vhiOHdL^keC-VKF#1a*JKEBXA0OP;-y@a-e`5 zTuNyA`tKEzJ<94+VQ34xa|c8@W-vtiXTk8+Z{BNEh87W+0cb|PJ^otRdrArCL{Br1 z%hl!f=4o7y=%ykTa8qH~sca^TuuW8wFMU&pm$&L~_=kNy85jy5T=0>;895x&gO9&R||jjl&Xoii=X5Ia7*tAa z5moXGeaKLBG#faro~K_pDX>kWK_*zSv=X`U z-MP^hRCNOe4ec@YRr^Mn$dgvu*Ykx_$yb~$s6M%kQUw;M(?+6QZmpuem|-rn#tYGD z@z*hY^;KBdG=sHneR3CL46lqO`uS<=Wt2RvOxhC|?E6IZzG{R+Ea~N7Mj~a1U!3Z6 z_6=FJxIRuP=~1sus)UiM#KNP;>7+a}s)>*iiec!B?mx=Nu2Jc;5KT*SnDM)&#Ltjp z%UK@3d2C!y)H2V0vei#DQz5MChY}sft;5*!?ybZ#C`&Q{Kglo@Jjl)oy8x!3Kqbjj zTIRJ^Bimg~j3nw#b5$Ekr02EPykl-a`w*!Zn&FaHShyx0dMtns{@aWbFS?1sbr3N* z^}W7mr&5U^KE0ZE8AM<1h?ST<7(YQGlzom@#YDcyaVG4b!eNU7x3GAVAE{m)yx>(2 zhf=M9IFTHM?KfL{eiQz+|C#`?w#Dp5PWGgf{=F*x%Oj{$NVO8Iw%VnYp-Je4m)l~B zM`2@I0pUxCr0b79Uw(30CrS626*#}0sB?YCy_<^f`*|K2 zaLp!TckO;x%kAs5&tG~CFQ@AkmXF+y|B@`1=lu3Gp?0`AMNnigGixFS3k%KHX~K?R z_Zz|_8j=K@abiqCf30(mNmlDjwADwhT&UWVL;j%B9kfZg{D}xP)yb{X)`fW=WLNK)&$?Yd zb48-aInI?XUlZ^Uwacxa_uH@6Gc^?s1DyKudfq1-jT?8EG^E-@EuU z7JLeo;)41BWJeMc@0Hvo!uZ;oNrQ=<^SG|ua5uiO?_Po}A>EBsJd1hR#8JNrU9 zWSqP?Ova~)fu0<5+gs)MeOp@)W?Qqc^wxMoZj4~2@!DXZzkZ(~hvV&U2d7o-i44y_ zJA!k*UxBcjaRg5#cB=`$<#6E+P8(AA6u&gk3B6xw40U=^X>3$!Ts(e}R)5Jkv^BLV z#GQ7>IBqD-%7c!sNOx+;Po10HO}OFK4~7>7I$rYUzMFs#tJsJ9_M8j z@#THp^j}xzz03VbWN>b|rR?O=Td+|KI>Wc0`YKQ227k9i>A>X03pp`0+nxd%0`LG? z#inF@xJ9E7&D>m|a;bTk8A3IQSI-w|Zu?V}50_g-I|CrIIrLt>pnKl1Qsh*!UIe<> z>Xpl}ica^&ofWU{JIi>lxY7f!xIEY++L^EOU6CqVS6&xvmCX*_{$|gEba0E$P=ZA63f@ zrpRH)mhL@er!q3!tBb_98$Vw^3$d-R-07&DVmo;OI+`iiF5@A%r2f`=WIHoU7To;( zBa>Fp=QA0CS52LtbMzzDx@z56goG9hCi#sRlideGA>z@T-3qV)=+|O(kg`x;Bnehy zONKjC+xS&Icp6U8!_7R}#tT=Z6~<+3SBSZ;M!A5{7NIb>Gs6?=WdgEM=ai6~cLS5m z^asN3rK341IIz)5)}rKZRWiC*P7WXx6e=|v&8k0g#gd;BDb>r0Hqa1LV3IMzG6&OU zCP}Sc`el!%tD~vBcaeWw`8q!d{;B6gmrT+$jF~cHYl2ji+w^Vv)om z>8Om1_*WSi4aF1}0{?9N;Wec}G0wxv_*m$Qq8Se>r4GKvX`q{Zse@PE*2!xFsuK#W z`EkapM=;3Y(XMN1LRH@`=lWvvOkWfge?&2qsWf!})7Q^Q-u&v)6TV8gU5X~Yr>19R zk76)qkQ1~PSUaNZ;X!nCoE{4_2Qrk1VyHn{mqT4Km^IKS795Q{*9;Gj8y}bo8IbsF zvV+XL%=C1@X(L5wO%vZ5j=lCM7ltU=l(b;ibN!kF-{*4+)*^=+>-~F#7&*or%r;Um zh3S#YG>e=0DHg@jDfz{frdF&L6%=c%SP{2q?WSjwugF$Q90UE;yLjIe9Mwq{_{&<7 zcUHf`Wl}DkN%TC-W~Sy$AWHHv4kxVRqaKXEN`#6G+7y(*6g3DxotPu5qJ6GjoeY%9 z(*!Uim|s7colxKy~2jWkvIJ8CldbW{a)6`5j+i@O{ym@wfqcZCh_<$PUx3>j+zI#&C_E~@Cfwn$5qe1nLR zZhOZtN>el2DZcdlU6)KSb1ep;@BH0!6#I?OQ6&Pc1$4Q!ACZ40L)8qgzBW4biR~?^R zXL!DT_2Hn}Vgg9L-KZ_rX$$F+5yc>*=^87f+97oe(_nNKr9@RQKwX+LQUvRaxP?5fBsj3+;AjXc zpR8li<3ciybumP47##2_O;v?!uo*-@r=C<){kSWkiBnNH)mKX8RK~vn`bX`>mDOJ@ z_smvei+md@^zst6e-Y~?#hf8|aG;DnX`5&`+B3W^vcg^FQ@W+M^C$^W4Xv*%W_K&n zKAC-{T}R_i#TsRqw?Tx~JrW0|>pF+Ay^_azlge)4^6EX@o=aV&2e$5w)Nu;3H_II1 zc$4eQ@&e3|((|EqjOSgrM;9pyqRGv8h6B51)H=}&6MLp+_&%7OCJe!Bgh&~~IOl8h zfkMq0YhO}B_pd)Ngy&jtYC_6?>mI|Yh-#S}eAjNBd!9`likDejgU%p_#}_MAJ4A(A zD*se(hp|n_5*=;3fsuc|vF}@Vk<&BQx{nrl*QN_dsNY@y>5hXPvdYSmXi^Fv?*NA1 zt-k^SBKB5m&qp9&j7P@clX#;BF|l(WVerGM8TQEQ5s*x-+bm9;Y^`z7_5m;EfLc45 zR;6S@x<>Stz*xO>o}hP#GWGE3{e-~Pa-3>q+sr2IuQ^7k;Mw42oyGK>$E>A z=JVI)ZU_dH;o57_awdyia53WTqw+Biu8IoNg|EgL?Di(F+p7ySN8+|ZR;elX7zc%% zoUbxPtJ=)rmADfM!s7vhoD@pp+w|8k3Fi0%MG;Yx2tg@!y(RvBjIo+C&i?r{l959V z^pp~LUxX`|&P`C8s*;1S5g*Nr&g<7#JTg!yMOW{7uE}0nM%J+D@~y#!yW&e?_&e*6 zV7a%9q!~ppILI53g0+e#B3g6*L5LgrjYUfU`kr}a!5oCC(?&L*Ne*_C|M z<^y~E>`LX=6)%7n7uGC0c^-jNEGBF_DBYByc-H-$2`;#HcY2jWr7Y{lNbx{gWtn8A zQxAQ}uBXAlKqo~tz2zeXg^B@-7pS6h+%P<1maP)nKuff1W|YwU=oU;lTA0UL-RXRc$H`IrKnDhz|sY2aZqE=LlWyEG`fR9j)h1UV`a|Wy##-igik!chxOVv3^(N>>Y ztF1W9>#Tl;Mn#`sauLIi^m3`=Q*&BaAPY^unq_0BKnCtSIZZP-Q{s`6R{TH})}}6} z_{MLZs%d0~Xw;8305>UeeTl@Vd1(rlVgP?s#+;E1pA0lB#f?lUqUO@BnN`(s{dAlS z0xb-Wgp8pmXlh!RqV^{Nv%^eYgCVH}zd}3pO7uq?(s$!W3|hV*xt1X)86f;<-l1Kg zg{i}EvPlN9zF-~@1raEFL)qv?tt&(cv&0tfu<2^kF}hE5N}Z0SCtZ|bZgDuLYP)bmIWTDvfwx=_#EiSD zQa`$nZix0`0yrc_W$J<6gzN6@#hXr8h`GcX2r8_cuF#M6hYO0T7D06Y@A+jbDg z_2KWew7#Qw0p`IUj9_fZ<|Ew;>z0FOAzZe5~ zAID-ZBq5YbZyB^gs1~v6#TRsaI3Fjh*}DhoCM)Rd&P4;#>Q-?2X3t8Fhw3bJluzQS zhA(9|yts2W&4ieSGvQG)b&O(Op%7<^1aeeBrr4+)-(;%WU$(H!u%6>mW}(4d#b&}oE#;?ekT9KKkyDFws#V#;BjE@bKIzoP6r>4yurAR_ zp!<#@X>H=f!C>sT$No*+4+3OIepxqsu4y-qLZ4`YwUxwp&?XSvlF5ja>s&yw1CnJK1VCm{4c- zDcsw`cl%{FC8ZAOTw+i3gW1VeeCw!EV_;*g91%mAquhvP_9Vbh6z3_4aWiYqGOuxq zLP}(a8S5?(rw$AWCa@=(<=J);C*+M;=w`#KhpmQpqEw0+*=G6u{ir<{A>z@hT>OLJ z^rCF8DWenLn=^wO=ka=jcw6f!)yTZXC&A)0cx-Q+DtgOWb-pl-t6bdozgu_#L$&JIOc7#FOwSVncL-f`+!LyiT1{`Zcl=0a(&ds3y{>_mNa? z$+VzS{=vxfev5UGMFEhF$vA29XfDpT^~!F|pL0SkSu)yVO6bg!Pr#`XYCff*f-&V% zw~wbdF^q^~(-0}SpdpRtSx^TFHiSpqM3c?sWLA8lgH%Z8M-_za?hDCL&WL1%=m?2R z{hYv@T%v+q_d+Ss4e;_Nk6+tQ{DBB#Mb6XcFv|R{jg%V~W2?SECk%!d-sUwGxz?&1 z>J$ZUYC$8vg9=BrK#7{uqS#Bqfe%r}TxC*)GWpyEiu&u@koH0t>8Y7GY2P_U~Dm5>m5mIfna0LgQ$O$7^ zKD^L0sS4h~E-S+wvI^=EH7P!c#NUf@kia876DWTjk~BWuPwHEDORkPK4}H&DKo@19 z7vwY1eX;}BB##Fqz<-#DFXk(Hk%{ax@J1N9m_n6 zj-kHyQ#U>?r%o=lS68)CHgi#ryNUaNroj)whcQDc zEYh0ByX{tLTW&4$6g{6UA*Ca=G_!UM%gDohbB}rCH1Q(#># zU4GH(LZG|G6GcHrs&yvDXmy@lSUkL>eWK74kz03jl{wvpWiel1287dB`QDCTa zdQ0A2Z`sM6drl4bBX;1sV=jM{zxAsH<+fvfzh5S(a%d97rQ__6(I)*Aw+JzK-6qg+ z#7g|pcZzm?>}%{jw-0MtfE`ikDKrV(Wtw-0r={&HM4s%&PZ>P!GkU2iU40dXNAD33 zMPR}MjV@Yi5kkd-*WjVw7JOLMn@ACDn(`-9=dH$bvi14=kkjmVkU74e2UgoN$t1?U zM=bv0mM9Gh19t}6YFdfFKH_=| z@&SpSgOl$dR#%w*e$LF!2VE-8k$-}zz!AvL^xsD0KaND ze^(9Qd}d<*dKd=~{(ffQ|1|8GCjB++nTZ4fqp)oMQQv{{nb`Yv{qNTO=%(?P)BGT~ zenM&gbn4lSAJeb`{s~|HNkM_@xdi0bY`GAt84j>f$7dgzq^k1aMzZ>?P9)GiNk^NVN^6%ZOm;t}4`2X{6R{uL>?jPj^48Y2> z|Jd7wgXuX<|EAsll&t`k8~i4-w?4Y9MaH#A{z{?R+?U(J8sn*N^o zENsA9iQnyJ1@6nwx$=Kw_m7TBfAl^w10wOJ40fh2j1ErrR=_4`&Wu0PoAF1%i}SyB z_u~B575Sgj@*KeM0@>_8bz93M#BSVj$bqaX48(dQ2MSK!yPp2{E2|9p4@BLNgd`H8asvG)P#^glM0 zpD+GFr*i=RLG+Jn{-D!;LFs=)`#Cz#P&x;&;P4Mq|7$2cet9steXeHkec&fE8=Ziz z7c{Dt0bE$fWSvmPh`32UNW!eBl3;tckputVQ1ku# zq=WJMWBf=>ZpYKwPWaRP{gSjBz0B-WGn>CZ_N&)BGvEBErJV22mqx}%##3t;^^d-P z_c?&|dHnkL(CDwXz4Ph_2&CU{`OhGIH+f~ne|J)hEc$e5e==Tyd~LsQ_TKYbYU-=6 zrx&*+{q0;!=?5MDD9I_BQ_(#1!1ocSUhMdOcYd3y-+InyC6ZkHi9v|g*D^=%+joDx zZ#wF0>N&b2%ijV!rZN~9D=LOtjTkIjcwEFf3IRQ zyNpk~HLlDfo4ntuK+M2k~(Ud?Lxh_NHr32bTHVb_ey?xO~Z12mWv@m51hoe5wa&(!B^( z@S|E6OO1r`pn+{l|3#&Z^k_OFoHb0Qc7>MsaU(jJCk#35Za1v6oyQVpA&9|A0VVj0p*n6tZ;nfL+?-bB^Xf%l^z$2P(1qy&5izl~+eA-{+taWlKI z9rf6VkgVvVD9)(pO#*{}Ujol@R2RA*PRcq&V?C6_L6GoA@8Q7|#JSLqvLI$ql(wsJi?~YM=KS%Ea06;{M)foW zenp@&V^_XaA?FzvBCctLbpmcFRLy=YU*cQC;1tb{n0d&z2I%2IMP&|D@NR*d3Tab( zM~y+4W-Sq=7`!~~7++yl-iM?YW9h2b;-rQOziYkVeI=(g&jQeQhh0H7v)np0puVM# z0vuAQ-Mcu+quhg&I0Y~7Y4Go)kxW{I8|C(Do-E;%%HQAdn_5-?54=n9B46K-Bd?}b z)+W^p=$OG-1}4)DxAT1NtaotFq;m3>0C?5CC#Ql=8J zWA0$Em`gf)co2{CC)Huhq!sKSc%i`obYIY|!N|>h)`Fa{cHiGwf2uE%ZBc!x8AmOr zWhQ!$)y5&P*kpKY)t!_jr3bZ}b$vJ(5D(`ac}74&r4g8YakmYn<{)_eo)lwO1>GqB zxMTmK{@5sppGw}n+#Pb7W#0^e(_n)hvpj!x% z&1Mti*Wm;Sk8Df_BHmOunn35s_}&!Wf^hwv%{DI1Y~OTD(SRVc4oCDr9WFGdeggVq zc5(x-QfsJAXU9S4Q`~BVYB$Ipa?tm|!N$-axF8mWLIq5#b4e_y!Q&eaFZcT>1&1I}(E_thf6&`7T z$zR`LNVsQ{4j^#XOgoWiv=wuNRg|GTOyZU&awTyN-5Q|elT zgot7erZ?s2o5;~+nDu>B5)_ExveM22uMtvRIV)H1{c=FWl9O zaYQ{XPW!-X;;IiJ_Mpx$<^~8reH#pE%8it(hKH$#wC>D__dNMf{CGGU#Vkbfzagd;3n+P_|70vWJ%Pv4U6a~d5bsxGX zBXD77zo{LSh@w|w#YL5CZiZ@a9u1c}?=pbnuZ~@>D_AaXf6j+0 z%SyQ={?o&@AS(Tyo#`r0naA0Z1Nn6km3lQ<>b@MN@`_IBXcpb@kU?ij1=d%D0 z(WpcrNY+Wh=+rvyx;~9}VXWmFYDF@5qFU!d@{{9{xbSbHa~oWjUX)%(Ms9(ZL<_G$ z<6)l_Ys3!-U4Zhk(2BDbkm6NIaD(r-L_<)|GEnV(9*|urLc>RNFX^;Z`s9`7uOxy# zK<@0ZFHJ>X=SLAv&% zWW6DhF7gDM3`T;REoz9~l0Gh2oR$DJW7)MwGHHh#!hJ&RmgO3 zK$&^I^y<*w=ON<(6Q#{1s$PkS2@RAeP@MCXX#_Z@TDpr=Kpt9d`3B62nGz$9t#K&c zEm0UHFO8jk3BIePe5v`WgXVqI%lO_<%?r`>7t}6kh^w!Q-z2jf_G+bwCa>x4kR!sv zW-FP{i!y5reRF+{yP|>j9=9pwb?sY#GnB2&s8l)L!vL;V7eWN<-isV2Au=ZeLyZJv zPm#VL2?@{fbs<#1#gfufe-7#V^Zkk2-tqG?`wD?=RyW?0DTI!eAM|+1=^l(ooqKq zJdbwQUk!$p9wRvlYA#s&f?SBRd9yjCLZZ&SKenE7!^FT#)|DM#TFPYp+ID~;dzq%K zk+#z{SssGmJto8w7j#z*NG8NFdtYzk0n^$xiSZ6JY_9ujK-Jgt%00<0ouMZCqudN30y)7*D|BgdgVz+c-QKFu5Xvqr0@4@h=;l{VMLP)gdkCqpB8CcV zhHW^s)T!vKB%5t0JC^x0 zD1+kLj@_%W>%rv{=l>*qA;f${S`v88#>pnblr+>wfm(_55JO3Fb6&v8B0VvVc8L!U z=kp4EiuUE@l?V-?eE?)(08cKeVsj_OI1YX@PW3wWi@Kc%N}IvvM>9yS;7(=UCOS{g za?RH%e00%IjV&prYC0EfPt+o}(>hL5e)B#{e0S$>jw+Fp>7*z83n^5~9Ko*lRystr z_czf$EkiD%PRUKLB_+}fTY~v}dOqorh3UG%Yo|VO8`E+_VP7nc-(VkpczGydfLMF_ zdSwFN$6gIo4<;=WRph!lE{$R=NeK`hK66!jV8H&O2xI3?5H+B_z~xT+>(^N&Zdrza z^Fk_ZZ&yI%oPb?Wc=i z+3oV?`Y%UIV>5>>^ZeGWw#EQEMNv+R0zS69Up6Axwx9XZ0QvHq*6aGjjLxoV5mL?;LdJh zyE?KYm(x3%$l+V7eRLP-Jr+$d_y)Zvu(G39eeCGvRw%qo&a1XSR_;@F+9Coos6dNZ zb^{+g5U|No)(-XJw;#sn+QyJ^}&Kr;AzcmZqdW zmvYcIAc@n%?)E3J+^Gv|o>v~CsF0ZChQUsV+k<$eO{kNZchqud%V60{Z_{lLJ_y<- zM`X@N#q9D$^A7AQIVvpA3E39KMBnzmlz~r!an>;we%JQqq5?*&jyyBUh_|?ip+EFR zkxpROrh{=@1y?^k82UTeg|Wbp9NASbZPUq#p`_$qX_w%r%)CKIYjq>=31I zt@kALZ-i;b_50>H$b$Ac-O&xtS}P;)!x{J93Bu-zPKB1on6P7&knt;*Jt6CNre_?+ zp}~FZ`=rOh2no+9~%`oeDKIk7iwb!*fMe+!JLmLzJGP9u+33O&gB}e-`F}A~{qv zy3gm)x$h=K&p+ue)oW-VUuWYf6+|**%+}b@bg`(_}7xD>_;V$562mKheAy ztz=(*AA&?*KI1@YR4MMEi|~o8dET}tcy;nNCkg||UcN|{62oy;_7t_Dba`IMoKfuP zI*UtEWZG@Z{xFJlIn!~P;2WxD%B9w`tfFQ#RO%F+SwY2iY8-a*%NS&u7P4u_o)4i2 zcqv>by@6&LGkupnu}JCBbgkBcV|~Jd5u^s9DLhaE0%v?`C>k#|5erhrTG%cZmB@%T z_%$+-A8Lc^nBs!#27M8w05SvfOxf>(-#z`2=a5jQ`M!w5Ld~{i>A`jP{Wr?;cu9>M zO59W<{Ag-|pZ6gix$~0VRp1WUiRnwfoBOEP$G zL}EvmQg3;!0rgz|<3=E$LZsoqRMW6zGOoTlMqaCR!>2#&GPc;3Jz`HA-)y;`=q>F| z;%qW*ipEfSeS73ye%t})8>u5++?V@Fv$#ey;t8|hcSHo4b72UtS~r)HXv^k3d>OLf z*LCh#0-OO=teEfN*H8agQTv|03_jSM&B%7Rz#rZK6JHYYtSmOEP45c3lQYnw9|?4E zY)W8)Nf@@q)fnMO$9RY!&3ZW)d!9+K>($3%LgT5&q?|T8G>F)B?VR8p{?}>Mhf=b| zBh}foFr;@*GsejC0{QzWK8-J@#Lre9oRXm1S+RLtSv;h`zHDr{-jt(LigWWfsJ(p4 zULr&)EzVhu9_`x?oBd9xvJbXc#YGk=jr3z4Jqr2?FjJ^ng!P$DAWcB)2j1O@aM*G# z?da+}s?bhFxA{`DKq)86`x=w`l9u3Ps>bc}q>&V+ZhYPj4Zc&mB*|r+KyCH$xkO{Jz*X}!6UpXIGG-gwA3Z9V zLCZoosk0Gwfo>GWHs@+OEkB#0^)-wcDMY!BWZxTthkygB(WJKUUBo zFGK<$O^ZU{KOyLB_oLb{1v3>=Ro-#SbKH$+eF<0$IMs02cEeFjyJ8fz2!rLcM{|P2n1*8I?rkh=&rg`QvdXy#H-aYf8el**7KD7URHX!}<4Dmb<`;%|~CWOFv|Hol}$2XQ=#L8dJ_HQD|@=UD!bx8iL zZ_nxR_YT;9=u&b%vo65b%)s6)M8MuQfA9_e^Hf@ujh!qVTz-g?+S#%E=?odDw*1H4 z`TLFoo_Uxbj&lHont}MD>HCG{$}^@!l?fr?PfG|GPVFpJTuxFIs*k88N4hV{?(P|N8jIb z1qdwvGvXY;O_hl4H++ucmm2o}=`8@>0e5$I1_xs&)4!w;nV+AXzs&tF7%kR+;8(vX znsTuIc$5OUt$#9FKb!jfEk)Bm#y(R>|4ob*kURS+Yx)QH^skDh|2dQO&kly#z-J@N z&rtk$@#87`1I1!_MzL6)Q7o1}P%PlDe)4X>Ykn?(9~T2N`^Tu?D6OCIevZ#SDJ|BY z=-1zo4wbH1lJHtNQn%m}sMJJi4}=-u7Nwdzz&o1YT>2_70%_WXZP zT0J!@k5GKQW~RmQ!#Lh54KoAZpK5yaGj|^Q-Ycu_Pwr~!cC9sw(^@ZuXI_-4sNyB7 zC7S1cAF5*La7!N0er&UMe2t~+Jr@^qSi!&@Fyjesa}_P#DW+?FURJi!$R@%q(o?*( zsc9-Y6Ie;tyWy&z#GH4lm~=}MgRdzmHXw$CfW-w{R>S4-C6r{i zWt&^D(k4y*6|K-#kH_z-*N56X*RT_4=Y$`tvZyPL((GZ$<+C`--8ra5SlHK> z`bm||(r>k)joq!EO0Tt9enwPH?d3N)ZDZ~^i2D9FyzUeZ$hXZqQscHy!65=_W2~j) zPdK%ptpj#59Mfg?!m$Wo_@x{D;+&bG<+Ysh?+76DXbfrijahq4B9-eX#2}F8Qh_R zx+X*Gs?XqzY^UCqsK}>FzZlX$)u?ARLkg5a+9hL460c86;&WGAkAQe-G^^Q#U)ZBADeoP>UzLv@fWC|)9 zXS4^tG-~t44&3-O2Pea)fC6;~zMXI^idy95tUOk_W*@s!f1Hq$C!tDC$aYSrPtzCw zEPapl04n8VYi}Y31}$p|zBE^6T%)R()Y~(x5AV|EHA!xVjFr0fL^x6tJ>xXSn0Pv; z`@oIVF~1WOkOxh~WJKaCn}aj>xmMA`d`Z6;h7Rew)vJ=O&;|bxI3XBMl>zOU<<;Fa zuoEp~Bn49G6(dDQ&a8<7*~X9umoO+}ZonjpL|QLGibf1B*))uGRK6_S|GlqL7L<#? zl_*M^2IaLxEbI|#_hV670+E)tGVMhgL$iLO>QT!Yb(Q4R^!BC{md=XEw4-Tl+??{; zh{`etQ>1E43N`1eT*&wjIQ;C;+C1BY0X~X1k6jooX}AWa8Ko5{HIS9NWmei6t^4_y z8iFU~T|Mds4f)|T&{{V-D1Fpnh`SW>5Y*L^WEItX><7Tk->x-SvqxV7%I@2wi9s*Q zFGO!uz(R72vzvLwM5!!VS{z1Vv^Uv?mND>NQLQ_#V?YTWD~^W7yego*^UYe$df!)t zUXq7HJxpA|Tf*Uz)0oB(Hp`-_-fg0L&-n?jZ{tCMqJtGNMgjNB0^|j(D7@s+ks zEoR?YWTkuY+A+DRdQ0XSlX*uwF|!4H%VxPl>Wqa3wBbaDM<5}J@D>Qoi zkTA4S!T~seIqIvlbJ>(5-vy=w8}CB#`;9%Ommp|rlnUkiF%u+or|P62IkK?ec&~b{9$h#2k1R3SXj5s zbn>>S1-l>uMkC~nbSMenq6RYGzS6N-Irn4g*Ng$@?NR??ND^ap!+zmmY>^6a5^*B7 z=)0Zj)=M{T|4OqE|GX_c-$wIejcqhJ;Zn^?ypC(76i-2-IfJ5J$2_x{WoGqJAFu56 zxk54kjlrb*#fUHojhDt$C~9=H)_u%$l+AH~6mqF+SwV{JtZ;1&hqI)KLQFUu)1$1$ z!AxPA_OY={5>Y=))L^8x`~p_BW2OQ{KJ_SWQJTnvCY>Rl;A8+7E(i(vi@Z^2xP@i{ zkmm37fMmG}{mJXlihjv9>$3J%zwT6~S0&2i)fvT=+BaM3pzC268W z$pi;a^l(ixyRRWssO8Zq!G z=Pof|vWmFN6Vux_^P{{8d~pW%QqdrcvOMt|OrlBbFIWsa?ThqPyk#F0& zyw|g^)DPK9+q`9D_j=bOIX%M0%#GMNd&IU5I6O!YT~O2ZI zr)?AV-GQ1Va;bwJ7CO8_65JayiWP-`50vd`6k^H3D&4g3r4*#*krJgcIbtgDEEPkj zuC7CM%$2OQU8g)HJXQ7-(-{8XDsu#`g)*B25C_z;x~mlu=Wxy~E&@i@kG_n~+tNwZ zxH{8u7~ols16O$V>q#r6y*CeHoKy7FyrYixTb^_kYIXb(owydO#Ns0t`gTTQ^xVVjdCl~{I-f90-eiS33tIMyf^@i&u zPrwdpwk9bmm`TP-XwP9xxqQe>=-vUOF<%L5Wec^9dUmUzZ=zJwm)(AjBQcLqSS3gnL~qa1diku#5A|+>kc#Jr#mz;=_|nT|-xd@#zkp8F7$mHfNVyjf(lT zdebrT-Ikpa`hqTV`$eydlDBE~HNz<9YpkWaopM>=HQbTPSy#;;%uysgZXn$QCajqr zH*}+kd%q|ySzGq8;w#B#r@^UypwA*1AzKWr)t5*Qlu^#KiQ=)_sdSL-j!wElZm=h? z>k_ACZS9AMtJQhKjlpwqKN*QCpyB1UU15WsgUP^rEw66qUl<@_#1;IgEnZB_8jc=euvA2e^DFINgWTuJIKLB$e)@tD18(qf^geEoUf{GIG=SngKf z(#P9KyXEaZ(~6Ha<6YJw;HF-XB5-!)tJ6D?5ysYQ3u_mg8JjG@hF&$l4daeIFf6UdN0E_Y#bbzI z<0YO@uk2rwNI%KY%}-l$G>95}&rD-Nh;x>w%l6L11POqSZ#>ZZsnO!@94iJVfL_cm z$4wdE+zcRRLR3hWKCE1D+U;EMNJfgd1Al1%|4K?S>U50t9h#J3R#?Vou!dr0d(W(g zb2bi|x$I$t0fs*FyDamZTD({2s;Z7Lmk1f_k65Pt1>T+GaSQD$2q@ZtKDYOy+Ef|~ zd#qnB(|cmtpDb?J@Au0u<=^z-FMdMWw`$Nde3(jj6hfF%ua7A0v#!8M0-inBJ=m3Iu_BTh)C#e&2Ran*NWzAU-p za%kY!CIAIPddcJxv1hPP1rPQ$YkWTn3hvIAs46ySyi22#jYdO{Wqe0%0Vv6jU36Vu z+XIUq;{kh&+~k`sLM}wdaLUve3}~|cT7sy&E;4Am9DOxuP%Lf&U&dQx zG1fkSV^mU&y3=+ zQmxKt+{;ePE4-W#7W+Ph29qx zPh@O#?6JfNoF$M%5gZ!T{x{J!B7s`5oaW(^@VAqS6JV;QA8-p|h!&R}4x7St$|?wy zM#%3LAx!NX<7zrtDb9e{p@(y+yicGy@THg&6l6`9{8VRazd95AYWLc-a{+WO9)E6c z=pyNG`3-a!$id26kC+kIl9vV$NRdJc#swElFuXCl48;8^e5%Zod?Ka+;?gqk?bo*I{LjeRk-y!X@n4 zVaBUn?B_9vdyL8A;exe6x)(XfZVOG9^QQ~!ka$i_6*SA?8bQ|{6GJE$f z2q{==jYL;BapaSI92!lDL=p`6#hCcHaLB{AOj&U^WMd%JW^+gIH7kIPwZvnh>!>@t zXTxP}q>MNF00qXbhE2)jL)>5jiAwYUTFX^5=+)?Q(hj8uinw91&1G_;XZPF?Ddr}hYM z(Iw4NP}wox)MAlCA%!*TRE|UWFy3c3_0$aKSFOnGTJ#NeDzkSkjl)#M*1c!N&Fqmx zF5rd4os-c_=-)+DoZlwLF*Q(FH7nsf z5#($_p;cZmu!UrH-EBscJp~F|*l59y^n;pM7ebHpUh-?aiMptkDMsFcm0et~EvNT} zd^y1=)KJXg>chF1vcFt4S5soxlAB92CFB7?%vU~vp;SHaaF3lKi^{dtO)y8$ztrQQ zw?D{T5m_*$t+p)#|9T<=3A(81ph`=XG~BqS!7|4SuRvgS-APX81ak%dbWdlQN@v0h zTndC=IqQ%sla_;?EZ5tN5ADcAMoTkA+7x`fqKGWLYd^4$J2)=-j0|sqpEWW8no-rG zuto2RmOruc*PXD{iQ8qKK(4Q8!B?HlXK) zWe!DenB5EpAv;sXiHRWU$1gY{>DSPTBq@33p+}ZHVbj_^Y4xm#F9swh7@)r%5<8ca zzd`Q6W%kqdn8xa7T-E+6>;~))aq;aNxmYnd9;}LbVfJ{WCod$bJc5MjKomR5DwL`* zUQ=q%0|p_97`VHmKpHkA8iXdyiyBaV9j8xy!UZ4{wk zppiYq3AOm;9K__f=q0Fy;@hbV(k@~gfgWUlcO_%Pl2Px3Dt2S-g}muC=g{DN1s%^7 za=Si5N6-`*DescCsXQ*6VO-+-+9s%Hf(J}G(@Ns)gtar@hY$vDlV&P-$j8D@CdRJbNU5|EtmGTk1E8x<&3#iSip*)`!64{XhGLA2~RO@ zMkTEXd0>K$Zrx?JAIs><O4EVtDV)Zq%$LS7O=+eG(=B@M%^lqKl zO{=RWD=#6_JS?0ErIw?YCH%hsok3nTIeCDE=etS;x4#x)^usiY|1STXBUMGBQbRS( zjDKmHZuip;!DpY3k36r|T<}(G29RpU@C#+<3zrJDjqV^{0ab?hzgfOOU=Iw_>d&Jo zO0L`a+iX?V(Wp22RMxQFf<6B{Y zFKWig?q^>#DLOzy_8CXc27BTPbPNml`P`Rq`}oLVUc#v1wluV4Pxdz^V^GG53w}S% zN=6bjwc8Uhwd+S>LQ`Du*}k!`7u~rAv5p$vR3d+5&I&5)A#>b-A{E#a+bkJ@!n2MH z*5Pa)2(c2Gg8L%g!!*-`#SKEv-c20@=nZCYZBtRhd?2ah0h#gtJZx1XqIT0JVEG8~ zfOH|3M^l;2%j>`BmzOo_Lip9fZYWFVq+=?rw$Zxjl`SLNBa#fIviR-MIqTIucCc^# z+Pfb1<1_4z*m@P%=BiI%oGy;GfIft?ayfEYw%UHQZaw}Pdd-@zN~cyRi<`>V%lVaG zZ-R@DRWnh%XWZgG9vX=}06o32>X>>rZi;YQiv3Rg?cRK)+Ln14jCXd2ak%yT2J5Uz zjdXO~gA+`6j8m8jY7A$4pYrUmyaF=KPVdz#RgbpNx}?Zqx>hDdL;F`6gCfO~!W1;g z>4pVLJHnv$udtXW?s?29nyWXyO$$?4&1M0AVY+2*VoY(^{>KDrCIuIhc5$(|*7Shk7ny>1<^a7iLym)dsX0_&jn6oXXs z%vxZurIx|&x?k1L`6~Q2jGRLZ4h&yrHa9OuH%{t*QTLWnVPs3gF75<(hv4om!QCae zLvVLb2=49#cL+{!cP9|sCAhnNggH!-_ssd;Ge7RVbF;E~ZJI8+YwzxD^;A_TGiMBb z8k(=S{Zt{&;W0s^iqWK)!^oFdkJ7KY2dS16*$1W%Wj$s7kKn7Wnk9dQfIZv8o)IuM zR=S@E7~{VK5dVs;07a|dpl9!5ZHP}RW}$0r2t})6VqpL7DR>nt6s@SCiSax8A8{L? zX!%X-?PLvY1)h?fTUi=f+T*i9(f(qlq!l!DG|@Md7vYDZ{b`+hHt_uy*0~uo+g%n! zFxh=CaMhAr28ClX_fKzv@S7#l6|M;)@kap~IBO1XVF7;rYo(_}H*$1DGH_%#F{rFe z#+QGOu#N)#@5d3*z=;Ou?h9b{x2TBntG8Y?-@UBq%{wpdkp?-5$^sa;iBSPzU^i=q zqTL z`BOzzyjH>vYHC{a3uiI!zIw{2%rw?rI+WqMDf21@CPSYOdcE6zU>Q#{6?`Q*LOCue z6X>A1=b;(C)G)2;w8S;tQjku$&n`oCZ)bKof0H-MwM8rS$93PtZx39jZ}didcfl{4 z>be4W$Lv_+HYyqU_)wVOg+{6-Z9f9iMyCF(=E#Q+--`Fnd(%H z>|9lMWlpxHdRmmfW45l$n;KZuZh2fHq%mdgqGX~yjhsHxHAWCnSq7v zv663fTR&8Icn3_Sv1q}Bp);YxyLhDwM&>bN&4lr3;)`Wg9{?$~DccRqQE0`=JBC)` zi~3L!U=7PL>oW|Uh>E7CQ%X!2%PcoA)^Ji_Pij9vq&~ieT2Eeh^5ss4wN9Mb&nD*O z{}iL$dyN2;bH_g%4o|j$X6xz8N8S=~N(3T){V@fPK(?QD{SLxM-jiTU1R~}Hn*IMl z5sdyhFTWoTa%3BPuT_12D|2#-lGk|ehI(%inA);*2Z5zUnYzZ>@?`4bzW!1mUAEY= zF*IapneoWg^U=d~bEM46QZGH?$Ca1nsM5yUIIh`t=bR3uTDWqzWHd`_bpp3`6IT@1 zq!D;4xlNy|lWYf#inh5%x-+-bmXsbwnVMxEAlF6ernKL2KdLWbe@=U>KD3j>XdU@H z(J-yvR6f*1fByk39J~Jfi@3|XU3TN9u#vc@R*2;FKsY0ByOauwiOkAU^pES@-A^qamz(l9teBPApRfDw(D)$t^bmJ! zr$qCW@wSIVLiM;`;=2tkw4&y?k>cQL{O_^lo@B~WYcVD6G*t0yZ@ENT!iJqr1XW&hWA`2^ZI=;^~SyqE!qPh61xb4c(uy8~}`@*Dcg zVetiodkUMx{L8TTf{Up?A-8|TZ2T2*W_`+}{DO!5N&_>!U|N4I_LQRcuf<-FsGnlL zz;;kSvR(h>-G0)*FAw=Evdl{V*QE1P9IO}i_(km3yV2AAMBIMU?S%&Z`H;WfjhW@; zr{B41rWcm>r`WG|`;WT45UGDH_8%Ye-={Or$ki{C8A%gMvmXJpo}x#oKZC5SFVFMD zbu#@RTiO2EU?b~qU?bDZ3;dH$``Kd9Mfvi8TVpZ@S6yg6S zR-&lmQ>?`0FFw-rsFvRJd=kVM7j547fOd55bWDtvFv9u+c1KIBj2M!{@w8FL8^QR| zU8rg~tB45h$E*7T4PFl?=`&vUL~fTW1CItv^CNKDS|kD2p*CS=MX!ahqkHdxa zz0Dq8*OB+m*LNph?r(b}F5Bbb9;Y659~n~b&2AsHE4?1WFILm%1-8JOTNDdTy&m>Y zDhm{E%kFMY-S02sc^{(g@457NQ`HBLF14!}a(K#ChX;AJZpswnc^|JXF5{gRF2SYr z9C9pji%lL)i-#XBM`*p+z0j-WJsRXwXUywo4|FZ79U5jC%4S!}c4N?$XHbEnBV8cY zc?mw@fGBzC)RwkWkJ7JJuz3QPL!(0b-Z!~N z^J=O&Dm}*3Uh{G!!HCZ9c5-N}d70+>fZ5D<59Txh%}w;;wYw0UFkOGUyTyK;S}eNG z^8={S6fb8j_s8>%g}gY>xS4M)Rkbt`2cGU0y5IUeThdg<4749(?iCu~&;9pywbl36 z6_pElD(@Ow^l6>;wh1Ba)i)2^8|TTTg};fTu{tSweo;u@A)y6#vYl8^rE4^XXR|3? z;XHRwBJ8+6ir8d6aK!SGAbbD;(ChoO5Ge2WCmeYlr zd}%yVHNUypE*skFUpt!Bp`P%iLmfHm!=x5E-r_0a!b)S(Zm6dIcI(j{ zZZ6%gdOmlsPjNL;dwsuIl zP3+n!l)vvixO`PvLE(h%_@<-Z$k48O#u2T#DW_x#CbOCM;kx% z?)^o3ZTt%1tb}E#WxxtrO8MPAZQod94H{KhA?^S#A=RaI5Ktzbu%u-F$~)X{fRV&4 zWT_*McIM+R-A|@kak^lcvo7RBd}VKX(2=!k+(wqhTIV$Sg>!Rgz!-A*m8LFjcdM&g z-`eJgnZo8EL?IhD-2$?)bt1V;IlD|jePQ$FCOTB&;Su}Hb_bYCGaf|Z9V6+OcaONk zV_N9Ji1EgI)-aqY`ciV4zuYJqzI4hcjGGxLvF?cBoGfh;lPw>qt!z zw0#gJe=jJZ3_y%B$PCoE^x^!qF}Fm4TuFcW`;_LU&oP+Wu7aWVj3S}k-BYs|>Q)7P z*NI`X8a>u6Q$(iOMeL^8BEoB@AL*Ivx%B<@r&qAeBx#h#-L&@V>8586*d z@2-@NdGschegD81e>i>J*pkS@wu9BfxT8Nxt)IZ)P_t5{=IX zHb4eXf!#Y2j^+5j+d|-_94-5Dk(wt(GIW{87H9I?kO)XPRqTvSOww*0A zYp}?4A1u#G=EX6Qu4$=Rlkyo}_A>c87HZ|ZGEX((G=oyuI-N~0t$Sbu-{Wy?e6!J~ zDn!DtKhFv4p7+78BCkBMi@q(?x&s^q-1;ZxjFfDwguPRx?o$ooVW zrp5`Pi?dg0J&c%ua==b=aG+o0|g}O30)V&K;7WRnf2Q zol7Aun|Q<)E@QgtWh}aE`_|cA2c*eJXXSW1l(!?yKowo(Xic1-!#1OWpEZ$r-+W6$ zOwvYDiJd_|`P6NHX{p)x@L{8YLOqqu?f$S%zDn+#IpK=6j^0;L62S?fV4M7U3k>^> zGiU_~v9lg4kpOo8Y)0|%P4A)x$a`^1$(6=20mqu8i$MrBm@5pPAh=g+5$6!v=$Qio z4d~P!q}^csw=`Iqv;@1P&^N8dsd9VhP_I~B3eoe#VSVfa09E+N;b$Uf!;xD%Gdh&~ zze+{G9=S6xPR~3rD`Jju~GCyux=OLbO0z*g%qZC3xV=HVt&z{peo^vzROIL*j#MdZ`~ z#z!Ri799p`wwE2I>wF@LH*@R(%eyUse4U?4EpwXEo8xuWc z!ZbQf`iMG+`=Y0#dDr;i;uXyHj^!FuSoa3b)F5tWLZh!i~)kY&!f)59sm>P@onRZG)aY4apLFvIvlo73uIbm?g<3zu@3tJ1*F*SbHZj$TYpmCGD*<@%&Pn za9uhtuNE3H3LGRcfe4ruYKe$<5KTj< z{iYG8h|f@(Ke&<9I~5j`fL%x$aERBZ1=^+J+R(~Q1Ish7Xa_Yoxh}Syx_g`L9t=9f z_%3i(3)8hWF&@8D{5FwwSO_tv^&|@PPqJ0VxWEk zaVCp0g-GKL24YLN{jO+?l>n+Df)}GX&PZpCdbI)}&rlakkV}o4$f7?^4kBRBSX@OEWJ*D( z%^D5;!+~>sW%iI+XyO-5m8?oCO41y8aJT|WMDQLZeR4P5Ofra|NW`5gYs7Wwz%n|y zPCU`qy!~qH>4lpQaV1)~@ZigrL49@(mLeez15vAtLL>?){Mk&q1O{BWlsQnwFm$sF z)N{a!HZ!(n1*Q2IuNsAH+DOZME%bU5=Q339wo z*3Cda>q?8@P~t0~q`(NFE7WJc_J!_-M~naw6~q;aW4Um2k791;n$Lh%wz_Ti9NxN~=AqBA zH^jnQJ`5bWPRhl!ZN6^+S1$WX5Y>%?s6?Z;F|UP1AyW)nLlmHlpSP39*pAf396c$< z1~h@Es_xFIU2=$bAP5#@p_ZTQ3PL)Q`4+|z%y%lU!W+IR$B9s)xBJy$=ch(ilyLGx z+VPp?fNu87loBBB?MWVzIIK2BQ0 z$%`2!Ej+dx_?}S|cVh?79aUzM+Dp-``mL&Qj}fbAvc&qE?U;6lZ&TkA1wAhMPGr|E zW@gfW%H2{&*Y0$Hm=7Enf@7JgZ;Q8@Vud}rgAVCcRg}V=(U2x6cW496KXFF!hi8wH z2F5lfBj2Ec`V%>w_AX>A!!x>>4+@26%f2Fhb$v6lu?y=fnMpEjWlNEQ=9ZFjTztB?gNl?gYCQPJ$n)CoB3m(QSM7Wxp$&f1@%_c| zz+wHD#u!-bsq?4xAOCH)4#Jl4P8g(p_ zhetnwrmk12s&H_sGlMu4;-SNQZo2Nh!~as?AtH8io`7;-3}pY~F##v90-RsIKT;>J zL2OgF>!2lA9brK6GHi+TLMuJK>a^gxOxbxn{KOdmn+8V0twM$^W4Q zQ~JxT0I7znY&OFYBmLX%_K_;C%LtNgoX{2~OT3vair@&*<6QGL$+ZJPKsiXtH%z?h z--rvtBi1A}5?F&=Y{O0!Y{Cw18XsBNFr~MqFJ6MNhXG`z zgpwP%Zp%x{K!)LN&BN^g*c^ve;2AsAJ;KKz?m-W4L6+wU$%295LN9yW;@{3HSBFuT zhg#aI_tvUGSnjlPCdxdNaOOi>3_;rl6Wu`D9y~O0U%$yTSGc0A>3|}P!ilfcudz;E4OK^dN;Jn)&&ZTC2$9)yq*S#gugD_0Thg) zoOJZckh+HGCPid2gyb=tYR^NUObc8W6xQrEgvJo!Sm~25bOzB~3Q??V7Qs(Mt%s~) zxi{j}@daNOx= z;Oq`=pzfgtyXu5Bf)OFTDBlYAjv&$=Np=mq!nbe}R($nzd{2k(x!5NPE7%&FS&6tH z6-syU-|#*uHcg%~r3ZZlBin5^Oj)$F2&^T#)y438{|+TthZ9;yHM<)kg*ea&O{Kl# zmL_TLOM$1bX`_?m)Tb>C`185LDGC@wYib%~0(JD|M8t56Tb#+tcUqZ_sZ@AhlNm#o&nNWCq5plx@rRy^K7z zE&ZkfAQIf?=+^PB^{r2BJatz#Mh+CyE1TG5S%A#jJoCq~ydaxOa?|YTOpNgZvd#Ai zjd=wkgIlfq`yvUT`kFotp|!zq7i_dL3WA%mdH@CGcWME}Zmp=V4GrH+~q zj^0h(g(_b$d(!beFs7^HR8LvbQXyWzk*H|FU-ScdO8^k&?wqmX$WX!^GDRz+tr3kr z0{*xQKYZGi9)(V9U}ZO5{O9UkzXbV@RxnYu1@LyO5(*eSNAc1qDsmrJecA!&qra43 zRPf&;=)Etl2@Aiq6JDpK1r|`MO!`bVb9UYod!<%nj!67E7%08)W2?b&fMa$n@rk5- zIvs*Ol+S!LM;6xda8AVmuCA)OSm7!smt08VV#y%lZgTB2SFVOO|v zQ6!owTV}tEw4br5Fhal~JC$#ncqbP=B_<;_@Zl$8E5jE5&-lGxMt3Bc?HUEO&67Sh zRUnFRoG2KZr4_fZZI@%rmdNjr$$~1wCZP z8yb8^gUy%NGL~rM>$AzWt3zUk#jVNXM)@Y{z27?CK zdjD2vfWR3_vUPDRjY6(20GLLYFJ^H99jvYuq_om5I&$%$&$FuGP$+EV68CMZ*e?4Z zJ$2>4Wa5_bjcI|(5u3wqsnILG9>a4nCo#`x9EvSUo9 zjaX+%!A&0A#MtQ1aKdEZH{uAu3NW*UuL&|XY_)*~s6v&teweey<-!D(BL$l#4uJN* z1i-T*zJno69ct>p_ag(6e|Lc}rVE#}An0A5{i%O9dWWPj2Xco9w z{>}Ev@-I{CGoA7yO&!Z0Hp&0S_WCUQVqEr)cUOKAEwq{ zLKi*P(~Dkz8cm-9t3B7=|86vu2%qmpXdWp`umcF6rsa7GT~tL0+Dq_cG-U^22eD0Q z4G1OUSwHmW6c|2;IAxw$Qe<^wtJ0Cs3R>tY+;Mf9Y~c00zI{k<*zr3A@ z*R;vku(>gQJlXZHC|l6>tbIH;?DA}Ql`!!5_{L0s z5E>bY(`)HmyCAH^^Y&u*U}5|A150@g)j(54_koiB`9sU&^!-=QJ z^RUlOWT&@|fz zr@WQG%ZTgl3Cv8Z-Voh!Ezb`Y#%8BU8gx)X2+bDB&p958L@vWos;n>EBOiN^O+hte zV)zys*!^Z>OfjlUM8v4EX1b3W+AI@tjWsx!c40QQJdTGSM+Dt%D$LbZ!eYSLz*AGh z-DE=X`F!A@^M0LyC$ro-s6EEW1Gy#>;~j_tHXygwtz9c7df0@Fcl^V`>8gKOgHyU% zMF0J_bhXy7+f>inn}Ok)#|e&2>fDxxxJ(lfz= zH6+7VPo~WV*2B6rBs=TZEe8QAw$PJMv&ZU&W5y zvKK_wa3ZLBCTO;b1L0!>Ujw%y!v(Lna)^GF1F9hvZ(U7-4Ybqe_VnB2f)1BF@2^t{ zxz5azpb*vm0z3BLqlxa*+GnE-dL0PGk~n;J;oze@ZM0oaksR8vpcksWRQX?%MShlVw){H$gD z1djnmoE5B@vELoBks&T3pZmak3l)`c9>mqgOgH|1pfiZcjOT^^HiVe)mG4J5o@U%K zv<|-o*Q+oQ9^FRW3`RXI?1i?f*ibVer?;sEv`X>*i|CRe`Q+MMy_J`Oz;w3sZy>ao z*nqfKas4I(`2zeij&1NDgG>um2QeYRV}qM@b)-SS8PA8AO-GZ4NC( z-M>H(p_krpxDB*juE@1$d_T+1Ai{8QCi+I_%Y{h|P22q7G?7r=YT3H;=Lp>(IP}_} zUgFTk(Sv{bO6+EB2DEF9bmux5KNtw17Y&diS37?bq`Db#%ew*Mb3>b(xw>cy*{Vu{9j}=Qf`b zbi4Gjc~1)vLE`l0`7M>c0*45aZ-j{{X7*PWqMW15nzH zs~ifE2GdO$W1QfNP0=BI>=5kO;1>3R5um7uvfm(fn%{CDEz(OTw3uH;N9gj#m5Cw; zG}hxSQsMPI%Cp=O6)jXui#Ooo%+0O%z*vKblTHN}t&SXD9y2R zAe=0bWs(d)4#Ibe2}?V+ie^lfv~>Bx3HT=)gl~ zhE~aX&}O7-HIv>G-=Uqp1bDxEYfH_V7zhQ;sQ}12Bx<#anks6nO88IAjx;Fg@0e`? z`uI(?6M*1JB$_mDQ!<1L%+mYn-M%P0Yp<@T6+>S(wuh=)W522$@fp(Mx?R3tuloY; z+lolfzX@qcll>H*h~=uY67KOeq&jA$a*c0>8T92CI?$MwB8MYUeX*rC%pofbz>kka=CNOm+w{*(%Yd(H4Nr5Cyh7v;tl}n0LT2+B# zw%_zsTw4g1WBO6Y<*!Xi=p5j1rWmPF+G-iWT&*0??v%CPW8)9wHrm$7pA%QEW#(f6 z;UdVGZ4?f`B``q|5>?q(B4BnXg$L}YCGsie)lZ_tXID>DiX}}Ah0gFv!B*oVczBhh zC1`u?%27>s=`oQ;W3VRUN8LN2F8GDVP3LxTK3(eN-F@hhrH3(DxoW2vM>;Y}I>HDDaDPtH|+ zKhuFcD)`q!*%BNenvLNy5NSonLq!*1h0F@K5uVR`%`JNcBEz|PRrj4HlWigIu1&LE zL2Ymzz)Kyv1OQ8dhNMP$!)klBvL&>u+at-KmB#NFlZkKz z=HNwV7&N}kC2mLcPsrN%hU>3GGxzbVyIaFARAS61Opy(AoLnhuqsu6j*0GjVsWuk0 z0cS>7b0?-J*q3-0q;A|h#5&Cqrvjw=6ZeqqF{cM$-nLfKv0$z_R=SZ1XWDPkoe3!&|Yn_4~|zTr*aMyX_-FSnX3 zK1I}+1vGw0lH>HxKTNeQ5E!zd`z2O!6Mu?9h_6H!8AepeKeCF%po1ta~FI z7^WB9L>zd|6B`f_`elSy6jxBs#oI#&n*nuy3VEZwNcNlo31?_odHDk|k3NdlI=gUV z84S;EaZiCJd^7fSe#!otF;;vbVVn{=oQloJ>zMp1(v0kA2lAQjD`Lzww8~JWNf`Te zWsf6({*4u?)#3^8Q#VQjIxOM^cqsj^#41|5BW2H1lr_tf&l&iOJrfg;7(6~mKaWp`ZeT zeXZ=n*?=e@b94p&p`mSca#ZeKgHRQ8dK!D+wKd^4`|(1ZzP z9euElIQm6~S`YPuUDmEJ9>z>KMo?Wbx9N|cgSY`d`s+5QWEcs;ZZ2|#spgO-av3|( zn>n_P3Ey!ar2@&Y5`*+R0@$&8ht9szxd9G#AwZ=83-cw>8@WPMatF7#IE&?84}2vbBh&AeF{kKN#>gYfufYPPU3;~ zu}#~kghZDAM7Q}sBFo~_4uz~y5Y6}LD%gl(PUH?o`T_|QNO9yMIdFB-Pv4Won67Z>fx5Z(5bJ2PN zpAzdr+~SXeVwAiD77}=uW2#wuQ&3D#(oimls;`XOm`AQ!I85O{3dbTfxp_x)tbhpLTpECEyS>ce%#a14D%EB@+N7GTg1Z zq{F#f?al}rp3b4`B~C%Ji;5!ODbl9?Y}}+WG)dpGVbfF5Xh5WdEu9J^BDwv_m8tiL z{VtV8*M2`0?7%KFbUZ6T6Ai5Nl~HFY-Y`W2eLRi~^ZQRlAkgni*1{+c?eARn-S9yQ zA-%>w&L4A@XB8Pzg1Wt3L~=Cb`)1i4r|rJ1FIrmwz|BIDt1~a9*D1FyeTUnDucOg_ zcNDjGwPipANE{TyKxZek8(fcSr(2ow`6CBZZ!qSNQ^I**fvC7gffz1r>g#!5%d@VK zXc8=|XsI`SMoWGkg*_Pw0QbX^&S_kAA)fJK5C-Uu(Wzu)496~>;rt}WeIRLxpA89( zjOu5SE1{Vv76S0Hna*=OUD=M2=Jw**-r{D0yj8C|;QtDM9V|*>J@WdkAdw#iiI!cO z>v~@m-7QGU_#I5U!G3C9w)7oDB1?oGpnY2uBs5R=7(&Ta##aPDz}S5~Y5hX@5qUr$ zRh-bCuC=!|g$Sn->e5qw$w6N~&X^nNsfzHm-08S{7j-d30iwF9QWhID6;skKIvok}(!8us%+s?zLjY?s@Mki*;L=C^nA))w&U*g1O!e z$lUy4DX%!(FB+zrS_c8aPBn-vgqq?P$Foj4;2~mU`a8iF_mZ2wG$^ib-MYC{TOAiL zA`>tq7-ba)jFY)fLIc|w_5@#_7^w2IBrijvFct=xL=w!(Q7bjvmSDlUR2b;aF|e~6 z*`hmql7ZJaes7@G0^hbHmfdOYKI(bVDiva8waL}xP0ox{=TaS*efHRCM$VD7N&Vyj zT99z`w*MI1u^#E0q0ZcHzcE=Orh8sxzv5_K3*^9On9Gx`RV6?qU*&0zkG?G2$}+ro zbF96_2r2?7rhqm@hXiKE&ghc z^?6I`$3_(s3;Qn#WLSP~mNNZokM+g1?8hD}Jv+-^?y<7|+${YoG1mX!fynxEv-Cym zw;kPI{Ca-f(PjO)S^8IEOiX|6Ci#@b=4D6suf!PsgD)rRPdCXIvEMvLpTgPyl`kjj zPdCXIvHwc97q=Mor?BdOY;yls4e+v~`%~=KyZy&1`MIV3a<^Z_{$rKAyd^)pSQMWl zO8nnk6o0tr{qWIx@lIoB|5uGYpJ)B&d8(<1iTqm%8Mc>K{J+!rhmRUP^UoAR^z>|h z`l!(}v%i%8aSmI5sQ!C08Mc?t^lzxn^px1)M;fA+HvgqA{*gLcIoMk}*#G8C#rD$8 z{0+4ke`#fU=9gA}azp;pH}fB?n9_22W# zu)TEme?xVKpO!~@#-F~Z^iQcR{-HYm?sER*AOCkfkLl@OvZDQH;$QUtSr`9M)qnRk ze@Z~}cT|5K%IJTLTTDM^LiF@6Nz(qQ&HcNh`P10+cXWOp%IFw>cI8aJeCbbh@egh1 z|KVfK_A=G^@4xFmP5eLF``7Q9j^U+e|EKEyyL&m?-mLizmvl3sdN_78fAo`v zySvt=)3}ZNuuZ@$T$+?oq=N#*5d}t*_KD z?fg-5*2}B0DWhoj=vH3&dZWjRwnf|1>nTxl_4VVD_6=OK$KB=Tw@1yhjisc=`}>ov zM{~;uL+1jImD+gu*r6ruh8Bl{B<-2A+NQ^W0k6B2lkl3Z@&;YHgLAxU`a}y6o4hBw zs#~@2V2Ri3Zfzsa^C6j|Tqsfr%`mhne|Bf!@!@hnJ9)FGyVA@slp$x>;mXflPP}n@Jf=M9K$sfll_3<0>5Upnhu0D7H=D^b zwVB2@v`U(B)dP@1`IYw~ z#%QeSrDG?r8<)zk)O32LYiDQ0Z>E$@A-*%z#^YwBpqAFlJ)8q+;1P%x?Kf_mMGR;W z3oiBQdiI$RcJQrfY`!@?WrOD z$qtBgz1TR6N%g!!tN$pN;dYFlCGHBQzG7KM%?l{K)_8pVEkIDT6kmnjgL}v_1AqQ9~wIS6K^BsU9JU-Or2cLl3 zYmBf^Rm1>fK=jrrraO|+q&*0Hduuc0z_8`YcV^c(b&wH~Z|h@(_E)p}%Tz6}aoJ?M z5Klic`07sgw_3U8Z>eNaZt#$QLcX2RKVd{bffw8b1wqYH-MD0JC|^;BVV;NZ!+Zd{ zj4r{WQl_SI<==)z<;D<|F0g4+#+UqrcNOZxSB_bTjDE#4y8?*||0ZFIkTL^VmTpkj z47vV|^)@Zf){U=Lmkbb&{?uSGM_Hu^vZaeY)0c7BN+{uaUF*T`w!#w$lK5o6Q3(2! z`bda_k%*z45TEZL=@7W^u3(7*@)P;x$mZaP#}eg`^o*b>WqgNcNIUz7Mmkxu#*F;J zmAPCfxDBjD&7Il>ApkJAh;7|HRJ^jgqVAg5YBztTYF$ypN}zEkm5!|$p_>jMRqdcfx$P_Bm;bF#V0q&YTO*-_Br72 ztgx`*2#QPuJqrB>JsH;;3i7ZVevjjG9D0RsM4mf3C&W_W#gRmNhkra(Yx8H{R2$v) zbq?=Z6EI$L?n_2xqdgbcs31}Ld3ya`gaaS%cgBMk_o=WjxhbePx?_;meLI=^gz<{h z(Z!N0KpDhHW^oaDb+0(DShMbcS_;NkJ1mnajMv#{YMX8{fPhV?LqB=T@F0~Ke#e4M zUrsE<jM9NI$foNMi2 zZHCT)zI0>?hkzncvam~9?<1>Z>WdFU7`4C(@y<3-uc0Pi?JXSso{!?OjylWd@Z#YV zPD!|evD-sBx!YdfnPF#M!(xGU0Y`Ld?p$kfah3YsdKsXn2;ZFX<`ce=;D{@9(>~bN z)TFCEw`0U$@pw8t`Jn0-!%^l#7Ep{?@B4;DV-#eZ?JY1!ANNb*4`&Km!CgbdiUQ->%th$yMqrn<9vB9Gavw479~1~Omh41kC`|vnwRJ|Lkx0htjGWp3*%4wWu&xEpTGEJlX=; z>Fh^|tl{BI!T}$yGpdVY=;NW0qhw5vXxOCCw1QdS`&#VY0eB|i`r%uQ%%Fjy#1*8J z5p-VeL-26d2u}$a826}->sC2N#x5d=)=!Jgwm#*C*10gnE35)x6&6I^S-659DTIxx zz%ub5>)y;`=*O_?a`{RFAQ9O6i5_2JSJ8-2^q3$eT2#T30NUMzBV5{a*vRn8oi(}6 zXnv1`96{NA!$$>($HShP_wjhVe`n0uT#})%YPJaZRU( zA8u3ZP()j&JmjrM7#eg{y4^}aN^|BH5#Q)&`X0Dth|S{g<1_l10xgG!$+1YlCG6a} zb1ZJ>_wA|*Lbc!qSwvd~{mz}}!{xWbcl1t!N<=~$i36QGpk$;BJ>4s>GBbz=ZK#Fg zB~W1qBWsN$h<5kQf_ND}5(m@?chj_HNvpVJ4xX4m37&X-M4D&pLTGOF?BCZP2vB^$ zpt^`?V*sv8-y^~Xq)BcaL~e)em~BN^eyTh}aSjkDvw$gTjISRp?seWGjY5v{S0qsw zUL*-&sgU{rcgZ9KVff^*&iRmWvgB6t&EUR&%3jDN3&4?3poa>OIC|^j(=JFkz;T=} zq(Z=FhZ*LLaQN0&@B7o|yN4QvFS`L*26O-(4qFD~`$osy8U%d`(C`fv!&>uILWOSs zjuoKq$JeJ*3GhaMKJN{!V8BF-ItM9q8a;Wphvdn*V|GyqxQJ&> zuTC1B;S}f0*sq)SWM<^~xM9|vV zeOdmo)5JY^%>ihQ(^)#>>x3BXj2#r=WJx&sf-|m6fIZhrfX~B-ED||Q2JwK$XC5#q z7MumHXnY0xFvvTpSZ8`md+nHa-xFd7?e_bdwg#0PHlbYLLBpdc4Rmv-_}?Ux8K;>O zNbV$ncRUb;$uoZ^2B8EM-CUocx<=wEXyYnp@9b4{aU#}BPmH0hIQI>gd`%w4_HF|s z)osRR&<1o9JH(u%!a!t1FuGlS3&OGT+8{W(nD$)w3v>eFL=WZM1z%K#ltOJtu*BZG zUL28>#LSy1<1IZ~0fqC@&+nrT)!1v|v z0SZEa#PGF(vzV+XyWs1I<^ad0F)_1^#&nd&HrS5MR16K)$qRs$-z8nM=b(?gT2as3 zfqAo_n+A^`S+&G_Y*b--hNV#^XxW$8>}W*$HfPe3jfy%c{1IS7N}l}8e}OoZoQ`5m zJcP)q1&rbn<^`zgc%m_gcs zr1YbhYuBKEU|$T1l(Wa@xVClq_49%&E!vXWtTJnjMOX61H{qFxZ(ns0pE-~qC*C<^ zM%s(YcFuRwnxP5hV_4*83>=l$@lBXVGb4IMTIrRyT4~!pBGzaF_X*|2izTZH4 z0`IDuG6wSc1jTe`B5=tr*(%)2abH30p`*1Jf!wopO_J?n0Q?{3-a4$x?pqh8ySqba zP`bNYy1TnWTDnuZyBj2>OF+6iMM_e-{1*IPUUi@SowGgv9K9}OI(eSC))=$yG3PzT zs4B6_(x)gJahvJiGQQ!9Slamr>*|`8v;fK`s4yREGJfg(l1KtL{eF4ah6haUB9CJ$ z7^Qg7e;hZ~|Jyn*m#+yGB1XQv=8z*vv%T%`N^{CC~PczYd7@9okLG7%{I>^75XoaR#1s$1ezW5g70 zBhgLP6%1VV{P&?U=L`|PgL#PMP+1eL@y4)Ag3t8~OJK8qyPexwr1XhadWSLS5y^pL#%6gHa$7c6`W_VhslTWA3I_-`u~-e!w{PLOx~k=Janv zRaNlC0Le8LqWCK2vPGx;Sv@;P5hV$c;9Oxa00^`DhGIPkerP*GJx=Jnzi_WSX}z0L zmxy8H+S>*RlpqQolmJ)o7}{79xZX#JML+@mOpr(iNH4_UJe)tt074wA6nMP;Bk2iW zhPSjWEFC8ZBFMFPaCtt^1^=B4ekkrnh1pA53uVR1Q$@il;P>MGD_TswC+}2mP5D3O1z;` z6DAe!ao39c-2bUqgqKKpYe6_l+BMUEw22OQ@kO#W0^Xzyeibr%Judslk%!*Kk=Qv4 zTjdWKgE6r9Lk?8**di!OhT)o(deNV#K4RqC%f#`~Blio8f8NaRc0Y+_$KD!bC(8y? zG74osY*`Q9J;V-N@z6?oNvOLb@OfVnQ|{A*ke)R!sq9$kkW2HC858u^*uZI_+64gl zI4TEGfGlC=0?f@|>P1C<&;bu>24ie8o_-u=890jCTcOh)hHI1@60dpsYGj8FHs^J_ z7sUS9YMShl1?d!-!%J?Q876}DJP9;i1`m9spCsa^<(b}2EqiTn0!ezli-TM4m;srG z$@$zhSeDLMfTx!7UYwtj7%%gquXz?4eP557-Us&=C4$o7?v-MtU&S;OF*Rn?{4Nf5 zyl^Ye>q=@)<-DpRq+xmvvdux=_Y@2kpKXfz zmPqxjZ>1$mYZ?OmK%oWWh(Lf#3r4zh|o7ip+M^|GF@=WVQLNd-7;tVq|lZ#5--yr z#!IzxJfropj51Ts*W8&JYf)5bka5evw^1ij^qf&SK6u|-=|loz*^nsg#j)kKTdm1)NLM4sfy*5rz zERGqB&6$aoPy3^`_X~|v5VQrxiB#M+%&dRJ5&`_`l`HV+#C}%Ox;yZ~TdKm4!2=?| z16X0ikPH`G`Lvkdf&7-Y=s?G#%M747q`n}mG+wWL#}QE@N;0c4g|}3?QAl)(AbHb` z#F|x++#uPCQD9Wfmd_Rbp}Ty&L>FdO$#>lKLOc4)1S_C61F(iIpNX3i0PJklegQukw!tnYfkP5ne`K1#8xYXSI{=;Ri6WhMZ#l*l&Slo5lk}y zR?<>^nuCl;8NI|A_o(|2sA^pyN(xRVIbUFoH%uN@Z?%*V-=G&ciLkuo0D+a!i-g1N z@2K-+9g$RIBYab!66r(4kxqRpAJ|Xl+xD9v}N!3mb>Ah~x zUEPz4kFd=uUF!kD2iaS&Ffe!rX0hly_Jf7c6*%D(9 zvWms#8?`9PO&6F?UX|&iQl~#pZKp?*hB%%Qc@#XtaYq#nTbRFrA7Y=@pB8C^wI~I= zEKL_Y$l7-rlD->Xg$R=BB1ELzp~!ulyvS~4StRDKM_fusBHvk*dlF7Ac@bA#w$bh1 zp-)R6TdzK)(q0H|X0aLCbwBCZIuF)P#6;u8_p!)Gs&{(`>mu-gJBER5AJuh0*=J$H z-q`;$O+~1k!YB?hG$-bXr9Kl$T$V0cJ!olV) zjg9ot@~TGfoSP`ZKmuh#57ux^(Ey(A>RSHB32_e6>*mnD27x587m`NHoNrB6%Ifc| zQHO;ZTH|mW)>{F-7>pytYDh+Lj_klfdQ_mFn`?~HH9|sN24|u?zC$x-l+MhJ6cReK z*BDXDv>XtQNN;t#FmL=^;Qk(d(Cz#6`g?SWIbJf_co@3{Cky{CsSW!pT1n_5Ngph* z1b3ll_yUAN&rF!qdejqTc$+~5p{#tTlki|2G`8C)4 z3M}eiGku0Y97A(YvKB>{o(z_t;xo^rO>*nkU8}>H#2l~Tt;OZ56M4nTYp>h4gNtN= zrTP*WOFG*I1%SW%Z*@~?TlnWb)AeOTzl9L2S<^5r!e*M{@K?sQ|L6$3*^KvgB7%SK z)WH}VHcza#WD(wuRFPOLk< zm1WdCTzUGQ1~Qs6=Z%p<1s@b$zZ_=Bs781iQ+XFhG__V^+?HKbji!)(t8EIx9)>5p zU3lyEEoA}gbzP9Bv?T1D31fSdWuWIW=ZsZ%v*))E&-&&lPa!vrK?}PzgT2eC_tQHz zg@d%sjP(V$7US)*1UHy&(D%5KL&C!&>JH-#o`s@E#S!cBt~)x0k~^8R+Jvs$f{0ek5v*dtr-J4rb1| zMN{oVv-+`aO0y%Usf`Q4(8Ubh*S$VJ*U8RE0;$xkOCuBq)hOtTmDL7uBnDJj>0Sfm zK}Ws^8@AAH{}%kFy=`@Z8TMQ&7OQxyttHiBPF1C*WPE6ED8 z+CmI&F;Y+!8c3>B4ytln7&6o9XJws1$)e;2VVXt(zRAGkbkVkkF7hlSuL9`5<_u~K zO%lwM3sK&^o4n&$|0H~zq{4v^lnO^wNKCXi)t4z<8a-d;+7G|7L@cTAr*ut5)J?@< z5-@LVp)g-Z;&HOsTNh`078WKvws~AcIht5R+2BR!EF%3pLd2ze9npC0rBVBe!jGC8 zdOsZHIyt!;yy8e$QEq>gSbtM~#9X~)SqhL|v|(a?FY_j8tXgwnuOa{BHp%Mz@<_D- ze*dDHoI`n2nU}}z%`_w$d^fD+Ib(=!(lHPj)_Wu<#Rb9wD3!GSHLKMA`V{B&@Ygmr zWn18Nm`Hm2`QA_(?!d_P8Q?;WM`s_jIf0QC2vKQ^5_SiD_#=y612di3n`U9W5d28@X3rf1u( zuIQ0NMIT>$M}7MaGV%Hitlj7I!$ffEszG?%nbf7;Ca(zLlHr4h zcnK-%7S+5Zn%);%ZRC`!wW@iC>2JhctqdB^^keL6(Zb?VhmH&|!lv2{mRZUcKV?XS zC+o*#*iQxxhC8CwH>$r$O$8#`7LjDs(P`86vO!vpcg8sWvfqlSj0aPeaNN%nmRUSg z{w~>>076kc#ibG|9yaU96>wgIaBZD=W<90DbEJGbkmnqBpHAAbBsh+l5 z%7haa^hOWZ(DUBQtjd7Cdmaq3teYIZDy5YUK0w276;3gaMY`3a*BxVhVRbl|P}LNE zJpxnRKn2noUchwCM^ffc%~A3=khnv@3zhf4o|23UK8nj<0-8eR+vR@Vh zmoHFyw-?CwPJ?cXu-of-9m5tHxcy{e^il4^qAVI6%Gy5rZ{ybqokgQX3Z4pj8x=11 zZh&jiAM;b?SpS{-!P8~#;}tI}Gb{bSAzoPNp7|>p49x$q-=8VO0M-Hw)6aZ1M87x$ zu+lwKKYqUU3!?|{+B4z&w@gN?bbn5w_$8yx<30CZnp@~UByRfONS>^8e@<*=Wqnp7 zfHDG5;xn217cKm)l#$<9o~(3#PH_ECPN83@j(>Abp?^C3H<~9a-JelgA6b8Z+4yfK z)6=p2>)7(BjK8#}8GcJ8#7g&P+}1}H80)X8gy?^|sr=2Ug#PhR`HkkuO837KqyBep zIZqu9$Q=jpQ~9|*{-TV(wZng-djed`09>PIve5t87wJi8#$P-$eqq9~GCglLf9+uZ zjqb?`AYcEn>;QS6-PPz>e)=b|{?y6e+V8*7Jz43Wp~C;1&&|s4GeaCb1AySn%E0#5 z_VjOjPgeS8g!2c|{*o<{{+A$kzi8oa?djk6o`BSxe?H0q+W-Kc{p{{v@_YW3LfaeZ z8QNG|y6QOV*_-LWT(P{P};Of}cAXJ=?zv8`0wq`IoA|TF=Tz$IQgq#@^_6 z>HiG9J-IEgu>V}!7=B6a$^vjcWu|-l^LJ{&+M3~a6i5GODDFSP11Pyf^#6J<0Eq5C zweeT>y`G`7p0$CIp^m)~U=WyDoBZDYe}?J)qXK}b_)k9*(X%uDTL#dUpAqg~sR>In zD>Fxc0{(wA@n;C{A5Hvp*J1#W{hxP#mY*8>D>Y$YYU5yJt>a|<->nFL4*FPFesNM{ zes=76^a1%xoiq)NjP;x>9d-2VO@7}D069PZ6!ozH?7Dwv!_R&v`b8;!(x<_Qg%=S}W_Gd)mm;sT`0Fg(2Lc3p-@wW>7JE~*+b5zF+Fx>vNT^N6^_JE7y=av6& zmHl^A$N1-{ju~LL{T%Ep|LWlvo&2q`{|@dL{|wwct!@B7_wUXQ2qN{Y2Y^og+STp% zLwm+Q$8gMm$^GwO2SlSFV*aUxzqO}-$8d~)j^UUAiUKTaKM(Af0S4PY-Tk);{X4gU z@y~G^Gs90l1^vH4SO6UkP{!XX^zWn!#{UbL2Czt;=kc%CGt2;k?eDf!n0`lVOn-*f z9)UVDJ-|A738Dfe|1} z6f1yn@KpDlHj0($abE;HByD79rYB(ILZtDiTxNhV$Hv5<_1jIr)4R`?{r`^xuRN!T zq80hC38Vl~PS_tqojlGDfLtQ5jRCsRr>D=zA=J`869qc^SJnn~2h3A$5_wWDIJh%L020cFW zWEwmbo?Cvxj!!kuEkB`(r<&)MpLU<8n&+0ER;kCDrz!huoSFZO&gaqe9A^eV0(tyS z|C2Z~8kJuf?Ywx~b28yAD_zKah&o1$K)(=o=tK7V#RTbEeWJ5`X~6sCNc0jzl18GW zn=GGa$%lI~PDtKxTBUd6(?rydi~V=258IgyguFj)+8b8;+5tajmLkjpe^@VP5+;Bz zt$cd78m`o^`fzb^e{p}1*r2oU;-+fGha(TK2zVi)%9U|^j=Et zRjg)(ML`tbcPwC@NFa+Fh;LToDOUL#vt@qUjTRY&N@_|39(SclE1UUa$#egXeV zvfJO(wpfAB##$feG}RUAgkBu0Io!>9M-;iXym!KTw(59-JW{taY^m$9c+(V9Vux|h zTCO$ORun6-s>(_AGWG=&v z9!g1`LB^+58H?D@Ho8A(mee=%`ekg*+Y8MfwozuDKGsIPECt}mD?j|I+v469G1N0+ z+|BSzEMYq=E$kAkw{QezD&QV~8u%O#e!L!~23;_PZDvWh-#Lo$!k@6&9DPMZTi9_K z5QNeb@j&2uJlW7d_|CdoX|?UXxOFP(?0B}p`J1}uUADWO)9ppjVmng=(hs-Wi$vC$ zw#cb^EiK2(a~0J|o$9yyIKxWc8z->N2DcwVTO{de6bV#F+=S0ndZv7Y5$DEO?J$=Z z+IBR$qb|Ln&#)u3`EN0>LGPqbwBH?67VQeJvgYVxv3}g1h6bI7lI4Euzo!y^2M0r8 zFdCSAcT*ma83Yo*mp|?I2L23;sw>#Y=ZI##$dHDQbW@$%S zw@}m}YnU8e$Qr=sT=JfwvwByi>qY#@>Q~xBIRf?XKxV-;Mh^oyO3Cux!|Pyt3*ayT znqtTG=2&Lpf!hUcN|2piW#pUJ{B$)5ROG+`=JW=*$O4vV>iP4L_8ec5k;qa^$$??S zV_HXX>LQbqQ@+_46>@~^MIL0NJaMU%*b^C95v_dh(D^2QO6r!XI2pQ_#DR}=5v1t- zGI#4B_a4?ea~)D<1z^ChyI4pR2i6I8XNm7wBuYrOW9i`Zj}Aqs-v!174{&~X+hA%( zFAia1uXe0L*D-AFEtk#M8Xh_y8Qy+Q^tu4sq!|-Z&t_rxRza}S#%3WBrMtj=s3!Cz zF~wi+?iHjOFe2=nw`nF&I#NS*lmYq!uH(eT?%Vm^awmIEvslZN1-;>}D}M>jwa^b6 zFUshzvG7d~7wA^m*4x$|m0#LnYhx30dJ(-znGkXASI8ukJQjMRr; zmdX%G7f3P+xQsNbbRJ~LDV&#-4obow&Ud2r8X5DhHNxB1K3?s$gJfBfl@8a94v+iP!$~m7zSNM z-lxV1`T39T5OhiVSnptfFam=*y6EO0G<<~LMV;+Od*PCHb~TFUj0L+1#Z8vL5%c^A z#nDflPeZ8qqFALOhzE(YAtWZK%O()D9-Qz0_7V<3Y86QcZTz=8~oAyB|#XLl1K6)>Sdp=t;tE*eoCdH<*fe#Jf0O7wX7 zZ|CnnU|Olx2&zxN{!CE6@(T9CJl@n>85(1PirBm7(vDn*y4f9~JQ*M@3twp?tQmSk z7QD5J`t<658WJx@aqCil%jGK+@~XUb%Am@!r=_*`R`*V`O2wOmh@$QY2Zaa=lipld zcJBxqOvn{1zbQh^+b}rGkRFCP4ks7TO`C`6!2xY~HsjXQ+YIKjQC zwLu>qehwive3y_Ga1S2$cofEyI+F~@ZjdSc{Vbp=a@jiRQNJ4IeqL)9??{7sgFHrj z5{%;fb}~AIg3}%?S2VfGufvqUFdw-S!;p02f|<~~W^d;H`V-+Qj}au!irWGHSYycD zB;6DzSyhf51IR!Usgq&_bW~%R=#Jv8pa;qOajNK`Nbr!;x{?gvT{O5nq`k>Dj^6Dh zSj+Uiw<)|fW0K^F;71TFi~SoNGYBJJYk0fPIjf*L0*px8&9IjVA#ap*18C!IKMJxt z_#swvO{Mfj>6OuB+wR05WkWG^Qb_K)}Vl3fv)B{um@_J zz43-JkF`4j{j}V__N^|MZ|>ou;I`;N;)bQ3pbX-hT&dtUIoJm9GVN;7Tlc^>rcvA+ z4fIyrs`&a*>chIY)E7Ip|Cu@94FqKwbGdP`qm3A%bO{?#>z}q|+h4u_q%<)Jl_)$v z6_0WCa6G=wHtfv;n~m)KR-O#aB#>g%sV!9PZMEpOOZ@Z`olmG5b@4*((-mr!RXKdM z)gn3IQ|b@?`4m#*-Zz$u{n!(;ac8+4y3vZHdiopzrx>D1-=teE=CO{Nha(&w@#y|?hgN+JAEKBHoKnkcv9&$lvixkkh zZUy0(oZJ4TWW=&!3l%P8Hr8nF+^D`y%Ab8(^=@@z)5bJ??>lBR{ZavJ}XSX z-}GHWD4B}ByN;2_KTu0`y@4|i@G4+Bn_nXYzoqMEmU6|K!q{PksLS`ltDrrmH*GBJ zP7(%yfh|2*4We1BsRWq0Kp-rpm48-2xDC|yWXB|+#0yQSYDSIi=KE`&p-zj%n#7Oe z!QUZqij6wIU-@VWW_(SD`~fSh)iL(=?qp5VQVoLG#|X)%r_8DtxagIx{>*v?@O8i` zjbC&JLolEIOnqE83!wJopM6;!f<5=eh_Lj=Bv&HM&3K#{7z;ZpcB2tMtAlx9vSjF4 z8TI)%P|dzmlj|A$YH??A;?P-ARD9f4lGv7@@-m;?^K>3Ns94H8CnJL$`5HP>2kkor z#kK>5yNW+LRY-Rvuixd(rq7;5M%}y>$(dAYjL2))m4RG`h-A;ElLpoAI}7q#<4ZRn znWC&q1_?^x?ZyvBSE=Q$j#g%%xTZi+6|^|F{RCXiMxa}Oh-I{7zIKKKettltSOI=O zUUzF9Ffsa78P#daqS6-RYy861#%fiwQTA|Ga<8Ms>R-ioe6pj9`DQ!1M$UeCEf)#Q zI|z<4(A>u{78np>`26*EMVmrYLKP;(R#1r9;d^^T;P}=3(pmBm+J3M>z)!c@b*b>- zz2d=Vlt1K0aMJF418+D)9#jtwY;URohmP7<4@BQ`KaA2v(B(vdz>$ zIBd`RBfOzh=BF2O2xDn8FYw)*vB>1}MsQ|?%q>4*6oyR3)0;<{?7Xpn0PUlYv>$s|5Gcepo zD!c`F%g7!lEuWbW$RJR_I6YRX0gOCWkUIo;?1;iYwbie{>H8{xsIsPF`@}aXv$%i* zs_{Xt5x}KVX{Zhg?;3%9-F&%<5|z}?iFDN)Xk2W#0(a*LqS~#92)cC}{m<7?X!9mk z|I=H8U#>JDH|VAOyk%5?Ht4m+=R{kBKhfY&U`6Q}KjbjI5hjBogGPT(ke-#-z!nX` zfMRwZ3U6pA9`1+hRnWwyLP{Tz=v&Knwt0Pf;q|g0Dv|yrp;wSP#6#(!`Z}8|4*%9dx*~3Zf+w=)8F5yasxxcOh7LpsT95*;@n)IYoJ2v87+1>ChGA3b9~q zgtQG5x=I@<$#^uv8o5z^N{EaO&61$plxCCl3-c&grmc@6XiYEAI1U;~lOISZlCN4R zAkwv<0bc{ds%MnwNN9TpM^c=$rk6@ zgAtZ%Uep-=NW!($z9~tP%^c()j_;{buSwzi9Ha?G&o5~ox|66y$AVyk$X7nT$P1Hd zsnj&bS6{IhBnXzN=@7si%}cs3iMrzF7l49a40FjDn80hKAaTmx0V0h~dI5X^JrRa% zIScH-#~=D(6`M@1`M5X_EE3AFGB{J1O*DapT)U!DYKpCQl7u0#+ljIrnf?SCE~C{B zTQj$MWu?j0B@lBDBVFE~L~vE~#gM*>mq4c79HWA=Uaj_0BtNigPLcj4I>2rg8Bh!483nX}3(h?R709ah|_!^N2b4 zEQqa$S4Rnh6>sT*?EytezD6ktDKV0#l#!)rtox2g*=txAGmti0Z2wL>j~Uj7I@b%l zLd@YV`75fMaFz<&y62cP7LWB#d_PtecSok)71r9(cSdzwj>Q<(`%vxcn(>jzRx8rN zGn+;=>ARSq8idTc2Md)GK0Jf+J0CX|;=-@JMcYFPP3w7pw5bYo(3(RG$da#Zzg#BI z3`6OzFoaMWZ7byXyhh3P?^q#%hFt;mKyTq?<5x?Uckand;|-`0$ZP5I`N9zLGCS@| z#~B!+jP?ce8bN~2WrUY&5sUK@e6QB**IhJ8YNq2>$`49Rl+@tGHTaN&qqdF_pgCz_ zHTO$&4jY0skkKu7v)0-#52cWMddxT~zF3mXe+WxUdFgFiPg`Sxq7BH*tgR)z%5Uf9 zH7Ec1Qfk>8iNPhk=rd&}EVA+f34}$#(VC&;xMpz*VRA|GOt@SRyGmK$*?1`^WT1Ap zMOP>3#2a~gkJsMZ1gLJt<`~8v4$6Mgrd8tbB!0cB>2dCT9|RHe>DJoT_=};cfyiI3 zO+g4_QO5}YGkWtFwbgC%s~qL~d5O>y5%qHSN`B;_6q@=lt-p!_TgrH76LdiW4%4ea z?>!d3yej!lpl5;KB7xWv_T0$nc!Q&mxRL-b+xDAG)k?s%j2Je-F&v-2*2%Ds2gBz~ z`i#zLiMq-l?R5$@>8#eTgl?lTb_XM0-vyuez1=StUNT^->X&>=XA?_Uo_y}^C1(86 zn%4`w5J1n9l{j5Zaf5W^#<(_LeI%|Rw|o$lH*4=3gXGsk;ABL!`0nfyIX3Ds-eszM z1XNuVpkbGH)PZYSy9?H|=tsYRHH$jNAWT11p|Txc`Op%sjJ4#=-`xW~C55D~>5H=Q ziU-1^Ovzj zvN>=xe4S9)`t#52yUdk}M3L6!Ye310BGh?S{3%VogKODeg1LL=`M@-EUPho#u&ki5 zek4yAhl$nzVlPDJsRbb;&{m8y+L~AL&b#rTIN&M|7jff@UV(|m1v0~R2L=y^<03#6 z$c!P61j@LU02jmIqdJoSQ#^4tw>*ZX>#wwx2PM?L+tD+O@f9RrSCziDqvqvBhcJkC zHpVUoY66cwg&`L>&Zb)3k8;QdF+7uo#w7-UMB|zW2BA0mi1e1*wxf^@*3`gGBm-3IALoz=^7C`~5hKvxcq-t=&yv7thNy%U~A-r-l|^{BcRn+Hhs>B_Od` z&2>$L*MrFG-Mjc#iM(M^oynDo-r*wrCw94b0zDQl#cTpPUtxVwVXN*wfffnyeW4F% zo1Y4f>ccF^@UnmGXX?ChV(C$Q;R6{k*@-q5Yv6{qE-x{9iZe|VT6n^Sl<*H^FC(Hf zM4;#rvjlRHIwmt_^9*MTIuuT-E3~Dh(!~eFY&4V#7BGuR2+okE{DuAy;GG zSS*yVHX6Y!k&3Ox8Tef>%?R5ugAYgpA8Kr1mpTlX26R%ul~|+h!hlHn6gGd^C0Et* zUH0dUaPf7xgBhXhjPdmjK`uEU9fgwpmX?=SP)JfP!%>KaG&tR0c`7oVnFkj5q3yF1 z@q(sLY=BH_*CkJA`)H{a@hjo6qM zS*q92b}x2{2EFeEzpS*|mB#h&v}4ND+vO?u@LJ2k!jRAhmDgtJVzv4l<#cTe0S@uf zAR?$K_O++@q7d8E8k+r}-Yb~it@j!vO~*u5h%A0DKN-elsWlzLzayNOK?$h!HbB3D zBaI>h-xOaJm1!>U6dfWCQ+QDkt;C%p)pWs3$rm05Sbu#HQ!PFPeu-Nv5%-3FKTh2S zlIy?w!oYSoOGkY+y{o2R$9Y0KRx>KkTKjdNmmwUKsd$W^Ce&@D?nO3huL6|Zg}}>k zE&+n@{v6o&XnK5E3{252XTy;|N5h>dQgXz*CHftNfZn%PW_u^+io|>6P z%c^qa4B2ZfdfL5#8jfmAQT2v>o=^34p;nvXPM)h~Ogm8|5OA3-2e`d=_!cf+qYvOqG97#DPfJIS$5`k*Z#&n~UDW7G9;|A3 zu5BPwj9;5qD;@GNnxQy9zC@EG5@$Pgg(-}3Or_uOyPXujx@}PbQNafi1-=uAu)^WO z@Db+8uk9%;+DvI)8)}W--EqCgi_~A-IcnDn{nZD)U~=m5q?I z2^Vq*z>_m!5kV8CrG1#jnpQGxnZ?u!D2Vs_(Bv}`1*s;5&@KRxrI4DIhns6A7=OMa zVTnQYgM$M${$08oxH17Hl>x_jnsOi0{CRXDomHYEH-&h|1kP-at7+-JoEBmZr5Gnf zjC1Hq;V%*eLQa)|V(cm#dt7Q}+QWGA6EJaw<0=kV`0077rt27e^GTV6TQp#HBLz&Ucwj?@iNUR*d+<<5{TX0s$wFf6 zBvUfEPG;RF+b9wC8)M^H21M_HU_!b?8K%)hA@EsI@>vr#CuKlL?Cn^zx@lfVHaQSG@>Ur^2o0(14g zjg_Vb&B=pT+`e7hG|L&!*hC%XAnxp$f}I= zKgp@|j6a#WjDXCrk0j2&j^!h5W9S5MJk~L@cC-f+pXlkovoHQv65s!U|H1s<@IRRU zEB}M}f6o7SdiSx%9^K&opYT8aE7yaa=!v=T$ny9vtdC##A%DRCcv8mGm;_K3o<`hn zl!YgSJ}cl~$^!HMn6e-p^@Zhq>uhEJcaS$>Qz|f6aBI$spx^X-L|ChWItef?Jap*@ zq>k_|j%1YcYntT;F_S&e;oeI$>%ILr1qcm`Max6j{-b;Q$MXG_&c~y7cXy-9wBL_- zy}ZmX3|7+~=DB~|93CLv>GA$>WhJ;-rfui;T=w+5IXm0ETCJ2R#O3*MrSpmR{>RAC z!}qJBRp)ninVX33(tk{R*SR_{bKE=uq*A%#i8#C}{Ca-5o%!Q@xBZ8~Wz;r#h7K#@ z*V7;E-&>CYx8;^xzRwnZS7}bv`Ej#FD6^W`#=Ar6IVtV6-CV!eRQ&zpkK4(~%%~_{ z-j;bn2wrDTM*OwRCY30!S?PPbzVyt<(lMsVJ;2vv$~cT8T>j`~zRBfAPqr*-IwIxVgx^CeGVUqYuwC$8^n0LN-yLu5-ezjOReWhZ=Xw3z&XTs0 z>;7VkjrjiXW7}@(X0OiMb_<-@d#}qa8<|P3<9k={dX>AV9f?a|Ewgp*Vc@oHNS9I3 zs|?^3&`&dWaH4DSqjiTjYwpK`>}%Wnh3hzif@Lv2UoA(clT2;+Nh%7Qb2a$b;!Z$m@~~Dn5}r-*fX)|AsY4TF3vn6NJ*#* zKWKK_u{--K?ko2y^-ns@)#;>I-Y%B1DtbT`xSVu23n(2>HqvaZuQ1*S%zlW?09jI4-?^kf_~=#=%&e`|09wCV?(EDo~c=H`30 zF&~nRDh+hK76xHhyThZWLO-rYDCi7HFt{e9zKFvFO`1W z_QeWy7Gtcq+&PKAAr*#ESIo@0Bv>WTXsWpve-f)EL9ZBkOwMYGCL=o?v5vr%)X-&I z6E1d9!D(Sn3RO2}TaLP|$X3sZ^@l+reMXQ`pO`awwQEG@zNpbppNdpiT=Kgt3ket9c>$3RVht6iGg75&Y_8}TRct0UnF8gKQ=guQN5EoUub!03jihbo12J|(7 zP$A|cOER102j`ggSfpX;6T0%RV!L%hiG$4Eeb%MjNr+!(Dz%;`jM+hl<9ktF!!9j{ zJD?3$Ye&;TXOX@2s>q4#O{XFjqa5D!!{ph%-%+O_?V!0|mO;n;h~i+7DMFq+j0-It zGF*Yvd;0p2CS#n+qz5-W=im`*s*yrqD;T#;`SNsskP9KXt?dS5Am7^DJilyJwO z@uK7sVN-Kl$HQ!(_fQ9KBW@TQ6^Nh-^od89(-0ZxISSL&Bl|EH2!#)>?Oli)dgQY} zN*rZ-)Rv3W#!wj)DN{I*vLhGTaSVd-ETANPDr)4#Pz|ig)h=!`rV(eF-|<8)dxHg> z%<$fgG$`T?kyVtSyVNpKYzui8;~?p45#|p9s8E})8MTIY!?GBxIa2fn!ASaEBn7UW zZIHQWWm9~2OoZd}%|7nSeknDlhlY!`63f_|WnM(;Y3Z2@!)uBV&YTI2B~5zF4ILYt z7$fH=^_d0vUG94)kpWRHx~@Hz`$4&wz8AA`u2EUR$!)UJ^*{!5b+SE>D!$X=`NZK# zKaxqLlLthpdV@<%lKSKe8U)V4#J8A9Q~EwDrZ+qJDUKpJuz)d|E7@~uA<}?anL%0c z5C&pHEZDE?Xn?lDSnW}(WLuSv8RxWoL{X)vI);vGRlSQ?`dn_r<_IceM3sHU4qXr| zt9ztt8m5$csQfV|j8-$+!`NqG`$DG2G$aGlObp~_+UaqJBlc!63d%{ z9*Qe=JGtN!@#xh2&#pz5U`pKkaCwx2^!hM-+x^cNP6OG`PQvBS^}{Rl2X~USDmAu5 z3~6iGDh&1{cJANd#V2^7$H8N39SO3oXL9x2+O{RX4=pGeg)*p+lFpV)vPb|UN@@n% zo#x(;BEpca>>au}b8LsiRr9ZJNw%b;uL(qHWCVLz8ra9EnwbW=Hhr}oPDu8~r&K#x zp&PtzB)YML;KwZ=7irxC2VzR;t}I9`6zDYbmI9TcLO_rRGz^VWbLTaT+lD*Uj?!2z z|0s7m%e(v%$-EK8$z5kXImZj3(hBPu9|;g7AQ8%=7obgc&8EKHU?0)4P)GnL-AJfR0i)NTplzXCY79m4}T`+*yJISwXi@gW#bY zA-iBODC6!*M%P@Bgu8vRPe39Q3-lrNYa-(yjOXUo;;`nj3D*<(autw8)1CC4j_6Ht z7A`e^vsrU$616Av5}%ZKi<%Vy@oOng*O`64TF)!9@XTIAOROR?!0F|e2#$dWHZ}+o z&sDiuvmC`wC|KTc@g+**RDL5@l1fo*hEuWgcJHMwgd3{7Wz7a#gm<~=S|pR$i8A`W zS%tn6y`&?eX$}8mBXmsO-`Opzt&nX;mKCKo9`5LIC^Dc30*MSNVl*L>uM=P%#}oh& zPY{$hJhWON!xkXsY?mc={-Yn#_ zVQd>YB9xWnT8kSVRBvttk~;AR0n>o7OAi@v2?B~+6qhhZANe_N7jZ?#7-rMg6`F2Y zOgWqeQ$#OY0gc4#8Q0e;Zu2z^rVJ=;y4wyruaLNnM3B;bm(^7yIdK_Lp~4DDRmKcw zNLYFMfzZDkMB6IoE_UyMMAgq;iNW~=@u1XNAXRRI{MFF6H3x$e zmdS(HAKp`GwdaYsP8#9lxa8ASp<$oZaz;&D7l4fr4EmOVUtqhSB;|SU?&@2fE{w^U z3qpeTHyBR|72lvF>BKGD2afuPlk8ozA!)?wi5s%$)*TCPMSE;9K-I+!aQoe(EH(Ao zrtT~}3{d8<7P=pFnY2;+F8b@;ma5nv+b0E%o*|j%A7c}y1FQJ54H?86OP<7Shwot+ z;0D$Odbp_U#fvt-=nx%toHuG-(`*>J_6930k4A132D8c`LL{~2+aYKo>Jd%$R_QAw zFwsTEjX^cB)eSaBD(EGS=DEutXoJ+zYm1xb#Zq;Yp|4#ijLTFyPu&7$wo(Am@m^a( zmL&>?UH@W`PbH)g1~v%e#_p{RPS@=@XeiDYs8#CcSwG_=WYkI@G5Nm?0o81IYwK;h8Ta-5QMJR0oP)SD}?4PE>-#uFjON81gNZ*oG#jM+mpO z(S(Gv7pFLy!$p);fF&Sp@ny%Lpo~l?Eup%V0ami);qIo45W~qX) zHxMfboPS)3oW}n}^qS3fx?ctj-$ow=j?}geN<%~`&hC1c6AP=$U!V?!u~j^4X)bpG zqk|$2;cfUvp(&|vuh#dKg!3Kud}ZNuAWYxgQ;+_OfddHRaCwU_1eH?rY+{Hv(4;7m*$2EAB1A+vMD@PY`z#lOk>TzE z>9=%X!9Z;hjb)Q%j-ORgUtz(8!5RqfL)c>v`lX?_nZJ>N`mlKhq)iyuAm#+A09VxP zBk+>Xm`&9tgGmoqH=Wvt+0=msZNSyA49gn}Nb*O%GJVjX*Gq_ds$1!%Z>(AxAh!`n zPBJ`upPF)DX|PC!PO(JP2s%%V&~x&lI)k5WZF2MJl5R11ve=U^AHcUfg=M`WC*nKqyNd$4l zc`VKWFtZ!dpRc^7ChC2ug~dmv4Al+*nRwQ;^`U%MymTu}Pe$1_h=!ef1RM(V)@?`WtL{M`Nhdt)TCj;?5+RZ}f zJnA%<^ppuQL2HMM!cn*>t%xEbb^$9nGCLUDxov}LgXaplA}Cmo)m@i-w;^_Ot~Y1{ zGwdROo@L=?3Ez_}A+;4BhAaT*3o^J#ZX7qB8;8x`LCh1(hZ*fuho$5`)MzWk!Fs)d zae?Ptew?U33p1-QhYvm*MG91dPGFAjrOHuxCHx;rqFJ&G#@wLMWz?fs_z6n-oto zFr}vi?y7*jSht4Qz1$+>pl&m4)cqTi#O$}Aar{27y1@IkbI41su`MqAi=blc*Og4i zgJ$GS7k7>M-*lQxSmG+R*asvUjuxuh>j{GLgEg;9UBnO&ik&Wb33v>(e>ktc?fxDo znH!`Kp|jK_j8uU0P6U=0l-KGUyOeNkV7KcN+o#M5X$lNt{dIrj4{vGHh@AcTHV}JI z=e_(naV5zZdxwNJT>X40OhLKKTdI#Qmnt>xh&{x*zM!JA&+=($7^3!~A$Pm2YWpVr zaAoIc3AA0R)!AFR-Z!9(0rJ;pLGria4^0q6xkwpoBX0X_F6zXc#>>S*!BJc7dLUVC zuC5<)j0AxK`UOz~<&u_C`~PF^ETiIBw{?xXySqzpm*DR14#9%EySp|X+}#PY3bqIs@>MKJ_HLk5(wEAqz9i_>kj2 z!w*C?B%n7nJAS2|?897Y%dB`2X*xxG1?7ia=8B9nzu>NsWu_lX!EljuQcY?oy&^E$ zHgyX=>4XJ~Il_xu^+nK3ug$-3{CUZV^YNM|d9FnD^xGBBk_DuE`nHVz^0q)h2z)%>x5PE8>@^tce%H8{hV{NwjbQYsG9 zX8sOwbB#ml=8;j;V2k60n0iXVd4+Qq*k-v$Y3BKlX;BCAVd*liFWR_UY7!YZSqUy= zbVpa1sX8VbMP0bdY+w=kuK}Gfq=}6g_@4o;+|YZ6HHJsiZ0X4+3aRTpB)VI4dgw~2 z(=MPWUh{CW%s-$k%?}zBp(-wz*41GNl#7Mi`pc%O^1Idu*D1#!=5gumZx))$bgV{s zyHh6Jp#(HZA#KxlS!oMID1wbTYT$EwYzW{N7Bi8fIW~jkkdS-A9i3o~(X4%vvx>(k zqdeSP`Yo1kOAK9b{sxa$YmU6)3$;q`$ z*>(y*O!bzK15L2NvUKZ83WwW}CZ7mA*YmOqcWlh$))}_rwJ9#c$1&0F#@~Q#pYZh0 z%}W-|pHMni0DhY%)ZNbC_pvL->plEzh{mu`m?u&OFQuo}8X22WP#>ULdjptvdgfO?MUlVMgCs2ZOm9jE)k814nvu;I^Ax`VahzK zV*-Sf66W&Dc?|LAyS?+#wyn)#m8^#&CXq4ZOD6P%N=g2+b(gO-M^f8YC#X3ZOB^rB zfnBS8Z<|bCFL~DUU8h4XGM4UE=Q1@1nVZvpl}Kt@$ehw^TC905w@xv!6BDfYB+WK^ z3-&%_WAwM#2TFD9FbK#Rb+FpsmK9!(m$wHi@!B1feJVv;;Mv_SolgF7nN{4|=hxO4 zQ57Aao>>L~P=;+9H0P1Oj7~rB*9pz6XYcO{jNS-+@KK$E&#E0H|2XtUmm3e5PpHfd zG!B&!+}>t&?I?pi{mrj->`myo}n z+T?hT1ya1|0@aEWs#3EYkzLjrWU0>A>CD8a$ORyeecWl4xchMD3^TDzBb9xK-FX#r zQrzXKMXB-LP=t=sZ@wj_3`CTwd@3L3lvw!%>IN#TZmI5s2IRvOnksYrB=Wo+j6|ER zUZJ(;LlqT8-GdSvl&u0;^Fy#(CQbCPLmZ5cuF+rV5E9 z-rj>Jto|F+j`y%lsuLV6Xwbovh>6N_NXBBGrk^<@l)y#OXS-tr=B583JmLoycz?}n zxxU9|M}*xwTR)Aicl;ghxtXc4c2NC-sQ}UJJ&i+?CwQwu{WtX?1d}HA7NffM0C$4I z5l^ugL%2t;R}=&Pv2qQ_&PifftAq#aJEoIqgM9vZDpe5^`(`P?zTtN4U2_r`wCtu8qS`os?#M%Chcy1H5o43H1f)ifC%?tG|K zO?LE=+sQ#(~R#;qHYk*fH!2x`OV&Pq)uMP)+6lN3+%KXV60s|Sy@>2gDX=Xr)5 zFXvV_Z)?P_Z^w-wF}&NH6_za~fj*6Q7 zkS!`P%daaQqlUrkd;__cxtn0(Q~Dn2w0)kdT5Zb-pUkppCA5q|k2%z#EN+l*5p6|9 z3N{exwgP3zyJ3e*4n~+GniVUfIyrR|3BL5yE;w%oXjq0?A;Dj5sX5 z4~qp_msI+vFh(ZD<)F`0vl@y`tNr}Ni!KME!SXl;6K782N8r$T&Z@lMD+aHc(xk6e z5;BOuDtW+q46@Ma;-zG!v%gr+I3(U+!rqq*bn()qWv3^bCnJ1K5GtrRFP@W?9pJ=O zmC8s>I*yJVpA(a35p^HBGC35%LcRAmDaI9@@7ygekjs0SBk_|9G3f}?J=*yN^dQ=<2(TLx7v0%TF| zh?H0Y!FNch%!5H@A?6%)jpCf`6<7B++T+(S@?*3edeyz_D5tZ91rF!M>aEof56Ws4LxcVqxLFm zaJ}SxUk6Knxpw-7nHJ2kJzDJ1xR?m<5;G-)9;6@BOw{g5dJHSBJ1YnOU3p-U<1IZUdAlvUTzzX z!9KS%i(Z4*y9=A{6S0K}p-Y0-kpc(q!66uV5XGj#`7=VFY;YG|irNC&%;R#_I%tw* zeJx4ba~QshXFtFnv1N!Vy2_+$cbcgWPDKznQsk)HxUKz?ssbw$fu#AuF!aLFJLV71 z1L}Amj3ZoA=c5upo15}*TjxA?-?kR56#FGVlW#iSZjQFC0nfbWVZ3epj6Hng7Il*? z-+Ss)j^TF~YEq{?znf@!MxWK!;tiezmtmO0pA*gAhnJ2oemiPY3Qu+RIffujk`L=X zIxZY@A3qKzC5Ee%6o`?oad5TAx;3W|73u0BUw7@vdT2h|T|@7BPZ`g#m(!MOf{$Cx&|;9ONp9g?9jwY;FK_NT8UdbpS=EtGL@4Ab5+Y! z-(gR#m%D_90MsHFu?=CV&KbE1Ml1I&SDXQ4^jUS%XpY4;Nbe(4fG#V{tsQuUn&2;EMx!MpY~5>f3pPts*IiUZ+*uq@}Gx@*&FkH)+m?2MmtmzvzwgkG%NLkojMh z{a3wl{*m1O*Jb}@Z-3^c7PsrVnz5zarA4*#qU`53tLr<&p4)ghe!fG_?R>X1Kc|N0dEKS4+S11iG) zF}37RlH}h^6Mvy1|GgUI&u0Jp`hB1w9|L(lYX8{yWG`XGA#vbZ-1_ zv=*|pd)#iDFPa_#y={Zx20|#`azPtll*+&waLiEe%vf<;kX16o-~G&FZ<;CmQy!lZ z3S1UKYjl?yXrlP}FK=@U-w$5=bAP`O9~lbz{?5Ct-I!L~Qd}vXX#CZ4dp}J~{CQ@f z_~oI!>gKk#C(kd}Kes!lo5TM%e>0cQ?>qa+p7+bD>EElbzgutf-V2|urZ>`S3?JXr zDjJ@i*3Q4^R~#CyydB-&_T;|5As_V^N}drf$y+?W5WD7Qp=N4N@IM`u`^&n%+{PRJ z_Iob&^{)-zU&Zs*Xzj7Coc{e{SlYwh{}B8oy<(<#vauuR_aTw~$>GZ6+n3@~3%rB< z(bmssru0ww(frFZOWN>E;jE!fh=gwOvZ;`3doRm3_{vz~b@{c8NR7h|KkK~p$}g%? zLm#a-hSRnpDq8x&x~FtJcsc~aL=CMg)wGvcy@e_CzSviN`W`x3O13jt?1`i2^Ru%` z1kpFE`Od3}?*vEJOg6Q7QgjTMomvsqXty7*&xat1t^ee9R!M|ueYVy)m_G1xm8WIB zWwq*4#~_P@k0+5tI{*Vt=bcS8s!tz2QshwbviZwk;og&h1lP zgWQV$$JSbThnlMfJKg)aO)Gtdgr8Fy}8`ldKa8OniPSKR2N~Zxg!OdJ9L%U?$PItsw zA8}1J&`a7cx#(AqI9bSsnY&cy*X0HU6KCV+GMmYR(Q=Obl+d~~+aw+`5U6}b02*j_ z1{Ob62{L0SoOH-=bNF_R(>lm|*tjrl*zP0vPLo&MWTYtooc<>ZxdG5P5nge&r(l=d zVXX-l7bzKeB_-9(fwpPTam%j z+&kCaef~HJN3KK%yHnSKAl%g%1oCN}I%KyuahtljZ( zYFTMaiB_z8lBb9$Eh^xzCc)&4S!3Yh&F~EL+Rs_Dmhv8!4zaLyHgsZqV#l%N{sNTv zp*C0XBhT|6%SwL(!u0ngFWz`@RU5_WWjpdKzVElK4$A{I`O$t z>TFmxCrco=R_7V6v7TmwFdgvv1OWPReMOUY?h!@@$RqcqsIhd7CS<-=d{k8{cDQpwc z^Y!b4K8B{2z+Dv)=(SYe+L-!doX4EjhKi#|4_A6Ym`Ny1mqAO%x!YUHvi<5W>lcix zKXBnzifI;@dD?vA#+bCfh8>}Kcj*`u-I*7V`G)C0izddD11Vh4Byjf-9EvQ_8{Gyv z0cS+OY=vGzsJ#B{p&2iNbw4_?W)m5C12uBTL*rbwKKn3vi70xOQTvp;B-hj%7fOnu zkmxuv*dJf9LRqMKLaBNjcu5U{>otbV=DCX~NF&eEVJwV2>ElMLFOH#)O!`B*<49i) zO!jQAkl)#0lD^TfgJ%oZ>}0u#U7tk-X&N1N1-*!NA^Ra2a7jUPlW!&_|6cL0-cpPW zG-dZNx94lM=rTTC9XoB%yfdW?FG;#ecLFO(*GLK&<$=XSJ9&8ShRGNRk+P#Sb|*j& z#+JS_;oqo7>*B8{7cWq_nwL9fGCnn2zR{m6HI2$oNGb39qSuB{n9LY}jp#FW6*!v7 z27uDSQaqG``C^L{9lS5!o?zyPZAK_wZ(<%ZFen)p>CN(K z8Ftp|XStSZTI}6z0hcYB4o8ZQx9onQHPNExIru5DPkjfm%@ub8;MT|{7Dnvi^K{mV z>md&rg-mZ_q}ht{8FZtBM={&apqGcJQ}NA{D=E-C+Y2)*@w3fp%JvMOCd3$JDlfcE zeU6u*>~bVEa&3YFUo#XQEaE)xGt##Xz)t6O1Fyn?^O$1oRB!&Q@dnHk2z?0vK=3eO zg)LjQoait8=x94DPkWoDMv97%iVL?hq8%=>DpPesIh1$$O~vN~CXnv5JwNV4J|&>dv5wSqWum$?QY$hI%N>W#0j?H7ZfK8>+6Av z%N1RCsFM9&@*u+USB0T(XydSXj`o?I{w6@H&<2Sj^3_4L31becX0?QcWN5<(D@Y2@ zji;n7OTQmF!K1Y%8hlCfP7pVMq{Rc{u&HlI(>-I~rBTY8M)Gw~PokxKs17iax{3uJ z2aGhiAaFMlVTV}HHd$70It+({-JuXstUK<^+AoO6aH$dBK!fq6B zJnlz=eI!K~K$}`}F#9hjab*vFFu&u+qk)RVK1A->vF+)B9oX5QF@`yJpC3Pv#8Iz! zAsGDFXJ?KSdkjzrQ`AU?OT+$-cS5iyl!BSZXTDArTUQ|bb~eGFp7>0NsqXX^r?HGz(7!F(%Y^StL`bVvyBTr(Q{WcyI zN;mzL*bRr-5Zg$bZr7qnm=pe>+(f~v?mipiydOx5T5n5tiHxnltWIAb*mLhp97;Iy z5<^gZx>oKaz`wGVvKOA(s!q=YmzZwNr!&S!VjjN2*ZR2+aaU)nGIowDqMs<&x{0K| zvm21bEz$4X|86v4bFI9twX9U>Besx*fDfe*g>F?aQ3PjH)MBZAS+KI=$O=w(J_-nu ziJdiL9#TQz^I*p{F7MBtUa$edrDu0>_CQ_~!w~QWae^^r5_QU2{K%^qh@R{)fa<`= z)U2TH{E9JC(&QRq0B=PbP|Xn%qe?T97p00XlJ9w*lUmC+$tmYjOaoPl;`HI$CVh_T zBwrmcvs;?V6+^78ms0?d{|M%?xd|R(F5jJCVee8#fCR-9fKtm)L;)FqEn9A^g6$TT zD{F=1Lql6dzd*-K7OX*2k7-GDBa5pG(5f7fMn@Hpy>=lsQU3l+R^zIk9BO*t&KKPNbw15!*m(tDljyHYAui*41I)14G5W?r2Lp-fVQdB}bL0jWTu zhD=-ra}7cX3Z=&9;JX-L{~U>HE>bpct!RVdRXe8q9Y>ufZyTDGRYt>fJIxF{p_Y9< zV5@}U~C#hp@dMFXXMZ>0vQ@eCu&ejyp61=cGJ#*4+znkm;sq{j{n zjCrCE#U7_YECopa%FO-A=;?39#<@5jd#g)xDSV||UCU1gh?tkjt7AE&BXd*R9=b+@ ztxd_mFE5G{L0T<8bH~Y-*qEj`7QJGg?NT4Z?-72b-SxoNVHdQJYEZEGuua+^!8c@6P*jJiJ1%*UbE3f)o zRu870Gev`027FkTHj{H8oHzGmNk$9`q^rIp@FFM!7VeO&Qnx{It7*I#_OU7LfS+@n zi>(lWXdJw=>Oxq-NRH6x8oLToou!yd=w29IjTYQlHlOXBPPd`C4A19C3-J=Q=d z%Ldc$ikOe48j8c)s_t>#QT*-$fhZ0n)=wOF9 zxL`$%1f#H%%1M&G&LumbN^B1zR}Dc<8RnBAhz$lgfZGkF;&E?CVx)09b&GgF>*pVC z$+0gF?(-;&ctp+QYSw1I1O_*ejBc zNM9P&tlO0G5&0zYWtj-su%H$%K(qk}7^srBV++TDmAtMzNtkUFY`$(sOKeC}-@c=v zu}=dAC)jKayx13FenN?wE3!3T!kW6P)~6pZL|ePi<0rtK@)i7yOVCR(?K=8$z}+v# z9YvN&bF_DE4kHL5r7?rxqZ-2iH5A!E5CKE1txYuE2BCTv7PXI21sN&6A`1HjXOv;z z2}w*l0AZ8rHk*#!{^ZpmHB;d8TE&1Y_l-1+vCj~p0=J+!S&?FybM6Lg+^i{q-@6nh zWfon&cmC$*VlR$(qzt0YDA*$TKt-GZkVtDwxQ7&}(d#}>3ov&ykSg!f@rKk+@t2k4B&v-zHC7lO&xK!+}amvP=<;WfMezmch3Lbi_Cv-Ki}W zV{PvWh$jC(0JX(LDOG$+q%RWQt!aZ&9C<0x(0uDat_@vN!e z5*Sca?fC0auv~g%HQW{`dR_D-cg30dlI2vA)?qJ0;pCTiZ+yK7h2qqak(a7$lNGc|OV)WNGPEQ$f5L^%| z6+mpUOfgZZL5Wj%&hkvkY>>4OHq$I>8=GQR@+Nzf{ardfi$z$I-U6bnA#jzhm1~uA zCy?=UmYmjE0gF)zEG|~XDuSlGu*2xdEaQ`D!xVXi0yO<$Oo`ZpQ7LKSw@41t;CM$Q zZ;D0RIfcYtPZ{Q)PBg&lrokMNhaGP*PCHj*B=xW{u|P4jaIA2QAWt}F^sp%$So{Kg zU#S%v3Hmll>SFL6$$}VOjT18Tz!DQxbfOU&8oA7B+Ynx6hgw@dCO_d4CgBi|ZG_tD z3Qq;nMC=~_Oe54f<_MR_YagLIv(KRk`-;}V;DoSst zJs`owcC`Ds1~nbhtq-G2p>TbO5%TU={KZ?_*Wz6JD@9!(zAPf`f* z_nMV6w_AD)qOkRjM|0tzqpcfBf_pv+dO$&OR=6j8?v_ju;L!r%mxG%^B&K=`1c27t z#nBH$?FtN5Q61dwaZ^s57%W5K5E=A1U-VTfn~z6WZ}H;( zJ%j2x^kd5n_2+lc)Tjf*9C^EZA<0M;Ywe%pL)cRkSyh@7U0yR0BdVD%uyAE$U!RvOWq-^$ppz zmkR~UP#R6N3)Z1KfV`G=g4~9-FmDuAPYBdb5G)gvJ#BZXdkEm#Vvin3Q*v3OZN>=$b(LnO?&vI-{@ytqB)`vkQ6`ejgj?zf<*V5W2*vNl-SRus3YJO({}RVqSS zi|@(KFMcQBoScT)}rzwWDf{;}&-ZkBLp#tO1`eHFA|- zXFFI%LTY=9!tl*y0=Acr-t+}2x)JA$F^BC0CzHaBiD2a4!G~9jI(dD*J;=Y?%J%WJ znUNqDL*sfhy%ovT)V7P1GsT=Z~YPfIcANF zCL`RIc!;yavNjIA#s*&KU<1mNRa3`~jzf2H8hnELbV+lQSz}pv1HqfY$G}8MaCaV9 zOgPNoEuX3(Qy9i@iUh;xaCrK+fL*Mhm!9V%vL{l}T@Z4oK< z{rEPDII@FSCnfJEPmDZfT0uFaHge0!kcPOsB5-b77edqp%nlhDr&OC$H>w z;xERv42^wP95LOmS@ndhUv$o37h(aibh04$H@TF%QHyiLM>`SK>psQC{L0S(!8l^8`1;jID|y< zPm#{}o3JGunR;U&Ok`hxq;I&4DBnA%yoBinok&3qUx-ng_k`&x}0?~q9V{=++c8d1Sbjwr-c)QMwlt8P$E%;JWs9qCkW7y(Su_61qrrzc zdzBDQF5QOc^s2$96CWYLDQ@cf)uv0qhAd{af9=?K6D^^&9-{wZ-<4r$nKZ-~D-YIh zSmLrU+scCrhIX<|-DE{U*QQR@Z8X6?=~sm2j_Qt(wO-eTlaY^NIOL}>6qAE17G)3I z-wIlYX9;a8Rbm>S2BLK0%WZT_ASgen9tw?`P{G=S`qfqtjSekTancp_KH@~2ISosj z=Q`hQlk6)Xc%W2XT#+;wNi`@DBN>rH&4&cOn+cg-WtpI$fO(_^n)H!~$6@9KU*3RC z8I!o0?OYOkM--MP@RsRB26q|@FdGL8R=%1*xZ@RGLULf|4{kpi*coWa++u{1LJckx zru$;l?+(pE4JSqjA0wEy?m8mcX$L_$2DW%E@5eloAGbke37zL9--}+ugd9qWNG{z) z@eQh)?wP;RQs}ARh^Jqzp0_CfEQ&RjtRp~zK&B${Bz0 zJhKNky5?Tdhq7=5+DA{}>bT_^V*+3<0!eL;k0u|omQoW4qryf{4f}&rpGJa74AK>6?Fumq?_V{i6cfU6Kq1gF@1M4G zI7?PA&lB?ZvqJ(-6iyvO#2c(58=4@T(1Q+!1ab{Hl(!ZdOl$eoR&<@W!cFaACNncJnrk2dRMQ7$Yy^gGY1u%MA ztjf%c4L+G$~n~F@N;O) zDaHXuJ9K;5O%-($N_ghT6R|DTm3bj5++!&SSE>VMX)C4@Lw5hE&snN_{Ayc=-E~6a z<+(ZBb5}QV`jpe!YkqEUQR!~Y)melQ6Wr=q-TI>lh3*=zI}1u>U$u))pI+;fQ5bDys5IDUC-bv4G`{c?reL0 zg*y}167*Gjy|EWg54pDNn*zfM+w>mlI|6XETvY2Ql6S?vjEyG+I%NLqM)#1bSjY-f z+P{9CznMEQRZ1#Kb?* zFCSyg{_p+&BgVq^p?&!0{r?70{yP3&q{zP=|KDeP|8v=2Ad2qC+=>58%lzj*^B0u! zhi&5Dz?J_2TKG_V{F&(g$9X4Q{|Mgy9a`Y}2gUHefENC&{VU4~nqT_6fADPOX4XtLF|3Oq(}d=NtC^ueZmwzXiHp9`||_KfC(-yR<8w@tS8v-Z?Z1XnLYW$&1yxta z-R1mPTkKkjiF^;9bxmx^1)I1OY<`|rg|_y$0YkzBHN_v`-zR+Ath+Op5HUSfbJ&l| zXik0!*-|M=O$U$Xxv8h=h#G!j>>?(l+^L^d7qzHqYVRSqJg~g2XqcQXKJ^o5C|P|N zwxz#D^d{1KWpHvfF6ABe$!Wgxa~X~q)(|*+y%DcA^~2SB2l&=dI<9J;5;z;#vOwiv z7w;wtB7f?+bS-f!TGFN`q$ScllZqZc=&_UUUk`aWG`GF}%9Ooea(n*qb_)e&W@ik^ z!+Pf|e?u*!Z-F!UJ^s48h`x>mGm4sPHOws6|Ge^kUA+?bdM8@w!1?|4{AjMWaia70 zL#*SI;Z!_xI<4JbZYD9{r3i!SX5f9DVGEoBi8+X+O6X)>cKCySTo>9o&7( z#f?o3Hmd0KiwPr?%WXNq0_sBH2CylLU|o>#>2;&WUO`~jaKAUaJC0%tUJVX0$!p!U zgU2ofc+pq_mmnf{X7%0@`Xf>iscs)`FLfa9_G#2Kw82=frGo%!3UQkj1j`OGG$-1v z0Do)RXPl*;CX5WLvHTw!aAaW;W{{|Y10djp%GnI}MphEcoVT=zZps3+RmF~`FU6BQ z^I{YBkPP^@P(ERgeB`*%JT#lHvm^lPHR_=|3U1T%p-kjWf?$j}1z*l5p2`izEs`4=L$;{C-2CrD0K#d9%RgJ^`Jl~&-+2*`cvRfYjyt~$o?CQ}gl*yDT9 z`v_r=<-Wo-BABpSFW$C}8y6BFGr{2~t@||z`2^yk4K86QrhOafy(hh^=(Sufdm{Tb z!vaC9l$sG88qW$mR2(=V21&p$H_=xI&*1Jf1@&bHf`ok;0kpGdSl$Hw7`5M*K zytEsgqMOp-VO5s&vbEYE%|MZ=0o)~QV@xz|FVh|(YUP6l9yDSw=^v5yi1dk`RDXSg z0zlsqN>mj)`CV+5qX+74(_@p~!8(}+c&*^V@TtMH!WI|aZq0^p%6>+%iBwlJPxl2e zk8cY_<-`kCh?LVw<6|=4WBrD~hPO9dr?r>d?C4&h{Y;QVGye$ICK9)gLNx$lF)%~8 z=`4rbuoEdeNT5Q-y{cbG^B|X&4&E33fOZR~o&Mkh+t<4T+KJcLiMq*D@IA__6D)oE z%|XV)gUTc9s!w8FR%VoB+XC&Kv~k~dtIhGdtMs=VFwW&wzai5V_CyXO&h4l5NmOV7~7etShw4Xf+&fAErg8S@P#YsMNF{vlj||-p!@JqyZcv=6G7b*~+-5EF zqm3<)Xr>YEE@op5ShsVNAp(H_#Cc?S;<*J4?VUm^LeEd41ed|aP#;QJ(9<3yfG94N zhPYuIUgN@y?eIfXAl`O9AUErj4zMpwX)R~ZQv>>5d$fKPwv_(igqe{>zaC&yJoYe{ ziLR;`j`FP~TM@6|sT-A@)*F`y1`UNoSe3Ish?~_EO3iZH$NJIC?930qo#m}4hy4{Lt- z#E3asv=A&&UQeTy4wv2&qC-VTj$lO>wE;4h}A_ubz8wJ+H? z3~Z^8SKFUhuzfSGf=P5CG{&GU-2H)D&+*gEDO8+==VcCF*PL=&^AXSxdEdOr4cewm zcKs>tJooWklr7iA#m8O%mjF=^wyLQx)nq80?~}=7ggf-2a_?;SK%VUIr94lXuSe+R z4xa}U@ho~LkEDn|I)%0tY9AU6$XhpKu33=nMP?R45Kw$n2@GeNDB^Bhzm?H zQc6TYojQ;v&c$P{snbde-y5bWz1nfuHmeL;pA+5X_fw)xpF78(;yKjK7eUQP*kx5D z<@DI$s1bh@X(g$U1=GGbciJ%DsOPh?fvu-0#R{NmfirJP;P3^yYDi2)wsbEK@II1) z%!gJ@hLiZ?C%lII(fDiiJch!gsYnuRtzhueQ#YFwkBG8a;oKoKt%@u*2UNLM^%JQG zi=J|e-E~wyTn4jr1sp3>UPfke1L^E{*1kJsPD4fXcuS)A-we$SqZ&%)7T$z=vcm1-6V;|$%w!k3Q@{V@&<~c$#rLYgu=JwYMq!O<1yomOy zl3F?Kug_yj>uA%Nq)yy;2IZlR7Gn6_tbvzC=AgA|E|TERY#}lM<#5v=tQgQeqSZ&s zr!xk%L5PdfJ66#62<4uh{E2(iu*hv4{MkR$1`E1MO81@vYK7(uJ~Y>s&I7<+VeGnPw7&mK$7PIq9l9($l0{8AAk! zk`i`C(>@JCmg`*Lpo?I$D2bLFMMX|2-G z-cCpgM1?HAbq{#J80WoLgYpykN9s~!Zui!Ydq|1Juq@}Sdy$&C&zDaqxZcVwVd|P3 zj|u`i%G!)W`l100$1#oTSY3=J`TS1-0Q8?L}U+GwsrSgM3&IC&zS$UH57uE&q}6 zF!aP+3w#Y2y+ww(b_M7Ebcvd(4#FRs@320!u{p#A>D1mKnW_QmWTN?#O#GCaD@~pz;K_okMtf;NFq>Z7y>)P&QuN_uF%tt#5h60NzJT zc=FmmU)5W9eNte}Mrdz$aCCtNq)_n$69FiJcUTucd_qXp3~Fq^RTv||d15u?N2K7}HSwO-u4+#uaJu&M8ft!gdL+e)?4<$yjtVKO4%3`S0p9lsu zQL`3>X{A_@@A<;pHb!z%-q=Pi#wKBXwV{S>chF2WYtv;{?zI_{hBI(&6P~G%9Qq7`!8OtVR_;8bAJ$K?c3C?c>L4tB=9^g#7urICSx_ua zljR`Nd;nYgRX+1&OeHakMK78#oF56CxinGMbIfm7KS=rt$v_59IR{L2Iu%751YHdtJB$$jWzzy`qQR8sOzv?#1=>_n1NVpEu! z#U-Obu(b1L!WkE&1tgmj7ta|&bA}+05%iRl4YI1BE2I!6yaI9t@#-Qfh#L?|#3r|{ zSy1({O{a7QqzQ#TR_;xVWC~`$Rg1FVa1$Vd#O_JHnhOy}-z^ByNM5Oj*-G|Dv&!;F zzJ;LeJ(~!XP$1+#ZD4LPgj_?-bb?!L|J37blH_dTOdQW7j;lzu9)U!#hgUrOOE z{*K9q03cfjo)svK3(c+`W9*1dE0L2}Cy}A@ z6!?}bv|rY5Kp=${w-?B7`rFo%Wg5>pFAe#Y5|D9)s2d+G$-e8rTBh0v47Z{8=>%ie z)Qk8w@&(2n3Z%c~bn{ydIWvdF_qbj)J7lyLRyz5uF-z?kW3K``2iQw_=*3bbwUuG@ zGW1VV50hUPqa@{+@;$IVO^8MMDQ)Z)bfa5t(P7nbbg47lvv2)qs66s{l2?_|yMKAR zt{6MCzr<-BOQpZuS~rH|P2S<-S~#a3HO9PHeiY~IKEapZUUxOEP(-)DKMC_aPijqC z)}9RtNTte*pjOeRGrAbV^4rul^DOulff-;k!$_*9>-t_kjM1o7fnq7g9&OvOO4s*w z3vO5wXb!K*qkf>hLWW+xtzQC-g3f^NxF+7eM$>9s08!Xa?%)BjEFgs$gh2|XT8?%| z?p0cujl-eyje>!RSPfnbfssG*<5Qoc&W@zmf@Cem#k|7{Y*?X|JC0Bj$1#g8MECy6 z;{V=>c37`4ADnnD$3uzODMM`UZI|9XnVd8_a(FszDPh(eOKp%dgB7EpUGrU@FE~L1 zNGTeTpkINTEQRW;T*#qajV7V*Mc>=TDu!3)B9KRNp8j;2j2UYqyue;5nc_zB9S0mK zJb7;x;De`piEVmEOU_6^>J)AFX+E|AY!sB%PP0;9~C~9;C;1hnp=z8e{NWc~nAC-UOn< z#gdIpYeQHKHe$>?6+}65F+szcBBHpw3ic*KfGCHmI#L;#vj663shs92P-fB*EVulM zVh!{R^eyECk2W)U)Aj!QQR-XB&mD(uNc-`h2^kTndPM<|@d{!Vtc-FRQJ7E|wPPKD zkaaAWC3I){m=gEN;Oah13tB1Ug{t?s26=Zy1zQN);=9WN{Xaj81}OA%XFzDtSODC$@>Ps-$o{EI4>2P3MlDCtGRvv86Fo3HA5@d!c-0GC6)T_&Ka zRAoTUC{xh{JjU_EgTEeAf&2zmUNHtSMva~u>4@Q65Okv^?JdE!YEiXo90;pzgf`X7 zUj4}4e_Z=szXW#q^ZFsdt_kcrsUr*V%D^spOW=N8{D28tD^+SM8z#2VPyEHjI*YEm z$tGMcqgsyOLwYt8gSE~M+0?UyLHIN#zxwLzNHxr6oG1z-v4gtrASj}Dl*P}mqXu7< z5x5ds8P>iu|2RA*1bNW2)yjfo4aWnGVbKxSc@<^*2~2MdZ=aMAO^JvYamPRmk<~yj z_iVQ69^4ba3laHx?KTl|4Dp1j$^N5LVs8*xl9C4btO{E2m~isGq8e_ zJ1_N-Aon@tqGDBVePe7+sHnDKDW|Tq%rZmFSViqu9?eR3hEMiMT1fhN8FXm|GW!x2 z!KZ8nYbIp_^N`_0Cs)RJNbxo>k53ij)N+fE@!iXD__FJ4RO4T66VBC}m@OjaZEItR z4RkqDRK9=t4X^n<2XiHoe2BSGr;`96*PksG7*BOdyV*~`F$S3sM2Wd@j^?IwCY@1x z^mP8IMpc+Al~~SM5x9`)Ro9XFOCuD1q;h4rQ5AIT|4?_9QE_HnqQ;%z?(Xg$Lg5hH z-QC^Y3kwdx3GPmCcL?qt++BiPy1(h}Z)SRI-5>W({o$q7*_^e{s<(<&&$IW&zA?g1 z38zfBr5|3_MHp$>bHy9!epIhA&~JPQOmR|`5ten5HnkG#z!VWqp>1W%TLMGNB~gqE z{D?qZIXpY3E?Dr+(A0ttnFs?(R|(YF=LGEOBP?r&#K`3-toO7Y5}g=SXwgJuqSQ2& z6=dX+GXhro;ytPzRC1iMcW`#@w z4!aV#C5*1+?c|y-16CN0gg7V{Q;rYyERmRKurj<3eu5*0sAh@P|Kk$@AR5m;z1KU+ zc;3SlN~@Vmh2Q6`r;QqVS+um+dtg#XXgi{Wxjm~eV3eya-ol{?{fhd8w~NscKc+^| zom2&xI_Z?bvc;MWiC=7R&1(%Jso84Iys&3uM8PsBJOd5ctoA|&0&%2NeKC$4pqMg> zp|Zl?wY$F)GS-k|$upE(-a{L2E4md8g(EW+R~x-V8nSC(IPKlWKzC&cPcb4yjrDaS zy}CY=K<{WsDh+U`ynC*wl4uNv#`0p8T96*E!L;Q!uj-fRlStZNTf-I($aKYppTl+Qy@r>!vW-lGV)ZvuqYXf5s|o%~9#W{x zkyt2AYM<03h%8;49#f>Xk;dZtCIXB|FD9iFk;1GWt72181u z>KasoaKN*?uQZfP3mqL{u@m8Cc)luR0|&ka!0#KBybRQs&NRX1 z$Mr5UDxkDH+=c&*;61jaIr#ms-+Rbuz5DI}9SwWWM*69(4C?9OBB9H-7me$I{6gw- zH-xRr8CTr`av`V$W%3EFEqrXZpAB0_w;9;=jZ{Kxm(-B_JeN+>bZ)60-pfbrvfZhw z;Gv-4$@A&y#xD$k!uIbV-|raaH#oz|&h<}_kNXcgrp3zhH#CitgPoCs`M1ZvW_Rz! z%zv=H|54aqi16>i*tog=ez(6!;r}S?4^sFS`TNf*x7mLKlw8d0?{(|k%zu=r6LYcr zdHw%e$@XtB)5gHw>0gzrbN$h};IE|r3*5>5H@K7g-{Ma0|32>gJ@yX_`2PfV{@>PU z|DNn`8ECziW^@0eM*E*Q=kEvhM}mKH&iA<#|4q&*9s5(vvE#m~xGunkg~%H;6jYMU zrVAQ85bDBUD=7DNS-l*S@Vwh^V@_1nC83;Y_?eb8!B_#@LM&5+l_>r)<{ho=>%HyV z==lk~TwGVZIXzXpz3l7hMJ{}&|L*tsyz}+q5xUXi^v%08iK#+?mlmv zGp&JlzCKs&3%$JK&ez@NbG^@g&-d3zZ?kXT?mI7jN!uJkOTz zHVRhlPpnoLl~H={JKC(3VVN*=9yTN&O`}&TlO^42z}t!YWnIh}?k}aji;da)gRQ%h zGs>E3of!=y9-nnzr2FVD*uQ6kj2?S!c4v3AKVP^ORv+D*PVRf?bS%8wo!(>ly=K>O zIAq;731z<4PF9KhRpPOXoAk9OcUT@xl8L(DSmP?B_(J(XGZIXK5c&BtU#xgPmxBj)$FZ$*$;iA9@C7%Eoj$(vqx^HM1gIsswcj+u$%uFE@O z1033A2P8xv7lXtZ)`Z@^QJsHBAX_Gagv+qD(JO;xAs5ol$&_ECIydsF{&rkG3(6Lq zGM>r&(h;7y!{4g-cnY`DZMW9HTgLAb8D>l~T*oP5^o_Rg<>pvxt3~sXvUW%=@~80v zc0PCEq7=jpzj6j9wOj0KC?OG=mp--x9m5j^3?GG*5Ny6X(XG~K4+%M+`>aP4!JVxk zHhY$R@ir~JpEzpiQ(U4qT>A!~>-@^KFS!;!6+ zQnd8F)g-Yd*o0HDP_w>$AIYAD)JY`KAqE8VyAZI&YYy78ZEFr(A+=w|jMvO--BYNc zxqVHa4Gc_0A3UoArD)s%iDVf@qMYhvPF9o#=Am ztmFqK;-&)pJY*FN;+e~FOUc3OdtXmi;gN@|T&XW&pC)AfQ`rr|P zaJ3!=GvK3z;R2b7D~V94+*Vo&uSvG_AWDZ0VZZc;T~-Tz5vyDVvrfVwD*;d;K~1$z{Cf#Py~Z2R zvSY(sjwl>|eMM=>vF-Lyj4qMWB#51X-o|@wvLbbiL1o^~YaDvRcK+N3mKMlSs@Pi! ztqWx96(vgRiKS6UR1s}9N_FNeb*4`_7f`{iZY^CQy(JUJy@=*JBSCB~5nFZe*+QWe zAokLhZ_N3m^-VdHPu+nf^aXX23w%gB&vf{j=d0R~?+4-xVnhp&CG)4nwel{$?cSA0 zBs(RcMF5z7@P!ay4h}E}+LJ8dTJj4=+6kO$8K?C##sF_=d60A5T6?X{>##qYl7h2F zp9yd=2NhS(DH9~b;Okm{00HnrSvp> z$YKb&%a4=7Y~Kh6X>BVrgdyDcHm zd+X=5`Gg#RD=+6*tD#&}luk3p0GizAx;-noB>K9o|a*mv@Qp$;t==h{9QLL2j z9XOO5+Du%IH-n_x=bHo)34$Up#7~WNu9sA3OWim+6h`O#-Uq(f!;uaKN>Pp_VK*O% zSuO1n#Kb5zE?m_@M3&DOK3YV^mEw*d7g8bCg#=jWEJT{R<8(dgIp$IMsiMC93_|7w-LJcjXe=NCt(i#pEIlzS3whXXj zQWso#{$Pa(!=k_?{CZQ4eHyP1uEr1jxlke<&%if|JssmNhBz^vZ3#bqer9duOqvuIg>m!zoFP@1 z_bGRbk;UDxHj*odqoM5$OKBlas4Z#CURxRR8`*y80MhPish1jZQ_PnYQc$m+5sa9E zOBc7;h}CdY%dqcM*1A}=)D+epdLg&^OAV2FQL?Zf{Wlt&qr(I zsIf&$a)T_8sIk-!krxR>fDJzDbl014?IGg;S_p+qII2iR4-`~Gy3nG?kGEI!!W;1B zqg&$>u)ZYlb)VHk5nS(Q?akz8Q)yYDB)AoR^6I}uECW$;-@nyCt0e!$`BZIxiqNJ` z=g*{ul~4(O|F9{$B2xxayoOe5LX2O_*AJ!^xg;@wDuKb=Q-qvLB7xmccf(KxQmZk) zkbzi_HIr=~9zTMXqSB38GIb2p=G3`64f9@^by*1Q(k4Oep3-MI`pTXTE+m3Em_9Co z0!b~DD@RIRn^sSEXTxm2Z5pgpyccry3MzXRP6Q_!1SV+E_V}X}MZfq0XNw;n=megb z$?b36f$I5-JVK^mo_Q*=LYOZ3*7Xr=Ty~M^Qy&!>KTz55DN-a2=p~LR&P-_~3$7$l z2R8E<|1-lLigKNcCAivm2>pjit5eA=0;P+3gb6Dm*~kZT5%q-*^spuN6lyxf|$ zn#ottq6>Lkb(J%EmL}8c-LTV_?VGGPS$~lBiVf`CBaFVy^qTZ$ufTznmxUFlPuJSy zv!C~|9$$EtY&UHsZQr(aH#JxwBrGp)t*^rdDq+&*(hk{+FHJwr zIX^B@bGk65Hb1}oEK!G^B2F6yV2gafhB?qn0c>`0m!%aw4r1etj0t4sL<%EEui^Q@-SKe5@SAUuZT&Azx%sV5JOlY5 zoLEe4LC<6>nd=&w6aRJM!iROdxO(m3O#rgA0mpHGESOB3f%BX;)X{`Z7rVMnjd zrCv_aPn8-jLaF!P$0ISAD>2xHM1+OVZ}c6MZC++RY8s0q@s}3F(3XUReQlSLf;iQN zAZ*+(QaoUcU=#vB3sD8TgtaRV7SNxcMoBoSk`Odo6@ZN`SY zT|PEf0@4=V@pnC9qX4}~*>sjTBL*;(nD7-Is>)cz^_Lax=iCA4t06~4k=X{b`X-T6 zb`ly7d&tShD9NK5!H#^b9C@_(s&}YYx=~3L=R>8oi|BmqFNsT|Ak|gX7|W~193h79 zwdzrEDyc$)H@M-%s|$hd$IxGtWwFB;gQw?JgrN$5gVLS( z#E$j+EJr7CIbO3u_M_6lyAtS{76}8ch$Ee_Yk<6@8WIqWRzow9%P_EwYPZn0oKxp9R9mB$VR$PiO4;?ou7yL z#*L$D!9t*b?cb~q1foG!>B8i892-?QYT*~AW98hoGE+t{xP&+=X-q-T^<``91$YNO z+$@(S*W8-J<8byT22!+OClOS9Zp2V^1=AQ8m{g~&@{{~pm8^>@R#JeDw3j~OdE^ph zsM3a%4w_&IAOlX)=cpsoyaJCH%OT9TI!NhDy9$xhRN5`72=koI;P}w(5tuOu@*cmC zcCUPdj42;Il{nM>7KDoz3pCfU%~py?LWng({guKOLsKYMj9>w__dPVos+7bDvHm9W zIN#+wjprwgY|YlQgzZ?3;rOsS*H@r@z`L&m?81u}YUwXWKDLvYLPJ{yhCj1B`){J3 z!9RblBpb)b%eUu9y|Vb!dG6J49Hv7K$AQB#VU9TifEehf*E*zBoQQOTO;{Nyf4HU+ zzoJI5g*SC?Phg?#9x=2Ku}2G1@C018f!)w$3{iZcsc%bFXN@b!Mol9q4yV>2hJoRbI zkHz3aM1i^uF*r(wB36#@JadxMF&EX$`uOEJzg!dH)w~|0wcMlS;Dp*PBE6&{uf646J`!_L|&0-+cdANlkh?SOex7 z-+Qi6`C2Hbwa~-$d^VPpDc1#mkyX2_Q{ih<4wy%6?uVH$>c-&%Si!cmabve0lr{-9 z21PcomJ;6aZYKUzj`;q4o~NNdZ=!R_zOhi=YE`1t2HFvj!jV)-cn0hx(3{3BQy6xu z%XDN1O)e)w!9t@nQ``{EQDz=zy#J&~LY#_7o}rI%!Gb!>DuXLa{1jJ81Yy+8dgzS3 zg`FY?kgqwpG#c4Y@M9MdlI0-l3pOxyh7SgVCc_;>ldMMgF>>uO(U=I?_(_Fdp63@w zz`z2D^Mk2y!a>7gp2PTCxFvSjJxEz^GZrKM!?#GLV%h$*1v6N*SJJT zwu3~s0d2=(lL&Ny!p6!1E!36Z13iIu_q*sgmBm*qM>}^RopKG2<+CP`QjnhGACZi~bLp}Dk7r$J&s&dXCtK9~t(@@t)J-tS`mGQ4&t8DL;Eh1LO z6`E|@0!!si+hAjj&d~UN-$M3m?Fh$fz z531kkL)|uG5>siO(?)nk=R*Ac!P~{g>_kch8`bE_QTppl3??7D4l$Iz zhB6ot@8sOXw9DKA>X>nCu5X)w%OSY6?nC>C9*U%!rWdmK&kP8efpp|#8TFCGhxDy7 z$rFy4S3VhN?op7lj4(TCkMYu#(33F(nQt5VE~ta!05g9A_ZNgO$fE5F?E2P|Ecmci zO`r`h*R&6u()_*1*2C_fMa^trtHet+plf@+&dwq1FwO4HE!=z@G};}RGUc8^WJaFj zq}V-JjiF7ufjqXat)=+(z=xK@URufTCpTC`r;`vsNikxb#wwu^+yx>u4Q)zYMzYd( zz#Z$aC6`SRP9@L9d&uQcKb|OTZCn7-KM!Crq7J9prl!#c6%!k|qmKXK2L`zW&>}0f zfCcwuit5dw8#mO{1vsM-$0eImB+`2~(VJ)F-B?@kC1!ypB7!vm7HN@1*@yjpVdK2{ zvk(=w75C?@ItX%aww%{BaGcTuKu4;pvy&bxy4tJH3L^glxe;wk)YypfHZMQ%x0Q zg#lX{Ufk;b79QF|dhs0{OH0p6U`h2$u>4HN)o815cyXDea!(^Z+hdU`tgOLuD{t-* z*Qo@9n(OkQx-n3MGoym?h|>_=7RoT)umQ;RRY4@RX{$XM9l2*7289-=aC2cyX3V-p zoOdHJV46Y3=u>6xm7xE~#EABhWYI;26d{X##*{D3>t;te&HVD|)a}Lm!$gmPEn6L5 zt*oC@%dpX+z-P&BFb+TBOi6M|(~lnh7oMqgYhGxHWXJNCS!kpttqIy^hUS=_Gzo?J)tlJ#)+0BH-u3c`;oTt*VhD zlr;+Jnc;POdE@7fNSFz|oE!%*3{s0c5N60jP-x@CQPqy%g+d7->bFX?q+{-+qJ9~s zM{qk|#T!8z7`Fgz<+~=JvV%>&)E%n%N9L3c&X?_Stay0-gll?Z-xWQwz;9)N*`Nsx z=8KZ^WE9gKtT~*>N`~4=?WMkQ>&f9DYVro%+&QU3gbHb~a$XrO=rSz%_9M+=^~OrP ziKZ2r3+)dH63dNw4XZz7lC@d`%w0bsZ>54MnXqR|+DqIGdXolo&wXy`momuf3Xsat z+h|Z*wNnKBhK%d<(4Q?C1(DD4gDc>|A80#e73Ppu$Bj$g zNULS#ux@zaIy^O-DhW`3otUV!x!-{iJX^5#Y&q>((kPfQnDVm1A}{e^8JW{%+kmMn zor|M)C_zc@h7(QA7k`r`Z(VA-)T1!e34kFGwC*99ZmNrb`vtuhD#zTz9x9Vv!>J@1 zT&pt9{262y`6GgsN%_GpFo>mWr=2@JceQ4h9KSQhzE2FFc4swm(FIYvnyPlT5!OUt zO#&)elM|vO;Ueom!UWATcxT*wevH7FT)@CYVf|v)ejP2Z*5XJZJ+CC?ivwKB^&^vZ zQ5{=~Qw|HKGyP6Xet_-WA{nGOn8%X4Ky%Vcq?X+_Shc?hVO8Scn->tG2g5zsqD~eA z|5GVkB54n9$VW2mz;pCeqRsZuS!oQnNX|o_EZ08BJwtb-i}DD6BmF9t+lkYF@1BOs zS0gPrn=%6~G}yq%D;WiMMm`QBBUBT>^#Nu<-Qk^;va3G48r{fKyl8aQ#~SvIErb%& zs)yX8Mv6~CT0x@MSP*Y=tQ0*aG>JW8&iKxW5(RudpCh_}w zAt^%*ascHXHsY&Ia4c+T!5%Y4AVWN@_Hb93{v0Y=TXCBys;eZXQH5;0)2v2`~YAg&bxwSCU zal|a+x(f^V%OH1hZ*79ssx@%+I{>1?g|@N&&WV8RDq-eLevvaO4<$I=#cv zlswfD#Esx}dIo~W`1lEeEB6au?w&ViK|dj%+IOa3jZti~b|y$dgCtu*4&nzwpy!wS z5J#<~Y{ZMWSajKG)wGk1<<4sxQF_68%t$M}S8U5e6iOLHcOB%6nFe|m^VaM(fCE!a zi4|zfR7>l|CwuPK6HUfHy!iLRbjmj3i_Ff@c|oQIBGbkV*?*k!8I_AbT69VWEf_)i zb_wNPZd((?BfS_O2sRT#@HwP^`0>H!XdPN9@%ErOjhun>(0W~k0^v)hz-`o2hY7Et z;aY%0H@#cBe2xw71>%<_6TR^Wa_OPOWZ$XP`Q!`00jktM?}yv!SF5A-)%B+&(iB!# z^d}aF^^Eev6hRGrxv$)K7A2hrhG76(j8)&S| zNb2e#;4FHa=fSbo1LcNs)sl64w{877G4q`)`UM@cmH(Y~@H-X#jg@k-adZDwD$4Vx zcEHB`H`)Og`@g9b=K0e%_}ld?zjd4c=LY^fe~JcwyPl2XPpJQ|!~PTv{tWx)l4n-7 zKYsf+yZs>=X#E-X&y~;rKAYc&`|o`DZ`c3(Y<@$_|MB|&Fq=PTCj7b0KNncDvi%2# z@W;%AzYK!^RGVPqASUKu=l)Hb_~XyNKk+V({D0c%Ur9|;{P#}xMs~JN&i_iD;Q9CR z#DAJP7w5msX&@$MW#joHVPXzumOrmq**X7kTK-q~Bi#S~2>x?_g!|nM`nTos+|0k- ze~NHSf0WB}GyisHy+83^m&^Yn_P1C2Z?C`qjsD0#lKuUDefLLrem7@+yZG&7|GCHi zKThtCO#cu`xS4-@uX{f#vH!AQel%uP!gXyy?dNirF&m*b=m5wUDU&XE@IVN6mW!T) zOCZYup?X$`-$t6Gsp_ReAW(_RmRWY=$8=cQ9hjwpn z)nR@DFXwh)LN9}dVSZX&4djFa&7EC!*|BnBmcC)Oi& zadg3_MdcT!2e-5S@xzK+j}-SAd{j-NQ^{v%`03V5{ktO(~)kk*0 z{BE2uU6^gYd#+i&9z4;-yw4A#7TPKIE`HAsFT>fdJ3k-hcDDwzk>0#<;} zj1J58PH?l|G~B**Xj{a{YJD|+SfP7$>?dkJ{(87Thtak_x;wH!RJ0^{ZF2iCs?C** z5yVFLVTJL%p&0pQM6XT<~D<-`g#0;#Qw(pwb+Qq z!{N>b8N1uKI-%vw^HJEtxsj!}=#zyhK8sDTHTxJnhy83HXBQbWWLsb?-7BH@B->Yo zwxjHDf;2q{Y5a0GiPGSs`tmi2?Cs31uj0?_d$U^&L1uK-%3~$HW~17b*lw9w9OnUS zxN$H*e4~2oWFsIB2j*EKbKB@)o{Zfy`?k9xd?-?DvVw3ixm1MpkH)@)*s5|NuUUEv z*wLT3ljsv4RI(oVF+T@qbra#Ge!q1U{n+!(W9TO|Fox=cZ9u@;{w#CYs%5;rh%F)VNJ$ow2S9t%dTaCW$D#<-omT_y;l{+MnA!_`6iXJx6KuuO&AJS_jjA&re+D{U# z4|;}d!8POIb1*~3@j93_i^1b)`8s5IUhd?;t!$R&?NL+ma6uVwo{Ty+LZi)K6eqbu z_$lhzY6$XF0}o#Uw2}=VhBkA1vhzdW3gJ z0@n2#^KS|S+%q?#)t!^m*K{d#ZR=Z9!>Sk_ugX)1rG8O1gom~UjHS0ifI|Fa&o3l% zY+Gz1>A_UC2aCEH2Y|MtVNkXJW}w>WV7V}elKuHfr{nM7Sw)KFG2*p)$n-JCI?4r~ zqc9zx!gIA)VEa(C>RA;@cULb)spTXvxrW?9Ne>YRa*Z6TYk43(?e1ZHk8r{OPIG0? zpXY`d-SeWR@<-s1B@?5`NNCdePL)e#EL_e>%{Aoq=+L{T=^e%S{?rkJG3G`B26s#vVtAH z3@DgP0~f)Up{*Kk?yil|jhqcaUgt;NGHooR4;95kuKWgb*1|~c^IYvcSYF*!aC%-0N4ZEtIUoi6M5vi!$LUciU7f>rvLL_t@G@o>!${5T9$r zHOGDG)t*_sZ8PE8%u#;E*!Q4(U*UYtwG>rxvlDai&GW+@k5^n4&-Q&bmZPeJtgaLF z2Lb!_i^X+fk%4^9%etBDjuwJIvm$>r&4+Jd;(Hz|H+Fq6akB=7l*{AP8n9GJlH_8> zKTJB+c@QZfM-4aY-8WboT-9$`TGio|sZnRgFu&;UX>%gf3l0l^JHrOBzamt~hSaz% zF1NMzJbfJ4FGvmZROG2j_yJZtHUt4vG*@4ak{SzV8Vw zqlVIfx+5{doQHbHiKes!BChND1DH(x!8(oULONI2?9y__OYj?3nKa6jTC2z?8fmov zsJQw(njwO`ShiSor)2dwi?~|wb~sp_1i-5PVcdHsr5`iMe}IpLkDkj<-O`RW&@o@M zcbc^S0sR?S5K&1It`3pkk((|NzCXCDSP8$tfKqW5QCE1pG%?T&$dTwFWnqjfr2K_c z)J_YLv!aV=mC{fM1xWY0d1p~OBGV{Os{ft&-Jijg`zeWSCKVcm8>LN8z9j(KF#aIl z+9W-_2MkVVDA4p&^X;3>JUhL`I z@LneVd~9IxZIz>_1g}JLKnr#EWgy`w(XhtEA*$b$%w;J|fmT|9Lb|lu*swUu8R09i zspP&jjT}SP@T=s^hutCH6NLSv`0&JUSn_#=KZs+3lor#s&?yUR6v^u6^J+)~B?J7= zf@hNB+qG;JsYiBEu<^wFc2202PTI4ufnQ|Nx|aHO2h8L#pD+UkX2u;(@{{W-$8;N< zmFnv>d3Wie@y7S^CF(B-*AoZ`OEAeLwcPvrj6*U^s1-&i&ioyUDv5fD#j05!P?wpP zuC0-z6-U3we9f-DwcUXl(1_>~#@*2_;jF43Rk-VVOkuE@h=KM|W}TFMU8hT<(em(F zXpZ2|8G-|J$^X*l?{bx!N48WueV~;O5giDX^t!j3vZGH^O80DDxHC#jQsJqUhS3|i zqiE`7+p$h)z># zy|Uo7^#K+XvJJ=PYV9DI4k}O6p|TM=cnyRdZ}SmtzmE}0*o1Y7*GcaBKuX^lN;g3E z;^`EJ1MHa{dN4HmuGx`KL_zIhhQFrp(e0TJm&5kzdD9DwtZPGw0r*k$BX1K9Nupox zb`4LnIuht3avTz9n&`)YOnvckq^|`0ja@N=R+0NpJiZVU$0f1Tw&FgseS4#o>KBWI zk-NEqjk$tw^t@XsnC|ziMrbOK0XY41;tvxm_xDlOq(eWZ`1qU&SnQ^$mRwo@7jDld#$~jIyk#{TSOHSTuC>sTsXy%6 zWyuwnBx|^~+nUTtQ)rn}8g4`p=)O@-$Y9-fc>x5>aE?l0@FM`RVk0v8GT4M=@ro=Q z;}UGb!dR)NFoYHqi%=Ly3P*D?X)}3wq}woTGL8{TGuVvsBcTR++Idc2tsfZd^A>u) z*FPaye+Lf?W~mUn%(s?M1miON#C9~)$Ra{eA{K_vBGiIjVU2usYS^K}z@}btMpc%) z1VDztlI77f+hs$C@dp3_jiM5L9fsdQWGT)15?2}O(ipEz8YZGlVz73OWNd9tR#u|vJ6y(9ui8TVZjrZEe~sbdDX4QsCns{`wd7IwGOWtl6Nmam=$Y;E`9 zlq;KqEoS;{ZKH)W*|y^v53>60r&pzf;rkOW1Rk<1yCZt39Aflu*tFL$HMKc?D=%Rp zvDm?w#I!&sU6hcTQ2HT9i;2E{6^GcMoRbnzv)5!Ws7jm|BLe**`w^}R37FWCkIKl< zF~Bt^UwcxdSnTXu@xvSauAOa?81-z$3)AO~0Fo3_3&O3Y>ETev@te{ILVme}*#ZQ; zC)WaMO0Bpq8de5QF6w0mv#@7A?;u3Idgj;>W0;86v$WE+G7QUdjnmfiegu8e3aL}N zrh`_a_afj{>lYWhCo7&Ab{HBw>J};~TuLYDsZnIaM({4z)kP8%%pq z`YZ6D7@$8>tz!c%P!yB`Pl=~q*L!^WYNDZx0I`eF<=nD3kPW`ZwAPa(nCqVxHK`I| zcY6R5XcbTefc`vta_qr8y@7_>sA9g06XfZ5R=fHAIg|d+!O=M3Ocs!P zrMq4DDs#ooi4AcLQLY9fAf07l(xP+428RU$Y3Za-|~8vbmseim_NCjfhWkh?S|i7ZZ$7qnb@fv z6A$GK!-#fc4@Rjj9R6zbGmV2DWEbF0ma`>2_pH`ZY&%n9%-MD-9*PoK>ydaqeY zk#Mw12;#y9nRZViQe9vYIRL)s9VnI&Y4M3@yqga66Qx3eU8F=fHOmh;%!qmM+cqsH zYXdDBO*u{V)rLKfoloBS61Pw_BSsYE+HG;X>I+#AW7`f!BeOI*jH8ap?ZZ<(aK<=_ zL`$Z;sC&F7?n4tT#W+FVq|OSIN5V6l$V&Q)VenCdj{U#o(~Bf9Z7qg72Rro@*QtfW zP)z|c-un7<&lIN=2H=$7B*XbN>f1~01YmUJs7hVvW5(xQB=KQFuZ~cacwB*+;I3!NWFmSf(Gvma8}o zhG)V$2Y17Y{V2Z#W3IqBIj;G>ECrn(O#8k5{cWsCrk@C;5|9IlV<1w^#F8|6Zr+T_ zp`$D$!Ejgz0o9AFCbh#h&1-1I3UmPG=-9~*O|!E=*s@^%3P0is6sOX6WFEJc&=+DUHj-i?<~I2=p(-G%@FGk_ksTzE3$b-rspj^pe!cyb>c95D(gqllXT8%K;9Xa5c;mjzl7Q?Kj50jGY|G<9zw$^Uk2}genGoF#K*q82wCk=2 zM-!9JH95dBkBmqLQlpzic90dXgx7Z>M39JVGQ$>yYksI*`ebR^^eH1}Qb<@qsNx(} zJi=KakZOgCDy`?Zuqbq@2*A1!1$x-4&@=t;fOr{@Q2Myc4@+sNL_0el-I$~(hrN`e z+U0GK!yaso$lV2zKXx|EX=LyG?yyI|vet;p+yZ4`IQ1pxS?e>BYBQl z3@}j~IiBTazLY7nmn}3UM#qX4SsUmzh@1}F$1ChBC6B0~8&1>*Vc6120A=Cf(=@A4 zwL)3t=ZWM^GmT9nKy$(ecEBe>&BKtlw&A|vyL^;K-ogxBY2m7y@j87SScVaivFu`o ziXUMg2|sY7{Q{@|^JDN_L4m+rxt7?0(N=T&5R%F?4hqp+DXQek2Z=IU8e*-B%WhN! zSL-ykQ<^zBtFR}tD21I93%`ms$OM1jVLJux=M$c^J#GZj(x|j^%}R?%iIMG^b+q2* za+L9A3IuiO=8a#1w|apVWZXMxlXq-m7( zeIT#QbsL5!cS+5z9%NftqUNINZjw1-20thZ9UL>Px#@sx&$Lzv$$av4I7>GXSQQ?# z8uq;;1oe=<1kN=16n|`b1$BB;-VZ=tLw!%M<9%>I4tDd6m9CFUG&=GYGfRyC$_-)z zRh_htL3W~K6KaT5K;0OixIQ(ky1y&Ow}y!bg)C@aPj$>*x!34STy2N5OyFHB8vJ&ns;r+%`M<4DI%Q;o(bRo z!-_GXTw;inPXc{p20%;w@XN;tF1Kr^JVylqn55#+e}xfk?h~OFXN`SKSe&w43Dt55N_yO*W}@K z&j1ahK3374=buW-sazu%t4_{4^@ExKw;lhEVoq1Q*^!uWy| z76em0M*9W)@@&1!Q9L>)f%4Zz;`Q;<-J?bEn|1mj__m^u`y27vbbLj>ugvFs4~byw zGdATH7?Yr{Rw%7=eLm!Lo_BM3NTTBUA(L z8x$M)*>>gKSh!W~a+xR;Fey=m#>1SWyCQAlR>ksa#?hVdwu;1M^fa>sBXOlTBSRI` z^EM%tw8=1}zUUA|SPFB%e61b$f}ob_ig|8NQ)Bn6(y!f%(eJSRFxMX1gvNCh(!7t> zRwR0_ZItRdBDAw9-~*ELed6xe^i=0CL5MTb>rUMI%;G_MtN79@a?&2+!mBbjCe7>n zQc292pyUP&rA^5u5X1#VO*-X8H9BMEqW~NF%$#qU zbIQ@rWA~zJQ>sCTry7u0!_+e)qpYZ4(fw<-8p$UCsVlBiO0qA1#?mn^i@O}@rMiwJcrNC1uVW+!}}H%HRZqp}LsmMjL*vhDn0k+MQvlxCAKQ`aj(RS(Q{Z~pLBwb={jZZkv59ny`bUoA^?1N__p zdl9m;-v1nSwKr%&8FMjxoSqpfj%DX>L= zmM;9@R+U4mZoz@{2Y#?pP2I9;z%!*Y{KPtitLc2OM~zvf2rYjiqVGfPHeaCdlJ7 zjRQr ztGD&0SPo9bJGa5XwLm`1GgFzi{knYKTC>xKX>W4f+rvLklq)lXMVjxHotwD?AX@NB zyX&!^3n{rw;q$=-Y;E-f9!5(x6>D}7bO^i%3DKJr{f*=D4`BNn#^vH*XZzD};b#8J z@?iNJ$Ay!J{ZDz|pVSp@=D%c*|54aqvd7K6Z;8_Qo3(ElXty#vTUY@5IQm;b_mVEGrh;hzQu zaI^eNSB*ani1%>`|6K#(_t-zYfd7>S#P7-e!+`j!aR&GA=k!NjfBFtAzc<+U@AwX~ zu|K&T+usKST!UqhDQ@^1`{?<4njmAXva7ST#R9tan z1n1=c5cihBadc~zu9%rDX12J*Y%$AX#u77w1r{?im&MGIC5xGvnbBgf7_QFO{q;FB zedbR8n}~`Xl^O4*jEs!TwV%CSH^ov)B@-5M+^d~_=J(r^?}TqB7oi4%?@vOZn@>VQ z?@tLtCu}EgJX!CryU+h59-2N}Gl+dVyuUyCeh?4L>&TtHZ>h7JZx@CitLsmj2B`0M z7sVuRrSF9|%r9@s{~#W|8@$R_Cbhf>mkf40$`!C`Fn3F!1C0ToU0AgOO zW>5Y8{LZ0jlzZjbEdem}B!nr2N3a*EqsucY*QdQQsfa7GKfwog2N zKhLOYIW8Jqk?6!(3_VHZnH(|1a3OB|CfH)?#;^0!S#czH6Wo*$l(|~}XI8&~b18o^ zALj#6_;ESi@~2{iZRy)aP9^AeCGBf$M-=baw;supg?hVdJLBInLdT2dCp7JJfpj;c zCH=G0)imA>b^@z6Sx_sW59oqs-AtTC%@@x#?Ul#();(5o%g99teB)VhFuGbu-}iBW zSkCp~>TtH1>Eh(=;p$n|@hLX3*Z2C=_vQE!RV$_G-Q(eE@lzsE`3ie6VEl2BNkh*0 zR|3gs9Gu5;AFJ;2WHa_C^^+baz_Q9fYdcNl301cUk9Q+NHALu4H8#jNP3i%H{ zIE2sZshrk=ai07gupNU}{(WAA`P9@iSZ|xVxZO{~gKRFuNBENPN z5#cl?J`*@ugzea^dqWkE&;<~Ij(Jz~FS`iT27jthw97a@m<1DYo`#yJ;U7PF98q`4 zaHd3EDgb0J9$NWCGutIZ67149xSc{edN#Ht;&DYg$P@A*$}&^n4Wp)_40efTGWvXzn$^}2J+1}idWmV0 zKif_}E>to3;-?HNmLms-lJ&Gs(Uc_1^z*v0MA@=156n=9CrOF)%-*vWa~LC}-E$`i zIj8861kIU|Hte*YbeTGg4~aG4piYC!tEn_e0a;0nOOobuTpf<-&uHP~)1xVtN@%`=aUtGQcsjy;Yq zk)cR?XplUJ;OPLIe{o7HT_E-0hI?7NZ;J^EhX}L0Is!hr(H=I#&%_m#afs@O8|@56 zmL_A{E`zI3bc+??=@Oex7_0q4$735AgYs`-kyZ>ulof!=VdWYN4_1<1s@T3S5HhC% z5E0|?1T#8*Nd67b12{lbh*;ZzYM_3U%1PoN4bo1dtzbiZ6u+0>YsrtUrv_Xg7@Z-n zN{^qAo|CbsY5}j{jPX8dzu$EeB@`6G9LfG_P-W&iQZuc`*yqWWeI>RfZispGagzAv zIypZ}X}Zv$A4&Otiel7Gltfh-L|f7b*tDB7sxLo0^znFlaxaNTWUOR+;N52(L#R9Cs>H$x-{`wy0Fhq;X8vaFscN~{>hH&^&E7a-xi+LX=vmj1+;gLM2+Bd2{D z-5ehf8d$yM*Wbl8SnJ^x^-97`Ddl5W*7LeU#BC-IAOOtUt2uMimDYXW+Yhf#n`gC_ zbx&W_QiY;_z1*%j6t^|5o_^%pl~p5*wzQp1JGs~kl-#>8aCrK2-gz=AAG$qm%JHrH z7`B)XCXoAG0pKA9@a{Iy*MCQoD(1@OQpeV*2l~bg-nkJ4izvnt(0KEmrGo-k3z%hA z1@S;2Q%#cf!rvyiZx^?b6#_a|@QCnH!9^Ydc127ku%J5Jm7YNva67gxjL%9mOlj+e zPKxLYf8aTd)@ucs596bjoP?r7C-H1J6*dkYznTguWVP9z9?kYFF8sM_=Yqt=k(DX* z#7$Mx22ob|Et=sbQ1yd;!B($9<_6WSg~NA-v2j~uqC+)CR?}GaxQD+$I86RwFJg; zJg4@hMa|9E<*b&`gSN!U(BXr*agP)98hA$;esx!#s~qzfaaR`ojF-6MJ}VbD3}=|G z6>CYgpIB7=w`wj?!U3z&INk~8thUYsA+MPbE5+oZOq+i)T4`ui(~Q2Bu+)Dc<3mAM zw){GD_a(RKAGgR9Y%l`g6Bhj#Ev?I2_eb%VZFU)E_7HISh0IIM=I--#zCcp*PucQ7 zviR^JN&42py5LwhT-2z|xx9(qE)=R#GTSW0(bh1@t~felkp|>?dgX#6Wm=Ppz9%y) z{D6SN)m(Y3-HwFRaH}>GI%pCKjRdiZ&>ox%Q<%(wzvFPmN*L1HZ4t^rR=Y5~n0CU)wE^Y4L8V`jIHXbOK zsXI!UcG$mxg7H9OiL=k&Vu2`OcxUd9V*>5jH(sc|_-jIAPfH99pamtwl=NR6O6Vx zv$M*)K+6Urw1gD-V`)*hCE91Z%9Dp=9sImI814CR2PA%1!l%+KO1DDPa zVl+thpmty`@E!S9DCl5A%&%PDtROvq|i8JH=cavm1Dg4YIm=?|(@e zH0GZ~eI5WaXq?u8Z!KdV&Jbk(TpCk2@nv|fQ!?elFu}A=LvHs&sBFArG2vmcB3E6(=1KG$H+o9*`$z44fk* z^=zW{hGMe+MDt}wH-e9V7Qb3~P4NpFXOvqkj@F#9y$IBp2xlwf$TX+ccdR@pK87&I zT7RHNu*znMqij!%d`y%a6cn`y@JF@o+)KYhh|}28HA1!FTPnW3^w72Oi1)*^F~jE# z#e_78rTivEx;Dx*a@Vl*z+*v7F6}xddSH3*0?QX4%WN}adEF!mwKa|Ou~Mm$g2=+p zWYM;*`jzKSqw9fXb0L0x&;&-L#X1v4Fq~0S2&{DC@H;%}k>U}=k`e5goHxc!>F&3} zk?OGHE@ywF2zjtJ@E~tE??Yjvnx|r`$s2A;gP7KU$N(=l-9h@yN0U3-3Z!5b% z+pXQdxo&4X$uRW@A%uq84-pk-?pqB##sIu4gDxB@Ic??_omiBT+B^*?G#OdflSGK9 zq^aenrfbHs5Dm~!KWut1)dk2bye}^~V z7qGIN)zLV)jY%rK{Mh!q^hr$y`H=I_?+ z)_j&HIh=j|y+QN#Bder;Do80Tg+)TLM+CdnJ}%{2lrLbXTqXj)Z_kh^e1+G#Dl(jI zPpBL90j7A@`GS4*{FI%?W@`(8)4*fMt2#z4davnGxM<-_?%&xEK+zS07+({V<)8`M)uY1-+4q>z>t_qU!f*jpcmE(L2+e7-V!X zcwWx1UrP;|9LSg0+O@U@rS8@7Q7ag#XBIyU|%fgnv(7}GNM z5_SGQfebq^%rlbkvueAO6L;a7Yv;Ld#pePwS z44WzO`OU=jS$?^b5)7X@Z>h?#oZhjqkaPb}@IDP`vIyxj$F)LSvSC0`Ic$u5Z5cKq zOiRcSV)mJICEo`gzg;UNT!)a`}CKDFa zM~v0x&4jJbJY-mxUQQ3}k*U*NpAEK?Cr3O-x4j4zSFb;?GAAw8)$0_?jDDghXu816 z@M)=-{vK^Sd%U*n?UZf;;3$GAX26`;A^@Dz7UfHiM$K36>+i9mIv7M$gc*d^2sR?M zzP+-s&~Be!Iom4m)M-5==vpt0Op@>#`vDPZhtAl#839YtJUP}!tt{o2?6$H+=-30E^Y5*MX*APIYlkBDzxoZtGBt*mEduwhLdv0z~_!&o3uv<(5+ zjB^1Leh!&hC7ie_(b$WeL2WAvUNW{U+tY2uxH~&R-_vJrkr>O%{Didl(xrIDvvGET zVAuoX9;Cdv1>9i5NN=7A5Y!J#MEodF_o5XFcB~$oL^#x3ZY7)n%~{~{`uZ918^Aa+ z1S=F+EX;hzv=Ke%>JFg|%7Wt-Rq+mkUe&lhpC*Y%?)G^m?CcuA9qKFZY%2++|OFp4BqPj z2fwl!z@RP}+R_Sgv*J>AaQ*;JdzZS|uu%lr9%nf@;$sSH@N|XT)9()Ca(o0V5^HNV zU?7EI&H&+OV|pwdrtbl_5&1cAsYjt<@Se6^*=1k2^JBbfFjhniyKux!{N=w-thm5$ z%(4k&nXZJC>+G*CXFRvnDQ5n0SqC9F?IJi4RCxhYg~(DuG0IJBM>C~=-rA)}~eLRoZ)cV7|=tYtuLCtoGA;3s(irLiDo#< zX%Mu-{B1!xqKe6)$8^8^nz8gQ=iFF z%As0KB4|r#H%PE*9*m#s8*EW;l=!{8rD_4JK}{PKBv7*+IKH?#B1M_0PqiP$UaUY6j1CRY6EB_LYH6}krn(0w15Mjs4*7s>w zpx(BIP%5y0ntN}zmKob#J}B{C^vCata69FgDkprF~6>ZDflao~vo0yY$Zw|WgB zsNuW6$dE&bbdVre1@&;r*|z+%W*Y1tSOgT(9!N|D7VpJ#m4&qnQgD)(E#VW_w19^C zSZ#5_QOaKAHUT!Hwyd;WHLxBW3j@Y-_TGS%gZZhbqD^VyuHabUWr--3zmG9KNf=iQ z>`pY#>WG3jVs6y$gO%j3%RAwicc9BmpFAnWEYDDip=zaL?^E2Z&yz(z^(UaPlV=93 zu(mQxD*t%XvKD}mQom3O)?VH***sJp_1fDbJVFL-MhL#B9~a|y)QyK$BN2WXG$IP6 zwK6)C%g&QbazO2-?SYO|Lrfzc!YBvmJ|#v%j_w=%#_RnAzl<^dn*7aBPMtCoZFNdO zqEVGk4uR$iSdnN*2Vibkkz{4-+ml}cH~X`HV~u1yxB4hjFyxn(E@4j&CiE}m`)ODZ z{bRHcyVe+6ov!g#rH1D8t>-w{nWH^<-woRoHSu_ zM&xRf;Eo~p5vW^C$lamXN8=HID3NX02%eNu z@|epq5pMy%1H*EZNTtb@r5`D^6Py`$@e;M7lI@K0#K-8xcBZCW=w&7=lKIOAFWc9q zclthK4lOCc^qwa6dyX}jetk*B!*9-3PnSx_TFFYklY2j^(q&Jwc~a3YP}kVGXF1i! zyd|$creO<;{IH0~!wJVtQBRdNQPN{wkmOM*@>;cW;a#QR@+$&@hxxcXURsSEormt0 z_fu^t%nLw1S5~7RvbCR|q54UfKyC3h_0$(MFTJ=9) zdCakyeJJzZW0R7mL3iYl6uSpH<6ak3#j{vZS_Dmj%Fsm0iF za1hS%Wxuqg@CLy_)IvS16Shgv#O$MRA?&!)1ww9#Y}A7)ATK4?)w*yVJ}CKR}%E&=4SC;XP@6gskVDYt)xeW_3+-UrO){2*hh|4SA)Y{cf|roF`dRm zu9UYN;Fg4Kq-A)`N&#aC;I=k7{MhBB^;k+=OuA7vL9Dr(xR z#m_pVFHsYPIrYYHc@*kj~TO<0ws)vC;q z!%mH=EHmThfgrLGxO}A{ncY}-i>SB;(4U7i8V>TEG_R+`}-?bM@BX5+X(!0QpeE__6^yj=+5 z?rhdlU?91&20;;G3k)X)4&l$6#T_oyG z&H%BBcwm2Lp6%30v~fQyuh>5T4?Z)7SC6-vTRx8#0`5aiWx>iED*h!x1T~}AQ1)yp zhELwtwOhe^>igUlDfBf7(p^EBC;k0s{Yv zSFrsjP4QoN1>1jSEcqW8O#D^%Zw%r830}d<&cZ|bSMeWC5C2S9!cF>*TTA&Lt|ZKw zipEx^Ko`=F3-xjM@iVnE`NyzXx&NB%KmO{F{tI65*LC`PUjKzxu>B{9@_)CJkgZ;A z#@=|=@X#ZTk@^jf1)bnU1KmQ4Mk)MB{F8Xmtnm~cd$#zyuW9CWd&&z@_@+Psr4HuU zo&uKAo@eLdTdcub$NQoE^Sz?MTm8qg`TJAdD2iHq_WLr)_ja#W*q?$ApnEmF)6Unr z=Z^P|=eFmyxBKVwm!8yOp(deMd;9zER`0K#?~9#{-yibdWd}PiN2}P>o}W7vJGqiA zzmG6=lDxkdw06GOy`MPtpF8^k7T@0|(kto)^`btKkyP;&^1MEstyZ_*AKt+F6f{sz z-c!4uea~1se}9f$S3J93-&xKbjxHT(8`-!_zw3PC`)RpI7XspWRo2q=v0TNfO%XiP zCLkV2meAEfEo7>m_+j~_06BAX<;if;8PocBwko-M8yz8aq1Sw)8DLnZOmeio@+8bW z!i!%@=w6A0606vJo6BUI{7Flt7qsb+H)CdQh@H&az+`93(eh;|~ z^e4O?>PhBOv^5Y5%FhlPAKvC}^kLjiEPFIKX{+H86X$!_3M3tfvn##V{S;i%iKJSX zDb^b_QfmIF5Lrj@=gz>jBz5|sgx>g3@lemYw-<<2T^TyV8~JI^qp|sEMjrk1kmH7H z7U`hF*(A92mQU6@RNqDiBD3#Hi`V<`o}|CVdFR{Q`PuF8jlF@6AJ(&bA%|My`_t~* zz1D%?tI_+PLp^7U>?OOvx8cFrM3Ro5k`e9MMYkm52n|F!xir+FiVWV$y%+39(jPlz zg?cWw^isDEhqpE^J%i>+UD)zlPEh--9{4Y_PvHe0$p~S3HsEB&T-?ukKr9ZJ+=$Bj zMM`5rNNPr&Tc%P7-KO%aGEz7RLV*l2KMb#ex+6FJE7G@V(r9ZONX5YVGlITi_rbiO zfD<8#`+-3+eBG+jON=qq6}0=tU%aYtV$#nd;KaaNOBw=(E=KdF00T1o6LX9|N-uX6 z_l+n7Jc&<}Txl(g3Zr&~ElKG_)n>#(MIw{!w?w}MEcsLJE+GE&y_6g5($L%XhX(do^juMp-GO$*adc|IXICB z)$Pd|V|Y3O7#x73UehFV4hUpvwg~iqJ@itB4hw4E_J$Z+_h=Ts?;Aa>`=qCsRhv?q zhgfr#_b`!JPH6UQGz$kx%4I_hJpHPE;4#5suW8)w zb5SjagRr65rsklE`W{S`c8#8F1=t8RxX6NqW<4tkX}}Bj|3j z>-dI5pXh?>IJj`&W2(07+zD~&H4tVNC7)GiB4U7sp5I~o;vw#t{+rF~xJF7}}KZCcfurLz~z$_%}?yOuf#Fu6OPssA>;lZ6-07kMs9!ibyjl1zGSE|G@0$+kUQalEoKBKbUCW-GF*1F{kDrW z(o5UY&EfbmCnGKfK@*Wq{X;h4b$-0WW)JhH(A@#wXp#b_`tmYcJavIaZ&7Aa$?Gnt z2Bc`@g^J7ka*5yaa?eX&vEf z8BR9vaQG2?6-+dIOit!S=e#mE$3{UWVnF85G3EpT_a>y8>n+<2@a^?)#a}KSWa;I6 zjxwk8n^Z%K&MObZtA}AP9^g5++#JaK$&P#5JFzLWm+v85H#khG8*ZNlTRwl_@nPXre9uWqz0q( zz}zQp++`ku^>zx~GCWdVG>IU^p=xX%MtvGR4T&SXRV_LpRsvhxan1}k^S+If;W$kdT{O@UvD%d;nmRM^Q)+8%fh>&F z0ErSbtLUcY4Qr}5vaD5FSUiEVePX`8{CG1sPG#DS`SzJebz54v;&ZA$%SP z?0(%WqZrc#+cda&oZV3{)4S8L<|oKabId>NPfu0gUw0v2RWa9>{J)5f7#}p< z>}Z3-toe7zq0GA;G_}s#w~3lUL4HeNA2|4IAkok$XkR&baIe+$ z{p5|28i4TH*;f^e@2h(s>!p0f*VkB!o7dCdc*)-kTJAd04Yme`6TxZvIbg0h8#0IX z>Jg{8sl!8#Y1O;)@~P-`45f*e<$fQqn6srQWPjI%eoY$Y^a?M$Mw&ZzGcEfSRC~x< zhM!T+R(D=7mX2S;;-xOQ*ODdPPp|F#Br_Sjmk6)c=tqt#A+oj{hm?zfZqOaJ?EBPc zoP?ae`jjjsGf~}k&M1?>5@uL=^0R(~R3xM`Fx%_M0Ri%JZEI67D=}>pS(M-^1R;b= z+Egf-loG)MFB7RVUrdFUD21bPIiDmNAW@s&hVW0JC;!|ok3#rYW~qpvl4=@KTmmZG z%O&0Jn?^jS-CP|VL5bzK?wJIomo#vdJ-7k9e9M;DqF+s;zjkKg19m6Naz*z2tH#7J z`t~HsoKB7KOA^M7GTh(tT@NzMIddoAU72ktWVkev1g`G7EHiOc9E`1s@{VekonWBL zk=R;eUlN@-FK3hiQt9Ql#%vtLj`o*`mSBbvJZU@zWj-<1!pC`^Gga0bITn$=tcRd& zf7|PifsghqRo}Q}_~FG2pYdKrmJM^VkL^kauqqRKxpf4uAHTygVXg}4(#DUZhVc#B ztns^$1C6q;Tw?hU`dc&A%c?|Ec!XSRrCb-sNKLw}mAgAov|05E5KGoH&WGZ|9Cq2C zuQ@QIF4A-q3F^t@{^s-ngiN;o{AI0MAm$lN|H-W*x0;s{CZt>#FM(=f`j;-fnbKWl z;Kcl4wuhAP*f$py1M6S5EXRz~wIkgHNj+3m6DBgl=^lB8ezw_fI>@a!Nb08PGz>G7 zC+7?2$vD_ML}>lsJ@Ns~zt4;iJ}pR-J#c>0>2fD7svs5}G(t%C$rFz6JU(}ccInG5 z!7tKF94WIA^qJ;rljI^8HvSbxQO2Put9fuj#F4XPBZvA+o(jv0+R1y__L4zEBzT13vMbZMKi znH4z5DDtt-=Y!JjpFZ;YvQ!^^BJ+uxo~fT8vKGG)Kgb;PTm#+s^9PP>yH2w#ft?(w z4f+k0Ok!;Q)dm{>vp0MM_^hi|Dzi9vtSHuvVvb>ftVkX$u>%G&Cs;ZjLE6bx)pj#m zcbv2o*1V3{90Oihi|)JdPbyJZG?;+NAjb$0+8e|`))t_9p5bR6Yd>%jZc<2>svTZ> zmkJ3)mkIwZ#t5%RFULTbElL4Tt{#^6=dvu#b#>hV@?Pgeu1Ta>S5Qfl>;1GCu&L~6 z#;0(VP((F>nP*Z=Z3{|umW4>NELbeEgVOZeQs)mxxhA>JSK(z1G0+#&^0L7bv1oXX zLW|16rN(k~!$EtzM!DswHZB``yb?yp`S6B3Ldo5BGLKQ=Xf$y(eqtpXyb|<03t|?H z_7S8crfvj(0&nF5i7jZAFtkA3n&lS1ha=5Bb_PN?R|;S9tWdfZ3XjZR&R?355NA>P zEZL3&Ji#x(RG9PQ!ifwYsU0X%n3lTL7*pk@e{fh~upclc%jhT=_w$4gxc-qUb;6Ke zhu(ClhUm@?81s;%e-KFX!i?ijd(&849?4&2rTxJU20v>3jt)n%>CfjDD)N;atX|2E zj8pZX0^mnEz*yNJ@8d}nDN@EY-*9l8=!O{;P+wKN;bKmUhNo*KgPZasr_(+FhE{~h zw`>t91{j30#4wa8K~c-EG9Z)aR??^hl=-+(GHZiVwSb%X-@$U$(B7WtpRlBUEh;*e z)aa4d)BkKV5^P9K^&3IY3`|mYJ(tfhDZ^97kK6EI%*p;jsq8lY#m1}#(!YCq2=>K@ z-w5x!rYpVkkPX$m$nsKZ-=&?-X^GJWvFnS8rX6N?B5nRqpd49Q%C}tTX1La(qg;(R zg9iyF{(}%)AwUD3T4lA`aJ8$rE#~-%9Cj?$hSBeGS=4NX^O9FIs>v|f78Wu}pd-Iuv&1PlyXwtd7Snp5t9?4kY^6 zcupclsIcQfQ`hyISylno#8!Ag)jP5x3SDOyx3ulywaGOh4Pgd_CSCE51PBCp-pufI zyg$*das_pw@{QhlNRppf!wna+#ZuB_=h9R&WX8M|-lq=cIW)vN2JPQQ@smHBr_pM6 zA*VzU2(RVU?D<*H>lb0&b+wVvw{l&`C1sYj)i1+4OgBBVQ5i>>2C%|1*@oM*rlc|+ zsaIFg$qhBe+@@Nb2)wY?^U)P#_kR3gQJsw zSX$(i<5$pdyE4sWB~XbvrjtGrZmEi%f2^1H$YT(LAiw;ubq{evaZX>jrKgaopIk2- znL|8exyc@jePPinIZDazzMw3ZHETnEK$(peh&#e^MtO+1)JgXFdT=19r-gI>^Qa%I zOkCapN5DWustIF;p7Mko0XPC8ka*g$~9-7SRG)KMNOGW{ENBJ^o#|6?On z>1PZGqSa4nK3)t*Y4si%_GO5-*m@c=!gKe||_}2zcqG`VQKBq#$jSTAt`nd`?P}qD0tRLW5=4b}-G$yw1eX^IV$L;TJ&q5imw|}XJ&Mr=- zMz;T=BmTWbk%NVYL7f|GRGf`>_7r_@@K-ck%zHVX^(a81O$9v_BlP|I&T`RnP|f zr+)okf;Qkkgy8>)WAa~h{}z7#p9tE2%ht>i|CF--cafWw>%%Gfuj2nMaQ`*=|0Zz% zb>04+=YI*@fd5qg87I=>v7O%{OZod0GwO5XB7w=p@UroOMxlP?X^A(8kc+(Y1-+q5L9PL@& zWiab_IXiBXaen%5!h$=JF{gtix zX(|*mTH^D1)$eo3?|B|J?G%3+!`;N0fhYD}Y74a?g5$gs*ukPF+2(3Z>jO!!!$ln@ zhuweN+beC@wRtAAy@Z}H`+?;|rOXuUxk_~N*m-E6kgbVz9}VDMsnUdE+}!c5^G;?``&b+=s5Gfr zr#jqC7=r!)v?H+CgKe459^bcQo&m3y`(2`Tt?y?Os*C5HpB3&mlY84ad<~-L+Pr2? zGl!*6;pggJOZ^|7iDHriI+q=UDI0?!53Rv?p!~$SiG-tX`pmC z%^v#lQFo_T0~lv@sEKo(dFYU8VEA<%rJQA2NX(Herr_b ztqf@`#j6||1oH_JAJBRJylJ6FHEXaT4jA5|558d!-vd)gT|*^2i~ojT7Yzygihpap z8<|oQ7hJfS0X4t%OZGEmZO~4>?OcE8DTC7nN~$N76ixFu9w775R}LAIpNbqvP6-a> zl~rS#Ibvvf&AdbHctri1maie~lBk2yoyc{?;rG&Yx%|E~OAJ7-xbeJFZbvbKZeAOJ zWi3Z5vc&Te^ow{Yc;&-~`=*HLmohhEO!IqUJtiC&U-uPTm{celY(!RdPhZXjV9<2j zTVh^lBCK8&Jc-T{W{7@_ghiYUq0EjlcDS6{jFjaQLvpx^xr;2>u47Dyu^F=3+1DQk z{MpNH-j_jaVpPpE5nHe(d#t~9R5NIdSmgp=`z+y7<<+3gkR&9QPRwH9N+IQT`0I)1 zbyY`f7E3^AA6bV~`Q@MW^pnYG0nWNK9f#E&easiiYV)p}aMUwSo4Yo|&V8aBKk;&Y zm;YXf&-!Uj(@gZ~>lV$U^`0sc&nZ$@Dz6`=B?~$=s{o9WvC)doo!1S#Y$3ukM`i%;wl&OjL>OncSJt>0>V^Ad^Ey_PZ^31hn*4 zxgg46Cc7S&^787P+DXQ#XhOy~Wz{=J_rTX%NOZ>l+t*Ry1w|?F@HU0^q4)AbIvkhq z3dg%Q>J-p=RJ%JpqB#+Bb<$+M~vm^t0od;0V)@o@9exi?^_ z`t+!>bxEW>voia&jEnxzb<`O6W{^O1PYD$biX8Ap2${re4+RHLj@=;Cp*tGx>Ae{x zE1Y^`LbU8laF{9uY&Tnk<&w;nn^*kGRS`NVrC7Cg(zxpWjP^T}syoV@f&jWQZ@#te ztQ3mGrE+bA9~IvY0+Qy`C|u`#ii$+=u((Md6rjv7jqB!8Nxycw8zCX4ngMOlkqZ6w zsG3(kO(JWrAz3rc^$^}j8Z%E}E-R6`P$~Pag>cBeV`B|f69neoA;RG}fAVI%RNpoQ zTA=As#b}nYKtfbVk*1z{#i32-R@s4rDIMgO#SyuWFyi4jq}Jjx5J0byGFWa`K;wX! zlZwTuGmP^Wag{(-2f}lVGsGkARm(_0ICmjIYeNs4z*7qPf2m4K!o)C8nLCUv3hc99 z!yDvJ_K8S`^i9|-V#M7=5$fI{5;W=yC4GSJ$oFG~&%qH6;8wi!$JvKkM4)@4PPg7 zK#b-*Me_I#7NiZ&Rv6~=t!$0ej}1Fdkh++!s>Zw&iCIlgT2Vg!11rR)j=ou9ZVp@SmJtg9+6*1A+BZ-6VrmpTMpOW=sW zinf+&sDo_y*1-QA--XfR8yv#{hwAxbUQ0t7WrbMoMagdqxeaiA#g;i71NJ|sVx6JnVOq^slu?;3wn%rfhcl-bCfx+5j5HjyY>eSQwJ)LS)HbFh}# zJofUFSLrYMiIJaHLT`?G!wLN`Xn&e zS<^VmssTv@DB<=T$EfJcx}H|Wf2^i6oAeV>1rdh8~$-TI=-NhT1$Aj zJUMs|4o2xqKUZ#MXt`1i17#}OdRwWLteOk_KCja}_kG5yBirw2QqizJK6<>joI3R2 zaSc;79!J|1Ca-((J?%76C)BRAfP{+Amo8WI7?vnVrJ-v}*u4e^7iWZg5D+{Mb7R9O zMv{6M0~yp6y4XU>Z>?(S{@g1ZNJmE2DM z`u6Sb-R{5M$6!?LbE;O2z1BKsSB*L6UMp?+o7+ZXtdVP0+m9XNwT6P0(n!(g@2X@~ zbG)VlN)AF$9m%-r(Uxktm}pN^*tS&sWI9VMm3^AJm zAWKB<@b3^J8va3K!T`Z0|0V)UE6}dDxG?V~NIhmE?E~`Kx@a<-3o}l?LeAGmAk)xk zs zR{c8WS^MzzSxGlXO&|W;!6H2ARz2WBb(9x7h!dq1v))Aysi;im&XA`S8oO-ftQK;u ztDFj|tRH_>K3L_k*b&JfH-m7DZP)dMzJUway`bFa;=}6aXqL+(Za}Vv!(5(A5LeLY z!Z3<|`dRoo3{_RiDF>ObWW-6}QN=@0h2-ALHjqMAV|h9~dAq2dq#0JcM;hF=W-nEF z7^Pa1(X!98utv|2-v*<@_=Oc2J_tPiQ}N0m$y0j;eTx8FP3Fb%EzJl2M|NoKeVsRxv>~%a$0I%UAQR(ma`PB`3#RZ(BKedj zRsVh8{B)iuSHxQe7i!xoLvie$%T-0mF~f+rM&E>&Jb||De1b@o7~3WV)5Nv@HZTn+ zRr^749R{|nVDBRimymt<6gRvN)Ojg70gWPWn|g7jPYowlZp1aLbW?4A%4{Nfc|H5SS6{&&)g z_=P_RyrE{^X1+x`7H67Cy;bD@TX+Q5L1d)yH?}P zoGL@S3Aoc+zLCn?5~Y$N6OBho@?sDwA9xkJ1&G)sHdEYM7h)=}RLofmdA#KpLywkvL*t|_2QgX%O<9>_6>W%u z$3~TV^Xd9*tqIQH89x4H|mR(tP%rX?@mmHI7}Bi6s7F?YOvPH^Q2+l4G z-+hssBaRs#2!@xs}y=KDa_ABnk{dW=vcbeRg1YiC`5shbHb?^-M3h8roGScwH&cw z_osYoTe9Z4E=o*0SO9aseit|#gDL$*1vYkwA4@+4BbF;<{A*;s$9>(CQ?^=cKHu1L zAjF}gJ-&SRDV+UmoKpdA<{?X7L7KCt$VW$a_0thrGM1b^v&Y`{vyBq69CA(cX9CZG zamtZ}z1y14l!Br?2h&#N9D1^{ELu7fX|`@;%EVRFJ)2XTTy0LeeqUZ-JrhV9cP4_d zvygDc@d!a|g2yCJe-FloUar|%o@3|U16dVu_2jg`1%xQF^!sFPO4Q^@cHSaLM89C; z!T^=kRhdM`sblGezIT@aDlO#Qnf?>DXKO`8ukTJh_a%Q32LH?`{03uxL9{H)EF6C^ z3e0~o1kC?}QD9{H*OGMRzlehW#Ej_=fAMc4^31=e1qE2Te?;V&|0X;CJ0j2gH`xB) zkeL6r{ex8hKSAXG8GZi?m;Zy+|KBC%zn%Rb2>kCj{qgJX2t24;>+k6O?+E-~5_28A zSacB>3Rr_nib)Y)qPNWy%@jtQG>{nrGiujo3+-_p`a>JB_YW~~mMkXm+FHLQ=6lgu zufHYcY-hZ$#;-zmcP$ew+sGbMFUH=FS8EM?)i*g$cf7M+uRU}vRZmqdvMsU$ug}fq zpYMO3P7HYe)|hj?-0eSqes%h}6}?86;kA{dMZa}_*YWwq%8%ovj2(o-KXf>GKdikh z%!EDfH;-w)yq=|h0=O>s^(J+kJ}Rar@pU|(ADv3OzZ6F+0dYm6Pzl<+pFbAth)Yu^+&@6P+4A-Fp$u^$nwzOp1Z07$zfs9Am47;5eK9azd1jU zhO#G|CAQZF$;WvUhJNYRvGMSEx2E0h%ZIf`SPrSK)B5I;Dz&IEmQO*Fc6`x`WjBh7 zBbl)!g)Fg&@Uk8rto=Co5z~d`^B;0y3(7*K^p1&=hwYUW(efIF)43;=@#0#)ROXg5 zWh8vJ(N;lj@sbOHUjd|!Dp$HWvd$JUjeKzRDy z?d8yI6`h#R{j)O=i08PPM0nRh2dna``??EKl^2(vu`Tjawg=1NT=#x<2(uDx3#*)}UQrxbY+|#Eg=Bv#YU zY|?siOPU?yMd?LWUpM$8L;niQ?NA+Q{^w{KHj8(=eo=k(nB206&wSG2z*>U5XBypa z`lz3_hx)p&&_&~Qum$zR0Y10^EQS7#$QD{v!8&YoS2Aq?0q|nU%l!*d%LBLKCl?LL zfmZkEpApk2rwX4gq;1(r1!-HqVCMG|hV^Tu23T*I(G20P@TJzg>#FaktqI$}4nY!H zNezQUmI>QL+tKQo0|a|5@TJ-l^w)KBO`f-LeWHL(gzR_+Ba}S{-Hhv21JKcH9TczE zNkYs*5<21`)~HS=TBPU}!7zFML2FZ?dj`{mLGgR(lZ;^Gj|}``;Zgako)|y)p#Ugq zw3_nisbe7um^X6>c!k-m?9w3@!XXU41WE^15c{EWT+M*EOQjD%uB(^5^Is;R(I(5W0sVq5W~(c^&2S z~$G^kRO2QU3ij6YB~ zkIw}RPhd(!6nAdFo>;JnLih0x4a=$Zr(*5{Ix+x2Ty`#F9*=H={c~5FwlRMmN+RJ4 zG-B@&bfHa6j`0wtChz1mOyv=cqJ+SV+N9!Ly?qObXN>U3$c%-~aR9c|o?aq#?w)2Z zNX~n5rmCuyD3x!SYlOy9mV5M__+|PFPvN`@MYk|?u?eA5MW`@22Jt9xJy*jjsbthw zvgS~<<~`j?Cq~iedOxK|A+McRY*&NL4v^zlj6c7jY(S-6h$d z+*s3XL&?!40oWP~CY+yOy7R}BEud*jjs@x8NroU_1D3e`TL!4f#mh(!iS@|2R#6p} zP}pmCBh980OXZ0ltEzkTB`vd}Fs#ZWqka%7q=VY9dP~c**<-s%%(M2xTZ9gMh{$iL z(RHGr>0Z*s)5~3@3oZKz->vtlC;VVSe3b)>PydsrN!#(RfLgylD;a>dl(xSadVzX- zNUaoH+z|%pnK>t9bikgGmlLB~%UeZ9aJr$OBj3}vTa4t!<|_p5w`KwENFN`fd@QiZ z3dZ$R0Eb~!-1ulBRjRe5LJ(LiK&P7(V1KVihm zy^mTTPvZAgd^#g+ID$qCa45!pJF25M=hGNlP1xCcwg}S=RBj3~Zf%Wq{(K=(#~B&A z_<1fG3FRX~rJY;`BLBk~irJ_5nWB-R(NPg%VM&0b9%@h%WZ)hSy&~&A%m@Pak^**k zh)#C3n5IWQC#94jmU(^6r>m=D!Eo0?LGS)E9lKJn`5Jm7vaLNqJF*d(Y8vb!wH}uK zVt@x594j99VCj5(l@X4p@D`u97#0{P6gFnfRFbwdi6#_1h(7ZtifsQN2)JGwb`=w&m;q6GI7!(vBwY+yvyQ zBw8w4%1)i1r7WYL{JfGJAOeMZzl?zVb=&9~V=%a&aA99z$4^J^GKR`jV~$s7xAF*J z`ePSH|A6YDcg&@(4c-5RXO=ets+{YCv4H2){T`}ZbD$D~NI*E3T(imzG{$oPTBwMG zu#)2(t*o$m0QOA|gNp>m$^^KBQUNQA6`x9u;WD;5N;tg;JjzAYeSPKimbm*ZLH!6v z9xos{dgqa2yGPIw@}=4;Pm^}QREZ$yhT4G+$QTDUs5d=Nc005E8f2ie{Uk^V^JiN9&yXp)3~?LTNmN{+U!r;@)m~1K z?2}sh%eK1R+yMzOJZlIff9*UZc#K;mGWI4o`H#yu-nyCLT%piLX;(JUu;5#OPw z)znaNbVJ&ssxMLhq5iHQOG5k#N+;Y<95HWr1@lk*J*TfNN)Q}iFkHfdivqMcfa5tUdy#z-Y zk!4`jX7s4}(-~8GSiM!{vjfslCsGvTz=|E5`LlW76IT#z{YLybFqVn^>RSW=E5rI}2)s^V+IEUHmIfC^T|u0VR* zeU@<}1zW{v;-6y!Z)U?wj?UubtBy{vn^L6T~QlyMaqeWo7KV2 z(j*JTF@5Kusw4d4l*?OaW7@>sd4=o(yU;WuOk8ORM`uJXS9=5ngGx*SICs$rl-0}% zlH&)XGY*<9c5LI?!lu%OU{*zW8&V~W^Jl(%`N+7 zl;9E(MS1mTRZEaZ-%DAhe3JecLDNM^7$KZKH<_Jj;hb0bdi$Ozwnhd!oX?N*#5rb9es=!=KE%6l)iz8o3}TogY(Rk;exo2Wj} z_R$PPKe267riTq~Qy5~rRp=JNDQ8YRZTD$ZQ%9SA#KGaNwmKKSzHF#Ia7YFv1UM2Tp=EA;JD7%SWLem|DO2l^$;(!fINUlzD!ER`= zIUR>V6#oS-_@Y^!x)yM&puHYqUWk`o&8~zxlUd?I+Jla*TpC~h6dZWLL<4G<;;=nb zl?ANuMwRZZxoR6wZ?eX3eV2LDAsYDSz393>u+~}DyJp4fse4s|n0?40894QZ7gDn* zK>fhOB{kc!HB0@R=~-GYmeKa8FsY{t1B5VH%f^#p`O=0OEbOXE?LQAj3G{u}2qZS^ zHA}{|AJX0}t4)?S4Jgm0^(Q{n)C+=AbOevU8~ccNsa1+0Xj_@oqu?4}jmH1YD$YBA zIM#(bhl(E@CY&QYcA*hR64-q>JTA_>=Ctb z_D48WBpIWp)zVjWl#5Yv8QpF30U+*lu@c72r%;$oY{{Wjw25*^6PAMIqw+45CQOE_ z(3Fh;BtGx&#d3qC-S81_2&J{gfCqh}g=^E@uzSiFs}}A@C6+~s3TH!>Z{#-MiPy+JEKBI+FtXy6kT$xSZe6j0OEDxty_ibO& z#c23Kx^x11`#K~?kyDkl4*b7J^B`oBXEvwqF}?|U!v19Z&0Ua$N<|gTGhc9nbV{gc zF_7BtM<;^WJ&Y*a+wG6|2J)z$X;NOh84;u1qS5 za^G|Acgx_YE78T}3lc?;gMCw6Eb|m)zgm2=BD=6J0`jMQ+{j$5=pO_Ur>Wicn@Y2% zNSfRbkCOlpd+v#=iH;+y=Swgt;g7~XXCIzH{6L&VBNR)+ZxpMfaf#1E8^}MhX)r;Vr`WT3fUG#WJ0l$M7$N}Me z=VT*4Uk7a!o?t_&xeP1oUVXw}89P|jFWcKBRcG?xevQutY;v`DIN(9 z8kDF5o53k8iXOCMKdy|*rexx$k2J?)0#5#AFj$0fHnQwu{9 zCS4LnqyPFhv9>e>jhsy_EKGGRK_h!-Q)AGRv8jWJquyV~O4imE_J2P#V5X&~r3W1f zTkC@!rFE?wbuB;xMHLA#&?!etLn{Ye2UBY+S`!CL&jXonZfav6lb8MdDY8y15`afa#_naotVp=VoUf1&*h?7tTP1tQSkHv{r(@SFMg$67PLL-@z# zzY_s0f7`_HZx8{|-y35=x=BzgpK%lkp0_=n4vr1JJk*mvAa8Y!bs2V`B20VQc#k)n zjU-DYdD>&{fiZ6Rt5|n{65-e`9btNc&p)pRs$Sh+jylHq+B}~3ACmUYlB$ZnD;P*T zcU+xJoDq2Ij7VLb?dOh;cX;qUv%j)?a(FhqyhbZNcP}KpHovUAW}Q6nRlWXv{#o?e z^m4wimt@s({;ZU|{di}6*HPB3`AXyZ{B(QOk@51xH~!ifx#(4y0=Vn&-q!?9=xvYi z$(&G)Jx_FaJq#QaxjkzW4uzMBkCQnbEGd=nyl!O4dN(0%AZBWo&L)45weAr1F09^f z1;qWduy7=`=e-|(j_zL+_5Lvpj{C@JZfJ*8bkD6dQp=SLch!a9EKh^pww zW39;vYM)R~!Mh3C&bhgrNi?k{d87x;BL$9h@<=V1Bexs$iK+XnizuG>8d=AIltKue zS&qph%Y={N1IR8oH?p0ckHP2L!PZ4tyeh`=Ssl;2oK;VEhaK&nd<6@yjoLX?gs-

    saS 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

    A#g+!x@Fd6G<<|s4P7~ty{l(HeV6Lgp}OL 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"T>8H6q4KuCUi@o=dr@~v4o}l% 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®F_sQsaXw?d1+;7^}TLS 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

    xR8j)(_S5@~Qj=cL~72aX5A0PzAQq0 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

    ?w%CZFIS=~bxPFUzlFe|fG1B14$ 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�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%0DE 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%0Ab%pd0$djIOTR^>K~P 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

    =^sJ$g<FV| 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 z z$(#y|wa9BLT@#Ev?wz@H7?QQMPDSyJP{Ng}|&C9Khv5cQfl7Ys!;A z4=A)%e#7sFj7=$(D=E14@1|51I8VpolFr+k; zINGFLV*O6c+=8r$dgf77TQ@}_RRg69(KneYi9xwvlSWre28O0#K%(pRNf?Tgoo*A8XRT~F~gr6yc@ zT4Cfz6V|ikBp|OC(y(iFY90%MuPXs-0UwjitsTnu?ed`McvsawEXBg3T2YM$W)y{o zY~`h#2)b3jP0(3!AJdlKX_O!Ua10Y34 zlTY5^Xs`@>Ba=0kNcPjTTUZ6NyJ7M{q!u>`w^Rb9q(qRsPPXu^*psnx ztaUA39z6S4i$@=CIqvw)6ST1VbP!03A?)%b1Iy>&hyD#tsENdci7ZQNH&bZj5yRlk zGDZKb5dsaRK4}4=<1Y<@$g&PJjft{seEb~7(Oqn5-xU-rrI>CQ_IG0!6>RTt%Xr-C zPxqr%Mn469WHg<*bF-!&j2~`VJkT?ltq*#aT0~58_?YOzinFRow<}zbz;y;dtov5r z2mEeE`l2z)nOhbe*=LBg+=Cr+m<=;`9q0_els7%tY!NPMoj*BSvTee4gjwwa>NqgSA1lg90&&F;4f@AXEw{yrHQvJsT#6zBhKHT ziJCv;|EWL$UpI{rvIMr3+ykj`E2YW9))tA}uZKGO)U*U4e-GlrTjThGBEhIZv|tL= zjXiTTJ%75jw^UXU)rKNl?P8eV>#)V)5>UBFuaj`SMw!BjlaR@AXEJ5p&ak95^eC68 zSbAA5*9v9EQ&yP_eFpIZOul2J&tiRzCUq9*N9%%b3O+JJa7a8A8|FKixNe!g^K+9u?3OFSGXK#MmaZ@X=Yy5S%aw^ zVu~tGJ)Y`&Diz=zW=-a>!yrwsK{TYP)>a0U>gyG`-4pPrHT~Y+;L&@3vNhb_DoKUi zCVDw{0ocbRBxn~h@;H;{a+g7n?bvrx1Bkd^;ge_zxRLhfa?tSQm6{6NF%P}dq0uC5 zwBTVu!{ELe+YlB1G8P)?OEsX2*s}_GpQqG2*8q#EL*lkZrM{0{iN=g>u6E3P@tj1HaF7jLOT=$PeJ7Et zBI+oo^dhb7l-8X;>I%l+^mDGY+VG?KR{bZf0svSjTdRSrcu$kbEkVA@d)g zf>`D*MpK%?LVhXp5bHR4pASZ+XWUEtYUb4vtI@){VmFku(;Kv@Q^;DHo6J8qtP;M2 zKzz&0owbq7Mc?ga7iq1#YQjh`EK~gTeA^;;UPU@?G7#%b z`tSDOZGALSSF+mK>SPD4>mC$GI1EEZ7Gon{eEsfvplY1+1_EF4L#ufB0a)%Ph zXJ`l`5-pU7S7u8s?>wo~?(LQ)J`dj@R8XuSjyO>~u?%x)FA7e1UZ!5x2JJ{|LW<)d z<2|6vtt_-}E~R1<q^{bVl2Y&CPdGBrMQdEpBw z)OCa=xQPiw9E@((4@={iWq<3Qmp1NUNo>zYu`w|Ty=l4(HCREd<{KIfQ_Y)&t)w?? zGEmk7S-mc^kQ|ithV=jsu?~f#I-?ZPv82JL%`SQo*h^4!`2wS3AGsCyI z5r3bqC^MN*FFMiwdbqM1fpEOED>}Xj6&%=?EJY2?qUkUxw22_F(rgd1bUD9+wT`;$ zVCD&bdC&dE%Mog6iC`~^uw%F^%>Kh;f21D829Az*r?(B&9cab(^mll0Uz3%)F5dVm z?BKBk2%%u7Rgf|H^DgRMK+RKpvbc==cN>E`6qR~-@93GpE zq`G}m*`X5YH%qDFmUJu@rj%_AV3zgw6%86#*4t%MQJ7?V^Pzv_^fItBaLkgCmqB`0 zI#C$Kw7{O;IL8{QOD&dc*!T@;Fr8s{&5Cf&@VRP9y=h+~i1H`1^VmVFdBrV|h`|hw zprpvLfl*p4TG+6q@5u-p&w-paZui(TZ`hN-oX6p0zsXcsWHK15Bb8I2ZMnf~Wk7To zv_n+Fk~e%W0!2m+jh-**;vm6?n~z?KKAMYZ;;J}GArSg>B1%SvVeimrN(5;5 zcKH0pg+T4`8*_}`yaQlJCQ!(q2RyTlglUog70N6#tGP1?sNn>S?9@wFBS{lRbu!T0 z*zI<@$g?DjAb-p7#<=s^%{K=BFuWiBrQZo9D9svMHN^IY>UK}L#F5Bow8tzV4G;8# zp`<=A3rYqOB_H0hlRpp>8GeBAdVgW$5E5U{jbmp8owTyWNEKWXx}QZz=qStr(sWd9 z5|eKJ?lgpz!ME)cXG$-&;?H=lw2d`aRr1fVsy|*wr!WTtOZ6_ zxzdq`K^N6~OogZi8usf^Q;vt1a^f<|x{F_KV~4Gm_RrlOOs z8w6?!9c!35Ux-N2q4FKsOXJ-NrzVxg0II{1%@ao&tdY1r+4DN!5j+$_t>Re1$$U`W#zUyg@svrQ}fJs7uKltGLYDz@1`8H0rF}0K=^tNPYRGDBZe7# zB8359EVKKl6RF)EL9|yYl4~u>*}+uqS8r4f)fGr+(>D)QoSxoQ)3kxvlvlciXbMb(#;drPgL$P3r3 z%%bnA6h8#_vM!)28*IFspKXKK$QCTYj81{3F-{A%1Rog$0I^v~COPSui#FzgXEsv{ z8iYW+_nmw%t=_3NIkfdsS$-%VUu;({m>S@&(KVV{l}Cf0YKLxEmaz<&)%kb z)iYr*Ar?p_3jn9eA5#U`zXifyGb3X8IMW+bzd%q7lG+vCIxX}B)8fkH81vY6Wtk+9 zv4&~yDfpww=Rp_<%3V5-d{l4>M!&AQg`#nsFrT(O>DTMT)*x>qSAC2$*Q&ikL1ldD z^`R!%T(G8Nw@1;6-;L{Rfx*%Tw5-at57%AKG}Q7rb^+u*nm^sq)t|RT22o@3IE;sxv{JD*0b>1Q;}$O5BqI^p4$k z1(&zYT6=A;&J|h~fbZ}iLZCi`2V)vDcp2~)n;ng*#)NW98%uxjB!dVX0!OB-H3`(O z80{X+0#3m6OXD&mRI4qXoQT@8tRa%}jhl`2cg5R(wv4@QC;Hma0&o^bf- zaN9L^7(Rsmj3q%4i5-_nWy6#zAx+;%LGvTh-W{qiRbyi(+EX31Ttr0uwKA2O}vsCc|zU95S@#BcO;o9>Ui7sEgzS+ah76A9UXCxFi*g%DFCCnELv!Y**Hd2+cF6_;cJ~_z-QP9KGS=R0zH5J3} zINuHBf~W~-%^!?$IxNeMPC3V)QQ;Cg+;Ou$wO$~tsk*+~n|dl_b@_S(@9lH9opZ}k z_H8MfLQ1_)sQYu`7g1Ti*~Nu2+@SgRRe6;bEjwX0?V{QuaPxRrJzvQ*MPX0SZ%QBt zy>`0q8tIL@JraQ2rN8=AkOVo^*HeLKiofZBqh{j2_TB34lhi{bC4U+s(WVt!3e^09 zn!$vou$mblhYvQkt$7MYBE)oL#ckAEJNe$BO-gHNK5}*=$+5u@i@m`4$oGxk&;*%+ zmnaxlYOunA4;lkhAz`G`W+(+v#rP^Lr@kpF*|ICukBXC>2K#VpD|qCkPkB za>YemoiwB=lw-0mE57?!*0NmG)ms~wBvT#U?l&pg1Xp zSCs8%G0BWf^XZN^A?xMVEMhcOln0~L--c$LlXe6%9tB}KB1Y!m`SR(MC-s9Z0^Zt} zLjQ8V@oy9MFBAFWwb{-Si`Oiv-EQF7a+3EpC1NJ&!(+|~bw1psWMuh@O4T2OhcT^m z4YLVl0mrSwEX(=myD+V4>chz2=9ovYJ3>;0?|hHt9LTO1zNwT9`F~}2m(-XcRDxJ z_bN=ZX<@SlQLfFVgEaw-GK{r*o ztLv!Z{o;#E1nV0DEf0?4Eo3N`joFh|=%e9h>xQ{c%WIg}KLpgZJJl1f@k7AS>kkw4 zat96Q2}$QtwfQ1W5cyiW$tVJ2z4K6wp=3r3)V^eB0G6TccAgi<)Zg?I8dd%h`)%Qt z)N*Bg|K%|YT6hV5`jV|Ct;FwPO93V-y>;mBPz6BsRyUKLqw2e# z_53ZI=%ZLE%Yo8ycJ#+&n&it!c5M?TP1@|6&vb|=udTYH9^0QZ{74gc!M_FUCc~-V^UVB0;qsFy|H3fB4VEf~w$G%5(Q&XK+ zo$kA#^x9c6IM}osQWe|kVek7*5L&LNAQ#CNqE%DJ@%|O>i%3WE$%0V z=U{CSgg~C~WI#*d2y@D#N4TphjV`H@WknhKAmh;M9+n(d$9Sy}ss4<{S8&*_ki%OT z<1SIK`sDD%)xKRft&1~Dr;G8_u2%IQ&N8cf$wP1Cx~Q}~`@Zzan=ivX8MxJ#%3?b$ z6c~?|(rK#nP^(_7Ou2{X>OSLhujyF*9USvhto$KivNLh~<`~2I8_B@fQ|F?kOsgeKM zmDf_Y|5VWbUBKUW<&^{Y*SO!i!t`o(^LtmA7=Ghf{;n(k8t|{${!fAa-&oW9Ue=h6 zllc#ZgYy@{@yeF4GyG8l_x~qY!Pepf{Xgpw(-SKhJBpgU*5@{J{~J_+^A~3GCv@@O zqY6w6KO+8WR>SlP@BG~N3sqoZ_^0WMjIoiKzMzdOf##1H!1{VL4i+Zu-zy0JBleeo z|9=Ek_^UAuz3897!Y_#7zcs7*M`!Qg*nXgPiqpxI@s%6_bUteZDptt1k1kdyR;Vi45TiaW3jXdPC%?c%_?)_iPnDe# zmO1o;D$0X`_DM;_{qy+8m$b)+o6U#9@fV5q<~6yG@O#x%-$q{Ir^a0>`3Cp%9=MA4 ziSF(X0Gj7Vr+cTxPbUpMTS4P;K2|UHy78nwW-l)e=QlpJ_|NO@j`!V_A;Zc?C%R)D z8N;J)YSW>oTUQJm&fO;hMpVrH@9Eo z3uRPH!iKD}Q_05TU!D(64Y>r^J>4zs4NI6RzmX!VESMFXvq;R=>e-}s3Gd)%0c3o; zurq?NA6xC6iZC>>+#K6_Sk01W(chrfJp zzu9FeeHW?|4A1Cl1_I};)AUYx833JUfoJXJ|22&^=F|u5)}<%J*T+zXf0Q$(6gKJD z79!8*921OQL>adoioX5D{`PsH7MPgv^+RpI*=~oEzN5XCpECYL_FhnlMAuvVIkjN> z>0>-SAAY)F8tMuXy&ThR@APRFczZ&R%epD0r-9^UZ+k!~3s-Y#dmj0p;FBrWcn}XvJ3GZKwhzPkUQFjM+V8Pl)dn!O@-Cr)E8FG`+YH zXK$w9^F_hm0WY5}D(`f0gLb^$x?&n1pfBHrp}jIskP|{w(gVDZBu^u&Mm5DwX6_sf z!UN5w&gnf1X98~r0LS!~_J4ykBub>2=5}Qf^oPQTStE4R1}Y`!x6$Yc4T4aw*M|ak z2`@*{$7}rvE2UQWwJ$DlcGXzx&2^U9k!H%sRRJu|g(p z^tJOPQlx}`d*>iew_vXp>=bj}7K3L}Tqtl#|820_8^UszN=ymT=Jd&mCebOaEbd66 zrS$8!i} Omg%}$ypBFI?GV~I1#O7r3U=GS0fN9m5aw2AXe49^#=Da!@O3J+;&>D zG=T@X4cdOeRj|?3-jZ_guJHvk={7gp+oLf}Z6sxvpO@zEj7~kl2jD|odijDe5R5Y= zO%5kb>W0EOPx3jnfL6gh#Zn=NX@wo(Z2_bJhi)mRV!k7QoBdn0s2gVdkjNn2zJU1! zPsltVQH94|w~=iev+KadBHMh|0gRDTLIh>xY>BPe%e3ir7Df|8w4AOw&_-z}T0T5+ zTV&~GSrLkNsWhA2ClBl0D2d48cR+D{tcoTpQq0+q7kah=$EhC>wD8IxHzquV^HU*2 zOS*bpxk`{$FvGlo{bR@c7W_X+zP>WxoBC~N9hzc)+SpgU7TFg0Isk0NbDsr&HX$r( z51Z8OL!z=VW5y_>{Fxv8G~*yHL=}qqN zQUVV|aeq$o(Xv@ZJyv~_KImoNU}hp z>I~nsPwg1H6o|A4=UHYvbA&nIDd@L6bzwJj5o80Z<+{O9*$ju5+boPn6dGHm_m1~t zpR}n6t@>-3c=RzMD51J-hnsk=H*xiqz??nYI7%3dR01lgnt)NTK(BB17k8Q&jkHh5 zkt4!uKT06lnHW`aCSfjbuwSTWo;k{;Pc@SZh`YTZ67dBq*cFwEF*delCJ1Y+Ll|ih zdJCX>NAGGJ>^hS>fXNlEv=Ww|6zX(+AD|2OF+e5TSFlN25Z<^NF_aR+A%&M2P4QIu z{c*tsK4EAzT$nxqg+iQxBJbE5g4?7A^ur z0Gj%Sz7V)En|#A{Y!@Dr{3dQ)^+jFYlfi)ax8?ArfGo!38&ikF``KXT?m#UCV6nj1 z+I=sCq(p1;0Hx}&%@)419FVtfhZ5Y^yEoq zLF7L)aLziVCvNSj8Am=$lNsC55+3v3xl>%^nGGE(mwb6hZo}+r&(3>#-dZzuaHrjC zTcP{JF7_btFm@ylL9+MpoK+cILo12GXkwgmxgyKec{wJXOy>%KUp_n< zyaGAg%0DAQ(pZ^VSFUOpeM+U6ixL5>tv{yRw(x!>bH*ceK2B?`Er+J_W};4q8z~X2kh$Mcg_1wbFK%D8Re-%+RFUIz8zND>g0kvcbZatVnnt|D z6ziEiU>tjG;r?XDh4uN*G@eSRe1zhDCHzCvOeWvdzh_j5#9e`|_=iuubwe^50aiqk zYOV|~ur<)0ZC2BDecRj{jGUTSiEq-iLbEQh)Aj+tK zJh+%BNgg$S5u-?1Xu90-31$JM$BG!NsCemn^H(EP`Uyl@zNBK(h9p4(?+fWWh3)~| zuXQ~KXjz*c-m)Y! z0#Vlq0_&TXv>wdiUOWS=w(;nOehJ+8qjB&cA&{4Ps@X9D9&nl*!wnoz8_?#%Hhz0nv` zs9&O{m3)p(onwg{j8CzzfoI~-Y2Su?;?S=zQJ4Cg2$FV(udGFSCpsVTnPUlYg_xb3 zD5>s9PF}{|)gprq8EqdKC%W5vwT8~6h_^?5L5`j-v(bk07`j1bV%sa8?Y>FC+eBMs ziy~cvQ`!Vy?Z5b1;wa&I083zf0g}d%6_1RIih?Y)cjvj4cpk$i(lm**=CdQvWz{F( z>uY~hr_Kj&1#aC(c?)_g>$CKyUKET<1$K`KHx zKs>_rlL#VHFl@RUCb+)2HZ3-%xvgy|8`+i2V-HjbGzu#@Lt&DwHReJt)(DcLV%ZjRGrgz3 z8f_;(J6lf41GGgChW|$fL?fc^ap5MIo*SW{8X@#S|B2gEsT* zNz9En64)L>Oj$#yz1%W0J6KcqH0CXV>8c?~pN^PtunlRFugA}1OQkF4Qi&I9w(4~E z@9Ph(5hdiuM$Pvu{S1U^4OgM94oyj{ z_%N4ZA)BjyCpv5~)&3acB&;|6RqVrdfW9r@3$82i3b`5*>p3XOY*a_;TKbYEEWKD2 zU3uU$vnA&bYIqKbVP$y}DEeh7*S@7BqH4eI&|EoiR}rgDUA>=+O9V&7yD^!GfN!C#*zIClOr}){KUdeoRc8xExww~970loo zY|+Bdex90Tp$yxHL$`RW#tc`nSiQ=)TLiX34&6Vawy#~jnlGQUkhg0vZ$31vT_1*& zt8BF(U?x`}T_~ASM!A1lx+}pF3Zo_A93V0f6rNZ@i|J+lnF*}HX$h=2S#r+GpMXV4 zkru3cX&`W4wMKA9CE*4%TlQ*A-KrI{mDCiP`Av>okl0ezomMa9kdA!#?BgatE?{pu zchMtuKV(Z`=HuR%;lYf$x|J)IMC&=A(tcR|GQmI*$+D>suO z;Kr1A-4YzpG|Y#>ZA^SxgYMDf zh9k6PE>kyZq0Rsp8>J)RlM@MZQ84$?%r zz+C7VG32$Ii9;8JUCReE&;@t$6gb6v@Y^T*e8O;b ztz|5jSZe~n1&bqQpewVzQVA8s3-LZ6?+pE`p5x=2VwhbjA|csa^ChIHGI=_9LLOT470$!}*@YY(byx zfmN{lDvuM4FI#fN``l77L@+;8L3Ed5!2=WRW0e;ejyweq$-YVZo_gH}vz?8BZ?FXl z_eulPU86XO4l=Ot0FkTXOP{!n0)WZOmyMZHYu40AC2$IH8JQ&25S!%EN~sNYq>zVc z2O`mi*77o(ax|U{k zm_KTPxz=0gNb5n(nas}y98~X*BasTzb((a>%*t4V;p3H{0F@u{SYD_S5b$&!6c_zH zA3njgmXPmIAbFR)!bEQr`jXye<^fqGnL*3+ot2~qb9PG$+B=O$sq+8 zp!tY7ia7Uj2p40+#YtL2F662UGxF}B602_4-ewy&po=MX<2S-a@JPi~W66TEJ5ANwdK z0ZvHOFlYRJlcLv|SwyddU6-QxcKd0KkS9KAFXBsx+IOOr9at@~L&mHV4O>s~I_G2& zK?>nStbro6)b^@TqFPEx6GXDx(|!H*Mxc!i&0Is6M#LNpuvS?P{jK!NMRtQaTLlE~ zG1qG_#PSk|w>SYsRRARyBHPu#f!E^o2*4p-vl=|Sjs>S+P8mpVL8Kql{knijR4ZO@ z5o{<;d<|5zGhF@%hx3hpWIvl>=?btyDR7RBS_q2jsnixqZ;BLI=&SEoq8euZIhP>3 zv%8*jT?uby*Ji4c0AH>u3^;#T9%_^V`z$9U6)VX%%#?-`HhWm<}cqgT>BK3R=+!kI}Ena{@SQ-kZ(+P(=>Trv3E4$ z-OP0eLe6~*8R>Drloj%Y4u;{>be&uf9YEg5Hc!9cDJ*AjwZZz{z5E!nG-c)Zoe#@g zQ#c|K365{eNjpUmi!=___=bW5mm*?;OiEDXW`6d|ak>oB`Qr7a;Fz*@w>M&u zj{E{BES5|tnAt6pknYCYC6KHdXMm{-+&+XM^MP(^q~n0|h$j>=s*17$u{dfCv8BRI z@0izW-ej@yu#vT1VWIh_vx;G6%SDs(iEmCL*(E4cUR5kqfN5e(!Dd7Nm{S^S(TH5-E)tAgz@FnjYftdBL`;uchuwV%4P)Y&L_2Wp78G}k4(MR#ka{dlr6-Y1g( z5zeYC&97H_!B*P+G>qB3U)=M9bcV4svn`E+&0XU=;0Ovdu zfwELWa>yC6WFNbme&GNVArI$}JA#<{4)qShVc?}0mhdzc}5t4aT4TU964(HH0`esi`}F>NYAJYd%e7 zTnp_(3BfaTa`22lk@VN=j5tlU7JNTR!u zc*Vx~3V|!V09kuLt_4Sgoe?&84EUNIXLi5E!OYvm8c3J>7HzwR^B7Y)aIjM@3@}TO zINUtgV5&geex!j(u|a-ypv-|4BTSFiZ{dav{bkK!;J|`cl%n%<5W=x&%ovYj9u4<3 zYmK;kT^0^H^Nc1yatJ-+TeI#wi2RWw(TO8w^^!-EXAf?@7Pi4#QJWd@?n8w=FF+Xy zNpgRq^ZetM?~fb7tgLK|Ki=?To8?Es?jM<_O#jq*e%CCRS^iA%{7ts`A-(*!acs=& zf4JiRCGIzk#^nf2E~{l9vaI5-*n&HVT! z;{IpD@pG9lzRIpYSIK`_CXCGgor3xQ!fN?hmExC3r~I?R$p4^&GX1!0{}&zfwNlDo zbx@{%=5YT9I_S^XUoH55QV0Fn*&jX7BzXN)`>AjK*!Zap|JeAc3IEvmnGgQDV*dCD z{5h7t`u>MR%Jk2q`2Rp6t=!;nUVTt=#r?EGRQxKD?z)2w67lCi4;sXZOe9D!>|*6J zMLa&uCwo@P?B(^2hoF!$2RY7YX)A03-1vN+c5Ghk9xFTWeV%TQe4;zxeS99BDP(0- zE?-<)AMduFA)0w$UwGN9oF1PB06S+pfCIq6T?Zfh)7v%P=Yu=l7nkV)AI_H--58(y zn+y0C?#FLi=-xP3Gnp^X8}}}AMHe064IT7+FDE@6Pd#TgDX2CdvDq$eJA5WZW>oKM zqSEAExR;}gD}0`xAJ*VHuHT$KNERzAC5ow}U-&dD;=kPR!TWIftk-+m?bCHArpTO) zhG2Q!DXwIpPwu?zhQVvU4AN8r)2w2mTAv+^_2uMBmoJw}=~&Mt^Z1sKf!^AbLcHmq z8;%WiSZHFAw^nhQM!jz3$#buv_uxwjFEXP&KslmA=)fpe!kYh&6lbhR{Zj z|K@qS#57prvDv|{2quL~=c#m@%9Z*_&bQ)a>g;>SNr-MoQ4L3el-J{P%EflY+TqK+ zH@KwJEfF7v&KB@H6PuSpORy4|tu@Vv}IvUcZyO6V7HQd6t4VFw~x! z2;r%voTj+;tPr}SuL+BIPuYX#D5IaxTs|#F^ew>VJNB%bN?Xq)$;l&MfUfaubE9Md zP7vI6q3mERv{AKS`ShKA*Yw*Hobcx0vM1aEZ;$RXM;y;?l}bmMzdbAUW~ovgkiMsP zQ=~_{hO|_rH_KpH6q}XGze3W7iWx^%+OJ&^&6icHjnRdL=B!Pt*=1MC5bMvIE~YxD zFBT=4%3iE!Jf1e$+A3!8+8^O6dV4DyV=yzctIES`w$5b>(UTwX-wkaw;G3596WjkW33V|{vp|#Pt`IV7iYVeMe zyVxAo$vR4EG4qdskZHMZ45e75^gP-Sg1~Z3QB^&>Ku*|Y?7md7qJcL-Rmzx*#hR`#WeDrIdTjKipU1n7 zBx7$-3PmwJ%rT2gw(>RR%4JFjL6biElXws#kmIAJTZP7Gg#W2Sx0Nnn=~g^awEP??(^W&X-jX} zcLL*jcol6phr9W`O|{@vK`eq`KlM#OM*GwwTfEN28aRgjqFp+E$|Wyfl1+Dz(4OtE z0LMF4gr}7K9p2W)72-A@_7QIRstlL2ZjszzPS>A0t4&i-#YPq&ZVfeD-`fS!8W8sY zLYFBn+b

    hpmL z-tTO1aWHHKxF7qwEs_Vv2_%I=RjBbL^D!b>Kd>7(v39?u^sGhDk+bM5a(8KOcSIb- z$O8OEsiP^7e3?RYo;ZtwH`W_Y^_d6ssoP!vspXuxRQEd;APm3It&uhC7kUq6`K_-) zRs1V@-%Key^vJ_mlF9JVA{fKz4F|hvgH$mX&kNFIK1XOaRdM5DMD&=Bb_+a<29J0iGd1GoUV zW6kX<;iv(S*aKpo7+g7|dX&AVb`ok~A9V?gij7v8M+~8s2dkj zrbOl%{BSk{m@li?B3*pJ#K#4dov7YjG%niM*5UO^uHh|kK~i8-uc&t;K3G$ddNrLm zKY2P=uDlb6kqcUeR4_|#1zXavX4)lq%1H8NSEpnk$Mbh&}g+B-w0Td3nhFsv= z@uDNDWA4Y3t2!9HNG2}b_gZbg>TPjFW42YW{Y6kO-eo{OF+)sop%&X^<#S_;1_q~4 zJ8Ds8M2gEM*YU)+ql+}0=$Ph6X0($*;d-%UMvN=_WdpLrrVsKEtF8qng zN_)IDl!Tm@w~o7$sSUkuIIUd*M9V5~A#98utPlkx#L&mGf~bvqLMi9`PRdJ7%e-|L zYa6x=6KjN1Dd75i%~pF3WoGS-M#&$eEj1`M2Kr9))MIM-EX~@aC7zE<624p*X^tV6 z`1-A5NGlI3%pek-V>9iWC6Y=gIcqRVhsB?3mLw+D85?_~GIZjDAnnw8ROwr)Agj=A zY^k|eO9UPoo-Nx^!4d~RA#Q~ZA`Q_?xNLb6DFlS&_fZElA*;m2#|*o7Mtu+4_b}u- z!D%#2fG~D4kuv3x3Vm-yj|MFc3%#~pG<~!|{$%U(1TH3B`Uy>gs8Ipl+AEN_s;VwJ z&kxSBIe~v8r>PxBY0b|nEmc)E8eB}XJ?K<+jX7H^`Gxl>3o2Op6$_YtG8H+FJffny zF}4E3C(U3O3(BfNBGq9^i=SU=OwMCXj~fNGx_)yJOO(%;3}eTlMtFY`j)FCWkWn^6 zG$~6K;%;9gMt3&VbJ1OUj;0c&7+oyS_(eSDP5%k&JQp%rb<+Y}zv}5(!pzhCmmn2= z=A-83YOw9EyzSYq&MCGvNS=z{H%n#6$~i>~0ml>^#xUe=03Ezj?{9|^Im$dW2bkCi zlolqyk4WLka+I7V8N#yH_d-G6V4p-zwc11~u8}w+r}1SQ{Zl9iGr!(K4G}KQ3gW}K zlwl_?>at%}ie520l6s0IA}e)g!hVN<=EnOv9|?J&3uhI*n;29_^C&wD8-YFtTPnGb zX@egGkWR`!6lRK>HDH{_!~vPb!e$rll1U;u4^vXCBlEcNGMOOE${Ag@A-ax_r2Djs#;ZzT62sw*Q{2(_tEFfTqJDv$&Ad` zW?e4*5~i`k9XC-PEycs3QQ-(W%{cGvQtRAY@g9~@K^Zg}b?3gGRu5)o7msZ?}Y>Rg*$nk&Xu zU$>&@?G2liAEZ;Opcg9nY9y6NiSj-&yvwf`!F%}oB73qM5&eqGfWs={G2*rJPFR&@ z>mk|&x`Lnl;gb+ywFQMa^{h4vpMlr`B83r=e&?y+M59Row4N+WjX6kb5IKqKEJN=A zde@yNjKVAo+}e9E($Hvgj?1hmkO~FfPb>|365oXLZtI~ipQM;-*K}l|A25?MXmP<{ zzHIJ#^DF1V+hPn80d58Z)jBB%Uj;OBy4npDi{HV%FBLFv#g6E162k4smka|Z`^@s+ zMorHP4>A{ElWeERQx=jXIAt)RK^bnMAje5sqd_MK!-&YY$cG4cn5v@vIAb=DG>RK9 zPB*G6thIZ<%t05S1h<~7Kd%|qLa`gS(R>N=qk4R zk6O}DS}erkj$^7|xY6#%+w|SBi5d`D*=%6(_24Q)vY4{x(=+l{r;t>ALFurY*)OTi zCz97vGJ#{?oSFUFis1mrLBc-m3V(kIkgUkSpf#5h0%^4kh9CrCnz^^jjjRl}zT1d7 zho{~c-1)X+isPfex+MiZVeH7x(8tvW&gO_YeDv-4>5y0q-*i|mx7S;o1%-60EMagb zO3op+Dm2RYh@)%g@c|#)qQv%q{PcLm8}U8G*pU0AF$FH6BWm|2%)0zwmHvKScN>2Y z8V;v%Bm_d!TBE1JHH{#LFNT$$q0Ra!NfZh?k%~4R&~Z#6SH1vzhhs3qP7SzXAK-FE zi$dSJ1dY$@;zG}&q*mYfN5ouN5vV!vDQUo;@ob%=;)W2W`clD&1d=e4fJX4mXZUZK^w$_^m%7WN!rPK|0S=pg;vm-Adu-1I}_RSk6#Ppm~+mhZ1UM zwTW{@N`%dw9F7!NU^|I#-Wg?wCM>puZZ|jS6ZYy+PY4^6*@<$RMi~`Pby2#NDxu2{ z1BKN&`Xx8rdul((M_Wj{M|#gmt_&3&ZzI8*ZGfIV5J+E8c2~%An1&w0xq~o(ZAgKC z`T_WG%K?}MAXtw|-r^8#D<>DsZ$G~Kwi75Vcg)wwid!M?v)cnozX)-R7-V=^TG!T5 z&^0L_1JR1otV;NpXYM$l#mGgh9N5X?)@#MXdO0;vahR;QE*sfUT$OUwQI&io$%;cqJ33=*LAyUTaL70 zB718xsl1)SxIcgj#Wp2qJYf=bM9+}$TfJuF7lo*|P}u<`#SwEMy{ui4<}qu$Rh>NM zHI@UN&gxF^cm95U-6rOAa-i5Qyu4s_T9|k5lh!Yg(K8E79Eu1m*5KVCpjeJKK_`?=rdT9SJ$b>ZvRIVazRZ0yRF*+)P!%tV zz3mpmSgg1drkuHVBMF;AW=W~GEW!pJ@Q~A;B13I5#OY+*HI_V`FG>}DGiPQv=6KpH!GwO|lvN}@o-91kgBg~D!3Ya^U{I;t z9V$3kL}kG_kYlANJtH59+(c8#c$+Rd`K)HREzmdwkJ(1K(ljT z;dx%4*;n%3`{9R_iJH+@3EFI?oPDE&{ec#_n=>cS31$=sMW(pSQn%@u66(lhn`rB7CDS;m!6cgB=n%*nmgFv z7+Hn!ktLLblTMzAx?T_liu^6r(mWykIG{1-PC!v{n!uKyX9nJJo{j`RnQ1Fn!Zv$> zicG_0my%F4<@Qr0$l({4cj(9g23Hzpspf8aBODg=n6;*b>O<*;CLt1P?&HVI@PiD~ z5(>S>%UNYKSX*(DBJT!Otwt&+?WTuR+~UUsP1gLW_0Vu7(b=4OiK67~r-^}qgsSsY zBgn+Oht?*vne9!Un7-z;?>`T%>i|lb!3i;WTtseE3#lO*G186W7EO&b-6&7$ZcZih z3JatQIcgb{tU|in`}%r_i^kZKVB^3@LSyt84Pw6wgQO+P1?rsX*XjaH3PaVH_BGUd zt0(~{7q-QnYihdof>D#|;}Y)4d=L^AZF6DH{j$_n0vtR*Mhqh~L8XLsw&;{YUezkU zL|c63%JqB+H^rFNvW~nQ%W81(B4)#Zd)rPGk*bP(1*cT*uk$!_k#K`kaDC_gnj^F6 zuX|ip*(KSD?bib2uDx7B&a+gC2`*aa2d1_3%PB42+@alxQ>U$v;;FTX##jeER|Jqt zgrS)#VWM0RIe))*bzmC5VN?WD5Sks!HYTJ*)!NlGHMS_Ea&t?PU7zB-L=_1(;6hY< z8%)VpswX`8Am5Ue)NEr|Ht~*3jd&{my)>9hw3^5VO|_ znJ`sq!St5WOx%L9PM%FPbBuNC!%)2 zM(ASJsL^HC99)B$g;~*W_goa+TN+gpE|G1cy)Aj}BX6yqgvm!!hf%LPc91|OMX$qJ zkM7w*?04$22z2l}Ua<4Q7>$@oKAoG%tC~=ePD#|*gd7k%^UYJt_w8>^B=1&yeL31& z5K#{sR@qECONzQZ$WCbx@8sbnh;6@MCj}SE+RwaSjyf#c60#q;kWys&_F%)=u^73U zo@@v*E`cpEaRo=H>p1OOKD|XvtJ~P~xDXQ;a^@rjetD1#+LluZJNODza5Iuc6nOyn zEC-emwmF8D{dFSl$e-b>r;x{!RWJNU6tr>aZ-@u>?7w`9-nh4D)lArsQXRGB96Y1$ zLy6g_LL9c`EW@5T5gc-h-xwaI!j+H2a<~8~q3bhngDn^eGxC$}Xc%73ih~GZ%y$js z4>2tU&j)t)X>{P|FR>o97TU!x?X@Ot>+Zu(rP6s_DaTXS4gP?C{Z@;|jhPViP!lR4 zH+<`4oN?ZWT+rp1MqRGMHgE{Pz9?Fd*$~%FvnxkoL%|luu0Cz`@lu3ll`G|5K>Xgo zRN*@2M7M?4e@8YagnP?lZ}8nvgfSdJ4y9?P|gmrflU(52i_{ zlqH!6;bdlcZ6;8$bm)^awH`@f|AZV;elCXBC9I22t5IF7LG@5XMzm_q0-AG?jpH9o zT`sjp47|s0WqgHZ?pFsQ;Bl3sDODG6s(RqTbl^nu23+|QHkYyY*m(UjIc<0d3Wtr= z)(5W%Wf-!-SRqYQLv*mZPr(HEudQc#J97Xl<|S5TEc-#{6#cbi-=99VEV3NjKzby% zrgQ)326-?&ywQ4fRGm?Ya?KEvPM=j#MZ2ca{&V%}kt5RN!DcY5iBRm~>B z#2kpxThjwrx51{7AIKi#s;TpxA;wRZcB@k4dfi>YUdfM?bG1k1MWKrPraL%J{WakY z2@Ez7oNmUvxbc-&ZOYuImBF3iSR4*E#C>{ckR2JqoXZUDU|~3ONGbxJi5u&Hp2#y_ zZ5|0?y2rz@g|V^-IRl>*a8vZJO^9DvGi3_#5YlVY^pc*=?PSpia_ktka0QlmCvu{p zY>rTbksRiR2G*l#OLU3`a4;=LC#Ee-a0s1dt&i}-#Ao0qP!m6wne%-nU&laF`_jVz zOiuV}uD_4r5lNuxBbMA9BDAF4FBxIq9XGf&m^5H9C;=qRRfLg?RmJB(qNeify1KES$ zghYa-QZWi@wez`KW7L=rl!H}eWFmxo=W@kHKBAB50H zprMTB94o)8tFMxa=1{+lt8#O9q~`5!{#sQdcs37^&YLScfiWVbll&c|Cr;^jL$KHIsXOKL$8K{TonSHZ>i(SETm7<#4%M49fXFd%b2g~7nH z9I6l>pA~2Hxh8LrbcnG_6{?Q2OGRd0wzZ7osN0K7sl#dUx^r%iE96sqzk*ISNSLcu zKt;1JUKgQo+FT_mD1Q8{f7C0IXH;ahJEq*Ot>R6{yePaU#H@;P#*N$LR!#za-r2Rb z390?$GFGYd{k*WD`|#E6cX~qA%s{awj#Db<;mk3oA?%#A`Gv%_+#KDuwG@UZDhqC3 zn<`v9>-O)3TdA0hX>5U=#T`x%cKj|lPnNN4Vb+OWnNIEtcSa&UU@)sr^f0hA(G{%b zFphvCL`Q%)goTkWEH;Pt3Z^fQ{E0R|8@4xTN>zWAmpoM$d*|LCYC;>rZ{?2u&~w+a zW)pgOVKq5L7yT51;Sn`0GAxsg7q+3-Bj{6tVQOa@glAj0Gn(TG+D)vL)ILrd?laza zj8o=62^@YBHowt0EU(=BU)Y_$5c$A=5;!pYNxuJ8aKQMB$bS_8{8QY&6Am!`V!r=P z9P9tfb)Av%7c=}H2mInr|4qQZ8yWB~QjdSi2>5R*0sJNP_&?xk|9>cH0RB?0{AXqO zTkkCc^B>GL!(Rk7ER2819{x8=8h(mB^j{Spe^WF7e<^bQvwHlb@PW)se-z@cN*5pt z!!HHQ|K>vcH-Z=7FP+hURt<)~Tx*Q%e-`DnCHz+*@PYLIn~U;O)1hTyU}0tJ^0#@x z_+KmWKZqHC|IpM8{7Kxy(EZWW4g5*q!_fT)VuqiwzX<*RD`JLUt=oTX=l*-6_kZ8i z{WIBLVuqjV@2mej4?tW4e;D*HE;T|F|$X|xZV_6J5#nL<(FV7{~d7okig)9PiarPm(Lh-vnhm}Cv`q-I5j z`tPG0i4X&4x}WWAzo%L(u&fSi8X>%WEQ1SSDM$}$RAFma9ZqQ6bv;#3eDkJ70#Elm zABOGDWoKOm^LUz}X>-eQ$@@XI?k%r5DtAG$+Q!5E|a2Jv7cwHZe37h)vOIW-3i(=R&11LW3gYDmrjxIR|nHl_%&-Re|6#PG?jY^LS% zn+*O{oFxp)k`!_fm=qqKg`%ZQnuH zUKmMs?Hz|34*}@kxd+0c0cqTE>shDTt)RC158L0$I=_P{2L%TUOf6{#$}9rvLHm}w z1^QqIj0e6yu~i@}Z>%OqXJaQtyyAtnlhrU^aN04$6fwDU)4el-2xgu9-bK^U_R5c$RU~vjf>FYGk0lr5c-at?v*D@=z(}qj@W>-`w$5h4ATPdRN{bG}CTZ+gxVE5hPVifIoUcjC7*IILYF zGU3vIs_v$ySFa!u)4rM^rv+dPKL6uX305~$r@%+VTi%c8eqq+Zx;Mmh5ecFjb==mbRuYo=B&JUpV4yAE} zfX?|G`tH(JeLVInyCp;GTL6uiw#p9~lRR@Pq0UIIfECTN<*b(2?S+G$7KOUFN!$a1 zsBHBTTpcOmVogTXmlVGSKC!&A+Dcn2y79<4`uo)}A0st6H{}?A7&gr)mvAF%8&7rB zp}t!wEtEQZ$UbSG+YW>W1{?(a@RH7D`ufOT>El~=NFEDaIzrDw-BumWF1Eur$8T0l z1~L>5jg;7;K{J_jA}r0MYZPR9*QIN!KJr5QuL{80?G5ZbHK)^K^zx~3CmGnCd`aHu z+qjLXXU$>OU4fjAI-`L-CxZV}+BjGg1L8VBq5$=tXsJ0>=R$*fjWSVF7u|_|c zVEMt=LOp`qTnrggcCdeqK^B7>s3iTag>-uJ66YN{nU#nMC|PZ*-F&B61xeOdWNBqk@nd*$~-$F7P+E-Voe6uEgTg=vPX$=mxWo4_xlX|TcN1E(<+^J+~AU!VsHoJ z*{}`>jPd;@+NU$JxM77>b;|P*#_ddsKx!@wuWAugKIhL@6@Ke6Qj%dEqstq!T&o`+ zB+#de-kY8cNQ#t~kN2X-4(>`Kxw}B%o*m8d#((h3={h8rm@~~D>_exS7NLF6U)N&M zOSeMXRy*^fiLRPUVGc`eAN7LglAZ+J4i?4V)mJ~Z)ayVjrld^YSVN}2R@yHN&l~;T zSXC!Cl2weQ#zGr~Yz8B9dCStr$k?u;cn1*^X%U}S4Zv+hLU0AMQZ~p(;$;ETQ1}v8 zEKLvo)v<9YyW+fpGz7J97enxyfOM?lCm!g<;qgh9k0lMSRBsZ80ksH8$(g``8cC5z zX;Hf#Sb^S>3Lx=8-27{sK%w~4d&HaUFE*Skn*ou};Kk@xhhFEEO>KHkha?u4apCS9FYIAChSPH?S_`9OgZk#!Ira|HJMSs>aO=X|$vG_% z)rWtnACTe*myp`Pjc8PD)LqWUELL)0Y|P+)Q6|ys*=O~CSff{`fjc@h7BD!X=Ar=X z95Dkho4|`K$o#X zzT*tIA`j}>K+c7lU_MOm%f?*|_g2>w-6PSF{h*p-zTmQAx8g>GL>R zb*Nc8k$c?7=%0z2Sp{Vv7Jc}|JJBC0^PaX#5}53RuIEpp#>t^0c+l$xYt%IU1->Uc z&dVtET{=z%BsvEu9{mcCP)j%8ED?Z998Y8P8v|iN~h|m z8({EWLUt}bqe5Fp;R_Tv_N%s#{xb+X0g1oKA^%3_Xv{3ylt?l;2!+~hNTGr_!!|P- zmEL|heNA8vT1yK-zgnn#IeFR3FtwcGg=kHgTB?E`T5Y(ZGuM-;_{}Vo-}j{NQd2~2 zFn+jQlYlO%VB2044>pe%hZ)?fz*Mcr#)m^h44us(lXvAYi6)y2$}cxUNw$1C;ys&< zhG#z!{qt2-y@jauCC{+w>)?`m1_ooZTT^{ZXH*#Jilg=Q2wq6?0Kv14t(hWbHV~yF z9e7c9zw+BH^yFofcyztE_fz3~(_B>J=yWQh>6RZ3ioOYeJU0|&NTPO@0uoHyWj(R| z4VJ#naVchz2#mk^LZNHTKEfX#?QpBk0II4v;5O4Y{{gkVAm8B(n>sC7ZecD1>fUeYtmJxJpM?(^nhQxCeKb^xWT;|!1{u2FeT`xMY89nKvgZU$-bz79`qL-_{WVYtJCbJq_=D@Y$aBz#>>OR39B6k z@MAbM5E@qJ;>v3>ai^}%;F4TltE!fLd(w5jldB<04qWq*^?}+%j6tg;{6xg+_%00t zsB1>?&buVS_f6Xu*-h*<;s^bfkyYx@@;L(K$)7(@ch2S(DSo<5r+#BbRI*idXEyT33L4FxzG&EJG>tYa#&qG=H1-jwZ^q~5Gzann_V3BJ%SH>aHQ z1vm4VgKonc(Z-_P_Bhqsr zlGKjT#Tm!L;!Z$VUnr-A8~|r9s>S|w2ho{zBVOM|3Q=OdFFM~BiEn{nONH1(UN{JeMho z`9fEk?B_|@7$()>XmK~pUAetzY~Zl% zR(ZR1C7?Y9`ocf|S((USs zFx(uh!YMoJn)@_OkDlh8tOCgk;3j*>3Bz~gjN9QDbx;S>o4 z7C&wQrp^S1ya4&x1yCAu1VkZ4N`o^o1+zRh6W?{cbwFhs=NA)qZftdeA?zZ}vC~xi z78KSi&=;daLuP!N9Q`|2m0STI*jB*kaLLoe1veTUa%8=+3Rg&Y(HoQE_GC?PNU z@%inzaaf>j!rOjEat<{HRrN!E=2d@C>^0Ucc`$(!@d3qvGR>2njJHu7HXGchW7T~c zoj6P5Uy5}n0#-j?Z{G&)@(ph?=@f)_lo5C8{QUK@G-We~6=2tKDvGjQUrYa?Bm){ObWBJD1>yOvH@aRIc#gEgo-+D7X2&>dw`?$=v#3VKP z?Zu9J7&N4pkoq1Ju-&30L|WrO#9>#5n2^f5a*C1J6O_=tqBvW#Sb!aOp39| z6l0XC-$K5}BOi~0wuLB`X|hF0Z`~ybG%Lw(9Mz% zMjiKN3f<#E?nW&fTfrI`%#u?|CKe7+)6!HtMaq(J4KeoJbp9r=gSzc4QB0NZ;xjOAy4GLgL$v!HWA`|HYVfIpi1HleE@6w$j~_C%nFZiRT_DYqU~k>9 zWfEdWPE7f)fY-a5Vw<4Q97WDW(2E9!)?-`hN#AurBESpd?R4lVn!nWvP2%c_8CVpO zqz<-yDnvt?Eb5}*%b%;gGS^*6$VQ$JRjy@``BbXd&%{j_AEIpaG4c}{$kkWIREh7U z2C>giYctLfOWu$`+Q{ZEed9{^5Rkg&J`boZTNje*?>cU1=AXR+Ll8zNko2G zWkh~b$O-9}?i)qDV69tuDawq_!JydCZ(MuxANNh#4P%&A&r=|pImw2g1K7XNUsQU# zQ;VCaEZ@mYIMKeXg86NN&G^rMt$HCzCP;iEI-fs4!kfk+!v9`9&d3%zx}?%5f(tFO z%Jc~IqS}oJ$stHggY)a)L2Cn;$ZNc)7=kPaF}xFf)NQ3*2Mn3LZAYkj#d?r>MW^Id zgLY4Q2o{ctG}WmYk_}lU^;~I7Cr62YNr&K%Rr>3JiN(?_r^jzEj`}!KBj+ajctcQ! zCMQnrtU*L_*iQ8`7&z9a>WlBr_I2hLLud{fg1L= zOIi@2uSt2)X__YUe5nDTwy$WT(&Gp?hO_+6Gom{N{l+sM!0P1Rw06+91Hu`KYx>)L zWLSFGMy`;Maywulye>RvJ(kF+uCXFlTj01-PZ-`g`vE-tVpo~h-!N>x_xo~+ILs2j z4*Teddq#;3UTR6Q5UeBCPfe`D9^zhxDGzevwN`IY~H zRd`MCXFH^vft{6ut)7A1D_+j@JJaw7tHAU-F#aE~3O{3iA?yEFScShc2!G`ke(??e zJ*)6D*spXA?uW16h ziO3u6jUA2+!Xc$SD};)7egov-FLPwSKnubPW9C|{O%u@!Jv`ob_0&*&Iv&k@mVG?9 zSzqcZctPd4Y~yjC|NM|oDgA;f-PY=I2fA|nz=I*FhQ{;y^F_{m&STMo^YJBdX)iz; z;dT4kJ+A<|XWQGA(ViPGp2yR^XF9H@04=8oGx)X_+s78O#Wm@zixX*{mz!fNFLF<} z`*nJCp5&RArwF>#{4nVsNr3x7OXYly=liFi6~_}Puq0M7d&Q~RfG`5|var_M6CNiX z90&ln)^XFWx_n>0I-|@+rqFphUE0Y2A=3^hj@O?1a_Q+=Bm9BKBb%K=QN0Yu-9bv~ z0RJDgS~aU*B4J3J&uZXLgl3gATPVU zAls%p%Uy1B{iK(>Y+mhxKvyV2$~#noOrKrB_T9auad)CN)@J-acP_!d^@KbB*uL=y z&FwP@?aUSJ7VzZrtydcR`Ta7xh%6)p#&aRWcV&nfyP z!R;3o789ZMLNqMZY24k5(gCKpZ>L*4ZRa!Uqt^W4A_TW5W*#4H(m1$nbeu1*(o>R{ zGde(3rCsD4b+mdKEi_v<)NV)o-pV&9N7S;pg=T9m=NHsx!$W^*8PfUIojX%;M5uC* zte>z6<9cK+7OvZVvT6V*l+>AS1Xjq{SBB`R1y0Q!X;>VZYWH}5hF0P|4GA)p2N;Rj zlz%leb!ti3Tk3R?a3wvGfdCT*ql&YB+QG~Op8$El>(sBrO|OJ4SvduP2B&TIW5wb| zQZ@<<(7i_Yq*?XQg+*SwVSIML^VZPg0#Dg6_zLqKXTGWI{Q?K}`7&;6GT69MHFg>7 zu`2>I4$xZq{U}l<1_Y_Po`xM!NkPB{;xiO3WVwQKUq9j1M2UaVPz5T;4vH-?JwA(> zOm$^4x^i!M>7%QExy{sNHf9Fd?I#tv6>0OwqJ+HnvNM^)U7sHsZKT801o%HrC{{oV zDLb^(Pd%0;a_o@~=KEyHAxre z_3(aEj5wOUpXa}gpcm&hW~z$oh4 z-|WB1CB{46>f%C6pS`zE?ox_kc-m0ruFUhxyg}%P%*ld1R7T43rZ@A8e+xx*ZzIC* z!vJg+9>ThX##Qc`%}DjA5lBN1KxjFTohlDX6HW+3^KqTXju^D3bQsqRlK!r+8XfN#!^*K@_L6gm{ocpuDO6>simem3fcJ0}wIFv{+Hff!0KRbGvz@zyy6o0DvLfXE}BCce0Kp z%4aT%BPu%f|IBETs5P~sQK&&2d5*UId%MLR z?0SaJWu2CKsw;Vso*c^{no(IfnB`zUyw8Xf^0?`jYl}|G%vKyqixnqHN>IxoO~pUP zZP*0sa)oZ(=|f^6C%mQ#_HIX|ieP43- zDPWpPAu6;wwpue19-1}>o37tlTyrbEyXJN(bM>&iWI(ggYVvmp zulyczsD~9OI~99KDqK3a6KOnv3yib^EGC`}t-+EDB<<>nxY&=CEA_S@CkQuB1n0m9 zPJ?+8&7ybuYU6}`5=)2Gh6Oy3IAiBm`0$Q{!FMqBX>;FE-$`-N^DE@iZd|&T$i&p; zoH;ZgYzz(Eg=ZU-il~l@UXrK`9&{q3vTx;=I9u|?i*M4&aP!!>rfji;yVO?o*N5{ zJ*k#y4SEhwvIQE!FPGYV7)K#^r8^#PVdXK& zzYm(>Wd0aTe?&v?30A9(idN|;b9LrG)$rAhnzU->>KS@}cX~@6(@jF1cj*4;(jKvF zMK3qzY|j1xQ+ci{LZ?72Y~s@%qn=*zhL{E;OK+uN3e}pO_jjNSR%B@qb#)p-!bL|U z>hNdd1BLA2IB?F$H3}E>;vO z)t?g$riP`1x1puu&e2ynV1uAOyf2SGO#)j}wdcODJ7C zNVwGvwz1_ll)djYCpXYw!0k(WWfFOGBD@m&H>T|+kKrqMou+kcxj{S}kkot!8MZ)& zMD%EJ(1~%3S{Y=8Mvhl9%4E5$==nj9fyk{crII7SlVPqk;zsyyuSRGIA( z?^Jp$1nhe+(erGVSp%t5bP+4<-{}W_=Nfp<>eq8x_(l^*@^oKf%SSN^wct5*{C)C? zX~?8;AJgYt)T^^UNO3A83l#r7^{uzi%?!n-X1;y$%vpwv`m!j#%jbM!>x)J7BKY|4 zGKyS0MpD|RBMeBSKeiSbk3$tXM76%vhmETjEqRw%S}JY7goA9~s;zh~8a#TqxyxXV z17nfbj-|x~axg7js!JdW7wtwD{mpuk+|-gA%hM!dzllat4F_j9XwAE%@Hu$d7eB_E zSlAmS8^BATB`ijNU39V1tI<`l3z^6*ZV0DLEvZP%E$*ieqJJ_?N+McIqR*5Jt*#yD z=xf%i=1Dj+RiqivH>es*Y9!=@|8nH7#v5_0*mFXEB|i6nbVFvw0Xz}LctE;`LQLjK zU@cG>j(%qx0y1rx!i@<&M7|mW@p?Bcu#!TrlGgb24hUl$3Nq~}yKE4NH$+VIetUEB z>=ja;vG~AB?xwyH%>F=YH6ocsw9)%DF3`|wfaK;h#b9!!xtQxSYq{G_kA_(9w7b?m zHv%bqHyNWpUa=b$iy-Tg`n3P3lf4^zOFFFdlAA`!@!M8Vsp>N#_YW?F(E5SETJL_4 zilXOHa;hK#WkvM7MUS+q6Zx~I2&u5WORoXsq*3A$-O)Sjwa2*B#!I2U9Z?!?2v0&^g%7k$*;!p#z5Z{YOkrCH zIZ@8^uG>^N)J)tqw8GixE|m zDkmUHL;j@iFCTjuZY?$``hHDfE{Lfl&3q|)$Y_cZpq{)Rf>RcpL~piU67r2ylOLtP zX2l)r)kAvnXtJ#M$R2oQN8^}auR5V8Ef z{`REsM@~v~QBLVrGvp!+!YcF65APZ4*|%Xxfng1M-j(vOzTPn~)RO+3@(l}(SMy2P z0-o4EygmglKv9b;Q~Y2xhpUzwWM$gtCKN z!L`^jx$frUXM>S4r;qaYBvZ|pHMBs}Qe2GH{ZGY3xxC7+D<>|9){6SdGTD7~&3llp z#`FB}u>FCPbH{PT>hxjDsjjEgz$=pos-SzOEisqQ#=JBX;U%z~)XI)U=fVY#xN#_< zr3&Qs(r;uLTsE;QwSi-5LK`DIGu}wfVaF{~ci}4Wk~wM>4j%1wC@pezL0B0e4fVO( z{OpYVF`ki^22qe=StJmv`vhI8bVUOEz2|JXPFH5gY<18&%I8Y`PtsV*<{?)aXQbcX!l!*K=c8@8@ZO#V>bmtX`hU;Zq=21lG{kHv8BHCx0&c>cv+g{17%blg_pj@DUcHkkn`E zi@TgDgjsMUNGRT6c(_#ped%YvVQiVbGBU}^y0@D-=U;c;JYXjpY%wYWcitUqzz&{eOgf-yN~gz2eP}dlS{#Y!0x=hGFtlL z_Io39_iIpd;F_~9bvxO!&F5s^x7>JEV(!)5Op-Y`DaTinJ74w$Ja82o>LfoiBJ3GS zovg7nHUu>~6i}R8Yi!7~ywAfrC!~>G>uUQU7i1zf30!IAkT(g&@0F1rD8(PgYPw5} z+5PU3b|dhq05BCs6?85?d*9rkVp?oE4hL#Q8b!y4+okylye%-39*AfuA#)@e?SX4D z-N*{NN>(?c{slNGJskT0Lk;{yRY#14|3ETFH$Ibia7PlP)syHq8!UHavrnh)BVUUl zJ*_^AC*qK#vzB?$BOU!ng7{SJGz{K;P|fdovUJvw+*>l5dHJE|pj`3-5n%bU7u&(E+?2@&DlY`7@Nur-IKXb%c}alJ7}grHEd8D#L8Z!IIGznT`Z4E zpxgb0PH)!`PgW%Wz5PTReOHp6d%017Lqbu6V~C{XLnA&!C+sR)Yru*2du{mMw5iB$ zUhS`y-B1UvQDBVP;IHiuWtkpJ^)vf0JRNoy2r??|INg^A(yT^YNFuN`y@UDMB||I* zvp4t8AJ!aBlX}{CX~-hx`_?y(U*2Js*#8qO`4g!54ZdMwV)=6;FGi-nv==b{!$w{# z?96|-%l)V)eRtmzJKDzQNx_-ps!NslTwoe>v9ucQyGN^86QxJ0t5K4G{ROuU4f0P>hfG zet<*8bc%AKFu&d4lN;OHTibo0qcbwGH+Ima)w8movvV>r`qz!Ut$_iZ zg^r!Qfi0b&vyO$exq%&>krmx94@-*QvU>gd!win;SNqPNNBtjgX6D}^nOuMd7=?|%iHe^%~Srhfp=%)cxD z|7YX9!Lm&@+ohHA{u-YVbUfF$y>G6VRs(#5&{lie-{tgi^{!60Z>ikgq*KU>G4%82 z@qH9^v69khjF$_6&2Xj%z=C@{C0f0>+#m2rwRzrO^AxNstz@>gpzbtM-@l}nd3h!; zj}6ahWbWs4K0R-2?dJU?9Id95uJcr~d%t%znmU!A|Sr9VI7C8m1WyzJg1 zcs5TKwLU)0KP^q~+bV{8X`Q^>47R=e*gKg)4?4zXcs|jxAD>hd?vNnHg09BQz~q%a;VJDQPpx|to=Z-q^VsV znw4`LC2>K?zo96*ZPuKlj*VtO`Pot89z#N-fp9HCpvLjKREWOwZ_tTDJ`c=PT3A=cLPWQ;qrS3C!l}2fU+- z!amCnwh~MA&-tHF={(7}n<~Aqv0Kr$YPX-zAs}5Q=V_&ZVLv!4 z-I00(7HKWaDu6FMe+hzGqgY$sx^cx3ab|6wbnUkUw}wU)Y|A|C@g+i_tY#?`D-$+9 z?yG=)F!Sja;bWoipUZWL&&OG*r^?f@5L7G<4LiK_Txh!$Q&Y9@w3mI@RJU|q67sxB zS<%|$>p5^dEZxXtgS8ps5(fr}NrSB~tA5^Z-=hoGkHun5E=xl$g($dkp7^mA;W=Tk z-dcWeU|<9jHVQj0E-okthVJWWrIxTh5r;%CCsJUK6s582+wF9ZReIA)Wo**YA$xWk zIqhc}fiZwk>fC0hm#g>J{6d}G3yk)}z%SbOJQ2>)&t4Pstl)!11GUR`1WEWoDu1g98y$VmwXu5=u#VyUxxU(?DpUF$@`bSfVII!7Xw zXWg1r!JQC&D@wNRmk7q9<3C4QLR``6|PZWo#V1sGG7Bl>uCZw!90S5scCF;a~X`tixlc(DA>fjOcSp>{6 zPMGwq553OLTP5=D{_YJ9F7X-4q%(dDkDQh)HOk*JyH@=@vt}fO(qK_JSYkEOznwYQ z-!n5N?&{s(SbnPYI{RE(z5E!@)G8k%pauU8Y(1i%ORL5lZb(XTD zrH0ZVh&Pbr499hY^apKpC2rdEMo3N$m<{Z&c}elnoorVL9^JR~8;!V4rDAxD+y`)5 zd8Xl&asKB>i0>4t^j^Y#k2qYpxr?+S`{5(eZJ-QAe>-Ko&yflJE91n>f>C!IDcdK; zvEhUeeF|=(&yo2dY$ zjRonw$lkoBz)NWR@%O9C_<6*2?Tjfzi1D=?q_1@#Ei(>z#Noeig8eQL@_5X=BC>q~ z_7xD@26Rk)8_2esk(bOb_~Q}hx6$+opry3&TP^ClLg~N0Es4OZ&)Yq|+e2$+W^e=* z9rWDE*AiTZVE5*?mBaP-l-4WXy?**obekTpZ79;v3PU5w=I-7->-|FV8=Cq<|5an2 z47&p^Ru+GP*1O~`sN6F^2oo+pqry;9ub%PyC<1m0-PLN`AZ#3Y#C(C(hi>i?^sj&q zA8<#Y-9`hZ+A)pd60!xpxl9j^DX2*xed6F>2Y-r~cH2O!u3jcpK`R(A74AOLt)jhJ z8H$RTijgXBv*Q=IT~EzN%rU8ZD?U@SfSPuEgUARd7ZS~wSZkv+3eS(VJIVpo5fgCM zd*2&gONf}3a3$9gPglEkb~v#tYr^7|TPL0x1B~2>iNu;?E5hH-&TlAfGL!tKK+yR6 z^x%$4zMX`0-kU zNGm6|-T`}idDsW74VLr)rAH?h#J$MiVNF^~6RFM+32{si0Yv zci0g#lzOj+SpN#!45#{HAxf1L{|x`N@ez2o-giRR=BZd)AFS?h|J)Z)UpD$&eu5!0 z@PlqfZg4uI^=0dFRPf7Trqs&I^+X1h20Zb$vz)u{iNYyPM8h>x_` z?0e5x-fDlMrz&i}Zs+;q?};ZENF%f!7-}Pl#1}67VpvBvDQN5h;WQs~DdiE&OK=!4 z_$S8g^gR9_>b^2AkK|c5xH~~#5?m7O#T|lMaCaxTySuwfAUFgF8VK$Z+}+*XEth1M zO>*v@bN~D4?EL`0VTPXWr@FekdY-PT67l})9jPlxXDf<9LFOKhk&qBh)ltmsCQhK6 zi33B4+$Dcf#{DcB*y1p}j*A=Z=7_@EeNLkT(yIJrv`{|*Nn1G8Hn8^lrHs`He6x>Q zJfXv0=qz^XOe3D!mROWdo^4V}wD@I^phoC;omF(PlgK!u$g8?Xp}vOtSN!(wZ58G8 z`n_pd7LbDyLT|`cUF9&6yW26`6tX2bRxRQ6c|nd-yMWG@gPIq;_TduaAH(oel?8xO zc&O-rMZdvAxrr*AB~OW*QlFUV0@DxPz&=nD&r9}9%1g@T2tFcW5#}R2_Q0A zd8YPUOo_@68~MV*)P=3R=dy8|nT(CkJUs9A^E7h;glu1hS!D~L1El#1)VZCd>23YNh7Z;Zc*Rp+KYiFG-E^3 z@_1w!!^l+PW7v7Yt-#y)NNSp$ky|YgZXHSEE+m9ZuaJddD%U)}dsnQpipk@zF(vto zK(Ugva? zRT{T)jN}`5hg$GQ>=FsOYMvZa?YzrU+B@FH@PL$A;^3hmRyy`7eSlYVD21>v+=c~+ zs*mKD!YoGEiwm4;7432kxh-m908D-04MXcflkK1@HBO0yDGU$)G20vanwWQHEt$wJ z)Nm6KxMn++6Ie>YXyJ4LK3Kw#<}K#X7emTCD{;>tAxcna&2S5hTIIAa(@4Uq zQDprRUI#h&Ll?uu2Ohx)^`RD`&Ecpuk|N)8WC2*KIjGU{n!#V88nPdmwkDY^wcY1F{<=YH=RTuRg!mhLe?G;;U z?IBEVudF6COr@HwBCXK(Hf-s0@DNr~SV83?N~`BukmMvA-Y3B0MPaAHIST9Izp)L; z#qq23>V7kc)|6%9OX0o(s_Izw99TzPiJ|%#k#$zvcxQ5MNn?=pd>9Y328CvsDEoBz z$P_6XhIOLL8q-4)>6$jQilELE^lS2)5E$H(}Nl zh!N_YKXB+Xdd#$@Ae(=g_057GaJV|1f+iP~WDmCiNF4wfa9}umjEk97Ki3w>7p@hV zZDqZ-7Sv}>YSH2?K3Z211}rRK(g}Cw9=**HT~w!Zwy`!U#|gV6V5!kTfzz`SrBr9&OK{9fZyDlmHl>$zt}g3P3X^RrheC!@z@@i{#}biw zT|QHV>}@p$h3pNs<-)qB{_VbAl<@_`$1~bB}>ZPSF${dc1Mu0wbW)g zV{dVeK`?CG+0vf!LQ=1nfVQ!0X(|OA0@n?qzen01wDbDIvS)hZ(pc%+9YrHmlrYP- zkmu^sM_jcb zj>`qJQI~={c)h1n%At`S!i`5)WOOCOC=lZr+1Y4m7_RylaTvxW$H^Eq7^_Fm$8vgS zp8lcS@wLh+&qauAcuXmwM)c$oMe!_DwWFxw*t^39!~s?nS#U`AO@wuX)|_hIiK(VG zT<+2xNR!N^)Y0Z3&F;=`EONb&{@7^O^h*rei52869h}FctKPb7v}m*yi~XMjbtq_5 z=hq&b=f$FiTM;LVU99_LsKP6$$d2 zk8dJG%z4Lu@+>47OpsV0VY=LW*1IC4Dw<%zN*jdvL{K9BC1jixlZlF$K}EB3nHogr zjKC-No;mO07lZ3DVIef+@V51(n?4v_919$zs-NOMqcm1D%mB5!-R+Bt-T|EklHii! zP|)f$QC=&*Zia?aQnYmyse(3?^rRobBi$Myr!)H69?4R5K|q9ultVi~3;9KQU5vw_ z^a2UHLXprABEpcyfr%q3s!es;j4w(HV3;((!b(t<(wooOit^q;t=HP3nr-uizBCS9 zmU-0~tEd?wh0BSQe&riN^$W0CoWjb*^)x8kWuK%a6oCP*4#dh(DAxW~UzCuqm7 zu83VNF}RMPNBxm3MFE=rND8e1W@ff)GP=De;WU;M_TL2QH|w#Jgp=QqvTaTgOe2s@ zlnYle)VDW66n?xC943-TTZ+cVBJ=cG2XVmN{Xe?bI(cq>#!Dh|y+>9dbZPd}}D=o_MO=G$*Gra+kxQp)R)@%QY z%2mUEAVZi&=+aJXkhu5tAari~ab>wJ3tx4&Ph}q0kJVe@kofYx;xaLRmLNK{r(2;- z1EVXb`|ka7q2mOyOY?+FlATbJ)H|YtH!Rk7PM5D3DpJ^ReRn@*#BQftUNGMV(sgyA zux@Ib1d^Ac&R|nl98GGJE3X2QlxVT7MyQ#3K13lTymTh0v#GLnzeGiPA2sC2lMb|< zJI0AB+YGOvKD}=BwgTEm#`{{obfO_$T~k6Z8GD>upnIcfOdJ*qT_v!^_1(LtHVqd0 zV>>L%J^dE@yGgUCS)r9*vv69j2)Y7sivT*e~TOjSTrz(mg+BeHMLAdoHz zO=M*XHHweoXk<7TFFqlENcHmbQIB=e3vjV)%$LJx2{>V9zcos{nA7V;-OJq`%0ohx%CR z=bLP<%{_pJZoL02&D^Zh)o8dfZVo%f2`RrvJ%07WwNHUfpt0B*$?}S2uKFGL>!W}< z(af-16>oh=nzEx4Z?vR@DKM3zu-$k>+xg@?u(wVpwjY?I8x2Bl0G(Bw>eW8A<}hxZ z_N()j;b<3c@nQF4Qd3+5>}Yo~YR=U(xDzJ3hR(n!T~cy!y3z0PrK zA}nL@TD7X7FC#mmG}>D-?qdx^bngmu8*>Oai|gl*JmSS8Oo!&sQtmv|5<;NXu8Q_h zzC^9#pzMMSATAwfJ|+gGu;lPxzWB$=ZWnG&FwObhB8mbB*$zaSTXrvl~cYa7cjNVifXAwvqRgc-X(bdC(tMV;sdT zp;@FWSoln&W60k`l0t>gjD*;-(j_K~1&df!?$mc02M(H&A3)^7L19?X%Bt<`K|^!u z9T1n=ehrS*)W*V%zgl2xBj&=+f8Ti}F4b@H?c|f{`{p*b810xjK3P39tHOg{V zhnJmVGCrqPX5^g#b1ZxSmmAqL?`(4~C+vXUyE~+qn_OR5v3VfU&q@;v5eAr*&cX}5 zab5DfBvr;{kST$i?y~M9k~Gefw6FzPF^)R;;}Fh5ZDfhYo83Z!uf*+2633^>_i5;k z*gJ%#kN`$H9MAWlPSJ^Ajb5J=%8a6_Ta!|fmSFL93v7ySEba^$guZ7#N8pwg8MEst zJFH*jO0{eq^bYMZtdh^Hx{nStTyU*{nh%R%;fy4b6T|8f=8dKjq)OSVwBiz_oMKMc zNVRjwCK&CFUj2%Fyhw`+Z&JO5QYFR@@HngfCSo6vlzhaYfA}nKFUU0fP(ezuiZ`*( zen{~AGJU&e#O44JDkzpp{fpTdP+Ui4VF#-TqN9|#2W;K7fw;&%H3u{spFq4zmC^9} z(Js95fUXP8`w$m9M7Ds1C zl{zhQEq4zY%4e6sN`qk-1W)D|F${EWC-;*?1$55om;%TQcvIoqB72Kp`4OXfmqOCP ziji)}4_t8OQNs(Ok9LZkKMEwA*EX9DB0UzPN1Hm=bB}WBsx+H zYlX><(pCdKN)3S7un`Q)LY8-N_a^#Qrq3@n+U@TTACpomDN5S9Z}z=pfe2@m)hY0- zEOP}d8ce-$OYL!o-_~^!ugjybG3eoUej&lU){P5h60R5>30CIVhG(CJ<6tYW54rnQ z@U(AqRYWA+5_r^A8xwVXAoxS>79`Ci)gRdO;%-y%{<@50m(wh|?7o0aIc z4xiV)-DT}{7q{DW$?W1cyW8VUnr|+*pTFI1($Gv7QkNfiRNtn*>}1wEpV3^jm7jCJ zzc{(SxL-f*-P~we)U3s9yt_--*!gC0aN_O7e`}7$X_uMjI_&+?*QOZ_&Je==xYr5|}D>aK% z8>@+Djw-yHQ0tlfc7NG>*#E3;vtp7BlQ*Ge-~xUOemIoa&JL~IT(G}G@52Ss;HI0a z8eGIn3&R1#=NY2Q4{T)C=l4Vo&z|#Mdwx4|a=+>oR~R8$uN+$U@9|W-v*TLp5tp}v z!k3?XvGnb#9%*ey^!C<~-NruOw%g9F!AW*ZzoH7D5z!SN=5FG9Tm6vvvU*rtUmcOV z=(g5v)y(nyQ@i`iFq%rrlUi(ejg(dHGgI|K^B4VotP68t_Mn}07yMhEw4EuTbhRze zfliJdxQm+pV$2A>wd#(jSptQdXQ8)F>|gBoa4qV+X!iNj>bD8g)8(blVjMNrvZjSk zt1YlT$CN@fe7is(grivu#g)ZchtyXlp9jnCykhhmeK>&5bJXD6c3?m{9d}zA(oJ34 zuvNhiB?C4@MHn((lDOmB<%9Sb@c>itagoo8>s0)sMff1VjVjW znkqH#VrP;i3i`G4np_4fXzJhSbL{C>Dm*Lm(SEU&o2~3E$`0e(&_Fp3npam!K3aR6 zyuBUW3k%Njd>qS3mB;#k!dEQ4H5!zuTf>{Cnm`V@v;VsQjRmv zaIS<(#mwT}Y8dlT&OK<}G)UrT!H%L&T<(ubUBL`FZghtfo;mr4`60{RQMSC}2!b)V zJekIl+dp*vFtfZPvX$kOSaKqg5$}2M@+Fuy2aM|?DpVbeF(MnJ@m>o9K0rbVA#q!O zM1edhTaI>UC{cB14~A;Bv6Q^JAtQ`=p*g|6H(M0ihOHmLr^&$GK_;W_2p*t&*7d<5 zX$_YNgBL!j5}ZgE6|L`Jy%v~1v#5jr$b!EaT79gx{A+f&XL1BC57ygOtHoH@TNqIyG849AjvgGhb(l!TJF;s~1CEci z7F(Xc(Q>q67&utJ2l;qWz4P_l>YVs&n4?eeT2Drd=Q85;X!>y?c%wy7 z&^$OJ6doAkg%%DnB3Th+-x;0J>sWD_S6J`5wMv{yEOTH(tmT1`H&a0N+njs40`j75 z^p3(7&C$gMxpy>AQfB!>%A{0(O4<57om)HDJ^ElFSq84VGS|{OFur?^P97{t(8cQP zR&(!UpKvc67g_}905kX(BMRDu?PCqK+Bm$=MSTgJ-fWR6tD!= zl^E0&Yx6P-qSX;~6!$dTfJrnNOeO$_HW3oN4W=CAO@sKO4&&uaNpe7vjWd~ypAxGk zbB%mF*HzY>p>a<$XRuK?r`=m^J)y*HY5>Vg!!3^E+Z##@XrQpnl`8W=ftp^_%m)Ty<^Q99;qwK^vN7Ra~8bfB5Gb}hFONN(+3fwsM8=dvciDB40fa+2!k>tx)G($Pguht1J? zO2Pcl0JqQySZsURKCpT8S7K6SZugKE7j#jtAW7-mf?{wblc}9aXAl5pOWEl{T}7=VQTOg$(L0VPWr>f8VGWn_KpMYMorBW z8!^{AnUbae_0Wo|?CV+P&|qhSAq7My$S6NdS=hJQvAEM8F+?xvl+4-Gp;{@@6eVGq z0qPc zrxooLxkHF*NHCdKCXp+6V<82wy*Ml;L6cxzEv5EF=uLcyUf#A#&7isbpcnw!W|>g@ zYXD9t4;12^)|M3ci&Lf-Py+~~`MLm5+tPY_Esz~!C_`;5N@-WD{`A*0$?2KOjybPH zFttp)coTfFSTA6}h)lq0bcCF0?67C3>><&1 zSTChMen`=Z(n0LY*z3z!BituCmWY>!)SCH94>||U71*ntqO(|jFpIhYdSWD8B0&;Q zAbDJ%rR>uLnJx_4uqIWpmPkJ!qN{YO`|Y_eqPvhAyikIE6)&NbUPs3nwjVwC1vTJ+ z)nUrV(cBkLnY=DW(MC7$qo+%_%$SC4C+j{cER+mw=s9-$R6{Nt-}8?%e9y}qq1&22 z4he0I)nW;Dpa@i5fB3ql%#N)t4y~FXz@AQ4&Nil4BL7}ll5K-pBd*BzI-Ae(A-V7q zYeTWSXZeeK^N9~AoiY?@<<$?vb321hOd>KI7}!C#Ss9@iR^pJuD}tV zgXSqo$L#3U)MD>n^mcg?fzB_fsG+dYr8vIehC_Aie!+YotszmM;oWe(P!chhdBXFS ziw(yK?&7M1GBaZI7D&|@dGOuk^?b+=dYIDIfgjTGB38RuzbK)D8a4?hE@oS9 zpmj14fQ>~72?t50+vI?_Eyn@M%TXsg`#*cj%==_XI|2Y%@Udcd?ksqlQA=cpfrzw& z#|k$~ffTu~#DlIxglp1}rezRo243w0z67{p6vc;lYI{wB8G613w>nEd`P>m&AJdW? zjZpl-6}HFFxtrE%Odeu{RB<%iYVEzkxpftEe6Z3XMNu)#_!;63T%v_MTmy7rp)^I6 z%t|S^vHU@^2>HC{zLekVYjSy~shRfpXDy%X$2w5yIPtDii^jhq-sEk$@a6zXFr#&> zBCV;*&{bB>%s9GK>RwqcP~@6~vO@cSwk69Dxi}7@N3ZG5Zy#NVEycxWV@p}96CJ#L z6IF_+o(VPsE>IRKL^%qLhY65`wwwA2CAhkIxeiu%J_Pj&Qq!v*$~Qn-wyAQAre6eV znFD~Jj?w$2i``P@ZdZrPb1a4u(L$ZCcRek*sjwqdviYrce&&qqaYE7C18VAenJAeW zfH4xCj~Ei|DRPyH@nBokRA8*^Q%O9W1Q~n0OHpB0()pnQV&@6%mvD zF_mGJ>&(7{?QipE-a5Hryb-w{E(CKfmR@Y?^7P}uUe+_g9;DbYzE5L#F9z8@6eMEM zpU$ajIC=xiW#NKA^WE6wYlfqC7niI}gd2XsV2I%FrNCxIjqvgfB>lM25ghMgnU za??bTnMGD(t7+^zPlEOhq@QVx7!HG^F= z21#5UD=xOmA2%DvT-YaptL%(|Nz53mV;Hi>&?Q$z1&1kC-%$ydyyu`*+jKdX{RqZJ zj0_%3`2AF<^#|()eqn!xQ6?&-6sZNlaKo9ieM?{Pqg9H}P+U+K_pd)Uc#d5hHb0)9 z+lEHz!_+{8Np)+snU%ON#h5`yT_eHK5TZ3O<`v?T(G^rE**(7Z!}AWytSlp_OPgOO zbJ_K!h$f6@<)|XFaEriBYK=uF>{K8QQ4K-vwi1u;AF|^2v@tWm5sG?YQG+Xi)(k_& zg5qoaA@!`dGo-xoLyGfV+NZ7()4s3IpBGK)g}qjIf6Q{()Jva#bzuDGmrxOQvl{HVlbKBo7I|*IZiCuz$_@Fj81an z8JI+f$y&aOTCWgx@umL1*N{uMa z*}@-0eAD6(d!LuYJ~I)02_x#jYe1<*Az2#At85l7ia*hV4dn+2e<_nN;TbP|yfuPT zzL4Q)+pY8H)q3o9^@&qSQ;64t*Px)gPLa^IDcnhjzZH-X0A@i$vVj<1bkXEfeOv@A zf>AF8;Kh2tkjw81HG-GOkq8URI2iB-7^70jvSn&Dfn-FGALQ|aCL+ zq{=Xmm?&y&RG5Goxr>$@5Ly9vK`VFfO8$DUNP3%H_9bHap%8* zUqlrXPBma7Od~y$Z*QsyinqT^s~QjQ5y3$aSA{R|aiCcr!52|kwU&OVw(zRfPrBAb zS}T0_K6m_$<2GndXZWtbaq{#>(0F`AW7C;@8k$>uJ$6`g$GR^pqL`LK@M<4Qqw<$m?`Va784XqF8yh zuD~_Xn@Yw}O&y^HHzo<2qoR@~W{)NN(IwL;5K2S|p>O1&FR=EJ7fl|qpYd9z_kZXy zZlFGs&c)Twl36&wi$$zLbS61FC1O-zd%=z3V3nao@UjNHYws1j{r*AGicMMCpkKb2 z%PCTCmh#vuzdFFGQr9;-WK>z`&v0gw(@VM6JQcPD9ajUhy_f-&XG8|GtV-rp87|Tm zw7#)7nJt0)ONnRaAC&H~Jc_JibTYK97l#w+JTNcG zXSW>WZoG?OXb0ki#$x#1MCfA2@(?zVZ9L&VXuOPVMK9xy!-dgFn%&FxYb=;gZ}_2u zy=PIU=Pj`kkVxv0z=?}{cEIM4X$C95^)UDO;Ea#SQloN zm9mSY6o*EMioTFo;nu%gGF$36ey{ec6H2TN5A^iA*oJk)(E&p}GTFGCK}SD7A8@8M zn~F5AmO@t%*i9V##$c@FDM{Jz2^(kX8 zp*C#jm0YQc^y)~i_#%-*pnR_6>ONP!qul`Oce-w?IHWeZ%$~2X6Gye8*6lOr>JgYjY)eUvB(P0#e##IR-t&wl-@g_a9{#0d5Rw2f z%Sh%id}#!lUU5mmDfNN;JOcGv)<9iRr$czb>A{Urs7SlVd!a)(*^cse?b0bR*R5$` znkM;K7TkY@P#&o=;5`J(3rC-4YB)yErj3cQ^ zBoHv7gEZ2Cf^Qh*58YRwaKA3iZs_02C0-;uv*7i>cW*E*zIL(y{2tco;k~7knbCx! zThxL&YnKbWBu)bt2h~c;g%@C6fP;{qVF{#U$6y zGNl9W;H#{ySLu7fdpZ9u1;>885?qH<&I?1A*=G_nGBnYvI-D-h{;xjL?|DYwV(jkr)>!D0wpTvq=AB>H z*A^+P{Ca6{BcsyFW64_jCNS-2PrYQLR($yr`hjTh+1VS4lJ}mkW@jXqKVgLxt#WGi zY2+k^1tk{VzzFnFNJW7@w~~H{BGcpss5x7<=kN%@+Rml#A=%QxbR;szQKXg{i)OUK z(8aVxYO88NMGg&q&Y7S}fWwI#I0}-KZc29(2XC++0MMT#O~0Q$IXQU~xf%rI9aJcl zfImL37o`qgTRF-@mz3IlG3q6VNiALSTHoTWOpx=KYK&ZFqlO!#rDFbaJ4z45VRl=D zj-_6=(10Q3Y}9V80DudmXo-YjgW2}u#<{mt?P$eGY?cG}@|U+VJ;O;HZ!mXg3ty|6 zcI>Ugj-_2VCbY4Catgcb#;R;!oUi#V{j zG<2pdLimz2(a*=OzU8vIQR8`Rada!IDR{OL+@JfK&XKi~7|r`7MKBVjfF08O%AGe} z6x;3;2t?s+-o2tzHw+|>Lwh6&U!vYcPKLNSYQtCzcb*fjjl-Vlm>s8O?x?`)=AL+> zLtS=4P#`{NtSev{SgZdZ*77(@pD+NAnwEsG?~v;_;Iba>(=;C7I zBc_DAOUB#sD`XGJ2I<4LBxd*VnXS?mP1Kmr73efIa7<(ys6LSdAB8XZT9X88_XTqL zW5NgtjiD0aS)u8AHyT0-FHOvA^j3VPY7A#X^^c8qMS<|g6t;qpT7wfn^8JV%^2Nsr zoVrF1FX7{ArcC3uQfi75;`;}IM$CJOg5L|m>F z%*U3$TI6FS6F)juq4-4k;YA7Ph&1bVK7jf-A-v}plaFFYTUfMXR$xv6*slH}P}t8U zAtY99O)Z_i6L3MX(;Nkoexe~?)!Y<#)Tq?Ad?nKgjc3)e(>6-M^|gd=?D+WB?hD5p z)Mk$JShRflXYTS&+0I>@sz8#}II(A`+C#8wpQw-t4NyX>&sPM$&;=x_rU)2*-Jqd7X7Zx9FJ1oFLE~J0*rvvAeYgc*{nzw zG~~MXw!`#12eEaoahc_=FnG#wqhvd}-y{~#jEFnH+lPc0!c}ARTk$%ESy0fU1yJ?^9ATPkUBaCS#YiRTgp&qSTOuT46pJ=Od`NEG?V(Z_gx z#4Pe*ozl+dozi}_?Y9k&%VO}XYrDAm@k0naErf2*M@lA3 ze^HM zm1ll(yZ-MAF#b0ceP=v>@TGq*NM^>LkwJeG$dfnpFZKP}0Svz!PWY|dFF^;M1o^8# z9?Sg~V828gcq;H~MgLs`S^h>tSpL+B?~%p& z^wG1J?9obB*f6c=GR?v*UgMOOk{{d(g#;4f} zA4vamhWjpze=BIF-$6gEQU3rm^UrWDKqk7s)^w)F!-9Vf?|&G>Z*`Pa^Cz~AjO)_-oNG5wO1 z8u&~1|00clZI}OUs6FnO{@CgKXZrqQ{eH}uiw~sz83v7s;V-5C*P{O2YGM6nmf8>0 zbWi)8NAQpNhVhvm#qh6%`@6lu`p=BCACubSF6`%|_H!q~^m9k{uLb|R-NO3MjI|%& zAM=ag|40YI^ivG~TDZTPDy;v^O#1=%m)#cd7d2;k+>QR*cijKQa`|U=+IR4bk2|ox z6rJwrqs!y){wb7yZO{K^y3o`9Gqddv@IL_q>7G6y{SeB(c5b8l&1Rve{bvT-_oWv($c|W`10>eqFX1f4Xe_Yf=AZtkBc`GfV9; zuIpd@%s@}~^ZMua27CtkzwFn)5yF2IO!G08rh|h6wV}BkwT1O#98C)YTL*1xeHz2> zU&d(kEOc#t{GtLWPe=z5ZL!SKYYc$U;Gf)_lqB5`hM|!CH?WwKbrD*=f}qQ z`yJNrlg^Ker#JuDMEtn(^yVKn=8rp1Z~kG4{J8Vz`F3E`AwDe6-aK2R;K2Za$L-FH60l?s zAKsb`91W>=XNY_iG}eXsjgVx##*TW=hF^qO;Ni6W<+t^OM+d4)Zfb7#yLAt0&H2NK zrg}!jd8XCDoNt$H^d_D#@gX~ zh6DKfu9R=$On0|klTA(cEYv&;%iD^-`w<)=lQ}G zMzEQk(1AN5j&f;Mqw>dgX0aCjk`P-DRT8^VoYCzxMXEU@ybfph)no^6++7xM-Evx3 zsQbyS`R-hu!?w9zn$RVtd6)CI%nG5s6FaZ!R_aR1Uss{MdCe=weYvu`QU$QraOn~l zEe&RO-)-zn3(PGR=Ig9coUxj7I>$2%E3R3Uy_CQ3EvPa$yq`1KXW6U22|ry}8>2}! zGbx%GbBp6d302&4OLRH5vtoZ?FEJ{UnG{OZ{4!}|nd|Q6Vl@E~dVGCyk=pdjecRRU zq=iL!!`;yAE?dj?WRu!ML6+o6I!)8VdB0ki8M;Nlb(ll4{THH7#d3l)2d*y;DivE0 zR2$p0Ep+N_Ot7Hh6)6M{kM_g8-!FMBvln?agwbE!nN;iBDbztVY1crU>bm1}>h+cE zFyJ1esUh7B1T2R)z+R5{v-bD)Un8q9a^U8 zTWT?q_!yG6@i1k@i7cD~Ehk2i4{uZ0)AnI}a0 znFqd?_lkhX5Nhj+tklw2Ii{M=yO^ZzMGT4)5)_ambDh`y24z8&KHwssxE3pe17x^} z-@vpwaY2)di%^u`X>ep6tR&p?pptO92BpiI21DZ*X^D#fC-cNF`b06)81))ql0H+i z=(1rR)5DfAd}bZeGc;y41t)F0%opmX8KS%b4Gy9Jp+#3vP_Um48Auz%YUd^-U?U($ zIm>{jlZYCk-K5FP)OJcCR`T750%SDgV_6y0MCf%bAc~>;tHoELqi9a&$*e7^fol?d zGr)hKs^~>YYBa9P#!|~g-Hh z`lKJfwWiY8NMWPjXRSMR7MpgtQql>m-JJitqge-TvC9O=GP%CN=*u=arN?tocJG?3 zUR>n5Gb$scR6(mk@R+hc{u+9sY0{3mrfeghTnsWdW3S88+|2_lKGZ+NB_Zg%FQ!^S zc!N&>Orv?{Aq=?*AI}fWfPjVPV=?Otv?Riluo)k~#W)@&HU=8BFXa1;n~b&2Ajj0j z2dbP&ZadLDh*A~!nN8;V#SLT8QSAM?Y}SK#aU1Rg6>sqJ$9;X7A75iLb*OS?B_SE9cm;zj*Hz7s;cPOFw|@oJ)R< z^%D?Jg6sa|(Zg3!Hq|DT+1iKuLWrIq;T`D=BLf;6zt<-c-iikb&chDPuO!JZW&Q^5 z!!g5KbQyMM?!-F){kcFyfeKYmJ=N%xW187wn@hEe6m1DQC~R@2Q~wtm(UFY)gLLD; z1z?l-Q2AQXbyRq&^66b`ObgYn`$Be0Ku(gqOk59&xdBN8*Jq)nU>FE({@U>|+v(B0 z=4;l8i(sjqJ;6mZ{6gbwmx);4=f&!-M3gUm&LFqJrI>C0|cs2ga9CuAe>E` zPXTTXU_+|1bOx?qC`m9Ft{?=_F#ck&sJ_VpR5vUODUi>M++- zKk3ewd9j1wD^>z6#D_2B7j!O-`THR={$mRChuZs%<_o1sGuF6Ls>4Onsx5qUEJ|*m zI@8?i`2~la>b2VDWAQ1B#=UlrUf00Scxivgl&_%p-QlbhP{3y>J&>UFC|K7FYj0ny zas85WDf;L^$h^INS$nrQUW4>x(!RsFP!&T-;auxRWkxd~@2novLmy*8mFhhBTtV!4 zIDx!g!*>lk?{jv+T@~IfHqQ|X!~lI|&=C8f6n@cF(4CIt1MV%bi>6Akc&2{^QD7}A zgkAOROzkI`l3cgl47)qW&Ekmb3m{{R>6|om#13+GV@1B^11YidO6!Ko&M zqrTYUXksFEj-rDu$BH@xn>b$;AD{7|i7le`)VQUjQ>1^bsRo9}+Jv2z3D6i?Q3y5D zizTUc(2YufNPG9=zUZ>(NVqC)$8i_JK%!UT0EORAA34>yd#<@stz&Xk%-j2R5p~&N za>KA^U4~)4Ely~UCWAPem?JdNb&S~phtW^VipjzefP$b( zn7M2ch=uLar?m$oRp9ZXg{DD)xypR}csRv3@z5yezRsT#)*S$$ft^D7B&guf>*v;% zaZ5xry9&ZApj94Ptr?O9xVG*g(*`nH^}3NRrgZwkUS`P<6r~8N1Q1m)Ho1FRvr2@g ze@u|cBovR1ALvuGmxUHV!fz%wA{Wog@4|IO-c^wHbM6c*jBTrm4!h6@V&iOihb1Np85uUph_6IIpf% zef_DRv@Vda&2Hk7gu1Am3Zw^G&ffF^w1OBp5>fF{(udF~lc<7~LUh~*4RzQA*XR($ z`}Nv|*fX$$qj`{ZI{sC3;l1;c$Dk5h&l<-phn#l9g0Un3Vcv3LG2{+uO= z`iB%G2)Myh6nVSnUfW|P;5WieXB(R(HDbQb3&ic%KuGaw90wVyHbB^tPwX&|M+0l9 zeN*!|LGC=;QvD2hW|kN;Sr#)M-U!z-7zEc6HICcY6Y06-ww3x(w>Nb zLe>F2q5ObaX_4u^?Hq3W*?XuD4NOe=W`QKId+%N=ZAbOWPjm>jejKyz);NO=roWMi zIL52?-Pw6(l^t2spgYX&ZZ%%q(J!Jwq%(MWc(opWSQ-&t&|YA)ntC>#e8k@Pf#wW? zNYTKvX}-8DXwl1LDbmF3{5b$>0B5jYz_afX!h>By1a8r5F>0y|a-l3oYBOBCm8sn* zE(ezQ_J!9#r_QFVGR`2NQEH8)PW_{}IcgUdZ|64{^XRd$27@|Sx;0lKAEwEiPEz8afp_}j5TzfSek5YJxuZW>FwWp+n%m~GtL>1FIC{?F~w zFr{<%^I70<#pEK8Ii=p2-Xvc?2wIKKy%tp@zFcS3Q;+8Nn@r`g6M671_m7}Y(V&O- z@wH8v*Lh$?>m?BDxNBQLEn5$VReh=D;R4l_XyXVat@@$X3dVj@n3(s4y+JIQpT0xx>iG@o@CM;-*Xx73FO^h*ThotUGy{VB;Ix|9&CBP$0-tnZ;qjuwis88Q3@x(U1= z{L2Fd;Vav!(R3n_R6wQ&M?}XI^WEXnhM~d4BF*cd)R`B zB@jH~-h?hb~ zV#Xtr_~I@~V$U2>`R>%3^q@B@G-jrmB@!YqY*0t%ky>+9l&H=R3aCqID0&L_w%4(PJ_`_C39ortPu)^*R!_`$dda|Z zxcFg{R6@i0%j}$^tc2P`L-tNMernl=(we(>1kIhI$7T;E#UQgibMb=14HwmFTgIJl zy*ZVuyRJHoCqfj%+CU!4X%Jn9UVZzeL?>%=f=+@e{(0OQ+6F2wvD|cY(r2nz^sH@{ zUh(N&@-@ZnY5MrI`HW}bS|EpFN3cDj+BqvnmYwvoJ{o>*ntpCUpz_PXL3X=o?@P^( zVnktSfX?YRU36;+G%yXd7Tj%VZt*>hPB*M)260r5v9j5@!e3fsF<{)SQ39=J2;&_p z3Vp__N5AGaG~J;)z`qG4m&J_y03O3T`LPD#m6fVd8-fS+WaIx~?yREYN|tmjW{Vjt zMvIx5nJi{zW@ct)$zo<^X0R+~i<#M?tM*)XyJz~$oclEQrB*3d{VOwKN9A7H^~In5 zM;~h|6xRBvM6`CQ^d}6DY#~_9H4up8`t++PP`;(LLAU@VZm!|pKk+WD)uMEV8~EX9 zmqM--*k6s_(Vqt%qv49x$7_~HfXSxz=oSw;UpVV7MaE2q_>__0CzIswtSrP4;aDwr z+ucxw!Qe~~am2L9a>{~P5@oi_HS7tss7(M9rzC zWJhG8+)yT+0AWM!o(4B^pq;nphMy!+N~E#CP_ys_eghvrAB*`2t5&UWdNAP@8hP?! zw_tuK$03GU0~eY!?@ZP?BK4E50_6Uu$_`-nGHV3G3K*r*eASGl2D(QTgBnYJd=55z zdSwZRAzcgi-5db*d5%htsbvn-sBIPG=#EvO&h61SGC0sC8b`2eX+SvsYHXj%+dE?K z`E|f*df1ExXMp~5h-RMmziNxBo7S)aDsDeEuL0qOD``l<-`AFM^=wJR78A^zTU|*a z?DuPp9AGdHXZGK~aHv2(Qj!n)*xccb#HrrnA;o?2Y@-)N0E!;_S}3|Nv^|g5GkJgG zpT;S%;$w;ecFA5OjEll4f)T9P!L%*t~I2`)=ug98?9x?=DFZ< zRr<3+BePCyF|xdh<^OOVs>*4bP&&DR$=KnqR$&SSX$9wB7GOioplGM z3yO1BO*ld2#;i11;|j}8Cy?U&9x?WmRTnU^KuO%g?`7+OG1~iXvomSgbd{M9-&{BI z3gyXe+IO)EG3vnoF(^M+uapMcnpdutOxT0J$1+X=ua8$6!ks$3MT;nM2V_84To5!F zbUlKc_`RVijkG5vCP&siA)BmMAMPGkHiT`!U+fF!5U#OG8dEkaXy}8F|9L|#vE7c zTswi8z6oa8!O))`9D0zzQiw?;YD`eL*r{wK35gw1@&Gn3c7}yyREIMl0Q^$FIFadj zBI#n)GD6Xn+ofq~Dy_FZhb;vQtnc$bT(gqzb;fA3pNnT1_<&BLu0KM09fCi=qH3Q{ zv>FM30p z(394n9rmjw=^IPFEH-t*V{l znpEEMq!E~T3Ue(!lC@fn@on!Vx7(o?Kafd1C_NWGl7R?tS)0^meMz9>EkeC2Q--t) zB3?Uqf{2erbLlh-H#}B6`D|HZfY6kdgf|bSLlnU#JfNd!|iykRUC|tErQ_p=050#C9HI{8$B? z<8yG!OODVM-PvwlVcwNOeHPLF?Y?ZFdbR zt8Hs}R?756@cBZ&As3y zC!Ynpo@^x>;IfB~kg-`wAFQ{5n5$*NbI$7=Dk@H-nv-R`+K2q6w;&_o4im~!ydWtZtFDq$L?)wx&`ZIl zgk6p42TXd&8o-esqE*h@OS2}$r^{U2nOr2FfC7Ba-FbVlRgwRVj|1b&*bhZL%P_k_ zs@<4eLc38UWMxKn-ga;@#fj_704T_J8+cy|Yk#AjeJz@9`7q}e(-R_n;#~l(vf43q|mDmfe#ys2aUbw>u*W60qhTIqb5N>jy2^I z2UX{9XbsJN_>_I$s_38;NU`dPDU_H!k0sME;%1EH)DHu*BK0TMvsSJ z6~3GzEruk8Vs^SEC6uMb;C$vBHu&TIB07X97$37 zk{}Q&dhO@n0PnKth9#1jF9zAWNTqi86q&WU*)NUj&8cs7Z}LW)dA6||ZMC{n@6~zV z9psumS9};1$5K8t01ao6WS&k>P@?sii-7r%2p5#A;wg8DGbHmkH|>XkN;kaE{l&JQ zORJW-iRMg#&~Enowt%Lr$uOlYXF?dy*B)BwiJoukqsFwWSRO-wq+>sBFc#$jE8p7E zYqB4WMMXDRbm4VUB6Q(>y0aFQ(a|E#iIi>``2G9OHs`+N01C>rgQ344L9OOb2~%Wa zbppMdEoki`B<0f%mjlRb%o%{!il8i_(WDC%%wp(XMU-GKk` z%kLk*2eUBKG5^^O$UyrGBY1B{WBmuqUKZLv(TCr=0U6%U75%gM?Voha%zriK{MIAJ zK=+Hp`G1}77t8W5bWHC|^)H_MZ}a`4LH>pAcjV)5x?jlaztH{5_CN z6a&MbZ7hG!=P&y5U+CVkfg@pZ# zkMU2I|8Mcp|3kg}u6w5?{zPwnkB|1(I{!kC{|C&4{wH<;Mf01nF9ZD_Rq#9JLjQkR zn12Iv`KkQ{Qv5GtE_Cm$V0b@Yeund(V3)sPFz-#jcyxcf{PD^E9)tOrjQ_x3H2>Ne ze&+F4+|*8Z^yDl%`0d5< z-ujK(<6-}zpbzcU#Z-#p`T2Z%s*|bDdTw`r^Lj)3^|okj1C}bQ4cfou($^{#9^A|S`<6`E0WoIas9eOS_SSPbtm=Y-N@j5rt@G!<6Uqj_lez_qtio& z<7St$blGuV?rp| zSCBZnnQIw3M}FRsexLc2+DgO0xuS&0`Tkq`=#LdXT}6u*TBnM&NUXQ48HkS~he$af zZ=&rFKaR(yHhyH9I(5AoqA%9;%|vU1ThTw;%DM;dzTQr?c^8BA9O62^a}otB&Yp8H zBDW76+wn)&m!TW(&b1gCS&Oh-B}dyxO;zBBxgAy$4hLdF5jl26&g*Hxk>8_I@iDxO ztF^sxV7s60CKybH6#0q>ai1y?1>d~* z*O>W!&Nuy;7$;db5QCf)781-J7HC|ttw}D5HfHUR23AcCh12wT>>yfW3zux+@LpLb z&iolm+S|^fwbK~xo_Xo}>BZ~3djvxd_)AF<7J$lZ>)tfwJSNh~mKWwWeaNO_X_{rYfxe4MeQ00{D%}w>9e1A~@R`A_jTF9ZHab7#b;5T3?7eWJ2u9{sr<9z{ z8Ge%slCLz*T7_)pQK9UsA5;l5?@g?cSdgj?xTtuQ6F9J>pTakh#Z~T*5=L_jDOQ0k zQb*%~d-DqroPke~np~$LmsscG$W4nRPNWrvllnFRmH}Q|5W$jjLM(z=)OWJl#r&JeMf>@n9#9D)^!kH1!ZM!2ZOD| z5<;2-9`_5p>OSn9&3T#2jMiG2jV&F5W*B{*t)ISO?v`Pi$j*$O-!3^Fk5w$O(HR^_ z`BFTr)`bqL$Ed<@ouii+;#Ex?Wc!i$L~(p^bSTPgr9S{bgrgrV0skJ-IA8E9&i1s1 zZ|=nEti0`#WB}wgl1?R}ZmSL_OrV02Lmh9LmBa2r94P%9<~)7%pwH7|p_J^(q;Q!! zi!*Ebo{1aMIaA-RLmwrEacT&i9P>1uZ3SJ)AR^u-r)H#~nsVxK`a_s*okp)l(1dru zC7!NeuP~GaMehzg7T%@DS!yyP%0y{6lXcicm|GZmB+wIskN~QZ`|8t?5JH$O_jACWVQb+)tIyoagA-cmADOTXl9ZDc ztb-KXp;9v?Rf|k8@VSH+1Q}*9pNQe>!F_x!mIqTCPr7`Jk7U(_J@*G~3Jq~`?h|Fi zP*@Sn2(A4_8yr9jC0}2aNyAE$)s!{7*Wbhr9BKIo$?upZH)&6>3F#djRwW?iXn@_n z7)69H1{M5@*yuPLOAM*>PW;Z&2pAJyI5M}@`~T8$+TQIAloPtYDL5%Qf#L{S`Dn|E3f9*Hwd!BEV_<_);;riPhQ2~&Z*kN zJnG~dRYdO2??@OZrz6SGDB0(A7CJor zi$Ie}CHJIZ&bO1Fuve6Ci0E*q<#;?h`V6fsozLtp9Rf4pDZwtX40Rh!=~!#5P8C0#8@z%cg=3KrG$N}3SQ*na8G`~XDeFfSwsA>i*qaCm0LmdS~&9?>S4 z!{rT99N&4UCnT|vj(t?Bd7FwqtatrU!NA|930!4`+=$G~xhS8l-AaX&yuUcy)p=zw zyGb1Q#yQ>Zh$0WqKz^Iv** zoz&a0g|yGoZX6Q=$q8b(kSnFuKU8e{>B*7h5t*vb`P?N?0(*Det7!!}A$vetA=;(t ziJcKfZkdV#2_dc%W(M+xF_f!CiyLW^sZQ-wN*dv+O6%xuSAE(m#$+dhhR;l2n$?%K zHFi%dYiu-YLE4ZRs7awSm@j1qV#*XgDMq&r0D-QLFCc!Jotu`ek-VaV;S2R_h)nms zO1*+57R@X>xrs7gmYgV-={4DcSQ2CYX!}Ups%N^4co3(Ufk)U8I{zfme+hrdG|&r_ zeE)&lq?ze+xGDL55k1uHyhG;vfZxlNDI}cMp%PpBM7oIp5^)l)C`Dk>*V6Q)@|!#- zcK0kJI!Q1?*u3!EYINjVe}iO&S87P^_FgsK2xA9}rH_f@k3WRjX)Rp{DU2i))2y8F zK6Gy2w!UsZJ8Pb{RW374Y>JpmKFpq_xq0WN&OOF&Xkm7-6gFuZQ*YR@R5TxR2b~9Z zwe^{|9awG*dctJGoUcahTvVJDCZ07$Z)j_IyLn^YFiJr0)N>0kwN%Aq1d)1KZ!2!I zU*ynby|TDmbmlr=AQd*?sp!VB5_5a{>ibuJ0prN{UVOP&&ZjRC(VcUA4pYOfqSzp- zIFM87QgI3K-L*|rmdzOaoV>;!jA24a9muW+{=vx@sarQNAWsB3N$f(ua6Ft$gRp?T zir89#0l2ng+r0Z~ok%EKq<&r|8juaRhsqMAdKwaNN*l-xEIaeuP<@T3H#{5C)+8+B>6?1F(7 z

    S9Xbmhbn4GMFuRZ`Q&N^x%iOkJNTh5JO8I0rI*!^*7e!yMPfV8!FTP_$+m z%2W2O()`KgSe$KG3G*m6Y^$+hm2E1I^&&=o2rbx)p_!9bN0W!D7I-8Ds#T!s}vJ;g?nwz@%(NhDUkzCGOO zF$QSxxCQ8KLH_|ed=91;Yq0qhU6NAutC?oDNYK6Eob+c;m8H&5Ra`)g1bCCr*apbP zD3PSO0kZ?D1O6e2c85%2tA6qJCC+;udS4LW)a#Mpmlx+J&?SYww9-*10C@vE!PSrg zL`A9|gCrq;#A3eIo1tCBJt>na$MQ8A0O;OsxU*TKXrBK}#g+}io=gUYmQ~V6DmTu{ z6TGMqCdb~c@}Q!#2!GN$q=j^1+LH_h4nhlH5rJkh#sqyO{J|N&#wtZ_(+iJWdK@_$ z*kk%4iyj6co|*&%EMAlos6E%lkv8eW?tMF2rd&ud(@XI75u{)EP!Jm_2{w$f_qYlJ zKBO~n4YjKQL_E0Ml3Dt3ko8E~EeU1C(RN5?`?DANy(=v`VgxNZWRXq9(hdQjX^aA$ zR+IF1z2OE$f&-5?Exjd(VTRG@;RSLznNzHEBglC2#5S_DU|!2Bc`}9tc>LwwwyI}P zL}33jy&e<>^YRY8c^MP-q_4e*%dAH85u)J(xcp_$tVZqq9uT@=2!Pq6pUq}vc8^Ll z3ampj|Q(O=sq&k}N0G5PrGCy`~`vGlF#Wr8o z%CsZ(y1|Wp#twscV*6xZwK2Har!8yVW4wBjSuwfgTVyKA1 z7PeCip`LN8h-F2qdD&0*@7Cl`V{u{4<6uvQ!5;M6(5%UP(F7(xMzm6E!eT zT1&T}Yg@!YyPgutB4!l*T~dzObsehh%X|iXy`YfzOSi1|XnN}wi#iO#I6=JPrhB5^ z$%+9(f~ET_g`A37ZALU?RImgm&?V|56v1#9t+YOvqDKk5g`7)}l*`4%fi4&$NfuxX z+cC~+ba}tqJ*P>bT*g<;$_9qmQb3o!%Xt1Ri<;WiYczWN7Y2)XF=E}F

    }#7{C~u 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 z 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 z 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

    cLk*$jdjh`Z5S7jA5=jhL4iEvYem;(1Aq!7mFI} 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

    Wc8lzoLBPARFBB_eu_Ed<$_fEfK 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

    *Pe|;0rf~}4+u-pmP$5FZ}oJ3Ey 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

    +

    35.2 Running SWIG

    @@ -121,15 +121,15 @@ In this example we bind from C a function and a global variable into Scilab. The double Foo = 3.0; int fact(int n) { - if (n < 0) { - return 0; - } - else if (n == 0) { - return 1; - } - else { - return n * fact(n-1); - } + if (n < 0) { + return 0; + } + else if (n == 0) { + return 1; + } + else { + return n * fact(n-1); + } } %} @@ -139,7 +139,7 @@ Note: a code in an %inline section is both parsed and wrapped by SWIG,

    -

    39.2.1 Generating the module

    +

    35.2.1 Generating the module

    @@ -182,7 +182,7 @@ The swig executable has several other command line options you can use.

    -

    39.2.2 Building the module

    +

    35.2.2 Building the module

    @@ -202,7 +202,7 @@ $ gcc -shared example_wrap.o -o libexample.so Note: we supposed in this example that the path to the Scilab include directory is /usr/local/include/scilab (which is the case in a Debian environment), this should be changed for another environment.

    -

    39.2.3 Loading the module

    +

    35.2.3 Loading the module

    @@ -226,7 +226,7 @@ Link done. which means that Scilab has successfully loaded the shared library. The module functions and other symbols are now available in Scilab.

    -

    39.2.4 Using the module

    +

    35.2.4 Using the module

    @@ -260,7 +260,7 @@ ans = Note: for conciseness, we assume in the subsequent Scilab code examples that the modules have been beforehand built and loaded in Scilab.

    -

    39.2.5 Scilab command line options

    +

    35.2.5 Scilab command line options

    @@ -304,6 +304,11 @@ The following table lists the Scilab specific command line options in addition t Generate the gateway XML with the given <gateway_id> + +-targetversion +Generate for Scilab target (major) version + +

    @@ -315,10 +320,10 @@ $ swig -scilab -help -

    39.3 A basic tour of C/C++ wrapping

    +

    35.3 A basic tour of C/C++ wrapping

    -

    39.3.1 Overview

    +

    35.3.1 Overview

    @@ -327,18 +332,22 @@ This means that functions, structs, classes, variables, etc... are interfaced th There are a few exceptions, such as constants and enumerations, which can be wrapped directly as Scilab variables.

    -

    39.3.2 Identifiers

    +

    35.3.2 Identifiers

    -In Scilab 5.x, identifier names are composed of 24 characters maximum (this limitation should disappear from Scilab 6.0 onwards). -
    Thus long function or variable names may be truncated and this can cause ambiguities. +In Scilab 5.x, identifier names are composed of 24 characters maximum (this limitation disappears from Scilab 6.0 onwards). +
    By default, variable, member, and function names longer than 24 characters are truncated, and a warning is produced for each truncation.

    -

    This happens especially when wrapping structs/classes, for which the wrapped function name is composed of the struct/class name and field names. +

    This can cause ambiguities, especially when wrapping structs/classes, for which the wrapped function name is composed of the struct/class name and field names. In these cases, the %rename directive can be used to choose a different Scilab name.

    -

    39.3.3 Functions

    +

    +Note: truncations can be disabled by specifying the target version 6 of Scilab in the targetversion argument (i.e. -targetversion 6). +

    + +

    35.3.3 Functions

    @@ -369,7 +378,7 @@ ans = 24. -

    39.3.3.1 Argument passing

    +

    35.3.3.1 Argument passing

    @@ -422,7 +431,7 @@ In Scilab, parameters are passed by value. The output (and inout) parameters are 7. -

    39.3.3.2 Multiple output arguments

    +

    35.3.3.2 Multiple output arguments

    @@ -471,7 +480,7 @@ int divide(int n, int d, int *OUTPUT, int *OUTPUT); -

    39.3.4 Global variables

    +

    35.3.4 Global variables

    @@ -540,10 +549,10 @@ It works the same:

    -

    39.3.5 Constants and enumerations

    +

    35.3.5 Constants and enumerations

    -

    39.3.5.1 Constants

    +

    35.3.5.1 Constants

    @@ -684,7 +693,7 @@ are mapped to Scilab variables, with the same name: 3.14 -

    39.3.5.2 Enumerations

    +

    35.3.5.2 Enumerations

    @@ -749,14 +758,14 @@ typedef enum { RED, BLUE, GREEN } color; -

    39.3.6 Pointers

    +

    35.3.6 Pointers

    Pointers are supported by SWIG. A pointer can be returned from a wrapped C/C++ function, stored in a Scilab variable, and used in input argument of another C/C++ function.

    -Also, thanks to the SWIG runtime which stores informations about types, pointer types are tracked between exchanges Scilab and the native code. Indeed pointer types are stored alongside the pointer adress. +Also, thanks to the SWIG runtime which stores information about types, pointer types are tracked between exchanges Scilab and the native code. Indeed pointer types are stored alongside the pointer address. A pointer is mapped to a Scilab structure (tlist), which contains as fields the pointer address and the pointer type (in fact a pointer to the type information structure in the SWIG runtime).
    Why a native pointer is not mapped to a Scilab pointer (type name: "pointer", type ID: 128) ? The big advantage of mapping to a tlist is that it exposes a new type for the pointer in Scilab, type which can be acessed in Scilab with the typeof function, and manipulated using the overloading mechanism. @@ -811,7 +820,7 @@ Note: the type name _p_FILE which means "pointer to FILE". The user of a pointer is responsible for freeing it or, like in the example, closing any resources associated with it (just as is required in a C program).

    -

    39.3.6.1 Utility functions

    +

    35.3.6.1 Utility functions

    @@ -852,7 +861,7 @@ ans = -

    39.3.6.2 Null pointers:

    +

    35.3.6.2 Null pointers:

    @@ -868,7 +877,7 @@ Using the previous SWIG_this() and SWIG_ptr(), it is possible -

    39.3.7 Structures

    +

    35.3.7 Structures

    @@ -887,8 +896,8 @@ Let's see it on an example of a struct with two members: %inline %{ typedef struct { - int x; - int arr[4]; + int x; + int arr[4]; } Foo; %} @@ -964,7 +973,7 @@ ans =

    -Note: the pointer to the struct works as described in Pointers. For example, the type of the struct pointer can be get with typeof, as following: +Note: the pointer to the struct works as described in Pointers. For example, the type of the struct pointer can be get with typeof, as following:

    @@ -977,7 +986,7 @@ Note: the pointer to the struct works as described in 39.3.8 C++ classes
    +

    35.3.8 C++ classes

    @@ -1028,7 +1037,7 @@ ans =

    -Note: like structs, class pointers are mapped as described in Pointers. Let's give an example which shows that each class pointer type is a new type in Scilab that can be used for example (through overloading) to implement a custom print for the Point class: +Note: like structs, class pointers are mapped as described in Pointers. Let's give an example which shows that each class pointer type is a new type in Scilab that can be used for example (through overloading) to implement a custom print for the Point class:

    @@ -1045,7 +1054,7 @@ Note: like structs, class pointers are mapped as described in 39.3.9 C++ inheritance
    +

    35.3.9 C++ inheritance

    @@ -1120,25 +1129,25 @@ But we can use either use the get_perimeter() function of the parent cl 18.84

    -

    39.3.10 C++ overloading

    +

    35.3.10 C++ overloading

    -As explained in 6.15 SWIG provides support for overloaded functions and constructors. +As explained in Overloaded functions and methods SWIG provides support for overloaded functions and constructors.

    -

    As SWIG knows pointer types, the overloading works also with pointer types, here is is an example with a function magnify overloaded for the previous classes Shape and Circle: +

    As SWIG knows pointer types, the overloading works also with pointer types, here is an example with a function magnify overloaded for the previous classes Shape and Circle:

     %module example
     
     void magnify(Square *square, double factor) {
    -    square->size *= factor;
    +  square->size *= factor;
     };
     
     void magnify(Circle *circle, double factor) {
    -    square->radius *= factor;
    +  square->radius *= factor;
     };
     
    @@ -1160,7 +1169,7 @@ void magnify(Circle *circle, double factor) { -

    39.3.11 Pointers, references, values, and arrays

    +

    35.3.11 Pointers, references, values, and arrays

    @@ -1218,7 +1227,7 @@ All these functions will return a pointer to an instance of Foo. As the function spam7 returns a value, new instance of Foo has to be allocated, and a pointer on this instance is returned.

    -

    39.3.12 C++ templates

    +

    35.3.12 C++ templates

    @@ -1277,7 +1286,7 @@ Then in Scilab: More details on template support can be found in the templates documentation.

    -

    39.3.13 C++ operators

    +

    35.3.13 C++ operators

    @@ -1330,7 +1339,7 @@ private: -

    39.3.14 C++ namespaces

    +

    35.3.14 C++ namespaces

    @@ -1408,7 +1417,7 @@ Note: the nspace feature is not supp

    -

    39.3.15 C++ exceptions

    +

    35.3.15 C++ exceptions

    @@ -1432,7 +1441,7 @@ void throw_exception() throw(char const *) {

     -->throw_exception()
       !--error 999
    -SWIG/Scilab: Exception (char const *) occured: Bye world !
    +SWIG/Scilab: Exception (char const *) occurred: Bye world !
     

    @@ -1449,7 +1458,7 @@ It can be used with the lasterror() function as following: --> lasterror() ans = - SWIG/Scilab: Exception (char const *) occured: Bye world ! + SWIG/Scilab: Exception (char const *) occurred: Bye world !

    @@ -1479,7 +1488,7 @@ void throw_stl_invalid_arg(int i) throw(std::invalid_argument) {

     --> throw_int();
                 !--error 999
    -SWIG/Scilab: Exception (int) occured: 12
    +SWIG/Scilab: Exception (int) occurred: 12
     
     -->throw_stl_invalid_arg(-1);
                               !--error 999
    @@ -1491,17 +1500,17 @@ More complex or custom exception types require specific exception typemaps to be
     See the SWIG C++ documentation for more details.
     

    -

    39.3.16 C++ STL

    +

    35.3.16 C++ STL

    The Standard Template Library (STL) is partially supported. See STL for more details.

    -

    39.4 Type mappings and libraries

    +

    35.4 Type mappings and libraries

    -

    39.4.1 Default primitive type mappings

    +

    35.4.1 Default primitive type mappings

    @@ -1552,7 +1561,7 @@ The default behaviour is for SWIG to generate code that will give a runtime erro -

    39.4.2 Arrays

    +

    35.4.2 Arrays

    @@ -1607,15 +1616,15 @@ void printArray(int values[], int len) { [ 0 1 2 3 ]

    -

    39.4.3 Pointer-to-pointers

    +

    35.4.3 Pointer-to-pointers

    -There are no specific typemaps for pointer-to-pointers, they are are mapped as pointers in Scilab. +There are no specific typemaps for pointer-to-pointers, they are mapped as pointers in Scilab.

    -Pointer-to-pointers are sometimes used to implement matrices in C. The following is a an example of this: +Pointer-to-pointers are sometimes used to implement matrices in C. The following is an example of this:

    @@ -1680,7 +1689,7 @@ void print_matrix(double **M, int nbRows, int nbCols) { -

    39.4.4 Matrices

    +

    35.4.4 Matrices

    @@ -1773,7 +1782,7 @@ The remarks made earlier for arrays also apply here:

  • There is no control while converting double values to integers, double values are truncated without any checking or warning.
  • -

    39.4.5 STL

    +

    35.4.5 STL

    @@ -1973,7 +1982,7 @@ ans = --> delete_PersonPtrSet(p); -

    39.5 Module initialization

    +

    35.5 Module initialization

    @@ -1997,7 +2006,7 @@ For example, to initialize the module example: --> example_Init(); -

    39.6 Building modes

    +

    35.6 Building modes

    @@ -2012,7 +2021,7 @@ To produce a dynamic module, when generating the wrapper, there are two possibil

  • the builder mode. In this mode, Scilab is responsible of building. -

    39.6.1 No-builder mode

    +

    35.6.1 No-builder mode

    @@ -2025,7 +2034,7 @@ This mode is the best option to use when you have to integrate the module build

    -

    39.6.2 Builder mode

    +

    35.6.2 Builder mode

    @@ -2053,7 +2062,7 @@ In this mode, the following SWIG options may be used to setup the build: Let's give an example how to build a module example, composed of two sources, and using a library dependency:

      -
    • the sources are baa1.c and baa2.c (and are stored in in the current directory)
    • +
    • the sources are baa1.c and baa2.c (and are stored in the current directory)
    • the library is libfoo in /opt/foo (headers stored in /opt/foo/include, and shared library in /opt/foo/lib)
    @@ -2065,14 +2074,14 @@ The command is: $ swig -scilab -builder -buildercflags -I/opt/foo/include -builderldflags "-L/opt/foo/lib -lfoo" -buildersources baa1.cxx, baa2.cxx example.i -

    39.7 Generated scripts

    +

    35.7 Generated scripts

    In this part we give some details about the generated Scilab scripts.

    -

    39.7.1 Builder script

    +

    35.7.1 Builder script

    @@ -2097,7 +2106,7 @@ ilib_build(ilib_name, table, files, libs);

  • table: two column string matrix containing a table of pairs of 'scilab function name', 'C function name'.
  • -

    39.7.2 Loader script

    +

    35.7.2 Loader script

    @@ -2136,7 +2145,7 @@ clear get_file_path; -

    39.8 Other resources

    +

    35.8 Other resources

    -

    Language Module Documentation

    +

    Supported Language Modules Documentation

    +

    Experimental Language Modules Documentation

    + + +

    Developer Documentation

    -

    11.12.1 Implementation

    +

    13.12.1 Implementation

    @@ -4298,7 +4412,7 @@ structures rather than creating new ones. These swig_module_info structures are chained together in a circularly linked list.

    -

    11.12.2 Usage

    +

    13.12.2 Usage

    This section covers how to use these functions from typemaps. To learn how to @@ -4394,7 +4508,7 @@ probably just look at the output of SWIG to get a better sense for how types are managed.

    -

    11.13 Typemaps and overloading

    +

    13.13 Typemaps and overloading

    @@ -4671,7 +4785,8 @@ then the type is given a precedence higher than any other known precedence level

    -example.i:18: Warning 467: Overloaded method foo(int) not supported (incomplete type checking rule - no precedence level in typecheck typemap for 'int').
    +example.i:18: Warning 467: Overloaded method foo(int) not supported (incomplete type
    +checking rule - no precedence level in typecheck typemap for 'int').
     
    @@ -4696,17 +4811,119 @@ simply check the type of the first array element and use that to dispatch to the Subsequent "in" typemaps would then perform more extensive type-checking. -
  • Make sure you read the section on overloading in the "SWIG and C++" chapter. +
  • Make sure you read the section on overloading in the SWIG and C++ chapter.
  • -

    11.14 More about %apply and %clear

    +

    13.13.1 SWIG_TYPECHECK_POINTER precedence level and the typecheck typemap

    + + +

    +When it comes to overloading of a particular type passed by value, pointer or reference (const and non-const), +a C++ compiler can disambiguate which overloaded function to call. +However, SWIG effectively treats these as pointers in the target language and thus as equivalent types. +For example, consider: +

    + +
    +
    +class X { ... };
    +void m(X const &c); // equivalent: void m(X *c);
    +void m(X &r);       // equivalent: void m(X *r);
    +void m(X *p);       // equivalent: void m(X *p);
    +
    +
    + +

    +These cannot be disambiguated in the target languages and so SWIG will choose the first method and ignore the subsequent two methods. +The scripting languages do this by using the overload dispatch mechanism described earlier and warnings indicate this: +

    + +
    +
    +example.i:6: Warning 509: Overloaded method m(X &) effectively ignored,
    +example.i:5: Warning 509: as it is shadowed by m(X const &).
    +example.i:7: Warning 509: Overloaded method m(X *) effectively ignored,
    +example.i:5: Warning 509: as it is shadowed by m(X const &).
    +
    +
    + +

    +The statically typed languages like Java and C# automatically ignore all but the first equivalent overloaded methods with warnings: +

    + +
    +
    +example.i:6: Warning 516: Overloaded method m(X &) ignored,
    +example.i:5: Warning 516: using m(X const &) instead.
    +example.i:7: Warning 516: Overloaded method m(X *) ignored,
    +example.i:5: Warning 516: using m(X const &) instead.
    +
    +
    + +

    +You can select the overloaded method you would like to wrap by ignoring the other two with %ignore or rename two of them with %rename +and this will of course remove the warnings too. +The problem of ambiguity is also discussed in the C++ chapter on overloading. +

    + +

    +So how does this work with respect to typemaps? +The typemaps SWIG provides to handle overloading for these three methods are from the SWIGTYPE family. +As discussed earlier, in Default typemap matching rules, +the SWIGTYPE & typemaps are used for references and SWIGTYPE * typemaps are used for pointers. +SWIG uses the special SWIG_TYPECHECK_POINTER (0) precedence level to handle these types in the "typecheck" typemap: +

    + +
    +
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) SWIGTYPE & "..."
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) SWIGTYPE * "..."
    +
    +
    + +

    +When the SWIGTYPE "typecheck" typemaps use the SWIG_TYPECHECK_POINTER precedence level, +SWIG converts the type to a pointer equivalent type and then uses the equivalent type to detect if it can be disambiguated in an overloaded method in the target language. +In our example above, the equivalent types for X const &, X & and X * are all X *. +As they are the same, they cannot be disambiguated and so just the first overloaded method is chosen. +

    + +

    +The automatic conversion to equivalent types and subsequent type comparison is triggered via the use of the special SWIG_TYPECHECK_POINTER precedence level +and works for types passed by value, pointer and reference. +Alas, there are more ways to overload a method that also need handling. +C++ smart pointers are such a type which can be disambiguated by a C++ compiler but not automatically by SWIG. +SWIG does not automatically know that a smart pointer has an equivalent type, but it can be told manually. +Just specify the 'equivalent' attribute in the "typecheck" typemap with a pointer to the underlying type. +

    + +
    +
    +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="X *") MySmartPtr<X> " ... "
    +
    +void m(X &r);            // equivalent: void m(X *r);
    +void m(MySmartPtr<X> s); // equivalent: void m(X *s);
    +
    +
    + +

    +Now SWIG will detect the two types are equivalent and generate valid code by wrapping just the first overloaded method. +You can of course choose which method to wrap by ignoring one of them with %ignore. +Otherwise both can be wrapped by removing the overloading name ambiguity by renaming one of them with %rename. +

    + +

    +The 'equivalent' attribute is used in the implementation for the shared_ptr smart pointer library. +

    + +

    13.14 More about %apply and %clear

    In order to implement certain kinds of program behavior, it is sometimes necessary to -write sets of typemaps. For example, to support output arguments, one often writes -a set of typemaps like this: +write a family of typemap methods. For example, to support output arguments, one often writes +a family of typemaps like this:

    @@ -4722,7 +4939,7 @@ a set of typemaps like this:

    To make it easier to apply the typemap to different argument types and names, the %apply directive -performs a copy of all typemaps from one type to another. For example, if you specify this, +performs a copy of all typemaps from a source type to one or more set of target types. For example, if you specify this,

    @@ -4732,12 +4949,14 @@ performs a copy of all typemaps from one type to another. For example, if you s

    -then all of the int *OUTPUT typemaps are copied to int *retvalue and int32 *output. +then all of the int *OUTPUT (source) typemap methods are copied to int *retvalue and int32 *output (the targets).

    -However, there is a subtle aspect of %apply that needs more description. Namely, %apply does not -overwrite a typemap rule if it is already defined for the target datatype. This behavior allows you to do two things: +However, there is a subtle aspect of %apply that needs clarification. +Namely, if a target contains a typemap method that the source does not, +the target typemap method remains in place and unchanged. +This behavior allows you to do two things:

      @@ -4745,7 +4964,7 @@ overwrite a typemap rule if it is already defined for the target datatype. Thi %apply to incorporate the remaining pieces. -
    • Sets of different typemaps can be applied to the same datatype using repeated %apply directives. +
    • Different typemaps can be applied to the same datatype using repeated %apply directives.
    @@ -4767,6 +4986,10 @@ For example: } } +%typemap(arginit) int *invalue %{ + $1 = NULL; +%} + ... %apply int *INPUT { int *invalue }; %apply int *POSITIVE { int *invalue }; @@ -4774,9 +4997,11 @@ For example:

    -Since %apply does not overwrite or replace any existing rules, the only way to reset behavior is to -use the %clear directive. %clear removes all typemap rules defined for a specific datatype. For -example: +In this example, neither of the two %apply directives will overwrite / delete the "arginit" typemap as neither has an "arginit" typemap. +The result is a family of three relevant typemaps for int *invalue. +Since %apply does not overwrite / delete any existing rules, the only way to reset behavior is to +delete them, such as with the %clear directive. +For example:

    @@ -4785,8 +5010,19 @@ example:
    +

    +will delete the typemaps for all the typemap methods; namely "in", "check" and "arginit". Alternatively delete each one individually: +

    -

    11.15 Passing data between typemaps

    +
    +
    +%typemap(in) int *invalue;
    +%typemap(check) int *invalue;
    +%typemap(arginit) int *invalue;
    +
    +
    + +

    13.15 Passing data between typemaps

    @@ -4823,7 +5059,7 @@ sure that the typemaps sharing information have exactly the same types and names

    -

    11.16 C++ "this" pointer

    +

    13.16 C++ "this" pointer

    @@ -4883,7 +5119,7 @@ will also match the typemap. One work around is to create an interface file tha the method, but gives the argument a name other than self.

    -

    11.17 Where to go for more information?

    +

    13.17 Where to go for more information?

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Varargs.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Varargs.html similarity index 97% rename from winx64/bin/swig-3.0.12/Doc/Manual/Varargs.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Varargs.html index fb58ee39..9f20469d 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Varargs.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Varargs.html @@ -7,7 +7,7 @@ -

    14 Variable Length Arguments

    +

    16 Variable Length Arguments

      @@ -43,7 +43,7 @@ added in SWIG-1.3.12. Most other wrapper generation tools have wisely chosen to avoid this issue.

      -

      14.1 Introduction

      +

      16.1 Introduction

      @@ -140,7 +140,7 @@ List make_list(const char *s, ...) {

    -

    14.2 The Problem

    +

    16.2 The Problem

    @@ -233,7 +233,7 @@ can also support real varargs wrapping (with stack-frame manipulation) if you are willing to get hands dirty. Keep reading.

    -

    14.3 Default varargs support

    +

    16.3 Default varargs support

    @@ -302,7 +302,7 @@ Read on for further solutions.

    -

    14.4 Argument replacement using %varargs

    +

    16.4 Argument replacement using %varargs

    @@ -413,7 +413,7 @@ mixed argument types such as printf(). Providing general purpose wrappers to such functions presents special problems (covered shortly).

    -

    14.5 Varargs and typemaps

    +

    16.5 Varargs and typemaps

    @@ -423,8 +423,8 @@ Variable length arguments may be used in typemap specifications. For example:

     %typemap(in) (...) {
    -    // Get variable length arguments (somehow)
    -    ...
    +  // Get variable length arguments (somehow)
    +  ...
     }
     
     %typemap(in) (const char *fmt, ...) {
    @@ -529,8 +529,11 @@ like this:
           SWIG_fail;
         }
         pystr = PyUnicode_AsUTF8String(pyobj);
    +    if (!pystr) {
    +      SWIG_fail;
    +    }
         str = strdup(PyBytes_AsString(pystr));
    -    Py_XDECREF(pystr);
    +    Py_DECREF(pystr);
     %#else  
         if (!PyString_Check(pyobj)) {
           PyErr_SetString(PyExc_ValueError, "Expected a string");
    @@ -590,7 +593,7 @@ really want to elevate your guru status and increase your job
     security, continue to the next section.
     

    -

    14.6 Varargs wrapping with libffi

    +

    16.6 Varargs wrapping with libffi

    @@ -842,7 +845,7 @@ provide an argument number for the first extra argument. This can be used to in values. Please consult the chapter on each language module for more details.

    -

    14.7 Wrapping of va_list

    +

    16.7 Wrapping of va_list

    @@ -896,7 +899,7 @@ int my_vprintf(const char *fmt, ...) {

    -

    14.8 C++ Issues

    +

    16.8 C++ Issues

    @@ -965,7 +968,7 @@ design or to provide an alternative interface using a helper function than it is fully general wrapper to a varargs C++ member function.

    -

    14.9 Discussion

    +

    16.9 Discussion

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Warnings.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Warnings.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Warnings.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Warnings.html index e7b291f2..c63d7de0 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Warnings.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Warnings.html @@ -7,7 +7,7 @@ -

    15 Warning Messages

    +

    18 Warning Messages

    @@ -36,7 +37,7 @@ -

    15.1 Introduction

    +

    18.1 Introduction

    @@ -56,7 +57,7 @@ where the generated wrapper code will probably compile, but it may not work like you expect.

    -

    15.2 Warning message suppression

    +

    18.2 Warning message suppression

    @@ -148,7 +149,7 @@ your interface. Ignore the warning messages at your own peril.

    -

    15.3 Enabling extra warnings

    +

    18.3 Enabling extra warnings

    @@ -221,7 +222,7 @@ that is, any warnings suppressed or added in %warnfilter, #pragma S or the -w option.

    -

    15.4 Issuing a warning message

    +

    18.4 Issuing a warning message

    @@ -275,7 +276,7 @@ example.i:24: Warning 901: You are really going to regret this usage of blah * s

    -

    15.5 Symbolic symbols

    +

    18.5 Symbolic symbols

    @@ -310,7 +311,7 @@ or -

    15.6 Commentary

    +

    18.6 Commentary

    @@ -327,7 +328,7 @@ no obvious recovery. There is no mechanism for suppressing error messages.

    -

    15.7 Warnings as errors

    +

    18.7 Warnings as errors

    @@ -336,7 +337,7 @@ option. This will cause SWIG to exit with a non successful exit code if a warning is encountered.

    -

    15.8 Message output format

    +

    18.8 Message output format

    @@ -355,10 +356,10 @@ $ swig -python -Fmicrosoft example.i example.i(4) : Syntax error in input(1). -

    15.9 Warning number reference

    +

    18.9 Warning number reference

    -

    15.9.1 Deprecated features (100-199)

    +

    18.9.1 Deprecated features (100-199)

      @@ -386,7 +387,7 @@ example.i(4) : Syntax error in input(1).
    • 126. The 'nestedworkaround' feature is deprecated.
    -

    15.9.2 Preprocessor (200-299)

    +

    18.9.2 Preprocessor (200-299)

      @@ -398,7 +399,7 @@ example.i(4) : Syntax error in input(1).
    • 206. Unexpected tokens after #directive directive.
    -

    15.9.3 C/C++ Parser (300-399)

    +

    18.9.3 C/C++ Parser (300-399)

      @@ -475,7 +476,7 @@ example.i(4) : Syntax error in input(1).
    • 395. operator delete[] ignored.
    -

    15.9.4 Types and typemaps (400-499)

    +

    18.9.4 Types and typemaps (400-499)

    J)*Ai*ebXFVLMCsOI2>y}^?q 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 -
  • Default arguments
  • Protection
  • Enums and constants
  • Friends @@ -39,16 +38,27 @@
  • Pass and return by value
  • Inheritance
  • A brief discussion of multiple inheritance, pointers, and type checking -
  • Wrapping Overloaded Functions and Methods +
  • Default arguments +
  • Overloaded functions and methods -
  • Wrapping overloaded operators +
  • Overloaded operators
  • Class extension
  • Templates +
  • Namespaces @@ -70,9 +85,15 @@

    -This chapter describes SWIG's support for wrapping C++. As a prerequisite, +This chapter describes SWIG's support for wrapping C++. +It is mostly concerned about C++ as defined by the C++ 98 and 03 standards. +For additions to the original C++ standard, please read the +SWIG and C++11, +SWIG and C++14 and +SWIG and C++17 chapters. +As a prerequisite, you should first read the chapter SWIG Basics to see -how SWIG wraps ANSI C. Support for C++ builds upon ANSI C +how SWIG wraps ISO C. Support for C++ builds upon ISO C wrapping and that material will be useful in understanding this chapter.

    @@ -123,7 +144,7 @@ yourself in the foot. You will just have to be careful.

    To wrap C++, SWIG uses a layered approach to code generation. -At the lowest level, SWIG generates a collection of procedural ANSI-C style +At the lowest level, SWIG generates a collection of procedural ISO C style wrappers. These wrappers take care of basic type conversion, type checking, error handling, and other low-level details of the C++ binding. These wrappers are also sufficient to bind C++ into any target language @@ -346,8 +367,8 @@ public: class Spam { public: - Foo *value; - ... + Foo *value; + ... }; @@ -706,7 +727,7 @@ class Foo { protected: Foo(); // Not wrapped. public: - ... + ... }; @@ -726,7 +747,7 @@ public: class Grok : public Bar { public: - Grok(); // Not wrapped. No implementation of abstract spam(). + Grok(); // Not wrapped. No implementation of abstract spam(). }; @@ -777,9 +798,9 @@ the normal constructor function. For example, if you have this:

     class List {
     public:
    -    List();    
    -    List(const List &);      // Copy constructor
    -    ...
    +  List();    
    +  List(const List &);      // Copy constructor
    +  ...
     };
     
    @@ -803,7 +824,7 @@ through a special function like this:
     List *copy_List(List *f) {
    -    return new List(*f);
    +  return new List(*f);
     }
     
    @@ -832,7 +853,7 @@ However, copy constructor wrappers can be generated if using the copyctor @@ -851,9 +872,9 @@ could be wrapped, but they had to be renamed. For example:
     class Foo {
     public:
    -    Foo();
    +  Foo();
       %name(CopyFoo) Foo(const Foo &);
    -    ...
    +  ...
     };
     
    @@ -969,8 +990,8 @@ not primitive types, such as classes. For instance, if you had another class lik
     class Foo {
     public:
    -    List items;
    -    ...
    +  List items;
    +  ...
     
    @@ -982,10 +1003,10 @@ For example:
     List *Foo_items_get(Foo *self) {
    -    return &self->items;
    +  return &self->items;
     }
     void Foo_items_set(Foo *self, List *value) {
    -    self->items = *value;
    +  self->items = *value;
     }
     
    @@ -1007,10 +1028,10 @@ It is the naturalvar feature and can be used to effectively change the way acces
     const List &Foo_items_get(Foo *self) {
    -    return self->items;
    +  return self->items;
     }
     void Foo_items_set(Foo *self, const List &value) {
    -    self->items = value;
    +  self->items = value;
     }
     
    @@ -1094,113 +1115,7 @@ a few problems related to structure wrapping and some of SWIG's customization features.

    -

    6.7 Default arguments

    - - -

    -SWIG will wrap all types of functions that have default arguments. For example member functions: -

    - -
    -
    -class Foo {
    -public:
    -    void bar(int x, int y = 3, int z = 4);
    -};
    -
    -
    - -

    -SWIG handles default arguments by generating an extra overloaded method for each defaulted argument. -SWIG is effectively handling methods with default arguments as if it was wrapping the equivalent overloaded methods. -Thus for the example above, it is as if we had instead given the following to SWIG: -

    - -
    -
    -class Foo {
    -public:
    -    void bar(int x, int y, int z);
    -    void bar(int x, int y);
    -    void bar(int x);
    -};
    -
    -
    - -

    -The wrappers produced are exactly the same as if the above code was instead fed into SWIG. -Details of this are covered later in the Wrapping Overloaded Functions and Methods section. -This approach allows SWIG to wrap all possible default arguments, but can be verbose. -For example if a method has ten default arguments, then eleven wrapper methods are generated. -

    - -

    -Please see the Features and default arguments -section for more information on using %feature with functions with default arguments. -The Ambiguity resolution and renaming section -also deals with using %rename and %ignore on methods with default arguments. -If you are writing your own typemaps for types used in methods with default arguments, you may also need to write a typecheck typemap. -See the Typemaps and overloading section for details or otherwise -use the compactdefaultargs feature flag as mentioned below. -

    - -

    -Compatibility note: Versions of SWIG prior to SWIG-1.3.23 wrapped default arguments slightly differently. -Instead a single wrapper method was generated and the default values were copied into the C++ wrappers -so that the method being wrapped was then called with all the arguments specified. -If the size of the wrappers are a concern then this approach to wrapping methods with default arguments -can be re-activated by using the compactdefaultargs -feature flag. -

    - -
    -
    -%feature("compactdefaultargs") Foo::bar;
    -class Foo {
    -public:
    -    void bar(int x, int y = 3, int z = 4);
    -};
    -
    -
    - - -

    -This is great for reducing the size of the wrappers, but the caveat is it does not work for the statically typed languages, -such as C# and Java, -which don't have optional arguments in the language, -Another restriction of this feature is that it cannot handle default arguments that are not public. -The following example illustrates this: -

    - -
    -
    -class Foo {
    -private:
    -  static const int spam;
    -public:
    -  void bar(int x, int y = spam);   // Won't work with %feature("compactdefaultargs") -
    -                                   // private default value
    -};
    -
    -
    - -

    -This produces uncompilable wrapper code because default values in C++ are -evaluated in the same scope as the member function whereas SWIG -evaluates them in the scope of a wrapper function (meaning that the -values have to be public). -

    - -

    -The compactdefaultargs feature is automatically turned on when wrapping C code with default arguments. -Some target languages will also automatically turn on this feature -if the keyword arguments feature (kwargs) is specified for either C or C++ functions, and the target language supports kwargs, -the compactdefaultargs feature is also automatically turned on. -Keyword arguments are a language feature of some scripting languages, for example Ruby and Python. -SWIG is unable to support kwargs when wrapping overloaded methods, so the default approach cannot be used. -

    - -

    6.8 Protection

    +

    6.7 Protection

    @@ -1220,7 +1135,7 @@ until you explicitly give a `public:' declaration (This is the same convention used by C++).

    -

    6.9 Enums and constants

    +

    6.8 Enums and constants

    @@ -1250,7 +1165,7 @@ Swig_STOUT = Swig::STOUT Members declared as const are wrapped as read-only members and do not create constants.

    -

    6.10 Friends

    +

    6.9 Friends

    @@ -1278,7 +1193,7 @@ equivalent to one generated for the following declaration

     class Foo {
     public:
    -    ...
    +  ...
     };
     
     void blah(Foo *f);    
    @@ -1311,7 +1226,7 @@ namespace bar {
     and a wrapper for the method 'blah' will not be generated.
     

    -

    6.11 References and pointers

    +

    6.10 References and pointers

    @@ -1411,7 +1326,7 @@ templates and the STL. This was first added in SWIG-1.3.12.

    -

    6.12 Pass and return by value

    +

    6.11 Pass and return by value

    @@ -1485,8 +1400,8 @@ class A; %feature("valuewrapper") B; struct B { - B(); - // .... + B(); + // .... };

    @@ -1515,7 +1430,7 @@ classes that don't define a default constructor. It is not used for C++ pointers or references.

    -

    6.13 Inheritance

    +

    6.12 Inheritance

    @@ -1701,7 +1616,7 @@ functions for virtual members that are already defined in a base class.

    -

    6.14 A brief discussion of multiple inheritance, pointers, and type checking

    +

    6.13 A brief discussion of multiple inheritance, pointers, and type checking

    @@ -1833,7 +1748,113 @@ int y = B_function((B *) pB); In practice, the pointer is held as an integral number in the target language proxy class.

    -

    6.15 Wrapping Overloaded Functions and Methods

    +

    6.14 Default arguments

    + + +

    +SWIG will wrap all types of functions that have default arguments. For example member functions: +

    + +
    +
    +class Foo {
    +public:
    +  void bar(int x, int y = 3, int z = 4);
    +};
    +
    +
    + +

    +SWIG handles default arguments by generating an extra overloaded method for each defaulted argument. +SWIG is effectively handling methods with default arguments as if it was wrapping the equivalent overloaded methods. +Thus for the example above, it is as if we had instead given the following to SWIG: +

    + +
    +
    +class Foo {
    +public:
    +  void bar(int x, int y, int z);
    +  void bar(int x, int y);
    +  void bar(int x);
    +};
    +
    +
    + +

    +The wrappers produced are exactly the same as if the above code was instead fed into SWIG. +Details of this are covered in the next section Overloaded functions and methods. +This approach allows SWIG to wrap all possible default arguments, but can be verbose. +For example if a method has ten default arguments, then eleven wrapper methods are generated. +

    + +

    +Please see the Features and default arguments +section for more information on using %feature with functions with default arguments. +The Renaming and ambiguity resolution section +also deals with using %rename and %ignore on methods with default arguments. +If you are writing your own typemaps for types used in methods with default arguments, you may also need to write a typecheck typemap. +See the Typemaps and overloading section for details or otherwise +use the compactdefaultargs feature flag as mentioned below. +

    + +

    +Compatibility note: Versions of SWIG prior to SWIG-1.3.23 wrapped default arguments slightly differently. +Instead a single wrapper method was generated and the default values were copied into the C++ wrappers +so that the method being wrapped was then called with all the arguments specified. +If the size of the wrappers are a concern then this approach to wrapping methods with default arguments +can be re-activated by using the compactdefaultargs +feature flag. +

    + +
    +
    +%feature("compactdefaultargs") Foo::bar;
    +class Foo {
    +public:
    +  void bar(int x, int y = 3, int z = 4);
    +};
    +
    +
    + + +

    +This is great for reducing the size of the wrappers, but the caveat is it does not work for the statically typed languages, +such as C# and Java, +which don't have optional arguments in the language, +Another restriction of this feature is that it cannot handle default arguments that are not public. +The following example illustrates this: +

    + +
    +
    +class Foo {
    +private:
    +  static const int spam;
    +public:
    +  void bar(int x, int y = spam);   // Won't work with %feature("compactdefaultargs") -
    +                                   // private default value
    +};
    +
    +
    + +

    +This produces uncompilable wrapper code because default values in C++ are +evaluated in the same scope as the member function whereas SWIG +evaluates them in the scope of a wrapper function (meaning that the +values have to be public). +

    + +

    +The compactdefaultargs feature is automatically turned on when wrapping C code with default arguments. +Some target languages will also automatically turn on this feature +if the keyword arguments feature (kwargs) is specified for either C or C++ functions, and the target language supports kwargs, +the compactdefaultargs feature is also automatically turned on. +Keyword arguments are a language feature of some scripting languages, for example Ruby and Python. +SWIG is unable to support kwargs when wrapping overloaded methods, so the default approach cannot be used. +

    + +

    6.15 Overloaded functions and methods

    @@ -2021,7 +2042,7 @@ checked in the same order as they appear in this ranking. If you're still confused, don't worry about it---SWIG is probably doing the right thing.

    -

    6.15.2 Ambiguity in Overloading

    +

    6.15.2 Ambiguity in overloading

    @@ -2139,7 +2160,7 @@ it means that the target language module has not yet implemented support for ove functions and methods. The only way to fix the problem is to read the next section.

    -

    6.15.3 Ambiguity resolution and renaming

    +

    6.15.3 Renaming and ambiguity resolution

    @@ -2399,8 +2420,8 @@ the first renaming rule found on a depth-first traversal of the class hierarchy is used.

  • -
  • The name matching rules strictly follow member qualification rules. -For example, if you have a class like this:

    +
  • The name matching rules strictly follow member qualifier rules. +For example, if you have a class and member with a member that is const qualified like this:

    @@ -2424,7 +2445,7 @@ the declaration
     

    -will not apply as there is no unqualified member bar(). The following will apply as +will not apply as there is no unqualified member bar(). The following will apply the rename as the qualifier matches correctly:

    @@ -2434,6 +2455,26 @@ the qualifier matches correctly: +

    +Similarly for combinations of cv-qualifiers and ref-qualifiers, all the qualifiers must be specified to match correctly: +

    + +
    +
    +%rename(name) Jam::bar();          // will not match
    +%rename(name) Jam::bar() &;        // will not match
    +%rename(name) Jam::bar() const;    // will not match
    +%rename(name) Jam::bar() const &;  // ok, will match
    +
    +class Jam {
    +public:
    +  ...
    +  void bar() const &;
    +  ...
    +};
    +
    +
    +

    An often overlooked C++ feature is that classes can define two different overloaded members that differ only in their qualifiers, like this: @@ -2466,7 +2507,7 @@ For example we can give them separate names in the target language:

    Similarly, if you merely wanted to ignore one of the declarations, use %ignore -with the full qualification. For example, the following directive +with the full qualifier. For example, the following directive would tell SWIG to ignore the const version of bar() above:

    @@ -2532,8 +2573,7 @@ exactly matches the wrapped method:

    The C++ method can then be called from the target language with the new name no matter how many arguments are specified, for example: newbar(2, 2.0), newbar(2) or newbar(). -However, if the %rename does not contain the default arguments, it will only apply to the single equivalent target language overloaded method. -So if instead we have: +However, if the %rename does not contain the default arguments:

    @@ -2542,9 +2582,24 @@ So if instead we have:
    +

    +then only one of the three equivalent overloaded methods will be renamed and wrapped as if SWIG parsed: +

    + +
    +
    +void Spam::newbar(int i, double d);
    +void Spam::bar(int i);
    +void Spam::bar();
    +
    +
    +

    The C++ method must then be called from the target language with the new name newbar(2, 2.0) when both arguments are supplied or with the original name as bar(2) (one argument) or bar() (no arguments). +

    + +

    In fact it is possible to use %rename on the equivalent overloaded methods, to rename all the equivalent overloaded methods:

    @@ -2586,7 +2641,7 @@ As a general rule, statically typed languages like Java are able to provide more than dynamically typed languages like Perl, Python, Ruby, and Tcl.

    -

    6.16 Wrapping overloaded operators

    +

    6.16 Overloaded operators

    @@ -2779,7 +2834,7 @@ into two methods such that additional logic can be packed into the operations; C this[type key] { get { ... } set { ... }}, Python uses __getitem__ and __setitem__, etc. In C++ if the return type of operator[] is a reference and the method is const, it is often indicative of the setter, -and and the getter is usually a const function return an object by value. +and the getter is usually a const function return an object by value. In the absence of any hard and fast rules and the fact that there may be multiple index operators, it is up to the user to choose the getter and setter to use by using %rename as shown earlier.

    @@ -2936,63 +2991,76 @@ as vector<int>. The wrapper for foo() will accept either variant.

    +

    6.18.1 The %template directive

    + +

    -Starting with SWIG-1.3.7, simple C++ template declarations can also be -wrapped. SWIG-1.3.12 greatly expands upon the earlier implementation. Before discussing this any further, there are a few things -you need to know about template wrapping. First, a bare C++ template +There are a couple of important points about template wrapping. +First, a bare C++ template does not define any sort of runnable object-code for which SWIG can normally create a wrapper. Therefore, in order to wrap a template, you need to give SWIG information about a particular template -instantiation (e.g., vector<int>, +instantiation (e.g., vector<int>, array<double>, etc.). Second, an instantiation name such as vector<int> is generally not a valid identifier name in most target languages. Thus, you will need to give the -template instantiation a more suitable name such as intvector -when creating a wrapper. +template instantiation a more suitable name such as intvector.

    -To illustrate, consider the following template definition: +To illustrate, consider the following class template definition:

     template<class T> class List {
     private:
    -    T *data;
    -    int nitems;
    -    int maxitems;
    +  T *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max) {
    -      data = new T [max];
    -      nitems = 0;
    -      maxitems = max;
    -    }
    -    ~List() {
    -      delete [] data;
    -    };
    -    void append(T obj) {
    -      if (nitems < maxitems) {
    -        data[nitems++] = obj;
    -      }
    -    }
    -    int length() {
    -      return nitems;
    -    }
    -    T get(int n) {
    -      return data[n];
    +  List(int max) {
    +    data = new T [max];
    +    nitems = 0;
    +    maxitems = max;
    +  }
    +  ~List() {
    +    delete [] data;
    +  };
    +  void append(T obj) {
    +    if (nitems < maxitems) {
    +      data[nitems++] = obj;
         }
    +  }
    +  int length() {
    +    return nitems;
    +  }
    +  T get(int n) {
    +    return data[n];
    +  }
     };
     

    -By itself, this template declaration is useless--SWIG simply ignores it -because it doesn't know how to generate any code until unless a definition of +By itself, this class template is useless--SWIG simply ignores it +because it doesn't know how to generate any code unless a definition of T is provided. +The %template directive is required to instantiate the template for use in a target language. +The directive requires an identifier name for use in the target language plus the template for instantiation. +The example below instantiates List<int> for use as a class named intList:

    +
    +
    +%template(intList) List<int>;
    +
    +
    +

    -One way to create wrappers for a specific template instantiation is to simply -provide an expanded version of the class directly like this: +The instantiation expands the template code as a C++ compiler would do and then makes it available +under the given identifier name. +Essentially it is the same as wrapping the following concept code where +the class template definition has T expanded to int +(note that this is not entirely valid syntax):

    @@ -3000,42 +3068,20 @@ provide an expanded version of the class directly like this: %rename(intList) List<int>; // Rename to a suitable identifier class List<int> { private: - int *data; - int nitems; - int maxitems; + int *data; + int nitems; + int maxitems; public: - List(int max); - ~List(); - void append(int obj); - int length(); - int get(int n); + List(int max); + ~List(); + void append(int obj); + int length(); + int get(int n); };
    -

    -The %rename directive is needed to give the template class an appropriate identifier -name in the target language (most languages would not recognize C++ template syntax as a valid -class name). The rest of the code is the same as what would appear in a normal -class definition. -

    - -

    -Since manual expansion of templates gets old in a hurry, the %template directive can -be used to create instantiations of a template class. Semantically, %template is -simply a shortcut---it expands template code in exactly the same way as shown above. Here -are some examples: -

    - -
    -
    -/* Instantiate a few different versions of the template */
    -%template(intList) List<int>;
    -%template(doubleList) List<double>;
    -
    -
    -

    The argument to %template() is the name of the instantiation in the target language. The name you choose should not conflict with @@ -3053,7 +3099,81 @@ typedef List<int> intList; // OK

    -SWIG can also generate wrappers for function templates using a similar technique. +The %template directive +must always appear after the definition of the template to be expanded, so the following will work: +

    + +
    +
    +template<class T> class List { ... };
    +%template(intList) List<int>;
    +
    +
    + +

    +but if %template is used before the template definition, such as: +

    + +
    +
    +%template(intList) List<int>;
    +template<class T> class List { ... };
    +
    +
    + +

    +SWIG will generate an error: +

    + +
    +
    +example.i:3: Error: Template 'List' undefined.
    +
    +
    + +

    +Since the type system knows how to handle typedef, it is +generally not necessary to instantiate different versions of a template +for typenames that are equivalent. For instance, consider this code: +

    + +
    +
    +%template(intList) List<int>;
    +typedef int Integer;
    +...
    +void foo(List<Integer> *x);
    +
    +
    + +

    +In this case, List<Integer> is exactly the same type as +List<int>. Any use of List<Integer> is mapped back to the +instantiation of List<int> created earlier. Therefore, it is +not necessary to instantiate a new class for the type Integer (doing so is +redundant and will simply result in code bloat). +

    + +

    +The template provided to %template for instantiation must be the actual template and not a typedef to a template. +

    + +
    +
    +typedef List<int> ListOfInt;
    +
    +%template(intList) List<int>; // ok
    +%template(intList) ListOfInt; // illegal - Syntax error
    +
    +
    + + +

    6.18.2 Function templates

    + + +

    +SWIG can also generate wrappers for function templates using a similar technique +to that shown above for class templates. For example:

    @@ -3073,6 +3193,28 @@ In this case, maxint and maxdouble become unique names for spe instantiations of the function.

    +

    +SWIG even supports overloaded templated functions. As usual the %template directive +is used to wrap templated functions. For example: +

    + +
    +
    +template<class T> void foo(T x) { };
    +template<class T> void foo(T x, T y) { };
    +
    +%template(foo) foo<int>;
    +
    +
    + +

    +This will generate two overloaded wrapper methods, the first will take a single integer as an argument +and the second will take two integer arguments. +

    + +

    6.18.3 Default template arguments

    + +

    The number of arguments supplied to %template should match that in the original template definition. Template default arguments are supported. For example: @@ -3110,28 +3252,8 @@ instantiation only once in order to reduce the potential for code bloat.

    -

    -Since the type system knows how to handle typedef, it is -generally not necessary to instantiate different versions of a template -for typenames that are equivalent. For instance, consider this code: -

    +

    6.18.4 Template base classes

    -
    -
    -%template(intList) vector<int>;
    -typedef int Integer;
    -...
    -void foo(vector<Integer> *x);
    -
    -
    - -

    -In this case, vector<Integer> is exactly the same type as -vector<int>. Any use of Vector<Integer> is mapped back to the -instantiation of vector<int> created earlier. Therefore, it is -not necessary to instantiate a new class for the type Integer (doing so is -redundant and will simply result in code bloat). -

    When a template is instantiated using %template, information @@ -3158,13 +3280,13 @@ nothing is known about List<int>, you will get a warning message

    -example.h:42: Warning 401. Nothing known about class 'List<int >'. Ignored. 
    -example.h:42: Warning 401. Maybe you forgot to instantiate 'List<int >' using %template. 
    +example.h:42: Warning 401. Nothing known about class 'List< int >'. Ignored. 
    +example.h:42: Warning 401. Maybe you forgot to instantiate 'List< int >' using %template. 
     

    -If a template class inherits from another template class, you need to +If a class template inherits from another class template, you need to make sure that base classes are instantiated before derived classes. For example:

    @@ -3235,6 +3357,9 @@ TEMPLATE_WRAP(PairStringInt, std::pair<string, int>) Note the use of a vararg macro for the type T. If this wasn't used, the comma in the templated type in the last example would not be possible.

    +

    6.18.5 Template specialization

    + +

    The SWIG template mechanism does support specialization. For instance, if you define a class like this, @@ -3244,15 +3369,15 @@ a class like this,

     template<> class List<int> {
     private:
    -    int *data;
    -    int nitems;
    -    int maxitems;
    +  int *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max);
    -    ~List();
    -    void append(int obj);
    -    int length();
    -    int get(int n);
    +  List(int max);
    +  ~List();
    +  void append(int obj);
    +  int length();
    +  int get(int n);
     };
     
    @@ -3275,15 +3400,15 @@ code defines a template that is applied when the template argument is a pointer.
     template<class T> class List<T*> {
     private:
    -    T *data;
    -    int nitems;
    -    int maxitems;
    +  T *data;
    +  int nitems;
    +  int maxitems;
     public:
    -    List(int max);
    -    ~List();
    -    void append(int obj);
    -    int length();
    -    T get(int n);
    +  List(int max);
    +  ~List();
    +  void append(T obj);
    +  int length();
    +  T get(int n);
     };
     
    @@ -3322,10 +3447,13 @@ SWIG implements template argument deduction so that the following partial specia +

    6.18.6 Member templates

    + +

    -Member function templates are supported. The underlying principle is the same +Member templates are supported. The underlying principle is the same as for normal templates--SWIG can't create a wrapper unless you provide -more information about types. For example, a class with a member template might +more information about types. For example, a class with a member function template might look like this:

    @@ -3399,11 +3527,6 @@ methods to the Foo class.

    -

    -Note: because of the way that templates are handled, the %template directive -must always appear after the definition of the template to be expanded. -

    -

    Now, if your target language supports overloading, you can even try

    @@ -3424,7 +3547,7 @@ depending on the argument type.

    When used with members, the %template directive may be placed in another -template class. Here is a slightly perverse example: +class template. Here is a slightly perverse example:

    @@ -3475,7 +3598,7 @@ template<class T1, class T2> struct pair {

    This declaration is perfectly acceptable to SWIG, but the constructor template will be ignored unless you explicitly expand it. To do that, you could expand a few versions of the constructor -in the template class itself. For example: +in the class template itself. For example:

    @@ -3536,6 +3659,110 @@ constructor, that will dispatch the proper call depending on the argument type.

    +

    6.18.7 Scoping and templates

    + + +

    +The %template directive for a class template is the equivalent to an explicit instantiation +of a C++ class template. The scope for a valid %template instantiation is the same +as the scope required for a valid explicit instantiation of a C++ template. +A definition of the template for the explicit instantiation must be in scope +where the instantiation is declared and must not be enclosed within a different namespace. +

    + +

    +For example, a few %template instantiations and C++ explicit instantiations are shown below: +

    + +
    +
    +namespace N {
    +  template<typename T> class C {};
    +}
    +
    +// valid
    +%template(cin) N::C<int>;
    +template class N::C<int>;
    +
    +// valid
    +namespace N {
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// valid
    +using namespace N;
    +%template(cin) C<int>;
    +template class C<int>;
    +
    +// valid
    +using N::C;
    +%template(cin) C<int>;
    +template class C<int>;
    +
    +// ill-formed
    +namespace unrelated {
    +  using N::C;
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  using namespace N;
    +  %template(cin) C<int>;
    +  template class C<int>;
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  namespace N {
    +    %template(cin) C<int>;
    +    template class C<int>;
    +  }
    +}
    +
    +// ill-formed
    +namespace unrelated {
    +  %template(cin) N::C<int>;
    +  template class N::C<int>;
    +}
    +
    +
    + +

    +When the scope is incorrect, such as for the ill-formed examples above, an error occurs: +

    + +
    +
    +cpp_template_scope.i:34: Error: 'C' resolves to 'N::C' and was incorrectly instantiated
    +in scope 'unrelated' instead of within scope 'N'.
    +
    +
    + +

    +A note for the C++ standard geeks out there; a valid instantiation is one which conforms to +the C++03 standard as C++11 made a change to disallow using declarations and using directives to find a template. +

    + +
    +
    +// valid C++03, ill-formed C++11
    +using N::C;
    +template class C<int>;
    +
    +
    + +

    +Compatibility Note: Versions prior to SWIG-4.0.0 did not error out with incorrectly scoped +%template declarations, but this led to numerous subtle template scope problems. +

    + + +

    6.18.8 More on templates

    + +

    If all of this isn't quite enough and you really want to make someone's head explode, SWIG directives such as @@ -3568,7 +3795,7 @@ instantiation.

    -It is also possible to separate these declarations from the template class. For example: +It is also possible to separate these declarations from the class template. For example:

    @@ -3587,11 +3814,11 @@ It is also possible to separate these declarations from the template class. For ... template<class T> class List { - ... - public: - List() { } - T get(int index); - ... + ... + public: + List() { } + T get(int index); + ... };
    @@ -3609,32 +3836,13 @@ additional methods to a specific instantiation. For example: %template(intList) List<int>; %extend List<int> { - void blah() { - printf("Hey, I'm an List<int>!\n"); - } + void blah() { + printf("Hey, I'm an List<int>!\n"); + } };
    -

    -SWIG even supports overloaded templated functions. As usual the %template directive -is used to wrap templated functions. For example: -

    - -
    -
    -template<class T> void foo(T x) { };
    -template<class T> void foo(T x, T y) { };
    -
    -%template(foo) foo<int>;
    -
    -
    - -

    -This will generate two overloaded wrapper methods, the first will take a single integer as an argument -and the second will take two integer arguments. -

    -

    It is even possible to extend a class via %extend with template methods, for example:

    @@ -3694,20 +3902,20 @@ For example:
     template <class T> class OuterTemplateClass {};
     
    -// The nested class OuterClass::InnerClass inherits from the template class
    +// The nested class OuterClass::InnerClass inherits from the class template
     // OuterTemplateClass<OuterClass::InnerStruct> and thus the template needs
     // to be expanded with %template before the OuterClass declaration.
     %template(OuterTemplateClass_OuterClass__InnerStruct)
    -    OuterTemplateClass<OuterClass::InnerStruct>
    +  OuterTemplateClass<OuterClass::InnerStruct>
     
     
     // Don't forget to use %feature("flatnested") for OuterClass::InnerStruct and
     // OuterClass::InnerClass if the target language doesn't support nested classes.
     class OuterClass {
    -    public:
    -        // Forward declarations:
    -        struct InnerStruct;
    -        class InnerClass;
    +  public:
    +    // Forward declarations:
    +    struct InnerStruct;
    +    class InnerClass;
     };
     
     struct OuterClass::InnerStruct {};
    @@ -3736,7 +3944,7 @@ introduced a new class name.  This name could then be used with other directives
     
     %template(vectori) vector<int>;
     %extend vectori {
    -    void somemethod() { }
    +  void somemethod() { }
     };
     
    @@ -3750,7 +3958,7 @@ as the class name. For example:
     %template(vectori) vector<int>;
     %extend vector<int> {
    -    void somemethod() { }
    +  void somemethod() { }
     };
     
    @@ -3915,6 +4123,8 @@ then SWIG simply creates three wrapper functions bar(), spam(), and blah() in the target language. SWIG does not prepend the names with a namespace prefix nor are the functions packaged in any kind of nested scope. +Note that the default handling of flattening all the namespace scopes in the target language +can be changed via the nspace feature.

    @@ -4009,7 +4219,7 @@ in a different namespace. For example:

     namespace foo {
    -    template<typename T> T max(T a, T b) { return a > b ? a : b; }
    +  template<typename T> T max(T a, T b) { return a > b ? a : b; }
     }
     
     using foo::max;
    @@ -4018,8 +4228,8 @@ using foo::max;
     %template(maxfloat) foo::max<float>;    // Okay (qualified name).
     
     namespace bar {
    -    using namespace foo;
    -    %template(maxdouble)  max<double>;    // Okay.
    +  using namespace foo;
    +  %template(maxdouble)  max<double>;    // Okay.
     }
     
    @@ -4040,7 +4250,7 @@ namespace foo { typedef int Integer; class bar { public: - ... + ... }; } @@ -4203,9 +4413,7 @@ namespace foo {

    Note: The flattening of namespaces is only intended to serve as a basic namespace implementation. -None of the target language modules are currently programmed -with any namespace awareness. In the future, language modules may or may not provide -more advanced namespace support. +More advanced handling of namespaces is discussed next.

    6.19.1 The nspace feature for namespaces

    @@ -4301,9 +4509,9 @@ In the example below, the generic template type is used to rename to bbb
    -%rename(bbb) Space::ABC::aaa(T t);                  // will match but with lower precedence than ccc
    +%rename(bbb) Space::ABC::aaa(T t);                     // will match but with lower precedence than ccc
     %rename(ccc) Space::ABC<Space::XYZ>::aaa(Space::XYZ t);// will match but with higher precedence
    -                                                             // than bbb
    +                                                       // than bbb
     
     namespace Space {
       class XYZ {};
    @@ -4381,9 +4589,9 @@ class Error { };
     
     class Foo {
     public:
    -    ...
    -    void blah() throw(Error);
    -    ...
    +  ...
    +  void blah() throw(Error);
    +  ...
     };
     
    @@ -4408,7 +4616,7 @@ except Error, e:

    Details of how to tailor code for handling the caught C++ exception and converting it into the target language's exception/error handling mechanism -is outlined in the "throws" typemap section. +is outlined in the "throws" typemap section.

    @@ -4425,7 +4633,7 @@ The next section details a way of simulating an exception specification or repla Exceptions are automatically handled for methods with an exception specification. Similar handling can be achieved for methods without exception specifications through the %catches feature. It is also possible to replace any declared exception specification using the %catches feature. -In fact, %catches uses the same "throws" typemaps that SWIG uses for exception specifications in handling exceptions. +In fact, %catches uses the same "throws" typemaps that SWIG uses for exception specifications in handling exceptions. The %catches feature must contain a list of possible types that can be thrown. For each type that is in the list, SWIG will generate a catch handler, in the same way that it would for types declared in the exception specification. Note that the list can also include the catch all specification "...". @@ -4445,10 +4653,10 @@ struct Error4 : EBase { }; class Foo { public: - ... - void bar(); - void blah() throw(Error1, Error2, Error3, Error4); - ... + ... + void bar(); + void blah() throw(Error1, Error2, Error3, Error4); + ... }; @@ -4524,7 +4732,7 @@ for member pointers.

    In some C++ programs, objects are often encapsulated by smart-pointers or proxy classes. This is sometimes done to implement automatic memory management (reference counting) or -persistence. Typically a smart-pointer is defined by a template class where +persistence. Typically a smart-pointer is defined by a class template where the -> operator has been overloaded. This class is then wrapped around some other class. For example:

    @@ -4533,21 +4741,21 @@ around some other class. For example:
     // Smart-pointer class
     template<class T> class SmartPtr {
    -    T *pointee;
    +  T *pointee;
     public:
    -    SmartPtr(T *p) : pointee(p) { ... }
    -    T *operator->() {
    -        return pointee;
    -    }
    -    ...
    +  SmartPtr(T *p) : pointee(p) { ... }
    +  T *operator->() {
    +    return pointee;
    +  }
    +  ...
     };
     
     // Ordinary class
     class Foo_Impl {
     public:
    -    int x;
    -    virtual void bar();
    -    ...
    +  int x;
    +  virtual void bar();
    +  ...
     };
     
     // Smart-pointer wrapper
    @@ -4555,13 +4763,13 @@ typedef SmartPtr<Foo_Impl> Foo;
     
     // Create smart pointer Foo
     Foo make_Foo() {
    -    return SmartPtr<Foo_Impl>(new Foo_Impl());
    +  return SmartPtr<Foo_Impl>(new Foo_Impl());
     }
     
     // Do something with smart pointer Foo
     void do_something(Foo f) {
    -    printf("x = %d\n", f->x);
    -    f->bar();
    +  printf("x = %d\n", f->x);
    +  f->bar();
     }
     
     // Call the wrapped smart pointer proxy class in the target language 'Foo'
    @@ -4660,13 +4868,13 @@ example, if you have this code

     class Foo {
     public:
    -    int x;
    +  int x;
     };
     
     class Bar {
     public:
    -    int x;       
    -    Foo *operator->();
    +  int x;       
    +  Foo *operator->();
     };
     
    @@ -4829,19 +5037,19 @@ For example:

    where the code passed to the "ref" and "unref" features will be -executed as needed whenever a new object is passed to python, or when -python tries to release the proxy object instance, respectively. +executed as needed whenever a new object is passed to Python, or when +Python tries to release the proxy object instance, respectively.

    -On the python side, the use of a reference counted object is no +On the Python side, the use of a reference counted object is no different to any other regular instance:

     def create_A():
    -    a = A()         # SWIG ref 'a' - new object is passed to python (count: 1)
    +    a = A()         # SWIG ref 'a' - new object is passed to Python (count: 1)
         b1 = B(a)       # C++ ref 'a (count: 2)
         if 1 + 1 == 2:
             b2 = B(a)   # C++ ref 'a' (count: 3)
    @@ -4869,8 +5077,8 @@ features:
     
     

    In other words, SWIG will not do anything special when a new object -is passed to python, and it will always 'delete' the underlying object when -python releases the proxy instance. +is passed to Python, and it will always 'delete' the underlying object when +Python releases the proxy instance.

    @@ -4915,19 +5123,19 @@ base classes. For example:

     class Foo {
     public:
    -      int  blah(int x);
    +  int  blah(int x);
     };
     
     class Bar {
     public:
    -      double blah(double x);
    +  double blah(double x);
     };
     
     class FooBar : public Foo, public Bar {
     public:
    -      using Foo::blah;  
    -      using Bar::blah;
    -      char *blah(const char *x);
    +  using Foo::blah;
    +  using Bar::blah;
    +  char *blah(const char *x);
     };
     
    @@ -4970,14 +5178,14 @@ you wrap this code in Python, the module works just like you would expect:
     class Foo {
     protected:
    -    int x;
    -    int blah(int x);
    +  int x;
    +  int blah(int x);
     };
     
     class Bar : public Foo {
     public:
    -    using Foo::x;       // Make x public
    -    using Foo::blah;    // Make blah public
    +  using Foo::x;       // Make x public
    +  using Foo::blah;    // Make blah public
     };
     
    @@ -5008,14 +5216,14 @@ correctly, you can always change the interface to the following: class FooBar : public Foo, public Bar { public: #ifndef SWIG - using Foo::blah; - using Bar::blah; + using Foo::blah; + using Bar::blah; #else - int blah(int x); // explicitly tell SWIG about other declarations - double blah(double x); + int blah(int x); // explicitly tell SWIG about other declarations + double blah(double x); #endif - char *blah(const char *x); + char *blah(const char *x); };
    @@ -5077,7 +5285,7 @@ normal classes.

    If the target language doesn't support nested classes directly, or the support is not implemented in the -language module (like for python currently), then the visible nested classes are moved to the same name +language module (like for Python currently), then the visible nested classes are moved to the same name space as the containing class (nesting hierarchy is "flattened"). The same behaviour may be turned on for C# and Java by the %feature ("flatnested"); If there is a class with the same name in the outer namespace the inner class (or the global one) may be renamed or ignored: @@ -5188,7 +5396,152 @@ using another tool if maintaining constness is the most important part of your project.

    -

    6.29 Where to go for more information

    +

    6.29 Callbacks to the target language

    + + +

    +C/C++ function pointers are often used for callbacks and this is discussed in the +Pointers to functions and callbacks section. +The callback techniques described therein provide a way to control callbacks to a C/C++ function but not callbacks into the target language. +The techniques described below show how the director feature can be used to support callbacks from C/C++ to the target language. +

    + +

    6.29.1 Introduction to director classes

    + + +

    +The director feature enables the ability for a target language class to derive from a wrapped C++ class. +The target language can override virtual methods of a wrapped C++ class, thereby supporting cross-language polymorphism. +Code can 'call up' from C++ into the target language by simply calling a virtual method overridden in a derived class in the target language. +The wrapped C++ classes that have this ability are termed 'director' classes. +The director feature is documented individually in each target language and the reader should locate and read this to obtain a full understanding of directors. +

    + +

    6.29.2 Using directors and target language callbacks

    + + +

    +SWIG's primary goal is to make it possible to call C/C++ code from a target language, however, the director feature enables the reverse. +While there isn't simple direct support for calling target language code from C, the director feature makes this possible. +It does require some work and additional wrapper code to be provided by the user. +The additional code required must be C++ and not C code and hence may introduce a small dependency on C++ if using a pure C project. +In a nutshell, the user must create a C++ base class and turn it into a director class. +A virtual method in the director base class is required. +SWIG generates the code to call up into the target language when wrapping the director virtual method. +

    + +

    +Let's look at some details next. +Consider the same function pointer for a callback called binary_op from the +Pointers to functions and callbacks section. +For completeness, the code required for the module and director feature is also shown: +

    + +
    +%module(directors="1") example
    +
    +%{
    +int binary_op(int a, int b, int (*op)(int, int)) {
    +  return op(a, b);
    +}
    +%}
    +
    + +

    +The goal is to have a target language function that gets called by binary_op. +The target language function should have the equivalent signature as the C/C++ function pointer int (*op)(int, int). +As we are using directors, we need a C++ virtual method with this signature, so let's +define the C++ class and pure virtual method first and make it a director class via the +director feature: +

    + +
    +%feature("director") BinaryOp;
    +
    +%inline %{
    +struct BinaryOp {
    +  virtual int handle(int a, int b) = 0;
    +  virtual ~BinaryOp() {}
    +};
    +%}
    +
    + +

    +The following handler_helper function and binary_op_wrapper function completes the code needed in the +C++/SWIG layer. The binary_op_wrapper function is wrapped by SWIG and is very similar to the binary_op function, +however, it takes a pointer to the director base class BinaryOp instead of a C/C++ function pointer. +

    + +
    +%{
    +static BinaryOp *handler_ptr = NULL;
    +static int handler_helper(int a, int b) {
    +  // Make the call up to the target language when handler_ptr
    +  // is an instance of a target language director class
    +  return handler_ptr->handle(a, b);
    +}
    +// If desired, handler_ptr above could be changed to a thread-local variable in order to make thread-safe
    +%}
    +
    +%inline %{
    +int binary_op_wrapper(int a, int b, BinaryOp *handler) {
    +  handler_ptr = handler;
    +  int result = binary_op(a, b, &handler_helper);
    +  handler = NULL;
    +  return result;
    +}
    +%}
    +
    + +

    +On the target language side, we need to derive a class from BinaryOp and override the +handle method. In Python this could be as simple as: +

    + +
    +
    +import example
    +
    +# PythonBinaryOp class is defined and derived from C++ class BinaryOp
    +class PythonBinaryOp(example.BinaryOp):
    +
    +    # Define Python class 'constructor'
    +    def __init__(self):
    +        # Call C++ base class constructor
    +        example.BinaryOp.__init__(self)
    +
    +    # Override C++ method: virtual int handle(int a, int b) = 0;
    +    def handle(self, a, b):
    +        # Return the product
    +        return a * b
    +
    +
    + +

    +For this to work from Python, an instance of the PythonBinaryOp class is created +and then passed to binary_op_wrapper. The net result is the binary_op +function will in turn be called which will call handler_helper which will call +the virtual handle method, that is, the Python method handle in the PythonBinaryOp class. The result will be the product of 10 and 20 and make its way back to Python and hence +200 will be printed with the following code: +

    + +
    +
    +handler = PythonBinaryOp()
    +result = example.binary_op_wrapper(10, 20, handler)
    +print result
    +
    +
    + +

    +This has thus demonstrated a C/C++ function pointer calling back into a target language function. +The code could be made a little more user friendly by using %rename to provide the +original binary_op name from the target language instead of binary_op_wrapper. +A C++ functor base class and Python functor class +could also be used instead, but these are left as exercises for the reader. +

    + +

    6.30 Where to go for more information

    diff --git a/winx64/bin/swig-3.0.12/Doc/Manual/Scilab.html b/winx64/bin/swigwin-4.0.0/Doc/Manual/Scilab.html similarity index 90% rename from winx64/bin/swig-3.0.12/Doc/Manual/Scilab.html rename to winx64/bin/swigwin-4.0.0/Doc/Manual/Scilab.html index 90bd8bb9..88ab8043 100644 --- a/winx64/bin/swig-3.0.12/Doc/Manual/Scilab.html +++ b/winx64/bin/swigwin-4.0.0/Doc/Manual/Scilab.html @@ -9,7 +9,7 @@ -

    39 SWIG and Scilab

    +

    35 SWIG and Scilab

      @@ -39,7 +39,7 @@
  • Pointers
  • Structures @@ -88,11 +88,11 @@ This chapter explains how to use SWIG for Scilab. After this introduction, you s

    -

    39.1 Preliminaries

    +

    35.1 Preliminaries

    -SWIG for Scilab supports Linux. Other operating sytems haven't been tested. +SWIG for Scilab supports Linux. Other operating systems haven't been tested.

    @@ -105,7 +105,7 @@ SWIG for Scilab supports C language. C++ is partially supported. See 39.2 Running SWIG